Skip to content

oskarlh/cmath-js

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

208 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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

About

C's math functions in JavaScript

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Sponsor this project

 

Contributors