* Faster and more accurate real matrix multiplication using block decomposition, scaling, and multiplying via FLINT integer matrices in combination with safe use of doubles for radius matrix multiplications.
* Faster and more accurate complex matrix multiplication by reordering and taking advantage of real matrix multiplication.
* The new multiplication algorithm methods (arb_mat_mul_block, acb_mat_mul_reorder) are used automatically by the main multiplication methods.
* Faster and more accurate LU factorization by using a block recursive algorithm that takes advantage of matrix multiplication. Added separate algorithm methods (arb/acb)_mat_lu_(recursive/classical) with an automatic algorithm choice in the default lu methods.
* Added methods (arb/acb)_mat_solve_(tril/triu) (and variants) for solving upper or lower triangular systems using a block recursive algorithm taking advantage of matrix multiplication.
* Improved linear solving and inverse for large well-conditioned matrices by using a preconditioning algorithm. Added separate solving algorithm methods (arb/acb)_mat_solve_(lu/precond) with an automatic algorithm choice in the default solve methods (contributed by anonymous user arbguest).
* Improved determinants using a preconditioning algorithm. Added separate determinant algorithm methods (arb/acb)_mat_det_(lu/precond) with an automatic algorithm choice in the default det methods.
* Added automatic detection of triangular matrices in arb_mat_det and acb_mat_det.
* Added arb_mat_solve_preapprox which allows certifying a precomputed approximate solution (contributed by anonymous user arbguest).
* Added methods for constructing various useful test matrices: arb_mat_ones, arb_mat_hilbert, arb_mat_pascal, arb_mat_stirling, arb_mat_dct, acb_mat_ones, acb_mat_dft.
* Added support for window matrices (arb/acb_mat_window_init/clear).
* Changed random test matrix generation (arb/acb_mat_randtest) to produce sparse matrices with higher probability.
* Added acb_mat_conjugate and acb_mat_conjugate_transpose.
* Arithmetic and elementary functions
* Improved arb_sin_cos, arb_sin and arb_cos to produce more accurate enclosures for wide input intervals. The working precision is also reduced automatically based on the accuracy of the input to improve efficiency.
* Improved arb_sinh_cosh, arb_sinh and arb_cosh to produce more accurate enclosures for wide input intervals. The working precision is also reduced automatically based on the accuracy of the input to improve efficiency.
* Improved arb_exp_invexp and arb_expm1 to produce more accurate enclosures for wide input intervals. The working precision is also reduced automatically based on the accuracy of the input to improve efficiency.
* Improved acb_rsqrt to produce more accurate enclosures for wide intervals.
* Fixed minor precision loss near -1 in arb_log_hypot and acb_log.
* Return imaginary numbers with exact zero real part when possible in acb_acos and acb_acosh (contributed by Ralf Stephan).
* Improved special cases in arb_set_interval_arf (reported by Marc Mezzarobba).
* Special functions
* Added a function for computing isolated generalized Stieltjes constants (acb_dirichlet_stieltjes).
* Added scaled versions of Bessel functions (acb_hypgeom_bessel_i_scaled, acb_hypgeom_bessel_k_scaled).
* The interface for the internal methods computing Bessel functions (i_asymp, k_asymp, etc.) has been changed to accommodate computing scaled versions.
* Added Riemann xi function (acb_dirichlet_xi) (contributed by D.H.J Polymath).
* Fixed infinite error bounds in the Riemann zeta function when evaluating at a ball containing zero centered in the left plane (contributed by D.H.J Polymath).
* Fixed precision loss in Airy functions with huge input and high precision.
* Legendre functions of the first kind (legendre_p): handle inexact integer a+b-c in 2F1 better (contributed by Joel Dahne).
* Example programs and documentation
* Added more color functions to complex_plot.c.
* Added more example integrals suggested by Nicolas Brisebarre and Bruno Salvy to integrals.c
* Changed Sphinx style and redesigned the documentation front page.
* Miscellaneous documentation cleanups.
* Added documentation page about contributing.
* Other
* Fixed a crash on some systems when calling acb_dft methods with a length of zero.
* Fixed issue with setting rpath in configure (contributed by Vincent Delecroix).
* Added the Lambert W function (arb_lambertw, acb_lambertw, arb_poly_lambertw_series, acb_poly_lambertw_series). All complex branches and evaluation of derivatives are supported.
* Added the acb_expm1 method, complementing arb_expm1.
* Added arb_sinc_pi, acb_sinc_pi.
* Optimized handling of more special cases in the Hurwitz zeta function.
* Polynomials
* Added the arb_fmpz_poly module to provide Arb methods for FLINT integer polynomials.
* Added methods for evaluating an fmpz_poly at arb_t and acb_t arguments.
* Added arb_fmpz_poly_complex_roots for computing the real and complex roots of an integer polynomial, turning the functionality previously available in the poly_roots.c example program into a proper library function.
* Added a method (arb_fmpz_poly_gauss_period_minpoly) for constructing minimal polynomials of Gaussian periods.
* Added arb_poly_product_roots_complex for constructing a real polynomial from complex conjugate roots.
* Miscellaneous
* Fixed test code in the dirichlet module for 32-bit systems (contributed by Pascal Molin).
* Use flint_abort() instead of abort() (contributed by Tommy Hofmann).
* Fixed the static library install path (contributed by François Bissey).
* Made arb_nonnegative_part() a publicly documented method.
* Rewrote arb_contains_fmpq to make the test exact.
* Optimized mag_get_fmpq.
* Optimized arf_get_fmpz and added more robust test code.
* Rewrote arb_get_unique_fmpz and arb_get_interval_fmpz_2exp, reducing overhead, making them more robust with huge exponents, and documenting their behavior more carefully.
* Optimized arb_union.
* Optimized arf_is_int, arf_is_int_2exp_si and changed these from inline to normal functions.
* Added mag_const_pi, mag_sub, mag_expinv.
* Optimized binary-to-decimal conversion for huge exponents by using exponential function instead of binary powering.
* Added arb_intersection (contributed by Alex Griffing).
* Added arb_min, arb_max (contributed by Alex Griffing).
* Fixed a bug in arb_log and in test code on 64-bit Windows due to unsafe use of MPFR which only uses 32-bit exponents on Win64.
* Improved some test functions to reduce the chance of reporting spurious failures.
* Added squaring functions (arb_sqr, acb_sqr) (contributed by Ricky Farr).
* Added arf_frexp.
* Added arf_cmp_si, arf_cmp_ui, arf_cmp_d.
* Added methods to count allocated bytes (arb_allocated_bytes, _arb_vec_allocated_bytes, etc.).
* Added methods to predict memory usage for large vectors (_arb/_acb_vec_estimate_allocated_bytes).
* Changed clear() methods from inline to normal functions, giving 8% faster compilation and 25% smaller libarb.so.
* Added acb_unit_root and _acb_vec_unit_roots (contributed by Pascal Molin).
* Polynomials
* Added sinh and cosh functions of power series (arb/acb_poly_sinh/cosh_series and sinh_cosh_series).
* Use basecase series inversion algorithm to improve speed and error bounds in arb/acb_poly_inv_series.
* Added functions for fast polynomial Taylor shift (arb_poly_taylor_shift, acb_poly_taylor_shift and variants).
* Fast handling of special cases in polynomial composition.
* Added acb_poly scalar mul and div convenience methods (contributed by Alex Griffing).
* Added fast approximate partition function (arb_partitions_fmpz/ui).
* Optimized partition function for n < 1000 by using recurrence for the low 64 bits.
* Improved the worst-case error bound in arb_atan.
* Added arb_log_base_ui.
* Added complex sinc function (acb_sinc).
* Special handling of z = 1 when computing polylogarithms.
* Fixed agm(-1,-1) to output 0 instead of indeterminate.
* Made working precision in arb_gamma and acb_gamma more sensitive to the input accuracy.
* Hypergeometric functions
* Compute erf and erfc without cancellation problems for large or complex z.
* Avoid re-computing the square root of pi in several places.
* Added generalized hypergeometric function (acb_hypgeom_pfq).
* Implement binary splitting and rectangular splitting for evaluation of hypergeometric series with a power series parameter, greatly speeding up Y_n, K_n and other functions at high precision, as well as speeding up high-order parameter derivatives.
* Use binary splitting more aggressively in acb_hypgeom_pfq_sum to reduce error bound inflation.
* Asymptotic expansions of hypergeometric functions: more accurate parameter selection, and better handling of terminating cases.
* Tweaked algorithm selection and working precision in acb_hypgeom_m.
* Avoid dividing by the denominator of the next term in acb_hypgeom_sum, which would lead to a division by zero when evaluating hypergeometric polynomials.
* Fixed a bug in hypergeometric series evaluation resulting in near-integers not being skipped in some cases, leading to unnecessary loss of precision.
* Added series expansions of Airy functions (acb_hypgeom_airy_series, acb_hypgeom_airy_jet).
* Fixed a case where Airy functions accidentally chose the worst algorithm instead of the best one.
* Added functions for computing erf, erfc, erfi of power series in the acb_hypgeom module.
* Added series expansion of the logarithmic integral (acb_hypgeom_li_series).
* Added the lower incomplete gamma function (acb_hypgeom_gamma_lower) (contributed by Alex Griffing).
* Added series expansion of the lower incomplete gamma function (acb_hypgeom_gamma_lower_series) (contributed by Alex Griffing).
* Added support for computing the regularized incomplete gamma functions.
* Use slightly sharper error bound for analytic continuation of 2F1.
* Added support for computing finite limits of 2F1 with inexact parameters differing by integers.
* Added the incomplete beta function (acb_hypgeom_beta_lower, acb_hypgeom_beta_lower_series)
* Improved acb_hypgeom_u to use a division-avoiding algorithm for small polynomial cases.
* Added arb_hypgeom module, wrapping the complex hypergeometric functions for more convenient use with the arb_t type.
* Dirichlet L-functions and Riemann zeta function
* New module dirichlet for working algebraically with Dirichlet groups and characters (contributed by Pascal Molin).
* New module acb_dirichlet for numerical evaluation of Dirichlet characters and L-functions (contributed by Pascal Molin).
* Efficient representation and manipulation of Dirichlet characters using the Conrey representation (contributed by Pascal Molin).
* New module dlog for word-size discrete logarithm evaluation, used to support algorithms on Dirichlet characters (contributed by Pascal Molin).
* Methods for properties, evaluation, iteration, pairing, lift, lowering etc. of Dirichlet characters (contributed by Pascal Molin).
* Added acb_dirichlet_roots methods for fast evaluation of many roots of unity (contributed by Pascal Molin).
* Added acb_dirichlet_hurwitz_precomp methods for fast multi-evaluation of the Hurwitz zeta function for many parameter values.
* Added methods for computing Gauss, Jacobi and theta sums over Dirichlet characters (contributed by Pascal Molin).
* Added methods (acb_dirichlet_l, acb_dirichlet_l_jet, acb_dirichlet_l_series) for evaluation of Dirichlet L-functions and their derivatives.
* Implemented multiple algorithms for evaluation of Dirichlet L-functions depending on the argument (Hurwitz zeta function decomposition, Euler product, functional equation).
* Added methods (acb_dirichlet_hardy_z, acb_dirichlet_hardy_z_series, etc.) for computing the Hardy Z-function corresponding to a Dirichlet L-function.
* Added fast bound for Hurwitz zeta function (mag_hurwitz_zeta_uiui).
* Improved parameter selection in Hurwitz zeta function to target relative
instead of absolute error for large positive s.
* Improved parameter selection in Hurwitz zeta function to avoid computing
unnecessary Bernoulli numbers for large imaginary s.
* Added Dirichlet eta function (acb_dirichlet_eta).
* Implemented the Riemann-Siegel formula for faster evaluation of the Riemann zeta function at large height.
* Added smooth-index algorithm for the main sum when evaluating the Riemann zeta function, avoiding the high memory usage of the full sieving algorithm when the number of terms gets huge.
* Improved tuning for using the Euler product when computing the Riemann zeta function.
* Example programs
* Added logistic map example program.
* Added lvalue example program.
* Improved poly_roots in several ways: identify roots that are exactly real,
automatically perform squarefree factorization, use power hack, and
allow specifying a product of polynomials as input on the command line.
* Housekeeping
* New section in the documentation giving an introduction to ball arithmetic and using the library.
* Tidied, documented and added test code for the fmpz_extras module.
* Added proper documentation and test code for many helper methods.
* Removed the obsolete fmprb module entirely.
* Documented more algorithms and formulas.
* Clarified integer overflow issues and use of ARF_PREC_EXACT in the documentation.
* Added .gitignore file.
* Miscellaneous improvements to the documentation.
* Fixed a bug that broke basic arithmetic on targets where FLINT uses fallback code instead of assembly code, such as PPC64 (contributed by Jeroen Demeyer).
* Fixed configure to use EXTRA_SHARED_FLAGS/LDFLAGS, and other build system fixes (contributed by Tommy Hofmann, Bill Hart).
* Added soname versioning (contributed by Julien Puydt).
* Fixed test code on MinGW (contributed by Hrvoje Abraham).
* Miscellaneous fixes to simplify interfacing Arb from Julia.
* Arithmetic and elementary functions
* Fixed arf_get_d to handle underflow/overflow correctly and to support round-to-nearest.
* Added arb_contains_int and acb_contains_int for testing whether an interval contains any integer.
* Added acb_quadratic_roots_fmpz.
* Improved arb_sinh to use a more accurate formula for x < 0.
* Added sinc function (arb_sinc) (contributed by Alex Griffing).
* Fixed bug in arb_exp affecting convergence for huge input.
* Faster implementation of arb_div_2expm1_ui.
* Added mag_root, mag_geom_series.
* Improved and added test code for arb_add_error functions.
* Changed arb_pow and acb_pow to make pow(0,positive) = 0 instead of nan.
* Improved acb_sqrt to return finite output for finite input straddling the branch cut.
* Improved arb_set_interval_arf so that [inf,inf] = inf instead of an infinite interval.
* Added computation of Bell numbers (arb_bell_fmpz).
* Added arb_power_sum_vec for computing power sums using Bernoulli numbers.
* Added computation of the Fujiwara root bound for acb_poly.
* Added code to identify all the real roots of a real polynomial (acb_poly_validate_real_roots).
* Added several convenient assignment functions, including arb_set_d, acb_set_d, acb_set_d_d, acb_set_fmpz_fmpz (contributed by Ricky Farr).
* Added many accessor functions (_arb/acb_vec_entry_ptr, arb_get_mid/rad_arb, acb_real/imag_ptr, arb_mid/rad_ptr, acb_get_real/imag).
* Added missing functions acb_add_si, acb_sub_si.
* Renamed arb_root to arb_root_ui (keeping alias) and added acb_root_ui.
* Special functions
* Implemented the Gauss hypergeometric function 2F1 and its regularized version.
* Fixed two bugs in acb_hypgeom_pfq_series_direct discovered while implementing 2F1. In rare cases, these could lead to incorrect values for functions depending on parameter derivatives of hypergeometric series.
* The first bug involved incorrect handling of negative integer parameters. The bug only affected 2F1 and higher functions; it did not affect correctness of any previously implemented functions that relied on acb_hypgeom_pfq_series_direct (such as Bessel Y and K functions of integer order).
* The second bug involved a too small bound being computed for the sum of a geometric series. The geometric series bound is nearly tight for 2F1, and the incorrect version caused immediate test failures for that function. Theoretically, this bug affected correctness of some previously-implemented functions that relied on acb_hypgeom_pfq_series_direct (such as Bessel Y and K functions of integer order), but since the geometric bound is not as tight in those cases, those functions were still reliable in practice (no failing test case has been found).
* Implemented Airy functions and their derivatives (acb_hypgeom_airy).
* Implemented the confluent hypergeometric function 0F1 (acb_hypgeom_0f1).
* Implemented associated Legendre functions P and Q.