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
64 lines (60 loc) • 1.82 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.createBigNumberClass = void 0;
var _decimal = _interopRequireDefault(require("decimal.js"));
var _factory = require("../../utils/factory.js");
const name = 'BigNumber';
const dependencies = ['?on', 'config'];
const createBigNumberClass = exports.createBigNumberClass = /* #__PURE__ */(0, _factory.factory)(name, dependencies, _ref => {
let {
on,
config
} = _ref;
const BigNumber = _decimal.default.clone({
precision: config.precision,
modulo: _decimal.default.EUCLID
});
BigNumber.prototype = Object.create(BigNumber.prototype);
/**
* 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);
};
if (on) {
// listen for changed in the configuration, automatically apply changed precision
on('config', function (curr, prev) {
if (curr.precision !== prev.precision) {
BigNumber.config({
precision: curr.precision
});
}
});
}
return BigNumber;
}, {
isClass: true
});
;