{"id":13435019,"url":"https://github.com/flintlib/arb","last_synced_at":"2025-12-29T23:37:19.500Z","repository":{"id":2928901,"uuid":"3940127","full_name":"flintlib/arb","owner":"flintlib","description":"Arb has been merged into FLINT -- use https://github.com/flintlib/flint/ instead","archived":false,"fork":false,"pushed_at":"2024-03-16T20:29:45.000Z","size":10462,"stargazers_count":457,"open_issues_count":120,"forks_count":135,"subscribers_count":26,"default_branch":"master","last_synced_at":"2024-05-02T00:01:10.040Z","etag":null,"topics":["arbitrary-precision","c","complex-numbers","floating-point","interval-arithmetic","linear-algebra","multiprecision","number-theory","special-functions"],"latest_commit_sha":null,"homepage":"http://arblib.org/","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-2.1","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/flintlib.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2012-04-05T13:48:30.000Z","updated_at":"2024-07-31T04:33:52.805Z","dependencies_parsed_at":"2024-01-16T01:25:44.205Z","dependency_job_id":"5294b298-31f3-4313-b314-3cb28e00b149","html_url":"https://github.com/flintlib/arb","commit_stats":{"total_commits":2406,"total_committers":40,"mean_commits":60.15,"dds":"0.27182044887780543","last_synced_commit":"bb52ca17acce8187acfa32acf31243a965138510"},"previous_names":["flintlib/arb","fredrik-johansson/arb"],"tags_count":40,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flintlib%2Farb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flintlib%2Farb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flintlib%2Farb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flintlib%2Farb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/flintlib","download_url":"https://codeload.github.com/flintlib/arb/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244143879,"owners_count":20405294,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arbitrary-precision","c","complex-numbers","floating-point","interval-arithmetic","linear-algebra","multiprecision","number-theory","special-functions"],"created_at":"2024-07-31T03:00:30.586Z","updated_at":"2025-12-29T23:37:19.463Z","avatar_url":"https://github.com/flintlib.png","language":"C","funding_links":[],"categories":["C"],"sub_categories":[],"readme":"# See FLINT\n\n2023: Arb has been merged into FLINT. The present repository is archived and will no longer be updated. See\n\nhttps://github.com/flintlib/flint/\n\nfor new developments!\n\n# Arb\n\nArb is a C library for arbitrary-precision interval arithmetic.\nIt has full support for both real and complex numbers.\nThe library is thread-safe, portable, and extensively tested.\nArb is free software distributed under the\nGNU Lesser General Public License (LGPL), version 2.1 or later.\n\n![arb logo](http://fredrikj.net/blog/2015/01/arb-2-5-0-released/arbtext.png)\n\nDocumentation: http://arblib.org\n\nDevelopment updates: http://fredrikj.net/blog/\n\nAuthor: Fredrik Johansson \u003cfredrik.johansson@gmail.com\u003e\n\nBug reports, feature requests and other comments are welcome\nin private communication, on the GitHub issue tracker, or on the FLINT mailing list \u003cflint-devel@googlegroups.com\u003e.\n\n[![Build status](https://ci.appveyor.com/api/projects/status/r9bmee3ab3bb7xig?svg=true)](https://ci.appveyor.com/project/fredrik-johansson/arb)\n\n## Code example\n\nThe following program evaluates `sin(pi + exp(-10000))`. Since the\ninput to the sine function matches a root to within 4343 digits,\nat least 4343-digit (14427-bit) precision is needed to get an accurate\nresult. The program repeats the evaluation\nat 64-bit, 128-bit, ... precision, stopping only when the\nresult is accurate to at least 53 bits.\n\n    #include \"arb.h\"\n\n    int main()\n    {\n        slong prec;\n        arb_t x, y;\n        arb_init(x); arb_init(y);\n\n        for (prec = 64; ; prec *= 2)\n        {\n            arb_const_pi(x, prec);\n            arb_set_si(y, -10000);\n            arb_exp(y, y, prec);\n            arb_add(x, x, y, prec);\n            arb_sin(y, x, prec);\n            arb_printn(y, 15, 0); printf(\"\\n\");\n            if (arb_rel_accuracy_bits(y) \u003e= 53)\n                break;\n        }\n\n        arb_clear(x); arb_clear(y);\n        flint_cleanup();\n    }\n\nThe output is:\n\n    [+/- 6.01e-19]\n    [+/- 2.55e-38]\n    [+/- 8.01e-77]\n    [+/- 8.64e-154]\n    [+/- 5.37e-308]\n    [+/- 3.63e-616]\n    [+/- 1.07e-1232]\n    [+/- 9.27e-2466]\n    [-1.13548386531474e-4343 +/- 3.91e-4358]\n\nEach line shows a rigorous enclosure of the exact value\nof the expression. The program demonstrates how the user\ncan rely on Arb's automatic error bound tracking to get an output\nthat is guaranteed to be accurate -- no error analysis\nneeds to be done by the user.\n\nFor more example programs, see: http://arblib.org/examples.html\n\n## Features\n\nBesides basic arithmetic, Arb allows working with univariate\npolynomials, truncated power series, and matrices\nover both real and complex numbers.\n\nBasic linear algebra is supported, including matrix multiplication,\ndeterminant, inverse, nonsingular solving, matrix exponential,\nand computation of eigenvalues and eigenvectors.\n\nSupport for polynomials and power series is quite extensive,\nincluding methods for composition, reversion, product trees,\nmultipoint evaluation and interpolation, complex root isolation,\nand transcendental functions of power series.\n\nOther features include root isolation for real functions, rigorous numerical\nintegration of complex functions, and discrete Fourier transforms (DFTs).\n\n## Special functions\n\nArb can compute a wide range of transcendental and special functions,\nincluding the gamma function, polygamma functions,\nRiemann zeta and Hurwitz zeta function, Dirichlet L-functions, polylogarithm,\nerror function, Gauss hypergeometric function 2F1, confluent\nhypergeometric functions, Bessel functions, Airy functions,\nLegendre functions and other orthogonal polynomials,\nexponential and trigonometric integrals, incomplete gamma and beta functions,\nJacobi theta functions, modular functions, Weierstrass elliptic functions,\ncomplete and incomplete elliptic integrals, arithmetic-geometric mean,\nBernoulli numbers, partition function, Barnes G-function, Lambert W function.\n\n## Speed\n\nArb uses a midpoint-radius (ball) representation of real numbers.\nAt high precision, this allows doing interval arithmetic without\nsignificant overhead compared to plain floating-point arithmetic.\nVarious low-level optimizations have also been implemented\nto reduce overhead at precisions of just a few machine\nwords. Most operations on polynomials and power series\nuse asymptotically fast FFT multiplication based on FLINT.\nSimilarly, most operations on large matrices take advantage\nof the fast integer matrix multiplication in FLINT.\n\nFor basic arithmetic, Arb should generally be around as fast\nas MPFR (http://mpfr.org), though it can be a bit slower\nat low precision, and around twice as fast as MPFI\n(https://perso.ens-lyon.fr/nathalie.revol/software.html).\n\nTranscendental functions in Arb are quite well optimized and\nshould generally be faster than any other arbitrary-precision\nsoftware currently available. The following table\ncompares the time in seconds to evaluate the Gauss\nhypergeometric function `2F1(1/2, 1/4, 1, z)` at\nthe complex number `z = 5^(1/2) + 7^(1/2)i`, to a given\nnumber of decimal digits (Arb 2.8-git and mpmath 0.19 on\nan 1.90 GHz Intel i5-4300U, Mathematica 9.0 on a 3.07 GHz Intel Xeon X5675).\n\n| Digits  | Mathematica |     mpmath |      Arb   |\n| -------:|:------------|:-----------|:-----------|\n|      10 |     0.00066 |    0.00065 |   0.000071 |\n|     100 |     0.0039  |    0.0012  |   0.00048  |\n|    1000 |     0.23    |    1.2     |   0.0093   |\n|   10000 |     42.6    |    84      |   0.56     |\n\n## Dependencies, installation, and interfaces\n\nArb depends on FLINT (http://flintlib.org/), either\nGMP (http://gmplib.org) or MPIR (http://mpir.org),\nand MPFR (http://mpfr.org). \n\nSee http://arblib.org/setup.html for instructions\non building and installing Arb directly from the source code.\nArb might also be available (or coming soon) as a package for\nyour Linux distribution.\n\nSageMath (\u003chttp://sagemath.org/\u003e) includes Arb as a standard package\nand contains a high-level Python interface. See the SageMath documentation\nfor RealBallField (http://doc.sagemath.org/html/en/reference/rings_numerical/sage/rings/real_arb.html)\nand ComplexBallField (http://doc.sagemath.org/html/en/reference/rings_numerical/sage/rings/complex_arb.html).\n\nNemo (\u003chttps://github.com/Nemocas/Nemo.jl/\u003e) is a computer algebra package for\nthe Julia programming language which includes a high-level\nJulia interface to Arb. The Nemo installation script will\ncreate a local installation of Arb along with other dependencies.\n\nA standalone Python interface to FLINT and Arb is also available\n(\u003chttps://github.com/fredrik-johansson/python-flint\u003e).\n\nA separate wrapper of transcendental functions for use with the\nC99 `complex double` type is available\n(\u003chttps://github.com/fredrik-johansson/arbcmath\u003e).\n\nOther third-party wrappers include:\n* A Julia interface: https://github.com/JeffreySarnoff/ArbNumerics.jl\n* A high-performance Java API for arb using SWIG: https://github.com/crowlogic/arb4j/\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflintlib%2Farb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflintlib%2Farb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflintlib%2Farb/lists"}