Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.forth > #9321
| From | mhx@iae.nl (Marcel Hendrix) |
|---|---|
| Subject | Re: ZGAMMA revisited |
| Newsgroups | comp.lang.forth |
| Message-ID | <97140304028435@frunobulax.edu> (permalink) |
| Date | 2012-01-31 00:21 +0200 |
| References | <bba646d9-97f7-4473-839a-6cf446a880f0@q8g2000yqa.googlegroups.com> |
| Organization | SunSITE.dk - Supporting Open source |
Krishna Myneni <krishna.myneni@ccreweb.org> writes Re: ZGAMMA revisited > On Jan 29, 5:05=A0pm, mhx@iae.nl (Marcel Hendrix) wrote: >> In 2011, there was an extended CLF thread on computing the ZGAMMA function. >> Here's ZGAMMA once GMP, MPFR and MPC are made available to the Forth system. > What's MPC? A multi-precision complex library. Is it part of the > package released by David Williams? No, but I ported it after I finished adapting David's package for Windows (GMP and MPFR wrongly assume long ints are 64 bit wide). MPC is a nice companion package, but it does (did:-) not have complex gamma and error functions. [..] > Looks great. Have you checked its performance very near its poles? As > I recall, that's where the TOMS programs had serious issues. I have (now) tested it with the parameter values listed on ftp://ccreweb.org/software/fsl/extras/. I went and fetched 71-decimal-place ref result values from Wolfram/Alpha. As you can see below, the maximum absolute error is 10^-31 around the origin, which is the maximum error Glendon Pugh designed them for (in 'An analysis of the Lanczos Gamma approximation' (PhD thesis, 2004)). The ZWOFZ results are also listed, although I didn't show yet how to implement this word using MPC. -marcel -- ---------------------------------------------------- Reference values for the complex Gamma function from http://wolframalpha.com [71 places] z#gamma( 0.00e-0001 -1.99e-0007 i) error = 9.09e-0032 z#gamma( -2.00e+0000 -1.99e-0007 i) error = 1.25e-0043 z#gamma( -2.00e+0000 -2.00e+0000 i) error = 1.06e-0043 z#gamma( 1.00e+0000 -1.99e-0007 i) error = 6.35e-0047 z#gamma( 1.00e+0000 -2.00e+0000 i) error = 5.35e-0040 z#gamma( 5.00e-0001 0.00e-0001 i) error = 8.98e-0053 z#gamma( 1.00e+0000 0.00e-0001 i) error = 1.00e-0068 z#gamma( 2.00e+0000 0.00e-0001 i) error = 7.88e-0068 z#gamma( 5.00e+0000 0.00e-0001 i) error = 6.69e-0065 z#gamma( -2.50e+0000 -2.50e+0000 i) error = 1.43e-0044 z#gamma( -2.50e+0000 -2.00e+0000 i) error = 1.57e-0044 z#gamma( -2.50e+0000 -1.50e+0000 i) error = 1.69e-0044 z#gamma( -2.50e+0000 -1.00e+0000 i) error = 1.79e-0044 z#gamma( -2.50e+0000 -5.00e-0001 i) error = 1.84e-0044 z#gamma( -2.50e+0000 0.00e-0001 i) error = 1.86e-0044 z#gamma( -2.50e+0000 5.00e-0001 i) error = 1.84e-0044 z#gamma( -2.00e+0000 -3.00e+0000 i) error = 8.58e-0044 z#gamma( -2.00e+0000 -2.00e+0000 i) error = 1.06e-0043 z#gamma( -2.00e+0000 -1.00e+0000 i) error = 1.20e-0043 z#gamma( -2.00e+0000 -5.00e-0001 i) error = 1.24e-0043 z#gamma( -2.00e+0000 -1.00e-0001 i) error = 1.25e-0043 z#gamma( -2.00e+0000 -9.99e-0003 i) error = 1.25e-0043 z#gamma( -2.00e+0000 -1.00e-0004 i) error = 1.25e-0043 z#gamma( -2.00e+0000 -1.00e-0006 i) error = 1.25e-0043 z#gamma( -2.00e+0000 -1.99e-0007 i) error = 1.25e-0043 z#gamma( -2.00e+0000 4.00e+0000 i) error = 6.40e-0044 z#gamma( -1.50e+0000 0.00e-0001 i) error = 3.34e-0041 z#gamma( -5.00e-0001 -5.00e-0001 i) error = 4.29e-0041 z#gamma( -5.00e-0001 0.00e-0001 i) error = 5.55e-0041 z#gamma( -5.00e-0001 5.00e-0001 i) error = 4.29e-0041 z#gamma( 0.00e-0001 -1.50e+0000 i) error = 1.09e-0038 z#gamma( 0.00e-0001 -1.00e+0000 i) error = 1.74e-0038 z#gamma( 0.00e-0001 -5.00e-0001 i) error = 3.59e-0038 z#gamma( 0.00e-0001 5.00e-0001 i) error = 3.59e-0038 z#gamma( 0.00e-0001 1.00e+0000 i) error = 1.74e-0038 z#gamma( 5.00e-0001 -5.00e-0001 i) error = 2.35e-0039 z#gamma( 5.00e-0001 0.00e-0001 i) error = 2.32e-0039 z#gamma( 5.00e-0001 5.00e-0001 i) error = 2.35e-0039 z#gamma( 1.00e+0000 0.00e-0001 i) error = 1.00e-0068 z#gamma( 1.50e+0000 0.00e-0001 i) error = 1.55e-0041 z#gamma( 2.00e+0000 0.00e-0001 i) error = 7.88e-0068 z#gamma( 2.50e+0000 0.00e-0001 i) error = 6.16e-0041 z#gamma( 3.00e+0000 -1.00e+0000 i) error = 1.20e-0042 z#gamma( 3.00e+0000 0.00e-0001 i) error = 6.84e-0067 z#gamma( 4.00e+0000 0.00e-0001 i) error = 6.49e-0066 z#gamma( 5.00e+0000 0.00e-0001 i) error = 6.69e-0065 z#wofz( -2.00e+0000 -2.00e+0000 i) error = 1.98e-0056 z#wofz( -2.00e+0000 -1.50e+0000 i) error = 2.99e-0060 z#wofz( -2.00e+0000 -1.00e+0000 i) error = 2.75e-0057 z#wofz( -2.00e+0000 -5.00e-0001 i) error = 5.05e-0054 z#wofz( -2.00e+0000 0.00e-0001 i) error = 1.00e-0048 z#wofz( -2.00e+0000 5.00e-0001 i) error = 5.05e-0054 z#wofz( -2.00e+0000 1.00e+0000 i) error = 2.75e-0057 z#wofz( -2.00e+0000 1.50e+0000 i) error = 2.99e-0060 z#wofz( -2.00e+0000 2.00e+0000 i) error = 1.98e-0056 z#wofz( -1.50e+0000 -2.00e+0000 i) error = 3.83e-0058 z#wofz( -1.50e+0000 -1.50e+0000 i) error = 1.43e-0059 z#wofz( -1.50e+0000 -1.00e+0000 i) error = 3.12e-0058 z#wofz( -1.50e+0000 -5.00e-0001 i) error = 1.04e-0075 z#wofz( -1.50e+0000 0.00e-0001 i) error = 8.63e-0078 z#wofz( -1.50e+0000 5.00e-0001 i) error = 1.05e-0075 z#wofz( -1.50e+0000 1.00e+0000 i) error = 3.12e-0058 z#wofz( -1.50e+0000 1.50e+0000 i) error = 1.43e-0059 z#wofz( -1.50e+0000 2.00e+0000 i) error = 3.83e-0058 z#wofz( -1.00e+0000 -2.00e+0000 i) error = 2.25e-0057 z#wofz( -1.00e+0000 -1.50e+0000 i) error = 5.82e-0061 z#wofz( -1.00e+0000 -1.00e+0000 i) error = 3.86e-0077 z#wofz( -1.00e+0000 -5.00e-0001 i) error = 9.24e-0076 z#wofz( -1.00e+0000 0.00e-0001 i) error = 4.99e-0071 z#wofz( -1.00e+0000 5.00e-0001 i) error = 9.19e-0076 z#wofz( -1.00e+0000 1.00e+0000 i) error = 5.03e-0077 z#wofz( -1.00e+0000 1.50e+0000 i) error = 5.82e-0061 z#wofz( -1.00e+0000 2.00e+0000 i) error = 2.25e-0057 z#wofz( -5.00e-0001 -2.00e+0000 i) error = 6.34e-0057 z#wofz( -5.00e-0001 -1.50e+0000 i) error = 6.48e-0061 z#wofz( -5.00e-0001 -1.00e+0000 i) error = 0.00e-0001 z#wofz( -5.00e-0001 -5.00e-0001 i) error = 2.21e-0074 z#wofz( -5.00e-0001 0.00e-0001 i) error = 2.26e-0068 z#wofz( -5.00e-0001 5.00e-0001 i) error = 2.21e-0074 z#wofz( -5.00e-0001 1.00e+0000 i) error = 1.38e-0077 z#wofz( -5.00e-0001 1.50e+0000 i) error = 6.48e-0061 z#wofz( -5.00e-0001 2.00e+0000 i) error = 6.34e-0057 z#wofz( 0.00e-0001 -2.00e+0000 i) error = 1.51e-0059 z#wofz( 0.00e-0001 -1.50e+0000 i) error = 6.64e-0061 z#wofz( 0.00e-0001 -1.00e+0000 i) error = 0.00e-0001 z#wofz( 0.00e-0001 -5.00e-0001 i) error = 8.99e-0075 z#wofz( 0.00e-0001 0.00e-0001 i) error = 0.00e-0001 z#wofz( 0.00e-0001 5.00e-0001 i) error = 9.01e-0075 z#wofz( 0.00e-0001 1.00e+0000 i) error = 1.72e-0077 z#wofz( 0.00e-0001 1.50e+0000 i) error = 6.64e-0061 z#wofz( 0.00e-0001 2.00e+0000 i) error = 1.51e-0059 z#wofz( 5.00e-0001 -2.00e+0000 i) error = 6.34e-0057 z#wofz( 5.00e-0001 -1.50e+0000 i) error = 6.48e-0061 z#wofz( 5.00e-0001 -1.00e+0000 i) error = 0.00e-0001 z#wofz( 5.00e-0001 -5.00e-0001 i) error = 2.21e-0074 z#wofz( 5.00e-0001 0.00e-0001 i) error = 2.26e-0068 z#wofz( 5.00e-0001 5.00e-0001 i) error = 2.21e-0074 z#wofz( 5.00e-0001 1.00e+0000 i) error = 1.38e-0077 z#wofz( 5.00e-0001 1.50e+0000 i) error = 6.48e-0061 z#wofz( 5.00e-0001 2.00e+0000 i) error = 6.34e-0057 z#wofz( 1.00e+0000 -2.00e+0000 i) error = 2.25e-0057 z#wofz( 1.00e+0000 -1.50e+0000 i) error = 5.82e-0061 z#wofz( 1.00e+0000 -1.00e+0000 i) error = 3.86e-0077 z#wofz( 1.00e+0000 -5.00e-0001 i) error = 9.24e-0076 z#wofz( 1.00e+0000 0.00e-0001 i) error = 4.99e-0071 z#wofz( 1.00e+0000 5.00e-0001 i) error = 9.19e-0076 z#wofz( 1.00e+0000 1.00e+0000 i) error = 5.03e-0077 z#wofz( 1.00e+0000 1.50e+0000 i) error = 5.82e-0061 z#wofz( 1.00e+0000 2.00e+0000 i) error = 2.25e-0057 z#wofz( 1.50e+0000 -2.00e+0000 i) error = 3.83e-0058 z#wofz( 1.50e+0000 -1.50e+0000 i) error = 1.43e-0059 z#wofz( 1.50e+0000 -1.00e+0000 i) error = 3.12e-0058 z#wofz( 1.50e+0000 -5.00e-0001 i) error = 1.04e-0075 z#wofz( 1.50e+0000 0.00e-0001 i) error = 8.63e-0078 z#wofz( 1.50e+0000 5.00e-0001 i) error = 1.05e-0075 z#wofz( 1.50e+0000 1.00e+0000 i) error = 3.12e-0058 z#wofz( 1.50e+0000 1.50e+0000 i) error = 1.43e-0059 z#wofz( 1.50e+0000 2.00e+0000 i) error = 3.83e-0058 z#wofz( 2.00e+0000 -2.00e+0000 i) error = 1.98e-0056 z#wofz( 2.00e+0000 -1.50e+0000 i) error = 2.99e-0060 z#wofz( 2.00e+0000 -1.00e+0000 i) error = 2.75e-0057 z#wofz( 2.00e+0000 -5.00e-0001 i) error = 5.05e-0054 z#wofz( 2.00e+0000 0.00e-0001 i) error = 1.00e-0048 z#wofz( 2.00e+0000 5.00e-0001 i) error = 5.05e-0054 z#wofz( 2.00e+0000 1.00e+0000 i) error = 2.75e-0057 z#wofz( 2.00e+0000 1.50e+0000 i) error = 2.99e-0060 z#wofz( 2.00e+0000 2.00e+0000 i) error = 1.98e-0056
Back to comp.lang.forth | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
ZGAMMA revisited mhx@iae.nl (Marcel Hendrix) - 2012-01-30 01:05 +0200
Re: ZGAMMA revisited Krishna Myneni <krishna.myneni@ccreweb.org> - 2012-01-30 05:21 -0800
Re: ZGAMMA revisited mhx@iae.nl (Marcel Hendrix) - 2012-01-31 00:21 +0200
Re: ZGAMMA revisited mhx@iae.nl (Marcel Hendrix) - 2012-02-04 22:11 +0200
Re: ZGAMMA revisited Krishna Myneni <krishna.myneni@ccreweb.org> - 2012-02-05 08:01 -0800
csiph-web