JSPM

  • Created
  • Published
  • Downloads 1579
  • Score
    100M100P100Q112648F
  • License MIT

C's and C++'s math functions in TypeScript & JavaScript

Package Exports

  • cmath-js
  • cmath-js/numbers

Readme

cmath-js

Implementation of parts of C++'s numerics libraries in TypeScript/JavaScript, including functions C++ inherits from C.

Floating-point functions

Integer functions

These functions accept either a bigint or an integer number:

  • abs
  • bit_ceil
  • bit_floor
  • bit_width
  • countl_one as create_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_zero as create_countl_zero
  • countr_one as create_countr_one
  • countr_zero as create_countr_zero
  • div
  • gcd. 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_bit
  • lcm
  • popcount

Functions for both floats and ints

Mathematical constants

  • Constants in the std::numbers namespace are available from the numbers subpath export. Example:
    import { sqrt3 } from "cmath-js/numbers";
    console.log(`The square root of 3 is ${sqrt3}.`);

Test coverage

The test coverage is a perfect 100% and enforced by the publishing and pull request verification workflows.

Contributing

Contributions are welcome! See CONTRIBUTING.md