1 From Thomas Henlich on 20 February 2020: 2 Implement the cotangent function. 3 4 From Joseph Myers 12 Apr 2015: 5 https://sympa.inria.fr/sympa/arc/mpc-discuss/2015-04/msg00009.html 6 Try 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 9 From Karim Belabas 9 Jan 2014: 10 Implement Hurwitz(s,x) -> gives Zeta for x=1. 11 Cf http://arxiv.org/abs/1309.2877 12 13 From Andreas Enge 27 August 2012: 14 Implement im(atan(x+i*y)) as 15 1/4 * [log1p (4y / (x^2 +(1-y)^2))] 16 (see https://sympa.inria.fr/sympa/arc/mpc-discuss/2012-08/msg00002.html) 17 18 From Andreas Enge 23 July 2012: 19 go through tests and move them to the data files if possible 20 (see, for instance, tcos.c) 21 22 From Andreas Enge 31 August 2011: 23 implement mul_karatsuba with three multiplications at precision around p, 24 instead of two at precision 2*p and one at precision p 25 requires analysis of error propagation 26 27 From Andreas Enge 1 December 2022: 28 think about, implement and document the possibility of having signed 29 zeros as real and imaginary parts of results of multiplication. 30 We 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 39 From Andreas Enge and Paul Zimmermann 6 July 2012: 40 Improve speed of Im (atan) for x+i*y with small y, for instance by using 41 the Taylor series directly. See also the discussion 42 https://sympa.inria.fr/sympa/arc/mpc-discuss/2012-08/msg00002.html 43 and the timing program on 44 https://sympa.inria.fr/sympa/arc/mpc-discuss/2013-08/msg00005.html 45 46 For example with Sage 5.11: 47 sage: %timeit atan(MPComplexField()(1,1)) 48 10000 loops, best of 3: 42.2 us per loop 49 sage: %timeit atan(MPComplexField()(1,1e-1000)) 50 100 loops, best of 3: 5.29 ms per loop 51 52 Same for asin: 53 sage: %timeit asin(MPComplexField()(1,1)) 54 10000 loops, best of 3: 83.7 us per loop 55 sage: %timeit asin(MPComplexField()(1,1e-1000)) 56 100 loops, best of 3: 17 ms per loop 57 -> should be much faster with revision 1402 (check) 58 59 Same for acos: 60 sage: %timeit acos(MPComplexField()(1,1)) 61 10000 loops, best of 3: 90.8 us per loop 62 sage: %timeit acos(MPComplexField()(1,1e-1000)) 63 1 loops, best of 3: 2.29 s per loop 64 65 Same for asinh: 66 sage: %timeit asinh(MPComplexField()(1,1)) 67 10000 loops, best of 3: 84 us per loop 68 sage: %timeit asinh(MPComplexField()(1,1e-1000)) 69 100 loops, best of 3: 2.1 ms per loop 70 71 sage: %timeit acosh(MPComplexField()(1,1)) 72 10000 loops, best of 3: 92 us per loop 73 sage: %timeit acosh(MPComplexField()(1,1e-1000)) 74 1 loops, best of 3: 2.28 s per loop 75 76 Bench: 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 81 New 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 94 New tests to add: 95 - from Andreas Enge and Philippe Thveny 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