xnumbers.jl

Extended-exponent floating-point numbers

https://github.com/moble/xnumbers.jl

Science Score: 31.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
  • .zenodo.json file
  • DOI references
    Found 6 DOI reference(s) in README
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (11.5%) to scientific vocabulary

Keywords

arbitrary-precision machine-learning numerical-methods
Last synced: 6 months ago · JSON representation ·

Repository

Extended-exponent floating-point numbers

Basic Info
  • Host: GitHub
  • Owner: moble
  • License: mit
  • Language: Julia
  • Default Branch: main
  • Homepage:
  • Size: 134 KB
Statistics
  • Stars: 7
  • Watchers: 2
  • Forks: 0
  • Open Issues: 1
  • Releases: 0
Topics
arbitrary-precision machine-learning numerical-methods
Created over 3 years ago · Last pushed over 3 years ago
Metadata Files
Readme License Citation

README.md

XNumbers

Stable Dev Build Status Coverage Code Style: Blue ColPrac: Contributor's Guide on Collaborative Practices for Community Packages Aqua QA PkgEval

Extended-exponent floating-point numbers

This package implements "X-numbers" as described by Fukushima (2012) — which refined the ideas of Smith et al. (1981). As Fukushima explained,

...we represent a non-zero arbitrary real number, X, by a pair of an IEEE754 floating point number, x, and a signed integer, i_X. More specifically speaking, we choose a certain large power of 2 as the radix, B, and regard x and i_X as the significand and the exponent with respect to it. Namely, we express X as X = x B^{i_X}. The major difference from Smith et al. (1981) is the choice of the radix...

Note that this does not increase the precision of floating-point operations (the number of digits in the significand), but vastly increases the range of numbers that can be represented. Therefore, X-numbers are not frequently useful in numerical analysis. Even the standard Float64 can represent numbers of magnitude roughly 2^{-1022} to 2^{1024}, which is usually sufficient — whereas the roughly 16 digits of precision can frequently be inadequate. In such cases, it is better to use extended-precision arithmetic, provided by packages like DoubleFloats.jl, Quadmath.jl, ArbNumerics.jl, or the built-in BigFloat type.

Instead, X-numbers are useful in very specific cases, like the computation of Associated Legendre Functions (ALFs) and hence (scalar) spherical harmonics of very high degree. While the same goals could be partially achieved using certain other types like BigFloat, X-numbers can be implemented far more efficiently — requiring anywhere from 10% to a few times longer than similar computations with the underlying float type. However, see Xing et al. (2020) for techniques to compute ALFs using standard float types that can be advantageous in some ways. X-numbers might also find use in Machine Learning, where the precision of a Float64 is unnecessary, but the range of a Float16 may be too restrictive.

Citing

See CITATION.bib for the relevant reference(s).

Owner

  • Name: Mike Boyle
  • Login: moble
  • Kind: user
  • Location: Ithaca, NY
  • Company: Cornell University

Citation (CITATION.bib)

@misc{XNumbers.jl,
  author =       {Michael Boyle <michael.oliver.boyle@gmail.com> and contributors},
  title =        {XNumbers.jl},
  url =          {https://github.com/moble/XNumbers.jl},
  version =      {v0.1.0},
  year =         2022,
  month =        5
}

@article{fukushima2012,
  title =        {Numerical computation of spherical harmonics of arbitrary degree and order by
                  extending exponent of floating point numbers},
  volume =       86,
  issn =         {1432-1394},
  url =          {https://doi.org/10.1007/s00190-011-0519-2},
  doi =          {10.1007/s00190-011-0519-2},
  number =       4,
  journal =      {Journal of Geodesy},
  author =       {Fukushima, Toshio},
  month =        apr,
  year =         2012,
  pages =        {271--285}
}

@article{smith1981,
  title =        {{Extended-Range} Arithmetic and Normalized {Legendre} Polynomials},
  volume =       7,
  issn =         {0098-3500},
  url =          {http://doi.org/10.1145/355934.355940},
  doi =          {10.1145/355934.355940},
  number =       1,
  journal =      {{ACM} Transactions on Mathematical Software},
  author =       {Smith, J. M. and Olver, F. W. J. and Lozier, D. W.},
  month =        mar,
  year =         1981,
  pages =        {93--105}
}

GitHub Events

Total
Last Year

Issues and Pull Requests

Last synced: 7 months ago

All Time
  • Total issues: 2
  • Total pull requests: 0
  • Average time to close issues: less than a minute
  • Average time to close pull requests: N/A
  • Total issue authors: 2
  • Total pull request authors: 0
  • Average comments per issue: 1.0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • JuliaTagBot (1)
  • moble (1)
Pull Request Authors
Top Labels
Issue Labels
Pull Request Labels