mathjs 12.2.1 → 12.3.1

Sign up to get free protection for your applications and to get access to all the features.
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