Implementation of parts of C++'s numerics libraries in TypeScript/JavaScript, including functions C++ inherits from C.
copysignfabsfpclassifyfrexphypotiscanonicalisfiniteisinfisnanisnormalissignalingissubnormaliszeroldexpnannextafterpow
These functions accept either a bigint or an integer number:
absbit_ceilbit_floorbit_widthcountl_oneascreate_countl_one, which is used this way:import { create_countl_one } from "cmath-js"; const countl_one_u16 = create_countl_one({ bits: 16 }); const integer = 0xf0_00; // Prints "1111000000000000 has 4 leading one bits." console.log( `${integer.toString(2).padStart(16, "0")} has ${countl_one_u16(integer)} leading one bits.`, );
countl_zeroascreate_countl_zerocountr_oneascreate_countr_onecountr_zeroascreate_countr_zerodivgcd. Example:import { gcd } from "cmath-js"; // Prints "The greatest common divisor of 24 and 32 is 8." console.log(`The greatest common divisor of 24 and 32 is ${gcd(24, 32)}.`);
has_single_bitlcmpopcount
- Constants in the
std::numbersnamespace are available from thenumberssubpath export. Example:import { sqrt3 } from "cmath-js/numbers"; console.log(`The square root of 3 is ${sqrt3}.`);
The test coverage is a perfect 100% and enforced by the publishing and pull request verification workflows.
Contributions are welcome! See CONTRIBUTING.md