From Thomas Henlich on 20 February 2020:
Implement the cotangent function.

From Joseph Myers 12 Apr 2015:
https://sympa.inria.fr/sympa/arc/mpc-discuss/2015-04/msg00009.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 https://sympa.inria.fr/sympa/arc/mpc-discuss/2012-08/msg00002.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 1 December 2022:
think about, implement and document the possibility of having signed
zeros as real and imaginary parts of results of multiplication.
We might follow IEEE 754-2019, 3rd paragraph from section 6.3:

   "When the sum of two operands with opposite signs (or the difference of two
   operands with like signs) is exactly zero, the sign of that sum (or
   difference) shall be +0 under all rounding-direction attributes except
   roundTowardNegative; under that attribute, the sign of an exact zero sum
   (or difference) shall be -0. However, under all rounding-direction
   attributes, when x is zero, x + x and x - (-x) have the sign of x."

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
https://sympa.inria.fr/sympa/arc/mpc-discuss/2012-08/msg00002.html
and the timing program on
https://sympa.inria.fr/sympa/arc/mpc-discuss/2013-08/msg00005.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
  https://sympa.inria.fr/sympa/arc/mpc-discuss/2012-03/msg00009.html
  See the article by Pascal Molin (hal.archives-ouvertes.fr/hal-00580855).
- 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)
