Commit 13c49642 authored by ulrich_y's avatar ulrich_y

Merge branch 'dev-restruct-test'

parents af47d01a cbad6213
......@@ -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
* 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.
! 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
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`.
......@@ -531,7 +531,7 @@ CONTAINS
use gtestmuone , only: inimuone =>args
use gtestmuonenp, only: inimuonenp=>args
implicit none
tol = 6.0e-6
tol = 6.0e-9
call perform_ginacv( 6, inichen ((0.3_prec,0.), (0.1_prec,0.)) )
call perform_ginacv( 7, inimuone ((0.5_prec,0.), (0.6_prec,0.)) )
call perform_ginacv( 8, inimuonenp((0.3_prec,0.), (0.6_prec,0.)) )
......@@ -546,7 +546,7 @@ CONTAINS
real(kind=prec) :: time(2), ttime(2)
integer i,j, u
character(len=*) msg
character(len=90) msg2
character(len=100) msg2
do j=1,size(args,1)
! try function a bunch of times
call system_clock(cstart, count_rate=count_rate)
......@@ -162,7 +162,7 @@ VTAG="$Format: %D, %h$"
if $HAVE_GIT ; then
VERSION=`git describe`
VERSION=`git describe --tag`
COMMIT=`git log -1 --pretty=format:"%h"`
elif [[ "$VTAG" == *"HEAD"* ]]; then
VERSION=`echo $VTAG | perl -lpe 's/.*?(, tag: ([^,]*))?,.*? ([a-f\d]+)$/\2/g'`
......@@ -744,6 +744,49 @@ fi
echo "creating makefile" 1>&3
cat 1>&2 <<EOF
The makefile was created through $0 $allargs on `date` by `whoami`
handyG version $VERSION
The following capabilities are supported:
$HAVE_MCC && echo " * mcc / MathLink interface" 1>&2
$HAVE_GINAC && echo " * GiNaC test interface" 1>&2
$COVERAGE && echo " * coverage reporting" 1>&2
$CONF_QUAD && echo " * quadrouple precision" 1>&2
$HAVE_LCOV && echo " * lcov coverage reporting" 1>&2
$DEBUG && echo " * debugging mode" 1>&2
$NATIVE && echo " * native compilation" 1>&2
cat 1>&2 <<EOF
The following compilers are used
> AR=ar rcs
with the following flags
cat > makefile <<EOF
# Generated through $0 $allargs on `date` by `whoami`
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