mathjs 12.2.1 → 12.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/HISTORY.md +27 -0
  2. package/NOTICE +1 -1
  3. package/README.md +4 -3
  4. package/bin/cli.js +1 -1
  5. package/lib/browser/math.js +1 -1
  6. package/lib/browser/math.js.LICENSE.txt +3 -3
  7. package/lib/browser/math.js.map +1 -1
  8. package/lib/cjs/entry/configReadonly.js +1 -1
  9. package/lib/cjs/entry/dependenciesAny/dependenciesHelpClass.generated.js +2 -2
  10. package/lib/cjs/entry/dependenciesNumber/dependenciesHelpClass.generated.js +2 -2
  11. package/lib/cjs/entry/impureFunctionsAny.generated.js +14 -14
  12. package/lib/cjs/entry/impureFunctionsNumber.generated.js +1 -1
  13. package/lib/cjs/entry/pureFunctionsAny.generated.js +11 -11
  14. package/lib/cjs/expression/Help.js +21 -4
  15. package/lib/cjs/expression/node/AccessorNode.js +4 -5
  16. package/lib/cjs/expression/node/ArrayNode.js +4 -5
  17. package/lib/cjs/expression/node/AssignmentNode.js +4 -5
  18. package/lib/cjs/expression/node/BlockNode.js +4 -5
  19. package/lib/cjs/expression/node/ConditionalNode.js +4 -5
  20. package/lib/cjs/expression/node/ConstantNode.js +4 -5
  21. package/lib/cjs/expression/node/FunctionAssignmentNode.js +4 -5
  22. package/lib/cjs/expression/node/FunctionNode.js +5 -6
  23. package/lib/cjs/expression/node/IndexNode.js +4 -5
  24. package/lib/cjs/expression/node/ObjectNode.js +4 -5
  25. package/lib/cjs/expression/node/OperatorNode.js +4 -5
  26. package/lib/cjs/expression/node/ParenthesisNode.js +4 -5
  27. package/lib/cjs/expression/node/RangeNode.js +4 -5
  28. package/lib/cjs/expression/node/RelationalNode.js +4 -5
  29. package/lib/cjs/expression/node/SymbolNode.js +4 -5
  30. package/lib/cjs/function/string/bin.js +3 -3
  31. package/lib/cjs/function/string/format.js +3 -3
  32. package/lib/cjs/function/string/hex.js +3 -3
  33. package/lib/cjs/function/string/oct.js +3 -3
  34. package/lib/cjs/header.js +3 -3
  35. package/lib/cjs/type/unit/Unit.js +86 -2
  36. package/lib/cjs/type/unit/physicalConstants.js +1 -1
  37. package/lib/cjs/utils/bignumber/formatter.js +17 -27
  38. package/lib/cjs/utils/number.js +75 -33
  39. package/lib/cjs/version.js +1 -1
  40. package/lib/esm/entry/configReadonly.js +1 -1
  41. package/lib/esm/entry/dependenciesAny/dependenciesHelpClass.generated.js +2 -2
  42. package/lib/esm/entry/dependenciesNumber/dependenciesHelpClass.generated.js +2 -2
  43. package/lib/esm/entry/impureFunctionsAny.generated.js +16 -16
  44. package/lib/esm/entry/impureFunctionsNumber.generated.js +1 -1
  45. package/lib/esm/entry/pureFunctionsAny.generated.js +12 -12
  46. package/lib/esm/expression/Help.js +21 -4
  47. package/lib/esm/function/string/bin.js +3 -3
  48. package/lib/esm/function/string/format.js +3 -3
  49. package/lib/esm/function/string/hex.js +3 -3
  50. package/lib/esm/function/string/oct.js +3 -3
  51. package/lib/esm/header.js +1 -1
  52. package/lib/esm/type/unit/Unit.js +86 -2
  53. package/lib/esm/type/unit/physicalConstants.js +1 -1
  54. package/lib/esm/utils/bignumber/formatter.js +19 -28
  55. package/lib/esm/utils/number.js +76 -34
  56. package/lib/esm/version.js +1 -1
  57. package/package.json +14 -14
  58. package/types/index.d.ts +30 -18
@@ -12,6 +12,7 @@ exports.format = format;
12
12
  exports.isInteger = isInteger;
13
13
  exports.log2 = exports.log1p = exports.log10 = void 0;
14
14
  exports.nearlyEqual = nearlyEqual;
15
+ exports.normalizeFormatOptions = normalizeFormatOptions;
15
16
  exports.roundDigits = roundDigits;
16
17
  exports.sinh = exports.sign = void 0;
17
18
  exports.splitNumber = splitNumber;
@@ -42,7 +43,7 @@ function isInteger(value) {
42
43
  * @param {number} x
43
44
  * @returns {number}
44
45
  */
45
- var sign = exports.sign = /* #__PURE__ */Math.sign || function (x) {
46
+ var sign = exports.sign = Math.sign || function (x) {
46
47
  if (x > 0) {
47
48
  return 1;
48
49
  } else if (x < 0) {
@@ -57,7 +58,7 @@ var sign = exports.sign = /* #__PURE__ */Math.sign || function (x) {
57
58
  * @param {number} x
58
59
  * @returns {number}
59
60
  */
60
- var log2 = exports.log2 = /* #__PURE__ */Math.log2 || function log2(x) {
61
+ var log2 = exports.log2 = Math.log2 || function log2(x) {
61
62
  return Math.log(x) / Math.LN2;
62
63
  };
63
64
 
@@ -66,7 +67,7 @@ var log2 = exports.log2 = /* #__PURE__ */Math.log2 || function log2(x) {
66
67
  * @param {number} x
67
68
  * @returns {number}
68
69
  */
69
- var log10 = exports.log10 = /* #__PURE__ */Math.log10 || function log10(x) {
70
+ var log10 = exports.log10 = Math.log10 || function log10(x) {
70
71
  return Math.log(x) / Math.LN10;
71
72
  };
72
73
 
@@ -75,7 +76,7 @@ var log10 = exports.log10 = /* #__PURE__ */Math.log10 || function log10(x) {
75
76
  * @param {number} x
76
77
  * @returns {number}
77
78
  */
78
- var log1p = exports.log1p = /* #__PURE__ */Math.log1p || function (x) {
79
+ var log1p = exports.log1p = Math.log1p || function (x) {
79
80
  return Math.log(x + 1);
80
81
  };
81
82
 
@@ -88,7 +89,7 @@ var log1p = exports.log1p = /* #__PURE__ */Math.log1p || function (x) {
88
89
  * @param {number} x
89
90
  * @returns {number} Returns the cubic root of x
90
91
  */
91
- var cbrt = exports.cbrt = /* #__PURE__ */Math.cbrt || function cbrt(x) {
92
+ var cbrt = exports.cbrt = Math.cbrt || function cbrt(x) {
92
93
  if (x === 0) {
93
94
  return x;
94
95
  }
@@ -112,7 +113,7 @@ var cbrt = exports.cbrt = /* #__PURE__ */Math.cbrt || function cbrt(x) {
112
113
  * @param {number} x
113
114
  * @return {number} res
114
115
  */
115
- var expm1 = exports.expm1 = /* #__PURE__ */Math.expm1 || function expm1(x) {
116
+ var expm1 = exports.expm1 = Math.expm1 || function expm1(x) {
116
117
  return x >= 2e-4 || x <= -2e-4 ? Math.exp(x) - 1 : x + x * x / 2 + x * x * x / 6;
117
118
  };
118
119
 
@@ -255,30 +256,10 @@ function format(value, options) {
255
256
  } else if (isNaN(value)) {
256
257
  return 'NaN';
257
258
  }
258
-
259
- // default values for options
260
- var notation = 'auto';
261
- var precision;
262
- var wordSize;
263
- if (options) {
264
- // determine notation from options
265
- if (options.notation) {
266
- notation = options.notation;
267
- }
268
-
269
- // determine precision from options
270
- if ((0, _is.isNumber)(options)) {
271
- precision = options;
272
- } else if ((0, _is.isNumber)(options.precision)) {
273
- precision = options.precision;
274
- }
275
- if (options.wordSize) {
276
- wordSize = options.wordSize;
277
- if (typeof wordSize !== 'number') {
278
- throw new Error('Option "wordSize" must be a number');
279
- }
280
- }
281
- }
259
+ var _normalizeFormatOptio = normalizeFormatOptions(options),
260
+ notation = _normalizeFormatOptio.notation,
261
+ precision = _normalizeFormatOptio.precision,
262
+ wordSize = _normalizeFormatOptio.wordSize;
282
263
 
283
264
  // handle the various notations
284
265
  switch (notation) {
@@ -296,7 +277,7 @@ function format(value, options) {
296
277
  return formatNumberToBase(value, 16, wordSize);
297
278
  case 'auto':
298
279
  // remove trailing zeros after the decimal point
299
- return toPrecision(value, precision, options && options).replace(/((\.\d*?)(0+))($|e)/, function () {
280
+ return toPrecision(value, precision, options).replace(/((\.\d*?)(0+))($|e)/, function () {
300
281
  var digits = arguments[2];
301
282
  var e = arguments[4];
302
283
  return digits !== '.' ? digits + e : e;
@@ -306,6 +287,49 @@ function format(value, options) {
306
287
  }
307
288
  }
308
289
 
290
+ /**
291
+ * Normalize format options into an object:
292
+ * {
293
+ * notation: string,
294
+ * precision: number | undefined,
295
+ * wordSize: number | undefined
296
+ * }
297
+ */
298
+ function normalizeFormatOptions(options) {
299
+ // default values for options
300
+ var notation = 'auto';
301
+ var precision;
302
+ var wordSize;
303
+ if (options !== undefined) {
304
+ if ((0, _is.isNumber)(options)) {
305
+ precision = options;
306
+ } else if ((0, _is.isBigNumber)(options)) {
307
+ precision = options.toNumber();
308
+ } else if ((0, _is.isObject)(options)) {
309
+ if (options.precision !== undefined) {
310
+ precision = _toNumberOrThrow(options.precision, function () {
311
+ throw new Error('Option "precision" must be a number or BigNumber');
312
+ });
313
+ }
314
+ if (options.wordSize !== undefined) {
315
+ wordSize = _toNumberOrThrow(options.wordSize, function () {
316
+ throw new Error('Option "wordSize" must be a number or BigNumber');
317
+ });
318
+ }
319
+ if (options.notation) {
320
+ notation = options.notation;
321
+ }
322
+ } else {
323
+ throw new Error('Unsupported type of options, number, BigNumber, or object expected');
324
+ }
325
+ }
326
+ return {
327
+ notation: notation,
328
+ precision: precision,
329
+ wordSize: wordSize
330
+ };
331
+ }
332
+
309
333
  /**
310
334
  * Split a number into sign, coefficients, and exponent
311
335
  * @param {number | string} value
@@ -469,8 +493,8 @@ function toPrecision(value, precision, options) {
469
493
  }
470
494
 
471
495
  // determine lower and upper bound for exponential notation.
472
- var lowerExp = options && options.lowerExp !== undefined ? options.lowerExp : -3;
473
- var upperExp = options && options.upperExp !== undefined ? options.upperExp : 5;
496
+ var lowerExp = _toNumberOrDefault(options === null || options === void 0 ? void 0 : options.lowerExp, -3);
497
+ var upperExp = _toNumberOrDefault(options === null || options === void 0 ? void 0 : options.upperExp, 5);
474
498
  var split = splitNumber(value);
475
499
  var rounded = precision ? roundDigits(split, precision) : split;
476
500
  if (rounded.exponent < lowerExp || rounded.exponent >= upperExp) {
@@ -675,4 +699,22 @@ function copysign(x, y) {
675
699
  var signx = x > 0 ? true : x < 0 ? false : 1 / x === Infinity;
676
700
  var signy = y > 0 ? true : y < 0 ? false : 1 / y === Infinity;
677
701
  return signx ^ signy ? -x : x;
702
+ }
703
+ function _toNumberOrThrow(value, onError) {
704
+ if ((0, _is.isNumber)(value)) {
705
+ return value;
706
+ } else if ((0, _is.isBigNumber)(value)) {
707
+ return value.toNumber();
708
+ } else {
709
+ onError();
710
+ }
711
+ }
712
+ function _toNumberOrDefault(value, defaultValue) {
713
+ if ((0, _is.isNumber)(value)) {
714
+ return value;
715
+ } else if ((0, _is.isBigNumber)(value)) {
716
+ return value.toNumber();
717
+ } else {
718
+ return defaultValue;
719
+ }
678
720
  }
@@ -4,6 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.version = void 0;
7
- var version = exports.version = '12.2.1';
7
+ var version = exports.version = '12.3.1';
8
8
  // Note: This file is automatically generated when building math.js.
9
9
  // Changes made in this file will be overwritten.
@@ -3,7 +3,7 @@ import { DEFAULT_CONFIG } from '../core/config.js';
3
3
  import { MATRIX_OPTIONS, NUMBER_OPTIONS } from '../core/function/config.js';
4
4
 
5
5
  // create a read-only version of config
6
- export var config = /* #__PURE__ */function config(options) {
6
+ export var config = function config(options) {
7
7
  if (options) {
8
8
  throw new Error('The global config is readonly. \n' + 'Please create a mathjs instance if you want to change the default configuration. \n' + 'Example:\n' + '\n' + ' import { create, all } from \'mathjs\';\n' + ' const mathjs = create(all);\n' + ' mathjs.config({ number: \'BigNumber\' });\n');
9
9
  }
@@ -2,9 +2,9 @@
2
2
  * THIS FILE IS AUTO-GENERATED
3
3
  * DON'T MAKE CHANGES HERE
4
4
  */
5
- import { parseDependencies } from './dependenciesParse.generated.js';
5
+ import { evaluateDependencies } from './dependenciesEvaluate.generated.js';
6
6
  import { createHelpClass } from '../../factoriesAny.js';
7
7
  export var HelpDependencies = {
8
- parseDependencies,
8
+ evaluateDependencies,
9
9
  createHelpClass
10
10
  };
@@ -2,9 +2,9 @@
2
2
  * THIS FILE IS AUTO-GENERATED
3
3
  * DON'T MAKE CHANGES HERE
4
4
  */
5
- import { parseDependencies } from './dependenciesParse.generated.js';
5
+ import { evaluateDependencies } from './dependenciesEvaluate.generated.js';
6
6
  import { createHelpClass } from '../../factoriesNumber.js';
7
7
  export var HelpDependencies = {
8
- parseDependencies,
8
+ evaluateDependencies,
9
9
  createHelpClass
10
10
  };
@@ -4,10 +4,10 @@ import _extends from "@babel/runtime/helpers/extends";
4
4
  * DON'T MAKE CHANGES HERE
5
5
  */
6
6
  import { config } from './configReadonly.js';
7
- import { createNode, createObjectNode, createOperatorNode, createParenthesisNode, createRelationalNode, createArrayNode, createBlockNode, createConditionalNode, createConstantNode, createRangeNode, createReviver, createChainClass, createFunctionAssignmentNode, createChain, createIndexNode, createAccessorNode, createAssignmentNode, createSymbolNode, createFunctionNode, createParse, createResolve, createSimplifyConstant, createCompile, createHelpClass, createLeafCount, createSimplifyCore, createEvaluate, createHelp, createParserClass, createSimplify, createSymbolicEqual, createParser, createRationalize, createDerivative, createFilterTransform, createForEachTransform, createMapTransform, createApplyTransform, createOrTransform, createAndTransform, createConcatTransform, createMaxTransform, createPrintTransform, createBitAndTransform, createDiffTransform, createMinTransform, createSubsetTransform, createBitOrTransform, createCumSumTransform, createIndexTransform, createSumTransform, createRangeTransform, createRowTransform, createColumnTransform, createMeanTransform, createQuantileSeqTransform, createVarianceTransform, createStdTransform } from '../factoriesAny.js';
7
+ import { createNode, createObjectNode, createOperatorNode, createParenthesisNode, createRelationalNode, createArrayNode, createBlockNode, createConditionalNode, createConstantNode, createRangeNode, createReviver, createChainClass, createFunctionAssignmentNode, createChain, createIndexNode, createAccessorNode, createAssignmentNode, createSymbolNode, createFunctionNode, createParse, createResolve, createSimplifyConstant, createCompile, createSimplifyCore, createEvaluate, createHelpClass, createParserClass, createSimplify, createSymbolicEqual, createLeafCount, createParser, createRationalize, createDerivative, createHelp, createFilterTransform, createForEachTransform, createMapTransform, createApplyTransform, createOrTransform, createAndTransform, createConcatTransform, createMaxTransform, createPrintTransform, createBitAndTransform, createDiffTransform, createMinTransform, createSubsetTransform, createBitOrTransform, createCumSumTransform, createIndexTransform, createSumTransform, createRangeTransform, createRowTransform, createColumnTransform, createMeanTransform, createQuantileSeqTransform, createVarianceTransform, createStdTransform } from '../factoriesAny.js';
8
8
  import { BigNumber, Complex, e, _false, fineStructure, Fraction, i, _Infinity, LN10, LOG10E, Matrix, _NaN, _null, phi, Range, ResultSet, SQRT1_2,
9
9
  // eslint-disable-line camelcase
10
- sackurTetrode, tau, _true, version, DenseMatrix, efimovFactor, LN2, pi, replacer, SQRT2, typed, unaryPlus, weakMixingAngle, abs, acos, acot, acsc, addScalar, arg, asech, asinh, atan, atanh, bignumber, bitNot, boolean, clone, combinations, complex, conj, cos, cot, csc, cube, equalScalar, erf, exp, expm1, filter, forEach, format, getMatrixDataType, hex, im, isInteger, isNegative, isPositive, isZero, LOG2E, lgamma, log10, log2, map, multiplyScalar, not, number, oct, pickRandom, print, random, re, sec, sign, sin, SparseMatrix, splitUnit, square, string, subtractScalar, tan, typeOf, acosh, acsch, apply, asec, bin, combinationsWithRep, cosh, csch, isNaN, isPrime, randomInt, sech, sinh, sparse, sqrt, tanh, unaryMinus, acoth, coth, fraction, isNumeric, matrix, matrixFromFunction, mode, numeric, prod, reshape, size, squeeze, transpose, xgcd, zeros, asin, cbrt, concat, count, ctranspose, diag, divideScalar, dotDivide, equal, flatten, hasNumericValue, identity, kron, largerEq, leftShift, lsolve, matrixFromColumns, nthRoot, ones, qr, resize, rightArithShift, round, smaller, subtract, to, unequal, usolve, xor, add, atan2, bitAnd, bitOr, bitXor, catalan, compare, compareText, cumsum, deepEqual, diff, distance, dot, equalText, floor, gcd, hypot, ImmutableDenseMatrix, Index, larger, log, lsolveAll, matrixFromRows, min, mod, multiply, nthRoots, or, partitionSelect, rightLogShift, slu, subset, sum, trace, usolveAll, zpk2tf, ceil, compareNatural, composition, cross, det, dotMultiply, FibonacciHeap, fix, index, intersect, invmod, lcm, log1p, max, setCartesian, setDistinct, setIsSubset, setPowerset, smallerEq, sort, and, range, row, setDifference, setMultiplicity, setSymDifference, Spa, column, inv, lup, pinv, pow, setIntersect, setUnion, sqrtm, Unit, vacuumImpedance, wienDisplacement, atomicMass, bohrMagneton, boltzmann, conductanceQuantum, coulomb, deuteronMass, dotPow, electricConstant, elementaryCharge, expm, faraday, fft, gamma, gravitationConstant, hartreeEnergy, ifft, klitzing, loschmidt, magneticConstant, molarMass, molarPlanckConstant, neutronMass, nuclearMagneton, planckCharge, planckLength, planckTemperature, protonMass, quantumOfCirculation, reducedPlanckConstant, rydberg, secondRadiation, speedOfLight, stefanBoltzmann, thomsonCrossSection, avogadro, bohrRadius, createUnit, divide, electronMass, factorial, firstRadiation, gravity, inverseConductanceQuantum, lusolve, magneticFluxQuantum, molarMassC12, multinomial, permutations, planckMass, polynomialRoot, setSize, solveODE, stirlingS2, unit, bellNumbers, eigs, fermiCoupling, gasConstant, mean, molarVolume, planckConstant, quantileSeq, variance, classicalElectronRadius, median, corr, freqz, mad, std, zeta, norm, rotationMatrix, kldivergence, planckTime, schur, rotate, sylvester, lyap } from './pureFunctionsAny.generated.js';
10
+ sackurTetrode, tau, _true, version, DenseMatrix, efimovFactor, LN2, pi, replacer, SQRT2, typed, unaryPlus, weakMixingAngle, abs, acos, acot, acsc, addScalar, arg, asech, asinh, atan, atanh, bignumber, bitNot, boolean, clone, combinations, complex, conj, cos, cot, csc, cube, equalScalar, erf, exp, expm1, filter, forEach, format, getMatrixDataType, hex, im, isInteger, isNegative, isPositive, isZero, LOG2E, lgamma, log10, log2, map, multiplyScalar, not, number, oct, pickRandom, print, random, re, sec, sign, sin, SparseMatrix, splitUnit, square, string, subtractScalar, tan, typeOf, acosh, acsch, apply, asec, bin, combinationsWithRep, cosh, csch, isNaN, isPrime, randomInt, sech, sinh, sparse, sqrt, tanh, unaryMinus, acoth, coth, fraction, isNumeric, matrix, matrixFromFunction, mode, numeric, prod, reshape, size, squeeze, transpose, xgcd, zeros, asin, cbrt, concat, count, ctranspose, diag, divideScalar, dotDivide, equal, flatten, hasNumericValue, identity, kron, largerEq, leftShift, lsolve, matrixFromColumns, nthRoot, ones, qr, resize, rightArithShift, round, smaller, subtract, to, unequal, usolve, xor, add, atan2, bitAnd, bitOr, bitXor, catalan, compare, compareText, cumsum, deepEqual, diff, distance, dot, equalText, floor, gcd, hypot, ImmutableDenseMatrix, Index, larger, log, lsolveAll, matrixFromRows, min, mod, multiply, nthRoots, or, partitionSelect, rightLogShift, slu, subset, sum, trace, usolveAll, zpk2tf, ceil, compareNatural, composition, cross, det, dotMultiply, FibonacciHeap, fix, index, intersect, invmod, lcm, log1p, max, setCartesian, setDistinct, setIsSubset, setPowerset, smallerEq, sort, and, range, row, setDifference, setMultiplicity, setSymDifference, Spa, column, inv, lup, pinv, pow, setIntersect, setUnion, sqrtm, Unit, vacuumImpedance, wienDisplacement, atomicMass, bohrMagneton, boltzmann, conductanceQuantum, coulomb, deuteronMass, dotPow, electricConstant, elementaryCharge, expm, faraday, fft, gamma, gravitationConstant, hartreeEnergy, ifft, klitzing, loschmidt, magneticConstant, molarMass, molarPlanckConstant, neutronMass, nuclearMagneton, planckCharge, planckLength, planckTemperature, protonMass, quantumOfCirculation, reducedPlanckConstant, rydberg, secondRadiation, speedOfLight, stefanBoltzmann, thomsonCrossSection, avogadro, bohrRadius, createUnit, divide, electronMass, factorial, firstRadiation, gravity, inverseConductanceQuantum, lusolve, magneticFluxQuantum, molarMassC12, multinomial, permutations, planckMass, polynomialRoot, setSize, solveODE, stirlingS2, unit, bellNumbers, eigs, fermiCoupling, gasConstant, kldivergence, mean, molarVolume, planckConstant, quantileSeq, variance, classicalElectronRadius, median, corr, freqz, mad, std, zeta, norm, rotationMatrix, planckTime, schur, rotate, sylvester, lyap } from './pureFunctionsAny.generated.js';
11
11
  var math = {}; // NOT pure!
12
12
  var mathWithTransform = {}; // NOT pure!
13
13
  var classes = {}; // NOT pure!
@@ -129,13 +129,6 @@ export var compile = createCompile({
129
129
  parse,
130
130
  typed
131
131
  });
132
- export var Help = createHelpClass({
133
- parse
134
- });
135
- export var leafCount = createLeafCount({
136
- parse,
137
- typed
138
- });
139
132
  export var simplifyCore = createSimplifyCore({
140
133
  AccessorNode,
141
134
  ArrayNode,
@@ -160,10 +153,8 @@ export var evaluate = createEvaluate({
160
153
  parse,
161
154
  typed
162
155
  });
163
- export var help = createHelp({
164
- Help,
165
- mathWithTransform,
166
- typed
156
+ export var Help = createHelpClass({
157
+ evaluate
167
158
  });
168
159
  export var Parser = createParserClass({
169
160
  evaluate
@@ -202,6 +193,10 @@ export var symbolicEqual = createSymbolicEqual({
202
193
  simplify,
203
194
  typed
204
195
  });
196
+ export var leafCount = createLeafCount({
197
+ parse,
198
+ typed
199
+ });
205
200
  export var parser = createParser({
206
201
  Parser,
207
202
  typed
@@ -248,6 +243,11 @@ export var derivative = createDerivative({
248
243
  simplify,
249
244
  typed
250
245
  });
246
+ export var help = createHelp({
247
+ Help,
248
+ mathWithTransform,
249
+ typed
250
+ });
251
251
  _extends(math, {
252
252
  e,
253
253
  false: _false,
@@ -525,7 +525,7 @@ _extends(math, {
525
525
  eigs,
526
526
  fermiCoupling,
527
527
  gasConstant,
528
- leafCount,
528
+ kldivergence,
529
529
  mean,
530
530
  molarVolume,
531
531
  planckConstant,
@@ -534,12 +534,12 @@ _extends(math, {
534
534
  variance,
535
535
  classicalElectronRadius,
536
536
  evaluate,
537
- help,
538
537
  median,
539
538
  simplify,
540
539
  symbolicEqual,
541
540
  corr,
542
541
  freqz,
542
+ leafCount,
543
543
  mad,
544
544
  parser,
545
545
  rationalize,
@@ -548,7 +548,7 @@ _extends(math, {
548
548
  derivative,
549
549
  norm,
550
550
  rotationMatrix,
551
- kldivergence,
551
+ help,
552
552
  planckTime,
553
553
  schur,
554
554
  rotate,
@@ -151,7 +151,7 @@ export var evaluate = createEvaluate({
151
151
  typed
152
152
  });
153
153
  export var Help = createHelpClass({
154
- parse
154
+ evaluate
155
155
  });
156
156
  export var Parser = createParserClass({
157
157
  evaluate
@@ -5,7 +5,7 @@
5
5
  import { config } from './configReadonly.js';
6
6
  import { createBigNumberClass, createComplexClass, createE, createFalse, createFineStructure, createFractionClass, createI, createInfinity, createLN10, createLOG10E, createMatrixClass, createNaN, createNull, createPhi, createRangeClass, createResultSet, createSQRT1_2,
7
7
  // eslint-disable-line camelcase
8
- createSackurTetrode, createTau, createTrue, createVersion, createDenseMatrixClass, createEfimovFactor, createLN2, createPi, createReplacer, createSQRT2, createTyped, createUnaryPlus, createWeakMixingAngle, createAbs, createAcos, createAcot, createAcsc, createAddScalar, createArg, createAsech, createAsinh, createAtan, createAtanh, createBignumber, createBitNot, createBoolean, createClone, createCombinations, createComplex, createConj, createCos, createCot, createCsc, createCube, createEqualScalar, createErf, createExp, createExpm1, createFilter, createForEach, createFormat, createGetMatrixDataType, createHex, createIm, createIsInteger, createIsNegative, createIsPositive, createIsZero, createLOG2E, createLgamma, createLog10, createLog2, createMap, createMultiplyScalar, createNot, createNumber, createOct, createPickRandom, createPrint, createRandom, createRe, createSec, createSign, createSin, createSparseMatrixClass, createSplitUnit, createSquare, createString, createSubtractScalar, createTan, createTypeOf, createAcosh, createAcsch, createApply, createAsec, createBin, createCombinationsWithRep, createCosh, createCsch, createIsNaN, createIsPrime, createRandomInt, createSech, createSinh, createSparse, createSqrt, createTanh, createUnaryMinus, createAcoth, createCoth, createFraction, createIsNumeric, createMatrix, createMatrixFromFunction, createMode, createNumeric, createProd, createReshape, createSize, createSqueeze, createTranspose, createXgcd, createZeros, createAsin, createCbrt, createConcat, createCount, createCtranspose, createDiag, createDivideScalar, createDotDivide, createEqual, createFlatten, createHasNumericValue, createIdentity, createKron, createLargerEq, createLeftShift, createLsolve, createMatrixFromColumns, createNthRoot, createOnes, createQr, createResize, createRightArithShift, createRound, createSmaller, createSubtract, createTo, createUnequal, createUsolve, createXor, createAdd, createAtan2, createBitAnd, createBitOr, createBitXor, createCatalan, createCompare, createCompareText, createCumSum, createDeepEqual, createDiff, createDistance, createDot, createEqualText, createFloor, createGcd, createHypot, createImmutableDenseMatrixClass, createIndexClass, createLarger, createLog, createLsolveAll, createMatrixFromRows, createMin, createMod, createMultiply, createNthRoots, createOr, createPartitionSelect, createRightLogShift, createSlu, createSubset, createSum, createTrace, createUsolveAll, createZpk2tf, createCeil, createCompareNatural, createComposition, createCross, createDet, createDotMultiply, createFibonacciHeapClass, createFix, createIndex, createIntersect, createInvmod, createLcm, createLog1p, createMax, createSetCartesian, createSetDistinct, createSetIsSubset, createSetPowerset, createSmallerEq, createSort, createAnd, createRange, createRow, createSetDifference, createSetMultiplicity, createSetSymDifference, createSpaClass, createColumn, createInv, createLup, createPinv, createPow, createSetIntersect, createSetUnion, createSqrtm, createUnitClass, createVacuumImpedance, createWienDisplacement, createAtomicMass, createBohrMagneton, createBoltzmann, createConductanceQuantum, createCoulomb, createDeuteronMass, createDotPow, createElectricConstant, createElementaryCharge, createExpm, createFaraday, createFft, createGamma, createGravitationConstant, createHartreeEnergy, createIfft, createKlitzing, createLoschmidt, createMagneticConstant, createMolarMass, createMolarPlanckConstant, createNeutronMass, createNuclearMagneton, createPlanckCharge, createPlanckLength, createPlanckTemperature, createProtonMass, createQuantumOfCirculation, createReducedPlanckConstant, createRydberg, createSecondRadiation, createSpeedOfLight, createStefanBoltzmann, createThomsonCrossSection, createAvogadro, createBohrRadius, createCreateUnit, createDivide, createElectronMass, createFactorial, createFirstRadiation, createGravity, createInverseConductanceQuantum, createLusolve, createMagneticFluxQuantum, createMolarMassC12, createMultinomial, createPermutations, createPlanckMass, createPolynomialRoot, createSetSize, createSolveODE, createStirlingS2, createUnitFunction, createBellNumbers, createEigs, createFermiCoupling, createGasConstant, createMean, createMolarVolume, createPlanckConstant, createQuantileSeq, createVariance, createClassicalElectronRadius, createMedian, createCorr, createFreqz, createMad, createStd, createZeta, createNorm, createRotationMatrix, createKldivergence, createPlanckTime, createSchur, createRotate, createSylvester, createLyap } from '../factoriesAny.js';
8
+ createSackurTetrode, createTau, createTrue, createVersion, createDenseMatrixClass, createEfimovFactor, createLN2, createPi, createReplacer, createSQRT2, createTyped, createUnaryPlus, createWeakMixingAngle, createAbs, createAcos, createAcot, createAcsc, createAddScalar, createArg, createAsech, createAsinh, createAtan, createAtanh, createBignumber, createBitNot, createBoolean, createClone, createCombinations, createComplex, createConj, createCos, createCot, createCsc, createCube, createEqualScalar, createErf, createExp, createExpm1, createFilter, createForEach, createFormat, createGetMatrixDataType, createHex, createIm, createIsInteger, createIsNegative, createIsPositive, createIsZero, createLOG2E, createLgamma, createLog10, createLog2, createMap, createMultiplyScalar, createNot, createNumber, createOct, createPickRandom, createPrint, createRandom, createRe, createSec, createSign, createSin, createSparseMatrixClass, createSplitUnit, createSquare, createString, createSubtractScalar, createTan, createTypeOf, createAcosh, createAcsch, createApply, createAsec, createBin, createCombinationsWithRep, createCosh, createCsch, createIsNaN, createIsPrime, createRandomInt, createSech, createSinh, createSparse, createSqrt, createTanh, createUnaryMinus, createAcoth, createCoth, createFraction, createIsNumeric, createMatrix, createMatrixFromFunction, createMode, createNumeric, createProd, createReshape, createSize, createSqueeze, createTranspose, createXgcd, createZeros, createAsin, createCbrt, createConcat, createCount, createCtranspose, createDiag, createDivideScalar, createDotDivide, createEqual, createFlatten, createHasNumericValue, createIdentity, createKron, createLargerEq, createLeftShift, createLsolve, createMatrixFromColumns, createNthRoot, createOnes, createQr, createResize, createRightArithShift, createRound, createSmaller, createSubtract, createTo, createUnequal, createUsolve, createXor, createAdd, createAtan2, createBitAnd, createBitOr, createBitXor, createCatalan, createCompare, createCompareText, createCumSum, createDeepEqual, createDiff, createDistance, createDot, createEqualText, createFloor, createGcd, createHypot, createImmutableDenseMatrixClass, createIndexClass, createLarger, createLog, createLsolveAll, createMatrixFromRows, createMin, createMod, createMultiply, createNthRoots, createOr, createPartitionSelect, createRightLogShift, createSlu, createSubset, createSum, createTrace, createUsolveAll, createZpk2tf, createCeil, createCompareNatural, createComposition, createCross, createDet, createDotMultiply, createFibonacciHeapClass, createFix, createIndex, createIntersect, createInvmod, createLcm, createLog1p, createMax, createSetCartesian, createSetDistinct, createSetIsSubset, createSetPowerset, createSmallerEq, createSort, createAnd, createRange, createRow, createSetDifference, createSetMultiplicity, createSetSymDifference, createSpaClass, createColumn, createInv, createLup, createPinv, createPow, createSetIntersect, createSetUnion, createSqrtm, createUnitClass, createVacuumImpedance, createWienDisplacement, createAtomicMass, createBohrMagneton, createBoltzmann, createConductanceQuantum, createCoulomb, createDeuteronMass, createDotPow, createElectricConstant, createElementaryCharge, createExpm, createFaraday, createFft, createGamma, createGravitationConstant, createHartreeEnergy, createIfft, createKlitzing, createLoschmidt, createMagneticConstant, createMolarMass, createMolarPlanckConstant, createNeutronMass, createNuclearMagneton, createPlanckCharge, createPlanckLength, createPlanckTemperature, createProtonMass, createQuantumOfCirculation, createReducedPlanckConstant, createRydberg, createSecondRadiation, createSpeedOfLight, createStefanBoltzmann, createThomsonCrossSection, createAvogadro, createBohrRadius, createCreateUnit, createDivide, createElectronMass, createFactorial, createFirstRadiation, createGravity, createInverseConductanceQuantum, createLusolve, createMagneticFluxQuantum, createMolarMassC12, createMultinomial, createPermutations, createPlanckMass, createPolynomialRoot, createSetSize, createSolveODE, createStirlingS2, createUnitFunction, createBellNumbers, createEigs, createFermiCoupling, createGasConstant, createKldivergence, createMean, createMolarVolume, createPlanckConstant, createQuantileSeq, createVariance, createClassicalElectronRadius, createMedian, createCorr, createFreqz, createMad, createStd, createZeta, createNorm, createRotationMatrix, createPlanckTime, createSchur, createRotate, createSylvester, createLyap } from '../factoriesAny.js';
9
9
  export var BigNumber = /* #__PURE__ */createBigNumberClass({
10
10
  config
11
11
  });
@@ -1602,6 +1602,17 @@ export var gasConstant = /* #__PURE__ */createGasConstant({
1602
1602
  Unit,
1603
1603
  config
1604
1604
  });
1605
+ export var kldivergence = /* #__PURE__ */createKldivergence({
1606
+ divide,
1607
+ dotDivide,
1608
+ isNumeric,
1609
+ log,
1610
+ map,
1611
+ matrix,
1612
+ multiply,
1613
+ sum,
1614
+ typed
1615
+ });
1605
1616
  export var mean = /* #__PURE__ */createMean({
1606
1617
  add,
1607
1618
  divide,
@@ -1732,17 +1743,6 @@ export var rotationMatrix = /* #__PURE__ */createRotationMatrix({
1732
1743
  typed,
1733
1744
  unaryMinus
1734
1745
  });
1735
- export var kldivergence = /* #__PURE__ */createKldivergence({
1736
- divide,
1737
- dotDivide,
1738
- isNumeric,
1739
- log,
1740
- map,
1741
- matrix,
1742
- multiply,
1743
- sum,
1744
- typed
1745
- });
1746
1746
  export var planckTime = /* #__PURE__ */createPlanckTime({
1747
1747
  BigNumber,
1748
1748
  Unit,
@@ -3,10 +3,10 @@ import { clone } from '../utils/object.js';
3
3
  import { format } from '../utils/string.js';
4
4
  import { factory } from '../utils/factory.js';
5
5
  var name = 'Help';
6
- var dependencies = ['parse'];
6
+ var dependencies = ['evaluate'];
7
7
  export var createHelpClass = /* #__PURE__ */factory(name, dependencies, _ref => {
8
8
  var {
9
- parse
9
+ evaluate
10
10
  } = _ref;
11
11
  /**
12
12
  * Documentation object
@@ -55,14 +55,26 @@ export var createHelpClass = /* #__PURE__ */factory(name, dependencies, _ref =>
55
55
  }
56
56
  if (doc.examples) {
57
57
  desc += 'Examples:\n';
58
- var scope = {};
58
+
59
+ // after evaluating the examples, we restore config in case the examples
60
+ // did change the config.
61
+ var configChanged = false;
62
+ var originalConfig = evaluate('config()');
63
+ var scope = {
64
+ config: newConfig => {
65
+ configChanged = true;
66
+ return evaluate('config(newConfig)', {
67
+ newConfig
68
+ });
69
+ }
70
+ };
59
71
  for (var i = 0; i < doc.examples.length; i++) {
60
72
  var expr = doc.examples[i];
61
73
  desc += ' ' + expr + '\n';
62
74
  var res = void 0;
63
75
  try {
64
76
  // note: res can be undefined when `expr` is an empty string
65
- res = parse(expr).compile().evaluate(scope);
77
+ res = evaluate(expr, scope);
66
78
  } catch (e) {
67
79
  res = e;
68
80
  }
@@ -73,6 +85,11 @@ export var createHelpClass = /* #__PURE__ */factory(name, dependencies, _ref =>
73
85
  }
74
86
  }
75
87
  desc += '\n';
88
+ if (configChanged) {
89
+ evaluate('config(originalConfig)', {
90
+ originalConfig
91
+ });
92
+ }
76
93
  }
77
94
  if (doc.mayThrow && doc.mayThrow.length) {
78
95
  desc += 'Throws: ' + doc.mayThrow.join(', ') + '\n\n';
@@ -19,8 +19,8 @@ var dependencies = ['typed', 'format'];
19
19
  * oct
20
20
  * hex
21
21
  *
22
- * @param {number} value Value to be stringified
23
- * @param {number} wordSize Optional word size (see `format`)
22
+ * @param {number | BigNumber} value Value to be stringified
23
+ * @param {number | BigNumber} wordSize Optional word size (see `format`)
24
24
  * @return {string} The formatted value
25
25
  */
26
26
  export var createBin = factory(name, dependencies, _ref => {
@@ -34,7 +34,7 @@ export var createBin = factory(name, dependencies, _ref => {
34
34
  notation: 'bin'
35
35
  });
36
36
  },
37
- 'number | BigNumber, number': function numberBigNumberNumber(n, wordSize) {
37
+ 'number | BigNumber, number | BigNumber': function numberBigNumberNumberBigNumber(n, wordSize) {
38
38
  return format(n, {
39
39
  notation: 'bin',
40
40
  wordSize
@@ -42,7 +42,7 @@ export var createFormat = /* #__PURE__ */factory(name, dependencies, _ref => {
42
42
  * - `'bin'`, `'oct'`, or `'hex'`
43
43
  * Format the number using binary, octal, or hexadecimal notation.
44
44
  * For example `'0b1101'` and `'0x10fe'`.
45
- * - `wordSize: number`
45
+ * - `wordSize: number | BigNumber`
46
46
  * The word size in bits to use for formatting in binary, octal, or
47
47
  * hexadecimal notation. To be used only with `'bin'`, `'oct'`, or `'hex'`
48
48
  * values for `notation` option. When this option is defined the value
@@ -50,7 +50,7 @@ export var createFormat = /* #__PURE__ */factory(name, dependencies, _ref => {
50
50
  * size and the size suffix is appended to the output.
51
51
  * For example `format(-1, {notation: 'hex', wordSize: 8}) === '0xffi8'`.
52
52
  * Default value is undefined.
53
- * - `precision: number`
53
+ * - `precision: number | BigNumber`
54
54
  * Limit the number of digits of the formatted value.
55
55
  * For regular numbers, must be a number between `0` and `16`.
56
56
  * For bignumbers, the maximum depends on the configured precision,
@@ -126,6 +126,6 @@ export var createFormat = /* #__PURE__ */factory(name, dependencies, _ref => {
126
126
  */
127
127
  return typed(name, {
128
128
  any: formatString,
129
- 'any, Object | function | number': formatString
129
+ 'any, Object | function | number | BigNumber': formatString
130
130
  });
131
131
  });
@@ -18,8 +18,8 @@ var dependencies = ['typed', 'format'];
18
18
  * oct
19
19
  * bin
20
20
  *
21
- * @param {number} value Value to be stringified
22
- * @param {number} wordSize Optional word size (see `format`)
21
+ * @param {number | BigNumber} value Value to be stringified
22
+ * @param {number | BigNumber} wordSize Optional word size (see `format`)
23
23
  * @return {string} The formatted value
24
24
  */
25
25
  export var createHex = factory(name, dependencies, _ref => {
@@ -33,7 +33,7 @@ export var createHex = factory(name, dependencies, _ref => {
33
33
  notation: 'hex'
34
34
  });
35
35
  },
36
- 'number | BigNumber, number': function numberBigNumberNumber(n, wordSize) {
36
+ 'number | BigNumber, number | BigNumber': function numberBigNumberNumberBigNumber(n, wordSize) {
37
37
  return format(n, {
38
38
  notation: 'hex',
39
39
  wordSize
@@ -19,8 +19,8 @@ var dependencies = ['typed', 'format'];
19
19
  * bin
20
20
  * hex
21
21
  *
22
- * @param {number} value Value to be stringified
23
- * @param {number} wordSize Optional word size (see `format`)
22
+ * @param {number | BigNumber} value Value to be stringified
23
+ * @param {number | BigNumber} wordSize Optional word size (see `format`)
24
24
  * @return {string} The formatted value
25
25
  */
26
26
 
@@ -35,7 +35,7 @@ export var createOct = factory(name, dependencies, _ref => {
35
35
  notation: 'oct'
36
36
  });
37
37
  },
38
- 'number | BigNumber, number': function numberBigNumberNumber(n, wordSize) {
38
+ 'number | BigNumber, number | BigNumber': function numberBigNumberNumberBigNumber(n, wordSize) {
39
39
  return format(n, {
40
40
  notation: 'oct',
41
41
  wordSize
package/lib/esm/header.js CHANGED
@@ -10,7 +10,7 @@
10
10
  * @date @@date
11
11
  *
12
12
  * @license
13
- * Copyright (C) 2013-2023 Jos de Jong <wjosdejong@gmail.com>
13
+ * Copyright (C) 2013-2024 Jos de Jong <wjosdejong@gmail.com>
14
14
  *
15
15
  * Licensed under the Apache License, Version 2.0 (the "License"); you may not
16
16
  * use this file except in compliance with the License. You may obtain a copy