Coder Social home page Coder Social logo

basic-jsmath's Introduction

basic-jsmath

A lightweight math parsing library to deal with some basic maths

Table Of Contents

Methods

Parsing

  • parse(calculation: string) -> Operations

    Parse math syntax into operations, refer to specifications for more info

    Examples:

    // This will parse to operations which
    // can be used in execute method
    const ops = parse("1 + 2")

Calculate

  • execute(
      operations: Operations,
      variables: Variables = {},
      strict: boolean = true
    ) -> number

    Execute math operations and will return the result as number

    Examples:

    // Will execute the previously parsed operations and return '3'
    const ops = parse("1 + 2")
    execute(ops)
    
    // Using variables, will return '3'
    const opsWithVars = parse("a + b")
    execute(opsWithVars, { a: 1, b: 2 })
    
    // Disable error when failed to load variables, will return '0' because no variables defined
    execute(opsWithVars, {}, false)
  • math(
      calculation: string,
      variables: Variables = {},
      strict: boolean = true
    ) -> number

    Parse and execute operations and will return the result as number

    Examples:

    // Both works the same
    
    // The long path
    const ops = parse("1 + 1")
    execute(ops)
    
    // The short path
    math("1 + 1")

Function

  • wrap(
      operations: Operations,
      varName: string,
      variables: Variables = {},
      strict: boolean = true
    ) -> ((val: number) => number)

    Wrap the operations into a javascript function

    Examples:

    // Parse the operations of calculating sinus, we use x as the input variable
    const sinOps = parse("sin(deg(x))")
    
    // Notice how we use "x" as the varName because our input variable is "x"
    const sin = wrap(sinOps, "x")
    
    // Will return 1
    sin(90)
  • wrapMath(
      calculation: string,
      varName: string,
      variables: Variables = {},
      strict: boolean = true
    ) -> ((val: number) => number)

    Parse and wrap the operations into a javascript function

    Examples:

    // Both works the same
    
    // The long path
    const sinOps = parse("sin(deg(x))")
    const sin = wrap(sinOps, "x")
    
    // The short path
    const sin = wrapMath("sin(deg(x))", "x")
    
    // Both will return the same value
    sin(90)

Specifications

Operations

(Operations | Operation)[]

Operation

{ prev: Block, next: Block, operator: Operators }

Block

Number Block | Variable Block | Function Block

Number Block

{ type: 0, value: number }

Variable Block

{ type: 1, name: string }

Function Block

{ type: 2, name: string, params: Operations[] }

Operators

Operator Description
+ Summation of numbers, 1 + 2 = 3
- Subtraction of numbers, 3 - 2 = 1
* Multiplication of numbers, 2 * 2 = 4
/ Division of numbers, 10 / 2 = 5
% Modulus of numbers, 7 % 2 = 1
^ Exponentiation of number, 3 ^ 3 = 27

Variables

Record<string, Variable>

/**
 * Variables name are case-sensitive, X ≠ x
 */

// Variable only
const vars = {
    x: 100
}

// Function only
const vars = {
    x: (x) => x * x / x ** 1 / x
}

// Variable and function
const vars = {
    x: [100, (x) => x * x / x ** 1 / x]
}

Variable

number | ((...values: number[]) -> number) | [number, (...values: number[]) -> number]

Helpers

Default Variables

Variable Description
PI The ratio of the circumference of a circle to its diameter, 3.141592653589793
SQRT2 Square root of 2, 1.4142135623730951

Default Functions

Function Description
round or ROUND Round the provided number into nearest integer, round(2.99999) = 3
toFIxed or TOFIXED Round into nearest fixed decimal position, toFixed(8.384444, 2) = 8.38
sqrt or SQRT Square root of number, sqrt(16) = 4
cbrt or CBRT Cube root of number, cbrt(125) = 5
nthrt or NTHRT Nth root of number, nthrt(1296, 4) = 6
sin or SIN Calculate sinus of number, sin(1.5707963267948966) = 1
cos or COS Calculate cosinus of number, cos(0) = 1
tan or TAN Calculate tangent of number, tan(0.7853981633974483) = 1
deg or DEG Transform degree into radiant, deg(90) = 1.5707963267948966
rad or RAD Transform radiant into degree, rad(1.5707963267948966) = 90

basic-jsmath's People

Contributors

azusfin avatar

Stargazers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.