Multiple double arithmetic for PHCv2.4.87

This directory was added to version 2.3.55 of PHCpack, departing from
a standalone C version of a part of the QD software library.
This standalone C version serves as a bridge to an Ada translation.
In version 2.3.87, the C code was moved into a separate folder C,
in order to avoid excluded source files when building libPHCpack.

Work with Genady Yoffe led to this directory in PHCpack.

The main reference for the QD-2.3.9 library is
Y. Hida, X.S. Li, and D.H. Bailey:
"Algorithms for quad-double precision floating point arithmetic."
In 15th IEEE Symposium on Computer Arithmetic (Arith-15 2001),
11-17 June 2001, Vail, CO, USA, pages 155-162. IEEE Computer Society, 2001.
Shortened version of Technical Report LBNL-46996,
software at http://crd.lbl.gov/~dhbailey/mpdist/qd-2.3.9.tar.gz.

Note that the "BSD-LBNL-License" is GPL compatible, although 
"If you wish to use the software for commercial purposes
please contact the Technology Transfer Department at TTD@lbl.gov or
call 510-286-6457."

The standalone C version is a derivative of the double doubles
in the QD library.  Because its main purpose is to serve the move
to an Ada translation, several features are omitted:
(1) no inline, the header files are like Ada package specification
(2) no treatment of NAN and INF
(3) no sin, cos, tan, sqrt, etc...
Although sqrt, sin, and cos were added in version 2.3.56.
A first basic version of double_double.c occupies around 1000 lines
and also quad_double.c is of the same relatively small size.
See the makefile to compile dd_test.c and qd_test.c.

Trigonometric functions were put to good use in version 2.3.65 to
compute powers of complex numbers with huge exponents.

Triple, penta, octo, and deca double precision numbers were added in 2.4.80,
with the aid of code generated by CAMPARY.
CAMPARY is the CudA Multiple Precision ARithmetic librarY,
by Mioara Joldes, Olivier Marty, Jean-Michel Muller,
Valentina Popescu and Warwick Tucker; released under GPL.

Run "gprbuild qd.gpr" to make all test programs.
On windows, type "gprbuild qd.gpr -Xos=windows" at the PowerShell prompt.
The "gprclean qd.gpr" removes all files created by gprbuild.

------------------------------------------------------------------------------
file name                    : short description
------------------------------------------------------------------------------
double_double_basics         : basic inline functions for double double numbers
double_double_numbers        : defines double double arithmetic
double_double_numbers_io     : provides input/output of double double numbers
test_double_doubles          : test procedures on double doubles
ts_dbldbl                    : main test on double double arithmetic
quad_double_renormalizations : basic inline functions for quad double numbers
quad_double_numbers          : defines quad double arithmetic
quad_double_numbers_io       : input/output for quad double numbers
test_quad_doubles            : test procedures on quad doubles
ts_qddbl                     : main test on quad double arithmetic
------------------------------------------------------------------------------
double_double_ring           : ring of double double numbers
double_double_ring_io        : input/output for ring of double double numbers
double_double_ring-ffield    : field of double double numbers
dobldobl_complex_numbers     : complex arithmetic with double doubles
dobldobl_complex_numbers_io  : input/output for double double complex
dobldobl_random_numbers      : random number generators for double doubles
dobldobl_complex_ring        : ring of double double complex numbers
dobldobl_complex_ring_io     : input/output for ring of double double complex
dobldobl_complex_ring-ffield : field of double double complex numbers
test_dobldobl_complex        : tests double double complex arithmetic
ts_ddcmplx                   : main test on double double complex arithmetic
quad_double_ring             : ring of quad double numbers
quad_double_ring_io          : input/output for ring of quad double numbers
quad_double_ring-ffield      : field of quad double numbers
quaddobl_complex_numbers     : complex arithmetic with quad doubles
quaddobl_complex_numbers_io  : input/output for quad double complex
quaddobl_random_numbers      : random number generators for quad doubles
quaddobl_complex_ring        : ring of quad double complex numbers
quaddobl_complex_ring_io     : input/output for ring of quad double complex
quaddobl_complex_ring-ffield : field of quad double complex numbers
test_quaddobl_complex        : tests quad double complex arithmetic
ts_qdcmplx                   : main test on quad double complex arithmetic
------------------------------------------------------------------------------
double_double_constants         : collects double double constants
dobldobl_mathematical_functions : dd sqrt and trigonometric functions
dobldobl_complex_numbers_polar  : polar representations of dd complex
quad_double_constants           : collects quad double constants
quaddobl_mathematical_functions : qd sqrt and trigonometric functions
quaddobl_complex_numbers_polar  : polar representations of qd complex
test_dobldobl_functions         : test functions in double double precision
test_quaddobl_functions         : test functions in quad double precision
ts_ddfun                        : main test on dd math functions
ts_qdfun                        : main test on qd math functions
------------------------------------------------------------------------------
standard_complex_exponentiation : high powers of double complex numbers
dobldobl_complex_exponentiation : high powers of double double complex numbers
quaddobl_complex_exponentiation : high powers of quad double complex numbers
test_polar_exponentiation       : test procedures on complex exponentiation 
ts_cmpexp                       : main test on complex exponentiation
------------------------------------------------------------------------------
fast_double_renormalizations    : renormalizations for multiple doubles
triple_double_numbers           : defines triple double numbers and arithmetic
triple_double_numbers_io        : input and output of triple double numbers
test_triple_doubles             : test procedures on triple doubles
triple_double_constants         : constants in triple double precision
ts_tridbl                       : main test on triple double arithmetic
tripdobl_mathematical_functions : triple double SQRT and Radius
test_tripdobl_functions         : test triple double functions
ts_tdfun                        : main test on triple double functions
triple_double_ring              : ring of triple double numbers
triple_double_ring_io           : input/output for ring of triple doubles
triple_double_ring-ffield       : field of triple double numbers
tripdobl_complex_numbers        : complex arithmetic with triple doubles
tripdobl_complex_numbers_io     : input/output for triple double complex
tripdobl_complex_ring           : ring of triple double complex numbers
tripdobl_complex_ring-ffield    : field of triple double complex numbers
tripdobl_complex_numbers_polar  : polar view of triple double complex numbers
tripdobl_random_numbers         : random numbers in triple double precision
test_tripdobl_complex           : tests triple double complex arithmetic
ts_tdcmplx                      : main test on triple double complex numbers
------------------------------------------------------------------------------
penta_double_numbers            : defines penta double numbers and arithmetic
penta_double_numbers_io         : input and output of penta double numbers
test_penta_doubles              : test procedures on penta doubles
penta_double_constants          : constants in penta double precision
ts_pentadbl                     : main test on penta double arithmetic
pentdobl_mathematical_functions : penta double SQRT and Radius
test_pentdobl_functions         : test penta double functions
ts_pdfun                        : main test on penta double functions
penta_double_ring               : ring of penta double numbers
penta_double_ring_io            : input/output for the ring of penta doubles
penta_double_ring-ffield        : field of penta double numbers
pentdobl_complex_numbers        : complex arithmetic with penta doubles
pentdobl_complex_numbers_io     : input/output for penta double complex
pentdobl_complex_ring           : ring of penta double complex numbers
pentdobl_complex_ring-ffield    : field of penta double complex numbers
pentdobl_complex_numbers_polar  : polar view of penta double complex numbers
pentdobl_random_numbers         : random numbers in penta double precision
test_pentdobl_complex           : test penta double complex arithmetic
ts_pdcmplx                      : main test on penta double complex numbers
------------------------------------------------------------------------------
octo_double_numbers             : defines octo double numbers and arithmetic
octo_double_numbers_io          : input and output of octo double numbers
test_octo_doubles               : test procedures on octo doubles
octo_double_constants           : constants in octo double precision
ts_octdbl                       : main test on octo double arithmetic
octodobl_mathematical_functions : octo double SQRT and Radius
test_octodobl_functions         : test octo double functions
ts_odfun                        : main test on octo double functions
octo_double_ring                : ring of octo double numbers
octo_double_ring_io             : input/output for the ring of octo doubles
octo_double_ring-ffield         : field of octo double numbers
octodobl_complex_numbers        : complex arithmetic with octo doubles
octodobl_complex_numbers_io     : input/output for octo double complex
octodobl_complex_ring           : ring of octo double complex numbers
octodobl_complex_ring-ffield    : field of octo double complex numbers
octodobl_complex_numbers_polar  : polar view of octo double complex numbers
octodobl_random_numbers         : random numbers in octo double precision
test_octodobl_complex           : tests octo double complex arithmetic
ts_odcmplx                      : main test on octo double complex numbers
------------------------------------------------------------------------------
deca_double_numbers             : defines deca double numbers and arithmetic
deca_double_numbers_io          : input and output of deca double numbers
test_deca_doubles               : test procedures on deca doubles
deca_double_constants           : constants in deca double precision
ts_decadbl                      : main test on deca double arithmetic
decadobl_mathematical_functions : deca double SQRT and Radius
test_decadobl_functions         : tests deca double functions
ts_dafun                        : main test on deca double functions
deca_double_ring                : ring of deca double numbers
deca_double_ring_io             : input/output for the ring of deca doubles
deca_double_ring-ffield         : field of deca double numbers
decadobl_complex_numbers        : complex arithmetic with deca doubles
decadobl_complex_numbers_io     : input/output for deca double complex
decadobl_complex_ring           : ring of deca double complex numbers
decadobl_complex_ring-ffield    : field of deca double complex numbers
decadobl_complex_numbers_polar  : polar view of deca double complex numbers
decadobl_random_numbers         : random numbers in deca double precision
test_decadobl_complex           : tests deca double complex arithmetic
ts_dacmplx                      : main test on deca double complex numbers
------------------------------------------------------------------------------
hexa_double_numbers             : defines hexa double numbers and arithmetic
hexa_double_numbers_io          : input and output of hexa double numbers
test_hexa_doubles               : test procedures on hexa doubles
sincostables.py                 : sympy script for hexa double constants
hexa_double_constants           : constants in hexa double precision
ts_hexdbl                       : main test on hexa double arithmetic
hexadobl_mathematical_functions : hexa double SQRT and Radius
hexa_double_ring                : ring of hexa double numbers
hexa_double_ring_io             : input/output for the ring of hexa doubles
hexa_double_ring-ffield         : field of hexa double numbers
hexadobl_complex_numbers        : complex arithmetic with hexa doubles
hexadobl_complex_numbers_io     : input/output for hexa double complex
hexadobl_complex_ring           : ring of hexa double complex numbers
hexadobl_complex_ring-ffield    : field of hexa double complex numbers
hexadobl_random_numbers         : random numbers in hexa double precision
test_hexadobl_functions         : tests hexa double functions
ts_hdfun                        : main test on hexa double functions
decadobl_complex_numbers_polar  : polar view of hexa double complex numbers
test_hexadobl_complex           : tests hexa double complex arithmetic
ts_hdcmplx                      : main test on hexa double complex numbers
------------------------------------------------------------------------------
multprec_dobldobl_convertors    : convert double double <-> multiprec float
dobldobl_complex_numbers_cv     : convert complex <-> double double complex
test_multprec_dobldobl_casts    : test casting multprec into dd and back
ts_mpddcv                       : main test on dobldobl multprec conversions
multprec_tripdobl_convertors    : convert triple double <-> multiprec float
tripdobl_complex_numbers_cv     : convert complex <-> triple double complex
test_multprec_tripdobl_casts    : test casting multprec into td and back
multprec_quaddobl_convertors    : convert double double <-> multiprec float
quaddobl_complex_numbers_cv     : convert complex <-> quad double complex
test_multprec_quaddobl_casts    : tests casting multprec into qd and back
ts_mpqdcv                       : main test on quaddobl multprec conversions
multprec_pentdobl_convertors    : convert penta double <-> multiprec float
pentdobl_complex_numbers_cv     : convert complex <-> penta double complex
test_multprec_pentdobl_casts    : tests casting multprec into pd and back
multprec_octodobl_convertors    : convert octo double <-> multiprec float
octodobl_complex_numbers_cv     : convert complex <-> octo double complex
test_multprec_octodobl_casts    : tests casting multprec into od and back
multprec_decadobl_convertors    : convert deca double <-> multiprec float
decadobl_complex_numbers_cv     : convert complex <-> deca double complex
test_multprec_decadobl_casts    : tests casting multprec into da and back
multprec_hexadobl_convertors    : convert hexa double <-> multiprec float
hexadobl_complex_numbers_cv     : convert complex <-> hexa double complex
test_multprec_hexadobl_casts    : tests casting multprec into hd and back
ts_mpcasts                      : main test on multiprecision casts
------------------------------------------------------------------------------
