Commit cbad6213 authored by ulrich_y's avatar ulrich_y

Added Known Issues to README

parent 7d73ddd8
......@@ -206,3 +206,74 @@ Mathematica, this can be entered using `ctrl _` followed by `+` or `-`. When
using `handyG` in Mathematica, keep in mind that it uses Fortran which means
that computations are performed with fixed precision.
## Known issues
Here we make a list of known issues that have occurred. If you
experience a problem with `handyG`, please do not hesitate to contact
us. Ideally, your bug report should contain
* The version of `handyG` you are using. This can be found at the end
of the `./configure` procedure. Please understand that older
releases or development versions are not fully supported and that
you may be required to update the latest version.
* The logfile produced by the `./configure` process. This can be
obtained by prepending the `./configure` call with for example
`LOGFILE=log.txt`.[^2]
* If applicable, a short example program demonstrating your problem.
For a timely response, please provide the simplest program that
still causes your issue.
* Your issue may result in a new release or an addition on this page.
By default, we will acknowledge you for your bug report and maybe
publish parts of your example code. Please let us know if you
object to this.
* If you already have investigated your issue, please share your
results, though this *is not necessary*.
[^2]: The file produces this way may contain private information such
as your username. It is your responsibility to ensure no confidential
information is disclosed this way.
### Segmentation fault for arguments on the complex unit circle
*Thanks to F. Buccioni for reporting this issue*
Sometimes GPLs with arguments on the unit circle, i.e.
$`G(z_1,...,z_m\ ;y)`$ with $`y \in\{c\in \mathbb{C}\ :\ |c|=1\}`$
result in segmentation faults.
```fortran
! compile with gfortran -o demo demo.f90 libhandyg.a
program handyGdemo
use handyG
implicit none
real(kind=prec) :: z
complex(kind=prec) :: y
complex(kind=prec), parameter :: i_ = (0._prec, 1._prec)
z = 0.99592549661823904_prec
y = (1._prec - 2*z + i_*sqrt(4*z-1._prec))/(2*z)
print*, G([(-1._prec,0._prec),(-1._prec,0._prec)],y)
end program handyGdemo
```
The above code may result in a segmentation fault due to an infinite
loop. GPLs with complex arguments are first normalised. In the above
case, the GPL evaluate is $`G(-1/y, -1/y\ ;1)`$. Due a numerical issue
in Fortran `abs(-1/y)` may evaluate to a number slightly less than
one. This problem can easily be circumvented by performing the
normalisation analytically
```fortran
moy = cmplx(1._prec-1/(2*z), sqrt(4*z-1._prec) / (2*z), kind=prec)
print*, G([moy, moy],(1._prec,0.))
```
### GPLs with arguments close to one are not precise
*Thanks to Xiofeng Xu for point out this issue*
The function that calculates $`{\rm Li}_n(z)`$ for $`z\in\mathbb{C}`$
is not precise for $z\sim 1$ because the series expansion converges
too slow.
A fix is being vetted currently and will be released with `v0.1.4`.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment