|
Packit |
67cb25 |
# -*- org -*-
|
|
Packit |
67cb25 |
#+CATEGORY: specfunc
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
* Complex hypergeometric function 1F1
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
* Could probably return immediately for exact zeros in 3j,6j,9j
|
|
Packit |
67cb25 |
functions. Easiest to implement for 3j.
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
Note from Serge Winitzki <serge@cosmos.phy.tufts.edu>:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
The package "matpack" (www.matpack.de) includes many special functions,
|
|
Packit |
67cb25 |
also the 3j symbols. They refer to some quite complicated numerical
|
|
Packit |
67cb25 |
methods using recursion relations to get the right answers for large
|
|
Packit |
67cb25 |
momenta, and to 1975-1976 papers by Schulten and Gordon for the
|
|
Packit |
67cb25 |
description of the algorithms. The papers can be downloaded for free at
|
|
Packit |
67cb25 |
http://www.ks.uiuc.edu/Publications/Papers/
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
http://www.ks.uiuc.edu/Publications/Papers/abstract.cgi?tbcode=SCHU76B
|
|
Packit |
67cb25 |
http://www.ks.uiuc.edu/Publications/Papers/abstract.cgi?tbcode=SCHU75A
|
|
Packit |
67cb25 |
http://www.ks.uiuc.edu/Publications/Papers/abstract.cgi?tbcode=SCHU75
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
* add Fresnel Integrals to specfunc. See TOMS 723 + 2 subsequent
|
|
Packit |
67cb25 |
errata.
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
* make mode variables consistent in specfunc -- some seem to be
|
|
Packit |
67cb25 |
unnecessary from performance point of view since the speed difference
|
|
Packit |
67cb25 |
is negligible.
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
* From: "Alexander Babansky" <babansky@mail.ru>
|
|
Packit |
67cb25 |
To: "Brian Gough" <bjg@network-theory.co.uk>
|
|
Packit |
67cb25 |
Subject: Re: gsl-1.2
|
|
Packit |
67cb25 |
Date: Sun, 3 Nov 2002 14:15:15 -0500
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
Hi Brian,
|
|
Packit |
67cb25 |
May I suggest you to add another function to gsl-1.2 ?
|
|
Packit |
67cb25 |
It's a modified Ei(x) function:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
Em(x)=exp(-x)*Ei(x);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
As u might know, Ei(x) raises as e^x on the negative interval.
|
|
Packit |
67cb25 |
Therefore, Ei(100) is very very large.
|
|
Packit |
67cb25 |
But Ei(100)*exp(-100) = 0.010;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
Unfortunately, if u try x=800 u'll get overflow in Ei(800).
|
|
Packit |
67cb25 |
but Ei(800)*exp(-800) should be around 0.0001;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
Modified function Em(x) is used in cos, sin integrals such as:
|
|
Packit |
67cb25 |
int_0^\infinity dx sin(bx)/(x^2+z^2)=(1/2z)*(Em(bz)-Em(-bz));
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
int_0^\infinity dx x cos(bx)/(x^2+z^2)=(1/2)*(Em(bz)+Em(-bz));
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
One of possible ways to add it to the library is:
|
|
Packit |
67cb25 |
Em(x) = - PV int_0^\infinity e^(-t)/(t+x) dt
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
Sincerely,
|
|
Packit |
67cb25 |
Alex
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
DONE: Wed Nov 6 13:06:42 MST 2002 [GJ]
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
----------------------------------------------------------------------
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
The following should be finished before a 1.0 level release.
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
* Implement the conicalP_sph_reg() functions.
|
|
Packit |
67cb25 |
DONE: Fri Nov 6 23:33:53 MST 1998 [GJ]
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
* Irregular (Q) Legendre functions, at least
|
|
Packit |
67cb25 |
the integer order ones. More general cases
|
|
Packit |
67cb25 |
can probably wait.
|
|
Packit |
67cb25 |
DONE: Sat Nov 7 15:47:35 MST 1998 [GJ]
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
* Make hyperg_1F1() work right.
|
|
Packit |
67cb25 |
This is the last remaining source of test failures.
|
|
Packit |
67cb25 |
The problem is with an unstable recursion in certain cases.
|
|
Packit |
67cb25 |
Look for the recursion with the variable named "start_pair";
|
|
Packit |
67cb25 |
this is stupid hack to keep track of when the recursion
|
|
Packit |
67cb25 |
result is going the wrong way for awhile by remembering the
|
|
Packit |
67cb25 |
minimum value. An error estimate is amde from that. But it
|
|
Packit |
67cb25 |
is just a hack. Somethign must be done abou that case.
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
* Clean-up Coulomb wave functions. This does not
|
|
Packit |
67cb25 |
mean completing a fully controlled low-energy
|
|
Packit |
67cb25 |
evaluation, which is a larger project.
|
|
Packit |
67cb25 |
DONE: Sun May 16 13:49:47 MDT 1999 [GJ]
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
* Clean-up the Fermi-Dirac code. The full Fermi-Dirac
|
|
Packit |
67cb25 |
functions can probably wait until a later release,
|
|
Packit |
67cb25 |
but we should have at least the common j = integer and
|
|
Packit |
67cb25 |
j = 1/2-integer cases for the 1.0 release. These
|
|
Packit |
67cb25 |
are not too hard.
|
|
Packit |
67cb25 |
DONE: Sat Nov 7 19:46:27 MST 1998 [GJ]
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
* Go over the tests and make sure nothing is left out.
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
* Sanitize all the error-checking, error-estimation,
|
|
Packit |
67cb25 |
algorithm tuning, etc.
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
* Fill out our scorecard, working from Lozier's
|
|
Packit |
67cb25 |
"Software Needs in Special Functions" paper.
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
* Final Seal of Approval
|
|
Packit |
67cb25 |
This section has itself gone through several
|
|
Packit |
67cb25 |
revisions (sigh), proving that the notion of
|
|
Packit |
67cb25 |
done-ness is ill-defined. So it is worth
|
|
Packit |
67cb25 |
stating the criteria for done-ness explicitly:
|
|
Packit |
67cb25 |
o interfaces stabilized
|
|
Packit |
67cb25 |
o error-estimation in place
|
|
Packit |
67cb25 |
o all deprecated constructs removed
|
|
Packit |
67cb25 |
o passes tests
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- airy.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- airy_der.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- airy_zero.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- atanint.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- bessel.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- bessel_I0.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- bessel_I1.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- bessel_In.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- bessel_Inu.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- bessel_J0.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- bessel_J1.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- bessel_Jn.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- bessel_Jnu.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- bessel_K0.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- bessel_K1.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- bessel_Kn.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- bessel_Knu.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- bessel_Y0.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- bessel_Y1.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- bessel_Yn.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- bessel_Ynu.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- bessel_amp_phase.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- bessel_i.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- bessel_j.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- bessel_k.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- bessel_olver.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- bessel_sequence.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- bessel_temme.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- bessel_y.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- bessel_zero.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- beta.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- chebyshev.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- clausen.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- coulomb.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- coulomb_bound.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- coupling.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- dawson.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- debye.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- dilog.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- elementary.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- ellint.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- elljac.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- erfc.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- exp.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- expint.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- expint3.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- fermi_dirac.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- gamma.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- gamma_inc.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- gegenbauer.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- hyperg.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- hyperg_0F1.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- hyperg_1F1.c
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- hyperg_2F0.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- hyperg_2F1.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- hyperg_U.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- laguerre.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- legendre_H3d.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- legendre_Qn.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- legendre_con.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- legendre_poly.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- log.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- poch.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- poly.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- pow_int.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- psi.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- result.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- shint.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- sinint.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- synchrotron.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- transport.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- trig.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
- zeta.c
|
|
Packit |
67cb25 |
INTERFACES:
|
|
Packit |
67cb25 |
ERRORESTIM:
|
|
Packit |
67cb25 |
DEPRECATED:
|
|
Packit |
67cb25 |
PASSTESTS:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
----------------------------------------------------------------------
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
The following are important but probably will
|
|
Packit |
67cb25 |
not see completion before a 1.0 level release.
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
* Incomplete Fermi-Dirac functions.
|
|
Packit |
67cb25 |
Other Fermi-Dirac functions, including the
|
|
Packit |
67cb25 |
generic 1/2-integer case, which was not done.
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
* Implement the low-energy regime for the Coulomb
|
|
Packit |
67cb25 |
wave functions. This is fairly well understood in
|
|
Packit |
67cb25 |
the recent literature but will require some
|
|
Packit |
67cb25 |
detailed work. Specifically this means creating
|
|
Packit |
67cb25 |
a drop-in replacement for coulomb_jwkb() which
|
|
Packit |
67cb25 |
is controlled and extensible.
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
* General Legendre functions (at least on the cut).
|
|
Packit |
67cb25 |
This subsumes the toroidal functions, so we need not
|
|
Packit |
67cb25 |
consider those separately. SLATEC code exists (originally
|
|
Packit |
67cb25 |
due to Olver+Smith).
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
* Characterize the algorithms. A significant fraction of
|
|
Packit |
67cb25 |
the code is home-grown and it should be reviewed by
|
|
Packit |
67cb25 |
other parties.
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
----------------------------------------------------------------------
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
The following are extra features which need not
|
|
Packit |
67cb25 |
be implemented for a version 1.0 release.
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
* Spheroidal wave functions.
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
* Mathieu functions.
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
* Weierstrass elliptic functions.
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
----------------------------------------------------------------------
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
Improve accuracy of ERF
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
NNTP-Posting-Date: Thu, 11 Sep 2003 07:41:42 -0500
|
|
Packit |
67cb25 |
From: "George Marsaglia" <geo@stat.fsu.edu>
|
|
Packit |
67cb25 |
Newsgroups: comp.lang.c
|
|
Packit |
67cb25 |
References: <t4J7b.18514$98.4310@nwrddc03.gnilink.net>
|
|
Packit |
67cb25 |
Subject: Re: When (32-bit) double precision isn't precise enough
|
|
Packit |
67cb25 |
Date: Thu, 11 Sep 2003 08:41:40 -0400
|
|
Packit |
67cb25 |
X-Priority: 3
|
|
Packit |
67cb25 |
X-MSMail-Priority: Normal
|
|
Packit |
67cb25 |
X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
|
|
Packit |
67cb25 |
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
|
|
Packit |
67cb25 |
Message-ID: <wq2dnQBikNwb8P2iU-KYvg@comcast.com>
|
|
Packit |
67cb25 |
Lines: 265
|
|
Packit |
67cb25 |
NNTP-Posting-Host: 68.35.247.101
|
|
Packit |
67cb25 |
X-Trace: sv3-4YY+jkhhdeQvGKAREa99vDBFHJoKVqVBdUTSuRxA71OwlgxX0uUFnKYs54FlnUs0Xb6BRngKigkd75d!tKin8l8rAQKylaP+4vzTI3AO33bivOw1lKDZUUtXe4lUMW1qn+goUp/Pfksstg==
|
|
Packit |
67cb25 |
X-Complaints-To: abuse@comcast.net
|
|
Packit |
67cb25 |
X-DMCA-Complaints-To: dmca@comcast.net
|
|
Packit |
67cb25 |
X-Abuse-and-DMCA-Info: Please be sure to forward a copy of ALL headers
|
|
Packit |
67cb25 |
X-Abuse-and-DMCA-Info: Otherwise we will be unable to process your complaint properly
|
|
Packit |
67cb25 |
X-Postfilter: 1.1
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
Why most of those who deal with the normal integral in probability
|
|
Packit |
67cb25 |
theory are still stuck with the historical baggage of the error function
|
|
Packit |
67cb25 |
is a puzzle to me, as is the poor quality of the results one gets from
|
|
Packit |
67cb25 |
standard library implementations of erf(). (One of the most common
|
|
Packit |
67cb25 |
is based on ALGORITHM AS66, APPL. STATIST.(1973) Vol.22, .424 by HILL,
|
|
Packit |
67cb25 |
which gives only 6-8 digit accuracy).
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
Here is a listing of my method:
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
/*
|
|
Packit |
67cb25 |
Marsaglia Complementary Normal Distribution Function
|
|
Packit |
67cb25 |
cPhi(x) = integral from x to infinity of exp(-.5*t^2)/sqrt(2*pi), x<15
|
|
Packit |
67cb25 |
15-digit accuracy for x<15, returns 0 for x>15.
|
|
Packit |
67cb25 |
#include <math.h>
|
|
Packit |
67cb25 |
*/
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
double cPhi(double x){
|
|
Packit |
67cb25 |
long double v[]={0.,.65567954241879847154L,
|
|
Packit |
67cb25 |
.42136922928805447322L,.30459029871010329573L,
|
|
Packit |
67cb25 |
.23665238291356067062L,.19280810471531576488L,
|
|
Packit |
67cb25 |
.16237766089686746182L,.14010418345305024160L,
|
|
Packit |
67cb25 |
.12313196325793229628L,.10978728257830829123L,
|
|
Packit |
67cb25 |
.99028596471731921395e-1L,.90175675501064682280e-1L,
|
|
Packit |
67cb25 |
.82766286501369177252e-1L,.76475761016248502993e-1L,
|
|
Packit |
67cb25 |
.71069580538852107091e-1L,.66374235823250173591e-1L};
|
|
Packit |
67cb25 |
long double h,a,b,z,t,sum,pwr;
|
|
Packit |
67cb25 |
int i,j;
|
|
Packit |
67cb25 |
if(x>15.) return (0.);
|
|
Packit |
67cb25 |
if(x<-15.) return (1.);
|
|
Packit |
67cb25 |
j=fabs(x)+1.;
|
|
Packit |
67cb25 |
z=j;
|
|
Packit |
67cb25 |
h=fabs(x)-z;
|
|
Packit |
67cb25 |
a=v[j];
|
|
Packit |
67cb25 |
b=z*a-1.;
|
|
Packit |
67cb25 |
pwr=1.;
|
|
Packit |
67cb25 |
sum=a+h*b;
|
|
Packit |
67cb25 |
for(i=2;i<60;i+=2){
|
|
Packit |
67cb25 |
a=(a+z*b)/i;
|
|
Packit |
67cb25 |
b=(b+z*a)/(i+1);
|
|
Packit |
67cb25 |
pwr=pwr*h*h;
|
|
Packit |
67cb25 |
t=sum;
|
|
Packit |
67cb25 |
sum=sum+pwr*(a+h*b);
|
|
Packit |
67cb25 |
if(sum==t) break; }
|
|
Packit |
67cb25 |
sum=sum*exp(-.5*x*x-.91893853320467274178L);
|
|
Packit |
67cb25 |
if(x<0.) sum=1.-sum;
|
|
Packit |
67cb25 |
return ((double) sum);
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
*/
|
|
Packit |
67cb25 |
end of listing
|
|
Packit |
67cb25 |
*/
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
The method is based on defining phi(x)=exp(-x^2)/sqrt(2pi) and
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
R(x)=cPhi(x)/phi(x).
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
The function R(x) is well-behaved and terms of its Taylor
|
|
Packit |
67cb25 |
series are readily obtained by a two-term recursion. With an accurate
|
|
Packit |
67cb25 |
representation of R(x) at ,say, x=0,1,2,...,15, a simple evaluation
|
|
Packit |
67cb25 |
of the Taylor series at intermediate points provides up to
|
|
Packit |
67cb25 |
15 digits of accuracy.
|
|
Packit |
67cb25 |
An article describing the method will be in the new version of
|
|
Packit |
67cb25 |
my Diehard CDROM. A new version of the Diehard tests
|
|
Packit |
67cb25 |
of randomness (but not yet the new DVDROM) is at
|
|
Packit |
67cb25 |
http://www.csis.hku.hk/~diehard/
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
George Marsaglia
|