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