1From Thomas Henlich on 20 February 2020: 2Implement the cotangent function. 3 4From Joseph Myers 12 Apr 2015: 5https://sympa.inria.fr/sympa/arc/mpc-discuss/2015-04/msg00009.html 6Try implementing tan z = (sin 2x + i sinh 2y) / (cos 2x + cosh 2y) or 7(sin(x)*cos(x) + i*sinh(y)*cosh(y))/(cos(x)^2 + sinh(y)^2) as in glibc. 8 9From Karim Belabas 9 Jan 2014: 10Implement Hurwitz(s,x) -> gives Zeta for x=1. 11Cf http://arxiv.org/abs/1309.2877 12 13From Andreas Enge 27 August 2012: 14Implement im(atan(x+i*y)) as 151/4 * [log1p (4y / (x^2 +(1-y)^2))] 16(see https://sympa.inria.fr/sympa/arc/mpc-discuss/2012-08/msg00002.html) 17 18From Andreas Enge 23 July 2012: 19go through tests and move them to the data files if possible 20(see, for instance, tcos.c) 21 22From Andreas Enge 31 August 2011: 23implement mul_karatsuba with three multiplications at precision around p, 24instead of two at precision 2*p and one at precision p 25requires analysis of error propagation 26 27From Andreas Enge 1 December 2022: 28think about, implement and document the possibility of having signed 29zeros as real and imaginary parts of results of multiplication. 30We might follow IEEE 754-2019, 3rd paragraph from section 6.3: 31 32 "When the sum of two operands with opposite signs (or the difference of two 33 operands with like signs) is exactly zero, the sign of that sum (or 34 difference) shall be +0 under all rounding-direction attributes except 35 roundTowardNegative; under that attribute, the sign of an exact zero sum 36 (or difference) shall be -0. However, under all rounding-direction 37 attributes, when x is zero, x + x and x - (-x) have the sign of x." 38 39From Andreas Enge and Paul Zimmermann 6 July 2012: 40Improve speed of Im (atan) for x+i*y with small y, for instance by using 41the Taylor series directly. See also the discussion 42https://sympa.inria.fr/sympa/arc/mpc-discuss/2012-08/msg00002.html 43and the timing program on 44https://sympa.inria.fr/sympa/arc/mpc-discuss/2013-08/msg00005.html 45 46For example with Sage 5.11: 47sage: %timeit atan(MPComplexField()(1,1)) 4810000 loops, best of 3: 42.2 us per loop 49sage: %timeit atan(MPComplexField()(1,1e-1000)) 50100 loops, best of 3: 5.29 ms per loop 51 52Same for asin: 53sage: %timeit asin(MPComplexField()(1,1)) 5410000 loops, best of 3: 83.7 us per loop 55sage: %timeit asin(MPComplexField()(1,1e-1000)) 56100 loops, best of 3: 17 ms per loop 57-> should be much faster with revision 1402 (check) 58 59Same for acos: 60sage: %timeit acos(MPComplexField()(1,1)) 6110000 loops, best of 3: 90.8 us per loop 62sage: %timeit acos(MPComplexField()(1,1e-1000)) 631 loops, best of 3: 2.29 s per loop 64 65Same for asinh: 66sage: %timeit asinh(MPComplexField()(1,1)) 6710000 loops, best of 3: 84 us per loop 68sage: %timeit asinh(MPComplexField()(1,1e-1000)) 69100 loops, best of 3: 2.1 ms per loop 70 71sage: %timeit acosh(MPComplexField()(1,1)) 7210000 loops, best of 3: 92 us per loop 73sage: %timeit acosh(MPComplexField()(1,1e-1000)) 741 loops, best of 3: 2.28 s per loop 75 76Bench: 77- from Andreas Enge 9 June 2009: 78 Scripts and web page comparing timings with different systems, 79 as done for mpfr at http://www.mpfr.org/mpfr-2.4.0/timings.html 80 81New functions to implement: 82- from Joseph S. Myers <joseph at codesourcery dot com> 19 Mar 2012: mpc_erf, 83 mpc_erfc, mpc_exp2, mpc_expm1, mpc_log1p, mpc_log2, mpc_lgamma, mpc_tgamma 84 https://sympa.inria.fr/sympa/arc/mpc-discuss/2012-03/msg00009.html 85 See the article by Pascal Molin (hal.archives-ouvertes.fr/hal-00580855). 86- implement a root-finding algorithm using the Durand-Kerner method 87 (cf http://en.wikipedia.org/wiki/Durand%E2%80%93Kerner_method). 88 See also the CEVAL algorithm from Yap and Sagraloff: 89 http://www.mpi-inf.mpg.de/~msagralo/ceval.pdf 90 A good starting point for the Durand-Kerner and Aberth methods is the 91 paper by Dario Bini "Numerical computation of polynomial zeros by means of 92 Aberth's method", Numerical Algorithms 13 (1996), 179-200. 93 94New tests to add: 95- from Andreas Enge and Philippe Théveny 9 April 2008 96 correct handling of Nan and infinities in the case of 97 intermediate overflows while the result may fit (we need special code) 98