UNPKG

mathjs

Version:

Math.js is an extensive math library for JavaScript and Node.js. It features a flexible expression parser with support for symbolic computation, comes with a large set of built-in functions and constants, and offers an integrated solution to work with dif

50 lines (41 loc) 1.32 kB
'use strict' import Decimal from 'decimal.js' export function factory (type, config, load, typed, math) { const BigNumber = Decimal.clone({ precision: config.precision }) /** * Attach type information */ BigNumber.prototype.type = 'BigNumber' BigNumber.prototype.isBigNumber = true /** * Get a JSON representation of a BigNumber containing * type information * @returns {Object} Returns a JSON object structured as: * `{"mathjs": "BigNumber", "value": "0.2"}` */ BigNumber.prototype.toJSON = function () { return { mathjs: 'BigNumber', value: this.toString() } } /** * Instantiate a BigNumber from a JSON object * @param {Object} json a JSON object structured as: * `{"mathjs": "BigNumber", "value": "0.2"}` * @return {BigNumber} */ BigNumber.fromJSON = function (json) { return new BigNumber(json.value) } // listen for changed in the configuration, automatically apply changed precision math.on('config', function (curr, prev) { if (curr.precision !== prev.precision) { BigNumber.config({ precision: curr.precision }) } }) return BigNumber } export const name = 'BigNumber' export const path = 'type' export const math = true // request access to the math namespace