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