Assorted common math functions & utilities

Usage no npm install needed!

<script type="module">
  import thiNgMath from 'https://cdn.skypack.dev/@thi.ng/math';



npm version npm downloads Twitter Follow

This project is part of the @thi.ng/umbrella monorepo.

For the Clojure version, please visit: thi.ng/math-clj


Assorted common math functions & utilities.

Partially ported from Clojure version thi.ng/math-clj, c.thi.ng and thi.ng/vexed-generation.


STABLE - used in production

Search or submit any issues for this package

Breaking changes in v4.0.0

The introduction of several standard libc math functions causes a behavior change of the existing fmod() function...

  • rename fmod() => mod() to align w/ GLSL counterpart
  • add new fmod() w/ standard libc behavior (same as JS % op)
  • add remainder() w/ standard libc behavior


yarn add @thi.ng/math
// ES module
<script type="module" src="https://unpkg.com/@thi.ng/math?module" crossorigin></script>

// UMD
<script src="https://unpkg.com/@thi.ng/math/lib/index.umd.js" crossorigin></script>

Package sizes (gzipped, pre-treeshake): ESM: 3.93 KB / CJS: 4.54 KB / UMD: 3.73 KB


Usage examples

Several demos in this repo's /examples directory are using this package.

A selection:

Screenshot Description Live demo Source
Basic crypto-currency candle chart with multiple moving averages plots Demo Source
2D Bezier curve-guided particle system Demo Source
Animated sine plasma effect visualized using contour lines Demo Source
Worker based, interactive Mandelbrot visualization Demo Source
Unison wavetable synth with waveform editor Demo Source
2D scenegraph & shape picking Demo Source
2D scenegraph & image map based geometry manipulation Demo Source
Simplistic SVG bar chart component Demo Source


Generated API docs





If this project contributes to an academic publication, please cite it as:

  title = "@thi.ng/math",
  author = "Karsten Schmidt and others",
  note = "https://thi.ng/math",
  year = 2013


© 2013 - 2021 Karsten Schmidt // Apache Software License 2.0