All Projects → suiginsoft → hebimath

suiginsoft / hebimath

Licence: MIT license
arbitrary precision arithmetic library

Programming Languages

c
50402 projects - #5 most used programming language
assembly
5116 projects
Makefile
30231 projects
C++
36643 projects - #6 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to hebimath

Big.js
A small, fast JavaScript library for arbitrary-precision decimal arithmetic.
Stars: ✭ 3,730 (+9981.08%)
Mutual labels:  arbitrary-precision, bignumber
decimal
An arbitrary-precision decimal floating-point arithmetic package for Go
Stars: ✭ 28 (-24.32%)
Mutual labels:  bignum, arbitrary-precision
bcmath-extended
Extends php BCMath lib for missing functions like floor, ceil, round, abs, min, max, rand for big numbers. Also wraps existing BCMath functions.
Stars: ✭ 59 (+59.46%)
Mutual labels:  arbitrary-precision, bignumber
Decimal.js
An arbitrary-precision Decimal type for JavaScript
Stars: ✭ 4,585 (+12291.89%)
Mutual labels:  arbitrary-precision, bignumber
break infinity.js
A replacement for decimal.js for incremental games who want to deal with very large numbers (bigger in magnitude than 1e308, up to as much as 1e(9e15) ) and want to prioritize speed over accuracy.
Stars: ✭ 145 (+291.89%)
Mutual labels:  bignum, bignumber
apint
Arbitrary precision integers library.
Stars: ✭ 23 (-37.84%)
Mutual labels:  arbitrary-precision, integers
Bignumber.js
A JavaScript library for arbitrary-precision decimal and non-decimal arithmetic
Stars: ✭ 5,174 (+13883.78%)
Mutual labels:  arbitrary-precision, bignumber
klibcpp
kedixa's Cplusplus Library(timer, multiarray, unsigned_bigint, bigint, rational)
Stars: ✭ 17 (-54.05%)
Mutual labels:  bignum, bignumber
Swift Bigint
A lightweight, Multiple Precision Arithmetic Library for Swift!
Stars: ✭ 144 (+289.19%)
Mutual labels:  arbitrary-precision
bigi
JavaScript Big Integer library based upon Tom Wu's work.
Stars: ✭ 45 (+21.62%)
Mutual labels:  bignum
Kotlin Multiplatform Bignum
A Kotlin multiplatform library for arbitrary precision arithmetics
Stars: ✭ 119 (+221.62%)
Mutual labels:  arbitrary-precision
Big Math
Advanced Java BigDecimal math functions (pow, sqrt, log, sin, ...) using arbitrary precision.
Stars: ✭ 173 (+367.57%)
Mutual labels:  arbitrary-precision
libzahl
Suckless big integer library
Stars: ✭ 24 (-35.14%)
Mutual labels:  bignum
Calc
C-style arbitrary precision calculator
Stars: ✭ 127 (+243.24%)
Mutual labels:  arbitrary-precision
VectorIntegerView
Animated integer on Android. https://habr.com/post/420919/
Stars: ✭ 17 (-54.05%)
Mutual labels:  integers
Physicalconstants.jl
Collection of fundamental physical constants with uncertainties. It supports arbitrary-precision constants
Stars: ✭ 55 (+48.65%)
Mutual labels:  arbitrary-precision
nein-math
NeinMath is playing around with arbitrary precision integers, written in pure managed code, not using any unsafe stuff, and a bit faster than the build-in .NET type for integers with a few thousand bits.
Stars: ✭ 14 (-62.16%)
Mutual labels:  bignumber
as-bignum
Fixed length big numbers for AssemblyScript 🚀
Stars: ✭ 49 (+32.43%)
Mutual labels:  bignum
Rationals
🔟 Implementation of rational number arithmetic for .NET with arbitrary precision.
Stars: ✭ 40 (+8.11%)
Mutual labels:  arbitrary-precision
Measurements.jl
Error propagation calculator and library for physical measurements. It supports real and complex numbers with uncertainty, arbitrary precision calculations, operations with arrays, and numerical integration.
Stars: ✭ 248 (+570.27%)
Mutual labels:  arbitrary-precision

hebimath - arbitrary precision arithmetic library

License Build Status Coverity Scan Quality Gate

Overview

Hebimath is a library for working with big numbers. It's in the same class of libraries as GNU MP, MPI, TomsFastMath, libzahl and others. As such, Hebimath shares many features with these libraries, but has some unique ones as well.

Hebimath has the following design features:

  • Written in C99 and assembly language for POSIX userspace platforms. Is forward compatible with C11.
  • High-level interface for large integers, rationals and floating-point numbers.
  • Low-level maths kernel functions that operate on natural numbers, optimized for common hardware platforms. Supports both compile-time and runtime function multi-versioning, depending on your needs and requirements.
  • Ability to override the memory allocator for each high-level number primitive.
  • Can override the default memory allocator for each thread.
  • Can use fixed-size buffers instead of an allocator when initializing a primitive, useful when using statically allocated memory or fast ad-hoc memory allocations on the stack.
  • Can setup a separate allocator for internal temporary/scratchpad allocations.
  • Smallest unit size for natural numbers and integers is 16 bytes. This larger unit size aids in shrinking the amount of code bloat for unrolled kernel functions.
  • Memory buffers are correctly aligned for use with SIMD instructions.

Hebimath adheres to these principles in its implementation:

  • Be compact, concise and readable. Favor small code but do not over do it. In the low-level kernel functions favor runtime speed without sacrificing reliability & security best practices.
  • Avoid unnecessary memory allocations and delay allocations until they are absolutely required for output variables.
  • Allocate all temporary memory upfront for algorithms using sharp upper bounds on the input argument lengths. No allocations/deallocations at each recursive or iterative level.
  • Avoid mutating output variables when errors occur and document what may be left in an unspecified state.
  • Load values from data structures into local variables if they are used across function call boundaries to avoid reloading them more than once. Useful on CPUs with lots of callee-saved registers.

What's with the name?

ヘビ 【Hebi】

  1. Snake. Serpent. Reptile. "Best watch out for that SICP snake!"

ヘビー 【Hebī】

  1. Heavy. Big. Huge. Of great weight; hard to lift or carry: "A heavy load."
  2. Extreme. Intense. Scary. Tough. "A heavy drinker."
  3. Applying power; a final burst of energy.

Hebimath

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].