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 <joseph at codesourcery dot com> 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) |