From Andreas Enge 22 July 2016:
Now that mpfr-3 is the minimum version requirement, support the
MPFR_RNDA rounding mode.
From Joseph Myers 12 Apr 2015:
http://lists.gforge.inria.fr/pipermail/mpc-discuss/2015-April/001347.html
Try implementing tan z = (sin 2x + i sinh 2y) / (cos 2x + cosh 2y) or
(sin(x)*cos(x) + i*sinh(y)*cosh(y))/(cos(x)^2 + sinh(y)^2) as in glibc.
From Karim Belabas 9 Jan 2014:
Implement Hurwitz(s,x) -> gives Zeta for x=1.
Cf http://arxiv.org/abs/1309.2877
From Andreas Enge 27 August 2012:
Implement im(atan(x+i*y)) as
1/4 * [log1p (4y / (x^2 +(1-y)^2))]
(see http://lists.gforge.inria.fr/pipermail/mpc-discuss/2012-August/001196.html)
From Andreas Enge 23 July 2012:
go through tests and move them to the data files if possible
(see, for instance, tcos.c)
From Andreas Enge 31 August 2011:
implement mul_karatsuba with three multiplications at precision around p,
instead of two at precision 2*p and one at precision p
requires analysis of error propagation
From Andreas Enge 05 July 2012:
Add support for rounding mode MPFR_RNDA.
From Andreas Enge and Paul Zimmermann 6 July 2012:
Improve speed of Im (atan) for x+i*y with small y, for instance by using
the Taylor series directly. See also the discussion
http://lists.gforge.inria.fr/pipermail/mpc-discuss/2012-August/001196.html
and the timing program on
http://lists.gforge.inria.fr/pipermail/mpc-discuss/2013-August/001254.html
For example with Sage 5.11:
sage: %timeit atan(MPComplexField()(1,1))
10000 loops, best of 3: 42.2 us per loop
sage: %timeit atan(MPComplexField()(1,1e-1000))
100 loops, best of 3: 5.29 ms per loop
Same for asin:
sage: %timeit asin(MPComplexField()(1,1))
10000 loops, best of 3: 83.7 us per loop
sage: %timeit asin(MPComplexField()(1,1e-1000))
100 loops, best of 3: 17 ms per loop
-> should be much faster with revision 1402 (check)
Same for acos:
sage: %timeit acos(MPComplexField()(1,1))
10000 loops, best of 3: 90.8 us per loop
sage: %timeit acos(MPComplexField()(1,1e-1000))
1 loops, best of 3: 2.29 s per loop
Same for asinh:
sage: %timeit asinh(MPComplexField()(1,1))
10000 loops, best of 3: 84 us per loop
sage: %timeit asinh(MPComplexField()(1,1e-1000))
100 loops, best of 3: 2.1 ms per loop
sage: %timeit acosh(MPComplexField()(1,1))
10000 loops, best of 3: 92 us per loop
sage: %timeit acosh(MPComplexField()(1,1e-1000))
1 loops, best of 3: 2.28 s per loop
Bench:
- from Andreas Enge 9 June 2009:
Scripts and web page comparing timings with different systems,
as done for mpfr at http://www.mpfr.org/mpfr-2.4.0/timings.html
New functions to implement:
- from Joseph S. Myers 19 Mar 2012: mpc_erf,
mpc_erfc, mpc_exp2, mpc_expm1, mpc_log1p, mpc_log2, mpc_lgamma, mpc_tgamma
http://lists.gforge.inria.fr/pipermail/mpc-discuss/2012-March/001090.html
- from Andreas Enge and Philippe Théveny 17 July 2008
agm (and complex logarithm with agm ?). For the error analysis, one can
start from Theorem 1 of http://www.lix.polytechnique.fr/Labo/Regis.Dupont/preprints/Dupont_FastEvalMod.ps.gz, and probably the best is to compute AGM(a,b)
as a*AGM(1,b/a) with |b/a| <= 1. In such a way, after one step all values
are in the same quadrant, and no cancellation occurs any more.
- from Andreas Enge 25 June 2009:
correctly rounded roots of unity zeta_n^i
- implement a root-finding algorithm using the Durand-Kerner method
(cf http://en.wikipedia.org/wiki/Durand%E2%80%93Kerner_method).
See also the CEVAL algorithm from Yap and Sagraloff:
http://www.mpi-inf.mpg.de/~msagralo/ceval.pdf
A good starting point for the Durand-Kerner and Aberth methods is the
paper by Dario Bini "Numerical computation of polynomial zeros by means of
Aberth's method", Numerical Algorithms 13 (1996), 179-200.
New tests to add:
- from Andreas Enge and Philippe Théveny 9 April 2008
correct handling of Nan and infinities in the case of
intermediate overflows while the result may fit (we need special code)