npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

cmath-js

v4.0.0

Published

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

Downloads

202

Readme

cmath-js

Implementation of parts of C's & C++'s numerics libraries in TypeScript/JavaScript.

Floating-point functions

Integer functions

These functions accept either a bigint or an integer number:

  • abs
  • 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 zero 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)}.`);
  • lcm
  • popcount

Functions for both floats and ints

Mathematical constants

  • Constants in the std::numbers namespace are available from the numbers.js subpath export. Example:
    import { sqrt3 } from "cmath-js/numbers.js";
    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 welcomed! Feel free to make a pull request. Please add your name to contributors in package.json and run npm run build-and-verify before submitting your PR. By making a pull request you agree to license your contribution under the CC0 license unless otherwise specified.

ESLint is used to enforce code quality and consistent formatting (with the help of Prettier). If ESLint complains when you run npm run build-and-verify, you can run npm run lint-fix to apply automatic fixes and then fix the rest of the errors manually. I recommend configuring your IDE for ESLint and Prettier. If you are using Visual Studio Code, simply installing Microsoft's ESLint extension and the official Prettier extension takes care of that.