Home | History | Annotate | Line # | Download | only in dist
      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