mirror of
https://github.com/vale981/arb
synced 2025-03-06 09:51:39 -05:00
1155 lines
62 KiB
ReStructuredText
1155 lines
62 KiB
ReStructuredText
.. _history:
|
|
|
|
History and changes
|
|
===============================================================================
|
|
|
|
For more details, view the commit log
|
|
in the git repository https://github.com/fredrik-johansson/arb
|
|
|
|
Old releases of the code can be accessed from
|
|
https://github.com/fredrik-johansson/arb/releases
|
|
|
|
Old versions of the documentation
|
|
-------------------------------------------------------------------------------
|
|
|
|
* http://arblib.org/arb-2.16.0.pdf
|
|
* http://arblib.org/arb-2.15.0.pdf
|
|
* http://arblib.org/arb-2.14.0.pdf
|
|
* http://arblib.org/arb-2.13.0.pdf
|
|
* http://arblib.org/arb-2.12.0.pdf
|
|
* http://arblib.org/arb-2.11.1.pdf
|
|
* http://arblib.org/arb-2.11.0.pdf
|
|
* http://arblib.org/arb-2.10.0.pdf
|
|
* http://arblib.org/arb-2.9.0.pdf
|
|
* http://arblib.org/arb-2.8.1.pdf
|
|
* http://arblib.org/arb-2.8.0.pdf
|
|
* http://arblib.org/arb-2.7.0.pdf
|
|
* http://arblib.org/arb-2.6.0.pdf
|
|
* http://arblib.org/arb-2.5.0.pdf
|
|
* http://arblib.org/arb-2.4.0.pdf
|
|
* http://arblib.org/arb-2.3.0.pdf
|
|
|
|
2018-12-07 -- version 2.16.0
|
|
-------------------------------------------------------------------------------
|
|
|
|
* Linear algebra and arithmetic
|
|
|
|
* Added acb_mat_approx_eig_qr for approximate computation of eigenvalues
|
|
and eigenvectors of complex matrices.
|
|
* Added acb_mat_eig_enclosure_rump implementing Rump's algorithm for
|
|
certification of eigenvalue-eigenvector pairs as well as clusters.
|
|
* Added acb_mat_eig_simple_rump for certified diagonalization of matrices
|
|
with simple eigenvalues.
|
|
* Added acb_mat_eig_simple_vdhoeven_mourrain, acb_mat_eig_simple for fast
|
|
certified diagonalization of matrices with simple eigenvalues.
|
|
* Added acb_mat_eig_multiple_rump, acb_mat_eig_multiple for certified
|
|
computation of eigenvalues with possible overlap.
|
|
* Added acb_mat_eig_global_enclosure for fast global inclusion of eigenvalues
|
|
without isolation.
|
|
* Added arb_mat_companion, acb_mat_companion for constructing companion
|
|
matrices.
|
|
* Added several arb_mat and acb_mat helper functions: indeterminate,
|
|
is_exact, is_zero, is_finite, is_triu, is_tril, is_diag, diag_prod.
|
|
* Added arb_mat_approx_inv, acb_mat_approx_inv.
|
|
* Optimized arb_mat_mul_block by using arb_dot when the blocks are small.
|
|
* Added acb_get_mid.
|
|
* Updated hilbert_matrix example program.
|
|
|
|
|
|
2018-10-25 -- version 2.15.1
|
|
-------------------------------------------------------------------------------
|
|
|
|
* Fixed precision issue leading to spurious NaN results in incomplete elliptic integrals
|
|
|
|
2018-09-18 -- version 2.15.0
|
|
-------------------------------------------------------------------------------
|
|
|
|
* Arithmetic
|
|
|
|
* Added arb_dot and acb_dot for efficient evaluation of dot products.
|
|
* Added arb_approx_dot and acb_approx_dot for efficient evaluation of dot products without error bounds.
|
|
* Converted loops to arb_dot and acb_dot in the arb_poly and acb_poly methods mullow_classical, inv_series, div_series, exp_series_basecase, sin_cos_series_basecase, sinh_cosh_series_basecase, evaluate_rectangular, evaluate2_rectangular, revert_series_lagrange_fast. Also changed the algorithm cutoffs for mullow, exp_series, sin_cos_series, sinh_cosh_series.
|
|
* Converted loops to arb_dot and acb_dot in the arb_mat and acb_mat methods mul_classical, mul_threaded, solve_tril, solve_triu, charpoly. Also changed the algorithm cutoffs for mul, solve_tril, solve_triu.
|
|
* Converted loops to arb_approx_dot and acb_approx_dot in the arb_mat and acb_mat methods approx_solve_tril, approx_solve_triu. Also changed the algorithm cutoffs.
|
|
* Added arb_mat_approx_mul and acb_mat_approx_mul for matrix multiplication without error bounds.
|
|
|
|
* Miscellaneous
|
|
|
|
* Added arb_hypgeom_airy_zero for computing zeros of Airy functions.
|
|
* Added arb_hypgeom_dilog wrapper.
|
|
* Optimized arb_const_pi and arb_const_log2 by using a static table at low precision, giving a small speedup and avoiding common recomputation when starting threads.
|
|
* Optimized mag_set_ui_2exp_si.
|
|
* Remove obsolete and unused function _arb_vec_dot.
|
|
* Converted some inline functions to ordinary functions to reduce library size.
|
|
* Fixed acb_dirichlet_stieltjes to use the integration algorithm also when a != 1.
|
|
* Fixed test failure for acb_dirichlet_stieltjes on ARM64 (reported by Gianfranco Costamagna). Special thanks to Julien Puydt for assistance with debugging.
|
|
* Fixed crash in acb_dft_bluestein with zero length (reported by Gianfranco Costamagna).
|
|
|
|
2018-07-22 -- version 2.14.0
|
|
-------------------------------------------------------------------------------
|
|
|
|
* Linear algebra
|
|
|
|
* 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.
|
|
* Made mag_add_ui_lower public.
|
|
* Added mag_sinh, mag_cosh, mag_sinh_lower, mag_cosh_lower.
|
|
* 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).
|
|
|
|
|
|
2018-02-23 -- version 2.13.0
|
|
-------------------------------------------------------------------------------
|
|
|
|
* Major bugs
|
|
|
|
* Fixed rounding direction in arb_get_abs_lbound_arf() which in some cases
|
|
could result in an invalid lower bound being returned, and added forgotten
|
|
test code for this and related functions (reported by deinst). Although
|
|
this bug could lead to incorrect results, it probably had limited impact in
|
|
practice (explaining why it was not caught indirectly by other test code)
|
|
since a single rounding in the wrong direction in this operation generally
|
|
will be dwarfed by multiple roundings in the correct direction in
|
|
surrounding operations.
|
|
|
|
* Important notes about bounds
|
|
|
|
* Many functions have been modified to compute tighter enclosures
|
|
when the input balls are wide. In most cases the bounds should be
|
|
improved, but there may be some regressions. Bug reports about any
|
|
significant regressions are welcome.
|
|
* Division by zero in arb_div() has been changed to return [NaN +/- inf]
|
|
instead of [+/- inf]. This change might be reverted in the future if it
|
|
proves to be too inconvenient. In either case, users should only assume
|
|
that division by zero produces something non-finite, and user code that
|
|
depends on division by zero to produce [0 +/- inf] should be modified to
|
|
handle zero-containing denominators as a separate case.
|
|
|
|
* Improvements to arithmetic and elementary functions
|
|
|
|
* Faster implementation of acb_get_mag_lower().
|
|
* Optimized arb_get_mag_lower(), arb_get_mag_lower_nonnegative().
|
|
* Added arb_set_interval_mag() and arb_set_interval_neg_pos_mag() for
|
|
constructing an arb_t from a pair of mag_t endpoints.
|
|
* Added mag_const_pi_lower(), mag_atan(), mag_atan_lower().
|
|
* Added mag_div_lower(), mag_inv(), mag_inv_lower().
|
|
* Added mag_sqrt_lower() and mag_rsqrt_lower().
|
|
* Added mag_log(), mag_log_lower(), mag_neg_log(), mag_neg_log_lower().
|
|
* Added mag_exp_lower(), mag_expinv_lower() and tweaked mag_exp().
|
|
* Added mag_pow_fmpz_lower(), mag_get_fmpz(), mag_get_fmpz_lower().
|
|
* Improved arb_exp() for wide input.
|
|
* Improved arb_log() for wide input.
|
|
* Improved arb_sqrt() for wide input.
|
|
* Improved arb_rsqrt() for wide input.
|
|
* Improved arb_div() for wide input.
|
|
* Improved arb_atan() for wide input and slightly optimized arb_atan2()
|
|
for input spanning multiple signs.
|
|
* Improved acb_rsqrt() for wide input and improved stability of this
|
|
function generally in the left half plane.
|
|
* Added arb_log_hypot() and improved acb_log() for wide input.
|
|
* Slightly optimized trigonometric functions (acb_sin(), acb_sin_pi(),
|
|
acb_cos(), acb_cos_pi(), acb_sin_cos(), acb_sin_cos_pi()) for pure real or
|
|
imaginary input.
|
|
|
|
* Special functions
|
|
|
|
* Slightly improved bounds for gamma function (arb_gamma(), acb_gamma(),
|
|
arb_rgamma(), acb_rgamma()) for wide input.
|
|
* Improved bounds for Airy functions for wide input.
|
|
* Simplifications to code for computing Gauss period minimal polynomials
|
|
(contributed by Jean-Pierre Flori).
|
|
* Optimized arb_hypgeom_legendre_p_ui() further by avoiding divisions in the
|
|
basecase recurrence and computing the prefactor more quickly in the
|
|
asymptotic series (contributed by Marc Mezzarobba).
|
|
* Small further optimization of arb_hypgeom_legendre_p_ui_root()
|
|
(contributed by Marc Mezzarobba).
|
|
* Improved derivative bounds for Legendre polynomials (contributed by
|
|
Marc Mezzarobba).
|
|
|
|
* Numerical integration
|
|
|
|
* Increased default quadrature deg_limit at low precision to improve
|
|
performance for integration of functions without singularities near the
|
|
path.
|
|
* Added several more integrals to examples/integrals.c
|
|
* Added utility functions acb_real_abs(), acb_real_sgn(),
|
|
acb_real_heaviside(), acb_real_floor(), acb_real_ceil(), acb_real_min(),
|
|
acb_real_max(), acb_real_sqrtpos(), useful for numerical integration.
|
|
* Added utility functions acb_sqrt_analytic(), acb_rsqrt_analytic(),
|
|
acb_log_analytic(), acb_pow_analytic() with branch cut detection, useful
|
|
for numerical integration.
|
|
|
|
* Build system and compatibility issues
|
|
|
|
* Removed -Wl flag from Makefile.subdirs to fix "-r and -pie may not be used
|
|
together" compilation error on some newer Linux distributions (reported
|
|
by many users).
|
|
* Fixed broken test code for l_vec_hurwitz which resulted in spurious
|
|
failures on 32-bit systems (originally reported by Thierry Monteil on
|
|
Sage trac).
|
|
* Avoid using deprecated MPFR function mpfr_root() with MPFR
|
|
versions >= 4.0.0.
|
|
* Remark: the recently released MPFR 4.0.0 has a bug in mpfr_div() leading
|
|
to test failures in Arb (though not affecting correctness of Arb itself).
|
|
Users should make sure to install the patched version MPFR 4.0.1.
|
|
* Added missing C++ include guards in arb_fmpz_poly.h and dlog.h (reported
|
|
by Marc Mezzarobba).
|
|
* Fixed Travis builds on Mac OS again (contributed by Isuru Fernando).
|
|
* Added missing declaration for arb_bell_ui() (reported by numsys).
|
|
|
|
2017-11-29 - version 2.12.0
|
|
-------------------------------------------------------------------------------
|
|
|
|
* Numerical integration
|
|
|
|
* Added a new function (acb_calc_integrate) for rigorous numerical
|
|
integration using adaptive subdivision and Gauss-Legendre quadrature. This
|
|
largely obsoletes the old integration code using Taylor series.
|
|
* Added new integrals.c example program (old example program moved to
|
|
integrals_taylor.c).
|
|
|
|
* Discrete Fourier transforms
|
|
|
|
* Added acb_dft module with various FFT algorithm implementations, including
|
|
top level O(n log n) acb_dft and acb_dft_inverse functions
|
|
(contributed by Pascal Molin).
|
|
|
|
* Legendre polynomials
|
|
|
|
* Added arb_hypgeom_legendre_p_ui for fast and accurate evaluation of
|
|
Legendre polynomials. This is also used automatically by the Legendre
|
|
functions, where it is substantially faster and gives better error
|
|
bounds than the generic algorithm.
|
|
* Added arb_hypgeom_legendre_p_ui_root for fast computation of Legendre
|
|
polynomial roots and Gauss-Legendre quadrature nodes (used internally
|
|
by the new integration code).
|
|
* Added arb_hypgeom_central_bin_ui for fast computation of central
|
|
binomial coefficients (used internally for Legendre polynomials).
|
|
|
|
* Dirichlet L-functions and zeta functions
|
|
|
|
* Fixed a bug in the Riemann zeta function involving a too small error
|
|
bound in the implementation of the Riemann-Siegel formula for inexact
|
|
input. This bug could result in a too small enclosure when evaluating the
|
|
Riemann zeta function at an argument of large imaginary height without
|
|
also computing derivatives, if the input interval was very wide.
|
|
* Add acb_dirichlet_zeta_jet; also made computation of the first derivative
|
|
of Riemann zeta function use the Riemann-Siegel formula where appropriate.
|
|
* Added acb_dirichlet_l_vec_hurwitz for fast simultaneous evaluation of
|
|
Dirichlet L-functions for multiple characters using Hurwitz zeta function
|
|
and FFT (contributed by Pascal Molin).
|
|
* Simplified interface for using hurwitz_precomp functions.
|
|
* Added lcentral.c example program (contributed by Pascal Molin).
|
|
* Improved error bounds when evaluating Dirichlet L-functions using
|
|
Euler product.
|
|
|
|
* Elementary functions
|
|
|
|
* Faster custom implementation of sin, cos at 4600 bits and above
|
|
instead of using MPFR (30-40% asymptotic improvement, up to a factor
|
|
two speedup).
|
|
* Faster code for exp between 4600 and 19000 bits.
|
|
* Improved error bounds for acb_atan by using derivative.
|
|
* Improved error bounds for arb_sinh_cosh, arb_sinh and arb_cosh when
|
|
the input has a small midpoint and large radius.
|
|
* Added reciprocal trigonometric and hyperbolic functions (arb_sec, arb_csc,
|
|
arb_sech, arb_csch, acb_sec, acb_csc, acb_sech, acb_csch).
|
|
* Changed the interface of _acb_vec_unit_roots to take an extra length
|
|
parameter (compatibility-breaking change).
|
|
* Improved arb_pow and acb_pow with an inexact base and a negative integer
|
|
or negative half-integer exponent; the inverse is now computed before
|
|
performing binary exponentiation in this case to avoid spurious blow-up.
|
|
|
|
* Elliptic functions
|
|
|
|
* Improved Jacobi theta functions to reduce the argument modulo the lattice
|
|
parameter, greatly improving speed and numerical stability for large input.
|
|
* Optimized arb_agm by using a final series expansion and using special code
|
|
for wide intervals.
|
|
* Optimized acb_agm1 by using a final series expansion and using special code
|
|
for positive real input.
|
|
* Optimized derivative of AGM for high precision by using a central
|
|
difference instead of a forward difference.
|
|
* Optimized acb_elliptic_rf and acb_elliptic_rj for high precision by using
|
|
a variable length series expansion.
|
|
|
|
* Other
|
|
|
|
* Fixed incorrect handling of subnormals in arf_set_d.
|
|
* Added mag_bin_uiui for bounding binomial coefficients.
|
|
* Added mag_set_d_lower, mag_sqrt_lower, mag_set_d_2exp_fmpz_lower.
|
|
* Implemented multithreaded complex matrix multiplication.
|
|
* Optimized arb_rel_accuracy_bits by adding fast path.
|
|
* Fixed a spurious floating-point exception (division by zero) in the
|
|
t-gauss_period_minpoly test program triggered by new code optimizations
|
|
in recent versions of GCC that are unsafe together with FLINT inline
|
|
assembly functions (a workaround was added to the test code, and a proper
|
|
fix for the assembly code has been added to FLINT).
|
|
|
|
2017-07-10 - version 2.11.1
|
|
-------------------------------------------------------------------------------
|
|
|
|
* Avoid use of a function that was unavailable in the latest public FLINT release
|
|
|
|
2017-07-09 - version 2.11.0
|
|
-------------------------------------------------------------------------------
|
|
|
|
* Special functions
|
|
|
|
* 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.
|
|
* Arb now requires FLINT version 2.5 or later.
|
|
|
|
2017-02-27 - version 2.10.0
|
|
-------------------------------------------------------------------------------
|
|
|
|
* General
|
|
|
|
* Changed a large number of methods from inline functions to normal
|
|
functions, substantially reducing the size of the built library.
|
|
* Fixed a few minor memory leaks (missing clear() calls).
|
|
|
|
* Basic arithmetic
|
|
|
|
* Added arb_is_int_2exp_si and acb_is_int_2exp_si.
|
|
* Added arf_sosq for computing x^2+y^2 of floating-point numbers.
|
|
* Improved error bounds for complex square roots in the left half plane.
|
|
* Improved error bounds for complex reciprocal (acb_inv) and division.
|
|
* Added the internal helper mag_get_d_log2_approx as a public method.
|
|
|
|
* Elliptic functions and integrals
|
|
|
|
* New module acb_elliptic.h for elliptic functions and integrals.
|
|
* Added complete elliptic integral of the third kind.
|
|
* Added Legendre incomplete elliptic integrals (first, second, third kinds).
|
|
* Added Carlson symmetric incomplete elliptic integrals (RF, RC, RG, RJ, RD).
|
|
* Added Weierstrass elliptic zeta and sigma functions.
|
|
* Added inverse Weierstrass elliptic p-function.
|
|
* Added utility functions for computing the Weierstrass invariants and lattice roots.
|
|
* Improved computation of derivatives of Jacobi theta functions by
|
|
using modular transformations, and added a main evaluation function
|
|
(acb_modular_theta_jet).
|
|
* Improved detection of pure real or pure imaginary parts in various cases
|
|
of evaluating theta and modular functions.
|
|
|
|
* Other special functions
|
|
|
|
* New, far more efficient implementation of the dilogarithm function (acb_polylog with s = 2).
|
|
* Fixed an issue in the Hurwitz zeta function leading to unreasonable
|
|
slowdown for certain complex input.
|
|
* Added add acb_poly_exp_pi_i_series.
|
|
* Added arb_poly_log1p_series, acb_poly_log1p_series.
|
|
|
|
2016-12-02 - version 2.9.0
|
|
-------------------------------------------------------------------------------
|
|
|
|
* License
|
|
|
|
* Changed license from GPL to LGPL.
|
|
|
|
* Build system and compatibility
|
|
|
|
* Fixed FLINT includes to use flint/foo.h instead of foo.h, simplifying compilation on many systems.
|
|
* Added another alias for the dynamic library to fix make check on certain systems (contributed by Andreas Enge).
|
|
* Travis CI support (contributed by Isuru Fernando).
|
|
* Added support for ARB_TEST_MULTIPLIER environment variable to control the number of test iterations.
|
|
* Support building with CMake (contributed by Isuru Fernando).
|
|
* Support building with MSVC on Windows (contributed by Isuru Fernando).
|
|
* Fixed unsafe use of FLINT_ABS for slong -> ulong conversion in arf.h,
|
|
which caused failures on MIPS and ARM systems.
|
|
|
|
* Basic arithmetic and methods
|
|
|
|
* Fixed mag_addmul(x,x,x) with x having a mantissa of all ones. This could
|
|
produce a non-normalized mag_t value, potentially leading to
|
|
incorrect results in arb and acb level arithmetic. This bug was caught by
|
|
new test code, and fortunately would have been hard to trigger accidentally.
|
|
* Added fasth paths for error bound calculations in arb_sqrt and arb_div, speeding up these operations significantly at low precision
|
|
* Added support for round-to-nearest in all arf methods.
|
|
* Added fprint methods (contributed by Alex Griffing).
|
|
* Added acb_printn and acb_fprintn methods to match arb_printn.
|
|
* Added arb_equal_si and acb_equal_si.
|
|
* Added arb_can_round_mpfr.
|
|
* Added arb_get_ubound_arf, arb_get_lbound_arf (contributed by Tommy Hofmann).
|
|
* Added sign function (arb_sgn).
|
|
* Added complex sign functions (acb_sgn, acb_csgn).
|
|
* 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 set_trunc, set_trunc_round convenience methods.
|
|
* Added add_series, sub_series methods for truncating addition.
|
|
* Added polynomial is_zero, is_one, is_x, valuation convenience methods.
|
|
* Added hack to arb_poly_mullow and acb_poly_mullow to avoid overhead when doing an in-place multiplication with length at most 2.
|
|
* Added binomial and Borel transform methods for acb_poly.
|
|
|
|
* Matrices
|
|
|
|
* Added Cholesky decomposition plus solving and inverse
|
|
for positive definite matrices (arb_mat_cho, arb_mat_spd_solve, arb_mat_spd_inv
|
|
and related methods) (contributed by Alex Griffing).
|
|
* Added LDL decomposition and inverse and solving based on LDL decomposition
|
|
for real matrices (arb_mat_ldl, arb_mat_solve_ldl_precomp, arb_mat_inv_ldl_precomp)
|
|
(contributed by Alex Griffing).
|
|
* Improved the entrywise error bounds in matrix exponential computation
|
|
to preserve sparsity and give exact entries where possible in many cases
|
|
(contributed by Alex Griffing).
|
|
* Added public functions for computing the truncated matrix exponential
|
|
Taylor series (arb_mat_exp_taylor_sum, acb_mat_exp_taylor_sum).
|
|
* Added functions related to sparsity structure (arb_mat_entrywise_is_zero,
|
|
arb_mat_count_is_zero, etc.) (contributed by Alex Griffing).
|
|
* Entrywise multiplication (arb_mat_mul_entrywise, acb_mat_mul_entrywise)
|
|
(contributed by Alex Griffing).
|
|
* Added is_empty and is_square convenience methods (contributed by Alex Griffing).
|
|
* Added the bool_mat helper module for matrices over the boolean semiring (contributed by Alex Griffing).
|
|
* Added Frobenius norm computation (contributed by Alex Griffing).
|
|
|
|
* Miscellaneous special functions
|
|
|
|
* Added evaluation of Bernoulli polynomials (arb_bernoulli_poly_ui, acb_bernoulli_poly_ui).
|
|
* Added convenience function for evaluation of huge Bernoulli numbers (arb_bernoulli_fmpz).
|
|
* Added Euler numbers (arb_euler_number_ui, arb_euler_number_fmpz).
|
|
* 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 Fresnel integrals (acb_hypgeom_fresnel, acb_hypgeom_fresnel_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.
|
|
|
|
2015-12-31 - version 2.8.1
|
|
-------------------------------------------------------------------------------
|
|
|
|
* Fixed 32-bit test failure for the Laguerre function.
|
|
* Made the Laguerre function indeterminate at negative integer orders, to be consistent with the test code.
|
|
|
|
2015-12-29 - version 2.8.0
|
|
-------------------------------------------------------------------------------
|
|
|
|
* Compatibility and build system
|
|
|
|
* Windows64 support (contributed by Bill Hart).
|
|
* 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 more complex inverse hyperbolic functions (acb_asin, acb_acos, acb_asinh, acb_acosh, acb_atanh).
|
|
* 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.
|
|
* Implemented Chebyshev, Jacobi, Gegenbauer, Laguerre, Hermite functions.
|
|
* Implemented spherical harmonics.
|
|
* Added function for computing Bessel J and Y functions simultaneously.
|
|
* Added rising factorials for non-integer n (arb_rising, acb_rising).
|
|
* Made rising factorials use gamma function for large integer n.
|
|
* Faster algorithm for theta constants and Dedekind eta function at very high precision.
|
|
* Fixed erf to give finite values instead of +/-inf for big imaginary input.
|
|
* Improved acb_zeta (and arb_zeta) to automatically use fast code for integer zeta values.
|
|
* Added double factorial (arb_doublefac_ui).
|
|
* Added code for generating Hilbert class polynomials (acb_modular_hilbert_class_poly).
|
|
|
|
* Matrices
|
|
|
|
* Added faster matrix squaring (arb/acb_mat_sqr) (contributed by Alex Griffing).
|
|
* Added matrix trace (arb/acb_mat_trace) (contributed by Alex Griffing).
|
|
* Added arb/acb_mat_set_round_fmpz_mat, acb_mat_set(_round)_arb_mat (contributed by Tommy Hofmann).
|
|
* Added arb/acb_mat_transpose (contributed by Tommy Hofmann).
|
|
* Added comparison methods arb/acb_mat_eq/ne (contributed by Tommy Hofmann).
|
|
|
|
* Other
|
|
|
|
* Added complex_plot example program.
|
|
* Added Airy functions to real_roots example program.
|
|
* Other minor patches were contributed by Alexander Kobel, Marc Mezzarobba, Julien Puydt.
|
|
* Removed obsolete file config.h.
|
|
|
|
2015-07-14 - version 2.7.0
|
|
-------------------------------------------------------------------------------
|
|
|
|
* Hypergeometric functions
|
|
|
|
* Implemented Bessel I and Y functions (acb_hypgeom_bessel_i, acb_hypgeom_bessel_y).
|
|
* Fixed bug in Bessel K function giving the wrong branch for negative real arguments.
|
|
* Added code for evaluating complex hypergeometric series binary splitting.
|
|
* Added code for evaluating complex hypergeometric series using fast multipoint evaluation.
|
|
|
|
* Gamma related functions
|
|
|
|
* Implemented the Barnes G-function and its continuous logarithm (acb_barnes_g, acb_log_barnes_g).
|
|
* Implemented the generalized polygamma function (acb_polygamma).
|
|
* Implemented the reflection formula for the logarithmic gamma function (acb_lgamma, acb_poly_lgamma_series).
|
|
* Implemented the digamma function of power series (arb_poly_digamma_series, acb_poly_digamma_series).
|
|
* Improved acb_poly_zeta_series to produce exact zero imaginary parts in most cases when the result should be real-valued.
|
|
* Made the real logarithmic gamma function (arb_lgamma, arb_poly_lgamma_series) abort more quickly for negative input.
|
|
|
|
* Elementary functions
|
|
|
|
* Added arb_exp_expinv and acb_exp_expinv functions for simultaneously computing exp(x), exp(-x).
|
|
* Improved acb_tan, acb_tan_pi, acb_cot and acb_cot_pi for input with large imaginary parts.
|
|
* Added complex hyperbolic functions (acb_sinh, acb_cosh, acb_sinh_cosh, acb_tanh, acb_coth).
|
|
* Added acb_log_sin_pi for computing the logarithmic sine function without branch cuts away from the real line.
|
|
* Added arb_poly_cot_pi_series, acb_poly_cot_pi_series.
|
|
* Added arf_root and improved speed of arb_root.
|
|
* Tuned algorithm selection in arb_pow_fmpq.
|
|
|
|
* Other
|
|
|
|
* Added documentation for arb and acb vector functions.
|
|
|
|
2015-04-19 - version 2.6.0
|
|
-------------------------------------------------------------------------------
|
|
|
|
* Special functions
|
|
|
|
* Added the Bessel K function.
|
|
* Added the confluent hypergeometric functions M and U.
|
|
* Added exponential, trigonometric and logarithmic integrals ei, si, shi, ci, chi, li.
|
|
* Added the complete elliptic integral of the second kind E.
|
|
* Added support for computing hypergeometric functions with power series as parameters.
|
|
* Fixed special cases in Bessel J function returning useless output.
|
|
* Fixed precision of zeta function accidentally being capped at 7000 digits (bug in 2.5).
|
|
* Special-cased real input in the gamma functions for complex types.
|
|
* Fixed exp of huge numbers outputting unnecessarily useless intervals.
|
|
* Fixed broken code in erf that sometimes gave useless output.
|
|
* Made selection of number of terms in hypergeometric series more robust.
|
|
|
|
* Polynomials and power series.
|
|
|
|
* Added sin_pi, cos_pi and sin_cos_pi for real and complex power series.
|
|
* Speeded up series reciprocal and division for length = 2.
|
|
* Added add_si methods for polynomials.
|
|
* Made inv_series and div_series with zero input produce indeterminates instead of aborting.
|
|
* Added arb_poly_majorant, acb_poly_majorant.
|
|
|
|
* Basic functions
|
|
|
|
* Added comparison methods arb_eq, arb_ne, arb_lt, arb_le, arb_gt, arb_ge, acb_eq, acb_ne.
|
|
* Added acb_rel_accuracy_bits and improved the real version.
|
|
* Fixed precision of constants like pi behaving more nondeterministically than necessary.
|
|
* Fixed arf_get_mag_lower(nan) to output 0 instead of inf.
|
|
|
|
* Other
|
|
|
|
* Removed call to fmpq_dedekind_sum which only exists in the git version of flint.
|
|
* Fixed a test code bug that could cause crashes on some systems.
|
|
* Added fix for static build on OS X (thanks Marcello Seri).
|
|
* Miscellaneous corrections to the documentation.
|
|
|
|
2015-01-28 - version 2.5.0
|
|
-------------------------------------------------------------------------------
|
|
|
|
* String conversion
|
|
|
|
* Added arb_set_str.
|
|
* Added arb_get_str and arb_printn for pretty-printed rigorous decimal output.
|
|
* Added helper functions for binary to decimal conversion.
|
|
|
|
* Core arithmetic
|
|
|
|
* Improved speed of division when using GMP instead of MPIR.
|
|
* Improved complex division with a small denominator.
|
|
* Removed a little bit of overhead for complex squaring.
|
|
|
|
* Special functions
|
|
|
|
* Faster code for atan at very high precision, used instead of mpfr_atan.
|
|
* Optimized elementary functions slightly for small input.
|
|
* Added modified error functions erfc and erfi.
|
|
* Added the generalized exponential integral.
|
|
* Added the upper incomplete gamma function.
|
|
* Implemented the complete elliptic integral of the first kind.
|
|
* Implemented the arithmetic-geometric mean of complex numbers.
|
|
* Optimized arb_digamma for small integers.
|
|
* Made mag_log_ui, mag_binpow_uiui and mag_polylog_tail proper functions.
|
|
* Added pow, agm, erf, elliptic_k, elliptic_p as functions of complex power series.
|
|
* Added incomplete gamma function of complex power series.
|
|
* Improved code for bounding complex rising factorials (the old code could
|
|
potentially have given wrong results in degenerate cases).
|
|
* Added arb_sqrt1pm1, arb_atanh, arb_asinh, arb_atanh.
|
|
* Added arb_log1p, acb_log1p, acb_atan.
|
|
* Added arb_hurwitz_zeta.
|
|
* Improved parameter selection in the Hurwitz zeta function to try to
|
|
avoid stalling when given enormous input.
|
|
* Optimized sqrt and rsqrt of power series when given a binomial as input.
|
|
* Made arb_bernoulli_ui(2^64-2) not crash.
|
|
* Fixed rgamma of negative integers returning indeterminate.
|
|
|
|
* Polynomials and matrices
|
|
|
|
* Added characteristic polynomial computation for real and complex matrices.
|
|
* Added polynomial set_round methods.
|
|
* Added is_real methods for more types.
|
|
* Added more get_unique_fmpz methods.
|
|
* Added code for generating Swinnerton-Dyer polynomials.
|
|
* Improved error bounding in det() and exp() of complex matrices to
|
|
recognize when the result is real-valued.
|
|
* Changed polynomial divrem to return success/fail instead of aborting on divide by zero.
|
|
|
|
* Miscellaneous
|
|
|
|
* Added logo to documentation.
|
|
* Made inlined functions build as part of the library.
|
|
* Silenced a clang warning.
|
|
* Made _acb_vec_sort_pretty a library function.
|
|
|
|
2014-11-15 - version 2.4.0
|
|
-------------------------------------------------------------------------------
|
|
|
|
* Arithmetic and core functions
|
|
|
|
* Made evaluation of sin, cos and exp at medium precision faster using the sqrt trick.
|
|
* Optimized arb_sinh and arb_sinh_cosh.
|
|
* Optimized complex division with a small denominator.
|
|
* Optimized cubing of complex numbers.
|
|
* Added floor and ceil functions for the arf and arb types.
|
|
* Added acb_poly powering functions.
|
|
* Added acb_exp_pi_i.
|
|
* Added functions for evaluation of Chebyshev polynomials.
|
|
* Fixed arb_div to output nan for input containing nan.
|
|
|
|
* Added a module acb_hypgeom for hypergeometric functions
|
|
|
|
* Evaluation of the generalized hypergeometric function in convergent cases.
|
|
* Evaluation of confluent hypergeometric functions using asymptotic expansions.
|
|
* The Bessel function of the first kind for complex input.
|
|
* The error function for complex input.
|
|
|
|
* Added a module acb_modular for modular forms and elliptic functions
|
|
|
|
* Support for working with modular transformations.
|
|
* Mapping a point to the fundamental domain.
|
|
* Evaluation of Jacobi theta functions and their series expansions.
|
|
* The Dedekind eta function.
|
|
* The j-invariant and the modular lambda and delta function.
|
|
* Eisenstein series.
|
|
* The Weierstrass elliptic function and its series expansion.
|
|
|
|
* Miscellaneous
|
|
|
|
* Fixed mag_print printing a too large exponent.
|
|
* Fixed printd methods to use a fallback instead of aborting when printing numbers too large for MPFR.
|
|
* Added version number string (arb_version).
|
|
* Various additions to the documentation.
|
|
|
|
2014-09-25 - version 2.3.0
|
|
-------------------------------------------------------------------------------
|
|
|
|
* Removed most of the legacy (Arb 1.x) modules.
|
|
* Updated build scripts, hopefully fixing various issues.
|
|
* New implementations of arb_sin, arb_cos, arb_sin_cos, arb_atan, arb_log, arb_exp, arb_expm1, much faster up to a few thousand bits.
|
|
* Ported the bit-burst code for high-precision exponentials to the arb type.
|
|
* Speeded up arb_log_ui_from_prev.
|
|
* Added mag_exp, mag_expm1, mag_exp_tail, mag_pow_fmpz.
|
|
* Improved various mag functions.
|
|
* Added arb_get/set_interval_mpfr, arb_get_interval_arf, and improved arb_set_interval_arf.
|
|
* Improved arf_get_fmpz.
|
|
* Prettier printing of complex numbers with negative imaginary part.
|
|
* Changed some frequently-used functions from inline to non-inline to reduce code size.
|
|
|
|
2014-08-01 - version 2.2.0
|
|
-------------------------------------------------------------------------------
|
|
|
|
* Added functions for computing polylogarithms and order expansions
|
|
of polylogarithms, with support for real and complex s, z.
|
|
* Added a missing cast affecting C++ compatibility.
|
|
* Generalized powsum functions to allow a geometric factor.
|
|
* Improved powsum functions slightly when the exponent is an integer.
|
|
* Faster arb_log_ui_from_prev.
|
|
* Added mag_sqrt and mag_rsqrt functions.
|
|
* Fixed various minor bugs and added missing tests and documentation entries.
|
|
|
|
2014-06-20 - version 2.1.0
|
|
-------------------------------------------------------------------------------
|
|
|
|
* Ported most of the remaining functions to the new arb/acb types,
|
|
including:
|
|
|
|
* Elementary functions (log, atan, etc.).
|
|
* Hypergeometric series summation.
|
|
* The gamma function.
|
|
* The Riemann zeta function and related functions.
|
|
* Bernoulli numbers.
|
|
* The partition function.
|
|
* The calculus modules (rigorous real root isolation, rigorous numerical integration of complex-valued functions).
|
|
* Example programs.
|
|
|
|
* Added several missing utility functions to the arf and mag modules.
|
|
|
|
2014-05-27 - version 2.0.0
|
|
-------------------------------------------------------------------------------
|
|
|
|
* New modules mag, arf, arb, arb_poly, arb_mat, acb, acb_poly,
|
|
acb_mat for higher-performance ball arithmetic.
|
|
|
|
* Poly_roots2 and hilbert_matrix2 example programs.
|
|
|
|
* Vector dot product and norm functions (contributed by Abhinav Baid).
|
|
|
|
2014-05-03 - version 1.1.0
|
|
-------------------------------------------------------------------------------
|
|
|
|
* Faster and more accurate error bounds for polynomial multiplication
|
|
(error bounds are now always as good as with classical multiplication,
|
|
and multiplying high-degree polynomials with approximately equal
|
|
coefficients now has proper quasilinear complexity).
|
|
|
|
* Faster and much less memory-hungry exponentials at very high precision.
|
|
|
|
* Improved the partition function to support n bigger than a single word,
|
|
and enabled the possibility to use two threads for the computation.
|
|
|
|
* Fixed a bug in floating-point arithmetic that caused a too small bound
|
|
for the rounding error to be reported when the result of an inexact
|
|
operation was rounded up to a power of two (this bug did
|
|
not affect the correctness of ball arithmetic, because operations on
|
|
ball midpoints always round down).
|
|
|
|
* Minor optimizations to floating-point arithmetic.
|
|
|
|
* Improved argument reduction of the digamma function and short series
|
|
expansions of the rising factorial.
|
|
|
|
* Removed the holonomic module for now, as it did not really do anything
|
|
very useful.
|
|
|
|
2013-12-21 - version 1.0.0
|
|
-------------------------------------------------------------------------------
|
|
|
|
* New example programs directory
|
|
|
|
* poly_roots example program.
|
|
* real_roots example program.
|
|
* pi_digits example program.
|
|
* hilbert_matrix example program.
|
|
* keiper_li example program.
|
|
|
|
* New fmprb_calc module for calculus with real functions
|
|
|
|
* Bisection-based root isolation.
|
|
* Asymptotically fast Newton root refinement.
|
|
|
|
* New fmpcb_calc module for calculus with complex functions
|
|
|
|
* Numerical integration using Taylor series.
|
|
|
|
* Scalar functions
|
|
|
|
* Simplified fmprb_const_euler using published error bound.
|
|
* Added fmprb_inv.
|
|
* Added fmprb_trim, fmpcb_trim.
|
|
* Added fmpcb_rsqrt (complex reciprocal square root).
|
|
* Fixed bug in fmprb_sqrtpos with nonfinite input.
|
|
* Slightly improved fmprb powering code.
|
|
* Added various functions for bounding fmprs by powers of two.
|
|
* Added fmpr_is_int.
|
|
|
|
* Polynomials and power series
|
|
|
|
* Implemented scaling to speed up blockwise multiplication.
|
|
* Slightly faster basecase power series exponentials.
|
|
* Improved sin/cos/tan/exp for short power series.
|
|
* Added complex sqrt_series, rsqrt_series.
|
|
* Implemented the Riemann-Siegel Z and theta functions for real power series.
|
|
* Added fmprb_poly_pow_series, fmprb_poly_pow_ui and related methods.
|
|
* Added fmprb/fmpcb_poly_contains_fmpz_poly.
|
|
* Faster composition by monomials.
|
|
* Implemented Borel transform and binomial transform for real power series.
|
|
|
|
* Matrices
|
|
|
|
* Implemented matrix exponentials.
|
|
* Multithreaded fmprb_mat_mul.
|
|
* Added matrix infinity norm functions.
|
|
* Added some more matrix-scalar functions.
|
|
* Added matrix contains and overlaps methods.
|
|
|
|
* Zeta function evaluation
|
|
|
|
* Multithreaded power sum evaluation.
|
|
* Faster parameter selection when computing many derivatives.
|
|
* Implemented binary splitting to speed up computing many derivatives.
|
|
|
|
* Miscellaneous
|
|
|
|
* Corrections for C++ compatibility (contributed by Jonathan Bober).
|
|
* Several minor bugfixes and test code enhancements.
|
|
|
|
2013-08-07 - version 0.7
|
|
-------------------------------------------------------------------------------
|
|
|
|
* Floating-point and ball functions
|
|
|
|
* Documented, added test code, and fixed bugs for various operations involving a ball containing an infinity or NaN.
|
|
* Added reciprocal square root functions (fmpr_rsqrt, fmprb_rsqrt) based on mpfr_rec_sqrt.
|
|
* Faster high-precision division by not computing an explicit remainder.
|
|
* Slightly faster computation of pi by using new reciprocal square root and division code.
|
|
* Added an fmpr function for approximate division to speed up certain radius operations.
|
|
* Added fmpr_set_d for conversion from double.
|
|
* Allow use of doubles to optionally compute the partition function faster but without an error bound.
|
|
* Bypass mpfr overflow when computing the exponential function to extremely high precision (approximately 1 billion digits).
|
|
* Made fmprb_exp faster for large numbers at extremely high precision by skipping the log(2) removal.
|
|
* Made fmpcb_lgamma faster at high precision by speeding up the argument reduction branch computation.
|
|
* Added fmprb_asin, fmprb_acos.
|
|
* Added various other utility functions to the fmprb module.
|
|
* Added a function for computing the Glaisher constant.
|
|
* Optimized evaluation of the Riemann zeta function at high precision.
|
|
|
|
* Polynomials and power series
|
|
|
|
* Made squaring of polynomials faster than generic multiplication.
|
|
* Implemented power series reversion (various algorithms) for the fmprb_poly type.
|
|
* Added many fmprb_poly utility functions (shifting, truncating, setting/getting coefficients, etc.).
|
|
* Improved power series division when either operand is short
|
|
* Improved power series logarithm when the input is short.
|
|
* Improved power series exponential to use the basecase algorithm for short input regardless of the output size.
|
|
* Added power series square root and reciprocal square root.
|
|
* Added atan, tan, sin, cos, sin_cos, asin, acos fmprb_poly power series functions.
|
|
* Added Newton iteration macros to simplify various functions.
|
|
* Added gamma functions of real and complex power series ([fmprb/fmpcb]_poly_[gamma/rgamma/lgamma]_series).
|
|
* Added wrappers for computing the Hurwitz zeta function of a power series ([fmprb/fmpcb]_poly_zeta_series).
|
|
* Implemented sieving and other optimizations to improve performance for evaluating the zeta function of a short power series.
|
|
* Improved power series composition when the inner series is linear.
|
|
* Added many fmpcb_poly versions of nearly all fmprb_poly functions.
|
|
* Improved speed and stability of series composition/reversion by balancing the power table exponents.
|
|
|
|
* Other
|
|
|
|
* Added support for freeing all cached data by calling flint_cleanup().
|
|
* Introduced fmprb_ptr, fmprb_srcptr, fmpcb_ptr, fmpcb_srcptr typedefs for cleaner function signatures.
|
|
* Various bug fixes and general cleanup.
|
|
|
|
2013-05-31 - version 0.6
|
|
-------------------------------------------------------------------------------
|
|
|
|
* Made fast polynomial multiplication over the reals numerically stable by using a blockwise algorithm.
|
|
* Disabled default use of the Gauss formula for multiplication of complex polynomials, to improve numerical stability.
|
|
* Added division and remainder for complex polynomials.
|
|
* Added fast multipoint evaluation and interpolation for complex polynomials.
|
|
* Added missing fmprb_poly_sub and fmpcb_poly_sub functions.
|
|
* Faster exponentials (fmprb_exp and dependent functions) at low precision, using precomputation.
|
|
* Rewrote fmpr_add and fmpr_sub using mpn level code, improving efficiency at low precision.
|
|
* Ported the partition function implementation from flint (using ball arithmetic
|
|
in all steps of the calculation to guarantee correctness).
|
|
* Ported algorithm for computing the cosine minimal polynomial from flint (using
|
|
ball arithmetic to guarantee correctness).
|
|
* Support using GMP instead of MPIR.
|
|
* Only use thread-local storage when enabled in flint.
|
|
* Slightly faster error bounding for the zeta function.
|
|
* Added some other helper functions.
|
|
|
|
2013-03-28 - version 0.5
|
|
-------------------------------------------------------------------------------
|
|
|
|
* Arithmetic and elementary functions
|
|
|
|
* Added fmpr_get_fmpz, fmpr_get_si.
|
|
* Fixed accuracy problem with fmprb_div_2expm1.
|
|
* Special-cased squaring of complex numbers.
|
|
* Added various fmpcb convenience functions (addmul_ui, etc).
|
|
* Optimized fmpr_cmp_2exp_si and fmpr_cmpabs_2exp_si, and added test code for comparison functions.
|
|
* Added fmprb_atan2, also fixing a bug in fmpcb_arg.
|
|
* Added fmprb_sin_pi, cos_pi, sin_cos_pi, etc.
|
|
* Added fmprb_sin_pi_fmpq (etc.) using algebraic methods for fast evaluation of roots of unity.
|
|
* Faster fmprb_poly_evaluate and evaluate_fmpcb using rectangular splitting.
|
|
* Added fmprb_poly_evaluate2, evaluate2_fmpcb for simultaneously evaluating the derivative.
|
|
* Added fmprb_poly root polishing code using near-optimal Newton steps (experimental).
|
|
* Added fmpr_root, fmprb_root (currently based on MPFR).
|
|
* Added fmpr_min, fmpr_max.
|
|
* Added fmprb_set_interval_fmpr, fmprb_union.
|
|
* Added fmpr_bits, fmprb_bits, fmpcb_bits for obtaining the mantissa width.
|
|
* Added fmprb_hypot.
|
|
* Added complex square roots.
|
|
* Improved fmprb_log to slightly improve speed, and properly support huge arguments.
|
|
* Fixed exp, cosh, sinh to work with huge arguments.
|
|
* Added fmprb_expm1.
|
|
* Fixed sin, cos, atan to work with huge arguments.
|
|
* Improved fmprb_pow and fmpcb_pow, including automatic detection of small integer and half-integer exponents.
|
|
* Added many more elementary functions: fmprb_tan/cot/tanh/coth, fmpcb_tan/cot, and pi versions.
|
|
* Added fmprb const_e, const_log2, const_log10, const_catalan.
|
|
* Fixed ball containment/overlap checking to work operate efficiently and correctly with huge exponents.
|
|
* Strengthened test code for many core operations.
|
|
|
|
* Special functions
|
|
|
|
* Reorganized zeta function related code.
|
|
* Faster evaluation of the Riemann zeta function via sieving.
|
|
* Documented and improved efficiency of the zeta constant binary splitting code.
|
|
* Calculate error bound in Borwein's algorithm with fmprs instead of using doubles.
|
|
* Optimized divisions in zeta evaluation via the Euler product.
|
|
* Use functional equation for Riemann zeta function of a negative argument.
|
|
* Compute single Bernoulli numbers using ball arithmetic instead of relying on the floating-point code in flint.
|
|
* Initial code for evaluating the gamma function using its Taylor series.
|
|
* Much faster rising factorials at high precision, using difference polynomials.
|
|
* Much faster gamma function at high precision.
|
|
* Added complex gamma function, log gamma function, and other versions.
|
|
* Added fmprb_agm (real arithmetic-geometric mean).
|
|
* Added fmprb_gamma_fmpq, supporting rapid computation of gamma(p/q) for q = 1,2,3,4,6.
|
|
* Added real and complex digamma function.
|
|
* Fixed unnecessary recomputation of Bernoulli numbers.
|
|
* Optimized computation of Euler's constant, and added proper error bounds.
|
|
* Avoid reliance on doubles in the hypergeometric series tail bound.
|
|
* Cleaned up factorials and binomials, computing factorials via gamma.
|
|
|
|
* Other
|
|
|
|
* Added an fmpz_extras module to collect various internal fmpz helper functions.
|
|
* Fixed detection of flint header files.
|
|
* Fixed various other small bugs.
|
|
|
|
2013-01-26 - version 0.4
|
|
-------------------------------------------------------------------------------
|
|
|
|
* Much faster fmpr_mul, fmprb_mul and set_round, resulting in general speed improvements.
|
|
* Code for computing the complex Hurwitz zeta function with derivatives.
|
|
* Fixed and documented error bounds for hypergeometric series.
|
|
* Better algorithm for series evaluation of the gamma function at a rational point.
|
|
* Much faster generation of Bernoulli numbers.
|
|
* Complex log, exp, pow, trigonometric functions (currently based on MPFR).
|
|
* Complex nth roots via Newton iteration.
|
|
* Added code for arithmetic on fmpcb_polys.
|
|
* Code for computing Khinchin's constant.
|
|
* Code for rising factorials of polynomials or power series
|
|
* Faster sin_cos.
|
|
* Better div_2expm1.
|
|
* Many other new helper functions.
|
|
* Improved thread safety.
|
|
* More test code for core operations.
|
|
|
|
2012-11-07 - version 0.3
|
|
-------------------------------------------------------------------------------
|
|
|
|
* Converted documentation to Sphinx.
|
|
* New module fmpcb for ball interval arithmetic over the complex numbers
|
|
|
|
* Conversions, utility functions and arithmetic operations.
|
|
|
|
* New module fmpcb_mat for matrices over the complex numbers
|
|
|
|
* Conversions, utility functions and arithmetic operations.
|
|
* Multiplication, LU decomposition, solving, inverse and determinant.
|
|
|
|
* New module fmpcb_poly for polynomials over the complex numbers
|
|
|
|
* Root isolation for complex polynomials.
|
|
|
|
* New module fmpz_holonomic for functions/sequences
|
|
defined by linear differential/difference equations
|
|
with polynomial coefficients
|
|
|
|
* Functions for creating various special sequences and functions.
|
|
* Some closure properties for sequences.
|
|
* Taylor series expansion for differential equations.
|
|
* Computing the nth entry of a sequence using binary splitting.
|
|
* Computing the nth entry mod p using fast multipoint evaluation.
|
|
|
|
* Generic binary splitting code with automatic error bounding is now
|
|
used for evaluating hypergeometric series.
|
|
* Matrix powering.
|
|
* Various other helper functions.
|
|
|
|
2012-09-29 - version 0.2
|
|
-------------------------------------------------------------------------------
|
|
|
|
* Code for computing the gamma function (Karatsuba, Stirling's series).
|
|
* Rising factorials.
|
|
* Fast exp_series using Newton iteration.
|
|
* Improved multiplication of small polynomials by using classical multiplication.
|
|
* Implemented error propagation for square roots.
|
|
* Polynomial division (Newton-based).
|
|
* Polynomial evaluation (Horner) and composition (divide-and-conquer).
|
|
* Product trees, fast multipoint evaluation and interpolation (various algorithms).
|
|
* Power series composition (Horner, Brent-Kung).
|
|
* Added the fmprb_mat module for matrices of balls of real numbers.
|
|
* Matrix multiplication.
|
|
* Interval-aware LU decomposition, solving, inverse and determinant.
|
|
* Many helper functions and small bugfixes.
|
|
|
|
2012-09-14 - version 0.1
|
|
-------------------------------------------------------------------------------
|
|
|
|
* 2012-08-05 - Began simplified rewrite.
|
|
* 2012-04-05 - Experimental ball and polynomial code (first commit).
|
|
|