mathjs 14.6.0 → 14.8.0

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 (46) hide show
  1. package/HISTORY.md +17 -0
  2. package/lib/browser/math.js +1 -1
  3. package/lib/browser/math.js.LICENSE.txt +2 -2
  4. package/lib/browser/math.js.map +1 -1
  5. package/lib/cjs/core/function/config.js +0 -1
  6. package/lib/cjs/entry/dependenciesAny/dependenciesNullish.generated.js +25 -0
  7. package/lib/cjs/entry/dependenciesAny/dependenciesNullishTransform.generated.js +25 -0
  8. package/lib/cjs/entry/dependenciesAny.generated.js +14 -0
  9. package/lib/cjs/entry/impureFunctionsAny.generated.js +8 -0
  10. package/lib/cjs/entry/pureFunctionsAny.generated.js +10 -3
  11. package/lib/cjs/expression/Parser.js +35 -1
  12. package/lib/cjs/expression/embeddedDocs/embeddedDocs.js +2 -0
  13. package/lib/cjs/expression/embeddedDocs/function/logical/nullish.js +14 -0
  14. package/lib/cjs/expression/node/FunctionAssignmentNode.js +3 -1
  15. package/lib/cjs/expression/operators.js +7 -0
  16. package/lib/cjs/expression/parse.js +18 -2
  17. package/lib/cjs/expression/transform/nullish.transform.js +43 -0
  18. package/lib/cjs/factoriesAny.js +14 -0
  19. package/lib/cjs/function/logical/nullish.js +87 -0
  20. package/lib/cjs/function/matrix/range.js +7 -5
  21. package/lib/cjs/header.js +2 -2
  22. package/lib/cjs/type/matrix/DenseMatrix.js +21 -17
  23. package/lib/cjs/type/string.js +4 -4
  24. package/lib/cjs/version.js +1 -1
  25. package/lib/esm/core/function/config.js +0 -1
  26. package/lib/esm/entry/dependenciesAny/dependenciesNullish.generated.js +18 -0
  27. package/lib/esm/entry/dependenciesAny/dependenciesNullishTransform.generated.js +18 -0
  28. package/lib/esm/entry/dependenciesAny.generated.js +2 -0
  29. package/lib/esm/entry/impureFunctionsAny.generated.js +10 -2
  30. package/lib/esm/entry/pureFunctionsAny.generated.js +8 -1
  31. package/lib/esm/expression/Parser.js +35 -1
  32. package/lib/esm/expression/embeddedDocs/embeddedDocs.js +2 -0
  33. package/lib/esm/expression/embeddedDocs/function/logical/nullish.js +8 -0
  34. package/lib/esm/expression/node/FunctionAssignmentNode.js +3 -1
  35. package/lib/esm/expression/operators.js +7 -0
  36. package/lib/esm/expression/parse.js +18 -2
  37. package/lib/esm/expression/transform/nullish.transform.js +37 -0
  38. package/lib/esm/factoriesAny.js +2 -0
  39. package/lib/esm/function/logical/nullish.js +81 -0
  40. package/lib/esm/function/matrix/range.js +7 -5
  41. package/lib/esm/type/matrix/DenseMatrix.js +21 -17
  42. package/lib/esm/type/string.js +4 -4
  43. package/lib/esm/version.js +1 -1
  44. package/package.json +15 -16
  45. package/types/index.d.ts +19 -1
  46. package/types/tslint.json +0 -6
@@ -225,6 +225,8 @@ export { nthRootDependencies } from './dependenciesAny/dependenciesNthRoot.gener
225
225
  export { nthRootsDependencies } from './dependenciesAny/dependenciesNthRoots.generated.js';
226
226
  export { nuclearMagnetonDependencies } from './dependenciesAny/dependenciesNuclearMagneton.generated.js';
227
227
  export { nullDependencies } from './dependenciesAny/dependenciesNull.generated.js';
228
+ export { nullishDependencies } from './dependenciesAny/dependenciesNullish.generated.js';
229
+ export { nullishTransformDependencies } from './dependenciesAny/dependenciesNullishTransform.generated.js';
228
230
  export { numberDependencies } from './dependenciesAny/dependenciesNumber.generated.js';
229
231
  export { numericDependencies } from './dependenciesAny/dependenciesNumeric.generated.js';
230
232
  export { ObjectNodeDependencies } from './dependenciesAny/dependenciesObjectNode.generated.js';
@@ -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, createAccessorNode, createAssignmentNode, createIndexNode, createSymbolNode, createFunctionNode, createParse, createResolve, createSimplifyConstant, createCompile, createSimplifyCore, createEvaluate, createHelpClass, createParserClass, createSimplify, createSymbolicEqual, createLeafCount, createParser, createRationalize, createDerivative, createHelp, createMapSlicesTransform, createFilterTransform, createForEachTransform, createMapTransform, createOrTransform, createAndTransform, createConcatTransform, createIndexTransform, createPrintTransform, createSumTransform, createBitAndTransform, createMinTransform, createSubsetTransform, createBitOrTransform, createCumSumTransform, createDiffTransform, createMaxTransform, 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, createAccessorNode, createAssignmentNode, createIndexNode, createSymbolNode, createFunctionNode, createParse, createResolve, createSimplifyConstant, createCompile, createSimplifyCore, createEvaluate, createHelpClass, createParserClass, createSimplify, createSymbolicEqual, createLeafCount, createParser, createRationalize, createDerivative, createHelp, createMapSlicesTransform, createFilterTransform, createForEachTransform, createMapTransform, createOrTransform, createAndTransform, createConcatTransform, createIndexTransform, createPrintTransform, createSumTransform, createBitAndTransform, createMinTransform, createNullishTransform, createSubsetTransform, createBitOrTransform, createCumSumTransform, createDiffTransform, createMaxTransform, 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, weakMixingAngle, abs, acos, acot, acsc, addScalar, arg, asech, asinh, atan, atanh, bigint, bitNot, boolean, clone, combinations, complex, conj, cos, cot, csc, cube, equalScalar, erf, exp, expm1, filter, flatten, 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, toBest, typeOf, acosh, acsch, asec, bignumber, combinationsWithRep, cosh, csch, isNaN, isPrime, mapSlices, matrix, matrixFromFunction, ones, randomInt, reshape, sech, sinh, sparse, sqrt, squeeze, tanh, transpose, xgcd, zeros, acoth, asin, bin, concat, coth, ctranspose, diag, dotMultiply, equal, fraction, identity, isNumeric, kron, largerEq, leftShift, mode, nthRoot, numeric, prod, resize, rightArithShift, round, size, smaller, to, unaryMinus, unequal, xor, add, atan2, bitAnd, bitOr, bitXor, cbrt, compare, compareText, count, deepEqual, divideScalar, dotDivide, equalText, floor, gcd, hasNumericValue, hypot, ImmutableDenseMatrix, Index, larger, log, lsolve, matrixFromColumns, max, min, mod, nthRoots, or, partitionSelect, qr, rightLogShift, smallerEq, subset, subtract, trace, usolve, catalan, compareNatural, composition, diff, distance, dot, FibonacciHeap, index, invmod, lcm, log1p, lsolveAll, matrixFromRows, multiply, range, row, setCartesian, setDistinct, setIsSubset, setPowerset, slu, sort, unaryPlus, usolveAll, zpk2tf, and, ceil, column, cross, det, fix, inv, pinv, pow, setDifference, setMultiplicity, setSymDifference, Spa, sqrtm, sum, Unit, vacuumImpedance, wienDisplacement, atomicMass, bohrMagneton, boltzmann, conductanceQuantum, coulomb, createUnit, deuteronMass, dotPow, electricConstant, elementaryCharge, expm, faraday, fft, gamma, gravitationConstant, hartreeEnergy, ifft, inverseConductanceQuantum, klitzing, loschmidt, magneticConstant, molarMass, molarPlanckConstant, neutronMass, nuclearMagneton, planckCharge, planckLength, planckTemperature, protonMass, quantumOfCirculation, reducedPlanckConstant, rydberg, secondRadiation, setSize, speedOfLight, stefanBoltzmann, thomsonCrossSection, avogadro, bohrRadius, coulombConstant, divide, electronMass, factorial, firstRadiation, gravity, intersect, lup, magneticFluxQuantum, molarMassC12, multinomial, permutations, planckMass, polynomialRoot, setIntersect, solveODE, stirlingS2, unit, bellNumbers, cumsum, eigs, fermiCoupling, gasConstant, kldivergence, lusolve, mean, molarVolume, planckConstant, quantileSeq, setUnion, variance, classicalElectronRadius, median, corr, freqz, mad, std, zeta, norm, rotationMatrix, planckTime, schur, rotate, sylvester, lyap } from './pureFunctionsAny.generated.js';
10
+ sackurTetrode, tau, _true, version, DenseMatrix, efimovFactor, LN2, pi, replacer, SQRT2, typed, weakMixingAngle, abs, acos, acot, acsc, addScalar, arg, asech, asinh, atan, atanh, bigint, bitNot, boolean, clone, combinations, complex, conj, cos, cot, csc, cube, equalScalar, erf, exp, expm1, filter, flatten, 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, toBest, typeOf, acosh, acsch, asec, bignumber, combinationsWithRep, cosh, csch, isNaN, isPrime, mapSlices, matrix, matrixFromFunction, ones, randomInt, reshape, sech, sinh, sparse, sqrt, squeeze, tanh, transpose, xgcd, zeros, acoth, asin, bin, concat, coth, ctranspose, diag, dotMultiply, equal, fraction, identity, isNumeric, kron, largerEq, leftShift, mode, nthRoot, numeric, prod, resize, rightArithShift, round, size, smaller, to, unaryMinus, unequal, xor, add, atan2, bitAnd, bitOr, bitXor, cbrt, compare, compareText, count, deepEqual, divideScalar, dotDivide, equalText, floor, gcd, hasNumericValue, hypot, ImmutableDenseMatrix, Index, larger, log, lsolve, matrixFromColumns, max, min, mod, nthRoots, nullish, or, partitionSelect, qr, rightLogShift, smallerEq, subset, subtract, trace, usolve, catalan, compareNatural, composition, diff, distance, dot, FibonacciHeap, index, invmod, lcm, log1p, lsolveAll, matrixFromRows, multiply, range, row, setCartesian, setDistinct, setIsSubset, setPowerset, slu, sort, unaryPlus, usolveAll, zpk2tf, and, ceil, column, cross, det, fix, inv, pinv, pow, setDifference, setMultiplicity, setSymDifference, Spa, sqrtm, sum, Unit, vacuumImpedance, wienDisplacement, atomicMass, bohrMagneton, boltzmann, conductanceQuantum, coulomb, createUnit, deuteronMass, dotPow, electricConstant, elementaryCharge, expm, faraday, fft, gamma, gravitationConstant, hartreeEnergy, ifft, inverseConductanceQuantum, klitzing, loschmidt, magneticConstant, molarMass, molarPlanckConstant, neutronMass, nuclearMagneton, planckCharge, planckLength, planckTemperature, protonMass, quantumOfCirculation, reducedPlanckConstant, rydberg, secondRadiation, setSize, speedOfLight, stefanBoltzmann, thomsonCrossSection, avogadro, bohrRadius, coulombConstant, divide, electronMass, factorial, firstRadiation, gravity, intersect, lup, magneticFluxQuantum, molarMassC12, multinomial, permutations, planckMass, polynomialRoot, setIntersect, solveODE, stirlingS2, unit, bellNumbers, cumsum, eigs, fermiCoupling, gasConstant, kldivergence, lusolve, mean, molarVolume, planckConstant, quantileSeq, setUnion, 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!
@@ -402,6 +402,7 @@ _extends(math, {
402
402
  min,
403
403
  mod,
404
404
  nthRoots,
405
+ nullish,
405
406
  or,
406
407
  partitionSelect,
407
408
  qr,
@@ -617,6 +618,13 @@ _extends(mathWithTransform, math, {
617
618
  smaller,
618
619
  typed
619
620
  }),
621
+ nullish: createNullishTransform({
622
+ deepEqual,
623
+ flatten,
624
+ matrix,
625
+ size,
626
+ typed
627
+ }),
620
628
  subset: createSubsetTransform({
621
629
  add,
622
630
  matrix,
@@ -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, createWeakMixingAngle, createAbs, createAcos, createAcot, createAcsc, createAddScalar, createArg, createAsech, createAsinh, createAtan, createAtanh, createBigint, createBitNot, createBoolean, createClone, createCombinations, createComplex, createConj, createCos, createCot, createCsc, createCube, createEqualScalar, createErf, createExp, createExpm1, createFilter, createFlatten, 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, createToBest, createTypeOf, createAcosh, createAcsch, createAsec, createBignumber, createCombinationsWithRep, createCosh, createCsch, createIsNaN, createIsPrime, createMapSlices, createMatrix, createMatrixFromFunction, createOnes, createRandomInt, createReshape, createSech, createSinh, createSparse, createSqrt, createSqueeze, createTanh, createTranspose, createXgcd, createZeros, createAcoth, createAsin, createBin, createConcat, createCoth, createCtranspose, createDiag, createDotMultiply, createEqual, createFraction, createIdentity, createIsNumeric, createKron, createLargerEq, createLeftShift, createMode, createNthRoot, createNumeric, createProd, createResize, createRightArithShift, createRound, createSize, createSmaller, createTo, createUnaryMinus, createUnequal, createXor, createAdd, createAtan2, createBitAnd, createBitOr, createBitXor, createCbrt, createCompare, createCompareText, createCount, createDeepEqual, createDivideScalar, createDotDivide, createEqualText, createFloor, createGcd, createHasNumericValue, createHypot, createImmutableDenseMatrixClass, createIndexClass, createLarger, createLog, createLsolve, createMatrixFromColumns, createMax, createMin, createMod, createNthRoots, createOr, createPartitionSelect, createQr, createRightLogShift, createSmallerEq, createSubset, createSubtract, createTrace, createUsolve, createCatalan, createCompareNatural, createComposition, createDiff, createDistance, createDot, createFibonacciHeapClass, createIndex, createInvmod, createLcm, createLog1p, createLsolveAll, createMatrixFromRows, createMultiply, createRange, createRow, createSetCartesian, createSetDistinct, createSetIsSubset, createSetPowerset, createSlu, createSort, createUnaryPlus, createUsolveAll, createZpk2tf, createAnd, createCeil, createColumn, createCross, createDet, createFix, createInv, createPinv, createPow, createSetDifference, createSetMultiplicity, createSetSymDifference, createSpaClass, createSqrtm, createSum, createUnitClass, createVacuumImpedance, createWienDisplacement, createAtomicMass, createBohrMagneton, createBoltzmann, createConductanceQuantum, createCoulomb, createCreateUnit, createDeuteronMass, createDotPow, createElectricConstant, createElementaryCharge, createExpm, createFaraday, createFft, createGamma, createGravitationConstant, createHartreeEnergy, createIfft, createInverseConductanceQuantum, createKlitzing, createLoschmidt, createMagneticConstant, createMolarMass, createMolarPlanckConstant, createNeutronMass, createNuclearMagneton, createPlanckCharge, createPlanckLength, createPlanckTemperature, createProtonMass, createQuantumOfCirculation, createReducedPlanckConstant, createRydberg, createSecondRadiation, createSetSize, createSpeedOfLight, createStefanBoltzmann, createThomsonCrossSection, createAvogadro, createBohrRadius, createCoulombConstant, createDivide, createElectronMass, createFactorial, createFirstRadiation, createGravity, createIntersect, createLup, createMagneticFluxQuantum, createMolarMassC12, createMultinomial, createPermutations, createPlanckMass, createPolynomialRoot, createSetIntersect, createSolveODE, createStirlingS2, createUnitFunction, createBellNumbers, createCumSum, createEigs, createFermiCoupling, createGasConstant, createKldivergence, createLusolve, createMean, createMolarVolume, createPlanckConstant, createQuantileSeq, createSetUnion, createVariance, createClassicalElectronRadius, createMedian, createCorr, createFreqz, createMad, createStd, createZeta, createNorm, createRotationMatrix, createPlanckTime, createSchur, createRotate, createSylvester, createLyap } from '../factoriesAny.js';
8
+ createSackurTetrode, createTau, createTrue, createVersion, createDenseMatrixClass, createEfimovFactor, createLN2, createPi, createReplacer, createSQRT2, createTyped, createWeakMixingAngle, createAbs, createAcos, createAcot, createAcsc, createAddScalar, createArg, createAsech, createAsinh, createAtan, createAtanh, createBigint, createBitNot, createBoolean, createClone, createCombinations, createComplex, createConj, createCos, createCot, createCsc, createCube, createEqualScalar, createErf, createExp, createExpm1, createFilter, createFlatten, 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, createToBest, createTypeOf, createAcosh, createAcsch, createAsec, createBignumber, createCombinationsWithRep, createCosh, createCsch, createIsNaN, createIsPrime, createMapSlices, createMatrix, createMatrixFromFunction, createOnes, createRandomInt, createReshape, createSech, createSinh, createSparse, createSqrt, createSqueeze, createTanh, createTranspose, createXgcd, createZeros, createAcoth, createAsin, createBin, createConcat, createCoth, createCtranspose, createDiag, createDotMultiply, createEqual, createFraction, createIdentity, createIsNumeric, createKron, createLargerEq, createLeftShift, createMode, createNthRoot, createNumeric, createProd, createResize, createRightArithShift, createRound, createSize, createSmaller, createTo, createUnaryMinus, createUnequal, createXor, createAdd, createAtan2, createBitAnd, createBitOr, createBitXor, createCbrt, createCompare, createCompareText, createCount, createDeepEqual, createDivideScalar, createDotDivide, createEqualText, createFloor, createGcd, createHasNumericValue, createHypot, createImmutableDenseMatrixClass, createIndexClass, createLarger, createLog, createLsolve, createMatrixFromColumns, createMax, createMin, createMod, createNthRoots, createNullish, createOr, createPartitionSelect, createQr, createRightLogShift, createSmallerEq, createSubset, createSubtract, createTrace, createUsolve, createCatalan, createCompareNatural, createComposition, createDiff, createDistance, createDot, createFibonacciHeapClass, createIndex, createInvmod, createLcm, createLog1p, createLsolveAll, createMatrixFromRows, createMultiply, createRange, createRow, createSetCartesian, createSetDistinct, createSetIsSubset, createSetPowerset, createSlu, createSort, createUnaryPlus, createUsolveAll, createZpk2tf, createAnd, createCeil, createColumn, createCross, createDet, createFix, createInv, createPinv, createPow, createSetDifference, createSetMultiplicity, createSetSymDifference, createSpaClass, createSqrtm, createSum, createUnitClass, createVacuumImpedance, createWienDisplacement, createAtomicMass, createBohrMagneton, createBoltzmann, createConductanceQuantum, createCoulomb, createCreateUnit, createDeuteronMass, createDotPow, createElectricConstant, createElementaryCharge, createExpm, createFaraday, createFft, createGamma, createGravitationConstant, createHartreeEnergy, createIfft, createInverseConductanceQuantum, createKlitzing, createLoschmidt, createMagneticConstant, createMolarMass, createMolarPlanckConstant, createNeutronMass, createNuclearMagneton, createPlanckCharge, createPlanckLength, createPlanckTemperature, createProtonMass, createQuantumOfCirculation, createReducedPlanckConstant, createRydberg, createSecondRadiation, createSetSize, createSpeedOfLight, createStefanBoltzmann, createThomsonCrossSection, createAvogadro, createBohrRadius, createCoulombConstant, createDivide, createElectronMass, createFactorial, createFirstRadiation, createGravity, createIntersect, createLup, createMagneticFluxQuantum, createMolarMassC12, createMultinomial, createPermutations, createPlanckMass, createPolynomialRoot, createSetIntersect, createSolveODE, createStirlingS2, createUnitFunction, createBellNumbers, createCumSum, createEigs, createFermiCoupling, createGasConstant, createKldivergence, createLusolve, createMean, createMolarVolume, createPlanckConstant, createQuantileSeq, createSetUnion, 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
  });
@@ -771,6 +771,13 @@ export var nthRoots = /* #__PURE__ */createNthRoots({
771
771
  divideScalar,
772
772
  typed
773
773
  });
774
+ export var nullish = /* #__PURE__ */createNullish({
775
+ deepEqual,
776
+ flatten,
777
+ matrix,
778
+ size,
779
+ typed
780
+ });
774
781
  export var or = /* #__PURE__ */createOr({
775
782
  DenseMatrix,
776
783
  concat,
@@ -1,4 +1,5 @@
1
1
  import { factory } from '../utils/factory.js';
2
+ import { isFunction } from '../utils/is.js';
2
3
  import { createEmptyMap, toObject } from '../utils/map.js';
3
4
  var name = 'Parser';
4
5
  var dependencies = ['evaluate', 'parse'];
@@ -154,7 +155,40 @@ export var createParserClass = /* #__PURE__ */factory(name, dependencies, _ref =
154
155
  Parser.prototype.clear = function () {
155
156
  this.scope.clear();
156
157
  };
158
+ Parser.prototype.toJSON = function () {
159
+ var json = {
160
+ mathjs: 'Parser',
161
+ variables: {},
162
+ functions: {}
163
+ };
164
+ for (var [_name2, value] of this.scope) {
165
+ if (isFunction(value)) {
166
+ if (!isExpressionFunction(value)) {
167
+ throw new Error("Cannot serialize external function ".concat(_name2));
168
+ }
169
+ json.functions[_name2] = "".concat(value.syntax, " = ").concat(value.expr);
170
+ } else {
171
+ json.variables[_name2] = value;
172
+ }
173
+ }
174
+ return json;
175
+ };
176
+ Parser.fromJSON = function (json) {
177
+ var parser = new Parser();
178
+ Object.entries(json.variables).forEach(_ref2 => {
179
+ var [name, value] = _ref2;
180
+ return parser.set(name, value);
181
+ });
182
+ Object.entries(json.functions).forEach(_ref3 => {
183
+ var [_name, fn] = _ref3;
184
+ return parser.evaluate(fn);
185
+ });
186
+ return parser;
187
+ };
157
188
  return Parser;
158
189
  }, {
159
190
  isClass: true
160
- });
191
+ });
192
+ function isExpressionFunction(value) {
193
+ return typeof value === 'function' && typeof value.syntax === 'string' && typeof value.expr === 'string';
194
+ }
@@ -112,6 +112,7 @@ import { distanceDocs } from './function/geometry/distance.js';
112
112
  import { intersectDocs } from './function/geometry/intersect.js';
113
113
  import { andDocs } from './function/logical/and.js';
114
114
  import { notDocs } from './function/logical/not.js';
115
+ import { nullishDocs } from './function/logical/nullish.js';
115
116
  import { orDocs } from './function/logical/or.js';
116
117
  import { xorDocs } from './function/logical/xor.js';
117
118
  import { mapSlicesDocs } from './function/matrix/mapSlices.js';
@@ -581,6 +582,7 @@ export var embeddedDocs = {
581
582
  // functions - logical
582
583
  and: andDocs,
583
584
  not: notDocs,
585
+ nullish: nullishDocs,
584
586
  or: orDocs,
585
587
  xor: xorDocs,
586
588
  // functions - matrix
@@ -0,0 +1,8 @@
1
+ export var nullishDocs = {
2
+ name: 'nullish',
3
+ category: 'Logical',
4
+ syntax: ['x ?? y', 'nullish(x, y)'],
5
+ description: 'Nullish coalescing operator. Returns the right-hand operand when the left-hand operand is null or undefined, and otherwise returns the left-hand operand.',
6
+ examples: ['null ?? 42', 'undefined ?? 42', '0 ?? 42', 'false ?? 42', 'null ?? undefined ?? 42'],
7
+ seealso: ['and', 'or', 'not']
8
+ };
@@ -98,7 +98,8 @@ export var createFunctionAssignmentNode = /* #__PURE__ */factory(name, dependenc
98
98
  });
99
99
 
100
100
  // compile the function expression with the child args
101
- var evalExpr = this.expr._compile(math, childArgNames);
101
+ var expr = this.expr;
102
+ var evalExpr = expr._compile(math, childArgNames);
102
103
  var name = this.name;
103
104
  var params = this.params;
104
105
  var signature = join(this.types, ',');
@@ -114,6 +115,7 @@ export var createFunctionAssignmentNode = /* #__PURE__ */factory(name, dependenc
114
115
  };
115
116
  var fn = typed(name, signatures);
116
117
  fn.syntax = syntax;
118
+ fn.expr = expr.toString();
117
119
  scope.set(name, fn);
118
120
  return fn;
119
121
  };
@@ -221,6 +221,13 @@ export var properties = [{
221
221
  associativity: 'right',
222
222
  associativeWith: []
223
223
  }
224
+ }, {
225
+ // nullish coalescing
226
+ 'OperatorNode:nullish': {
227
+ op: '??',
228
+ associativity: 'left',
229
+ associativeWith: []
230
+ }
224
231
  }, {
225
232
  // factorial
226
233
  'OperatorNode:factorial': {
@@ -47,7 +47,7 @@ export var createParse = /* #__PURE__ */factory(name, dependencies, _ref => {
47
47
  * node1.compile().evaluate() // 5
48
48
  *
49
49
  * let scope = {a:3, b:4}
50
- * const node2 = math.parse('a * b') // 12
50
+ * const node2 = math.parse('a * b')
51
51
  * node2.evaluate(scope) // 12
52
52
  * const code2 = node2.compile()
53
53
  * code2.evaluate(scope) // 12
@@ -129,6 +129,7 @@ export var createParse = /* #__PURE__ */factory(name, dependencies, _ref => {
129
129
  '=': true,
130
130
  ':': true,
131
131
  '?': true,
132
+ '??': true,
132
133
  '==': true,
133
134
  '!=': true,
134
135
  '<': true,
@@ -1108,7 +1109,7 @@ export var createParse = /* #__PURE__ */factory(name, dependencies, _ref => {
1108
1109
  */
1109
1110
  function parsePow(state) {
1110
1111
  var node, name, fn, params;
1111
- node = parseLeftHandOperators(state);
1112
+ node = parseNullishCoalescing(state);
1112
1113
  if (state.token === '^' || state.token === '.^') {
1113
1114
  name = state.token;
1114
1115
  fn = name === '^' ? 'pow' : 'dotPow';
@@ -1119,6 +1120,21 @@ export var createParse = /* #__PURE__ */factory(name, dependencies, _ref => {
1119
1120
  return node;
1120
1121
  }
1121
1122
 
1123
+ /**
1124
+ * nullish coalescing operator
1125
+ * @return {Node} node
1126
+ * @private
1127
+ */
1128
+ function parseNullishCoalescing(state) {
1129
+ var node = parseLeftHandOperators(state);
1130
+ while (state.token === '??') {
1131
+ // eslint-disable-line no-unmodified-loop-condition
1132
+ getTokenSkipNewline(state);
1133
+ node = new OperatorNode('??', 'nullish', [node, parseLeftHandOperators(state)]);
1134
+ }
1135
+ return node;
1136
+ }
1137
+
1122
1138
  /**
1123
1139
  * Left hand operators: factorial x!, ctranspose x'
1124
1140
  * @return {Node} node
@@ -0,0 +1,37 @@
1
+ import { createNullish } from '../../function/logical/nullish.js';
2
+ import { factory } from '../../utils/factory.js';
3
+ import { isCollection } from '../../utils/is.js';
4
+ var name = 'nullish';
5
+ var dependencies = ['typed', 'matrix', 'size', 'flatten', 'deepEqual'];
6
+ export var createNullishTransform = /* #__PURE__ */factory(name, dependencies, _ref => {
7
+ var {
8
+ typed,
9
+ matrix,
10
+ size,
11
+ flatten,
12
+ deepEqual
13
+ } = _ref;
14
+ var nullish = createNullish({
15
+ typed,
16
+ matrix,
17
+ size,
18
+ flatten,
19
+ deepEqual
20
+ });
21
+ function nullishTransform(args, math, scope) {
22
+ var left = args[0].compile().evaluate(scope);
23
+
24
+ // If left is not a collection and not nullish, short-circuit and return it
25
+ if (!isCollection(left) && left != null && left !== undefined) {
26
+ return left;
27
+ }
28
+
29
+ // Otherwise evaluate right and apply full nullish semantics (incl. element-wise)
30
+ var right = args[1].compile().evaluate(scope);
31
+ return nullish(left, right);
32
+ }
33
+ nullishTransform.rawArgs = true;
34
+ return nullishTransform;
35
+ }, {
36
+ isTransformFunction: true
37
+ });
@@ -66,6 +66,7 @@ export { createConj } from './function/complex/conj.js';
66
66
  export { createIm } from './function/complex/im.js';
67
67
  export { createRe } from './function/complex/re.js';
68
68
  export { createNot } from './function/logical/not.js';
69
+ export { createNullish } from './function/logical/nullish.js';
69
70
  export { createOr } from './function/logical/or.js';
70
71
  export { createXor } from './function/logical/xor.js';
71
72
  export { createConcat } from './function/matrix/concat.js';
@@ -294,5 +295,6 @@ export { createVarianceTransform } from './expression/transform/variance.transfo
294
295
  export { createPrintTransform } from './expression/transform/print.transform.js';
295
296
  export { createAndTransform } from './expression/transform/and.transform.js';
296
297
  export { createOrTransform } from './expression/transform/or.transform.js';
298
+ export { createNullishTransform } from './expression/transform/nullish.transform.js';
297
299
  export { createBitAndTransform } from './expression/transform/bitAnd.transform.js';
298
300
  export { createBitOrTransform } from './expression/transform/bitOr.transform.js';
@@ -0,0 +1,81 @@
1
+ import { factory } from '../../utils/factory.js';
2
+ import { createMatAlgo03xDSf } from '../../type/matrix/utils/matAlgo03xDSf.js';
3
+ import { createMatAlgo14xDs } from '../../type/matrix/utils/matAlgo14xDs.js';
4
+ import { createMatAlgo13xDD } from '../../type/matrix/utils/matAlgo13xDD.js';
5
+ import { DimensionError } from '../../error/DimensionError.js';
6
+ var name = 'nullish';
7
+ var dependencies = ['typed', 'matrix', 'size', 'flatten', 'deepEqual'];
8
+ export var createNullish = /* #__PURE__ */factory(name, dependencies, _ref => {
9
+ var {
10
+ typed,
11
+ matrix,
12
+ size,
13
+ flatten,
14
+ deepEqual
15
+ } = _ref;
16
+ var matAlgo03xDSf = createMatAlgo03xDSf({
17
+ typed
18
+ });
19
+ var matAlgo14xDs = createMatAlgo14xDs({
20
+ typed
21
+ });
22
+ var matAlgo13xDD = createMatAlgo13xDD({
23
+ typed
24
+ });
25
+
26
+ /**
27
+ * Nullish coalescing operator (??). Returns the right-hand side operand
28
+ * when the left-hand side operand is null or undefined, and otherwise
29
+ * returns the left-hand side operand.
30
+ *
31
+ * For matrices, the function is evaluated element wise.
32
+ *
33
+ * Syntax:
34
+ *
35
+ * math.nullish(x, y)
36
+ *
37
+ * Examples:
38
+ *
39
+ * math.nullish(null, 42) // returns 42
40
+ * math.nullish(undefined, 42) // returns 42
41
+ * math.nullish(0, 42) // returns 0
42
+ * math.nullish(false, 42) // returns false
43
+ * math.nullish('', 42) // returns ''
44
+ *
45
+ * // Object property access with fallback
46
+ * const obj = {foo: 7, bar: 3}
47
+ * math.nullish(obj.baz, 0) // returns 0
48
+ *
49
+ * See also:
50
+ *
51
+ * and, or, not
52
+ *
53
+ * @param {*} x First value to check
54
+ * @param {*} y Fallback value
55
+ * @return {*} Returns y when x is null or undefined, otherwise returns x
56
+ */
57
+
58
+ return typed(name, {
59
+ // Scalar and SparseMatrix-first short-circuit handlers
60
+ 'number|bigint|Complex|BigNumber|Fraction|Unit|string|boolean|SparseMatrix, any': (x, _y) => x,
61
+ 'null, any': (_x, y) => y,
62
+ 'undefined, any': (_x, y) => y,
63
+ // SparseMatrix-first with collection RHS: enforce exact shape match
64
+ 'SparseMatrix, Array | Matrix': (x, y) => {
65
+ var sx = flatten(size(x).valueOf()); // work around #3529/#3530
66
+ var sy = flatten(size(y).valueOf());
67
+ if (deepEqual(sx, sy)) return x;
68
+ throw new DimensionError(sx, sy);
69
+ },
70
+ // DenseMatrix-first handlers (no broadcasting between collections)
71
+ 'DenseMatrix, DenseMatrix': typed.referToSelf(self => (x, y) => matAlgo13xDD(x, y, self)),
72
+ 'DenseMatrix, SparseMatrix': typed.referToSelf(self => (x, y) => matAlgo03xDSf(x, y, self, false)),
73
+ 'DenseMatrix, Array': typed.referToSelf(self => (x, y) => matAlgo13xDD(x, matrix(y), self)),
74
+ 'DenseMatrix, any': typed.referToSelf(self => (x, y) => matAlgo14xDs(x, y, self, false)),
75
+ // Array-first handlers (bridge via matrix() where needed)
76
+ 'Array, Array': typed.referToSelf(self => (x, y) => matAlgo13xDD(matrix(x), matrix(y), self).valueOf()),
77
+ 'Array, DenseMatrix': typed.referToSelf(self => (x, y) => matAlgo13xDD(matrix(x), y, self)),
78
+ 'Array, SparseMatrix': typed.referToSelf(self => (x, y) => matAlgo03xDSf(matrix(x), y, self, false)),
79
+ 'Array, any': typed.referToSelf(self => (x, y) => matAlgo14xDs(matrix(x), y, self, false).valueOf())
80
+ });
81
+ });
@@ -16,7 +16,7 @@ export var createRange = /* #__PURE__ */factory(name, dependencies, _ref => {
16
16
  isPositive
17
17
  } = _ref;
18
18
  /**
19
- * Create an array from a range.
19
+ * Create a matrix or array containing a range of values.
20
20
  * By default, the range end is excluded. This can be customized by providing
21
21
  * an extra parameter `includeEnd`.
22
22
  *
@@ -44,10 +44,12 @@ export var createRange = /* #__PURE__ */factory(name, dependencies, _ref => {
44
44
  * - `includeEnd: boolean`
45
45
  * Option to specify whether to include the end or not. False by default.
46
46
  *
47
- * Note that the return type of the range is taken from the type of
48
- * the start/end. If only one these is a built-in `number` type, it will
49
- * be promoted to the type of the other endpoint. However, in the case of
50
- * Unit values, both endpoints must have compatible units, and the return
47
+ * The function returns a `DenseMatrix` when the library is configured with
48
+ * `config = { matrix: 'Matrix' }, and returns an Array otherwise.
49
+ * Note that the type of the returned values is taken from the type of the
50
+ * provided start/end value. If only one of these is a built-in `number` type,
51
+ * it will be promoted to the type of the other endpoint. However, in the case
52
+ * of Unit values, both endpoints must have compatible units, and the return
51
53
  * value will have compatible units as well.
52
54
  *
53
55
  * Examples:
@@ -672,24 +672,28 @@ export var createDenseMatrixClass = /* #__PURE__ */factory(name, dependencies, _
672
672
  }
673
673
  return;
674
674
  }
675
- var index = [];
676
- var _recurse = function* recurse(value, depth) {
677
- if (depth < maxDepth) {
678
- for (var _i9 = 0; _i9 < value.length; _i9++) {
679
- index[depth] = _i9;
680
- yield* _recurse(value[_i9], depth + 1);
681
- }
682
- } else {
683
- for (var _i0 = 0; _i0 < value.length; _i0++) {
684
- index[depth] = _i0;
685
- yield {
686
- value: value[_i0],
687
- index: index.slice()
688
- };
689
- }
675
+
676
+ // Multi-dimensional matrix: iterate over all elements
677
+ var index = Array(maxDepth + 1).fill(0);
678
+ var totalElements = this._size.reduce((a, b) => a * b, 1);
679
+ for (var count = 0; count < totalElements; count++) {
680
+ // Traverse to the current element using indices
681
+ var current = this._data;
682
+ for (var d = 0; d < maxDepth; d++) {
683
+ current = current[index[d]];
690
684
  }
691
- };
692
- yield* _recurse(this._data, 0);
685
+ yield {
686
+ value: current[index[maxDepth]],
687
+ index: index.slice()
688
+ };
689
+
690
+ // Increment indices for next element
691
+ for (var _d = maxDepth; _d >= 0; _d--) {
692
+ index[_d]++;
693
+ if (index[_d] < this._size[_d]) break;
694
+ index[_d] = 0;
695
+ }
696
+ }
693
697
  };
694
698
 
695
699
  /**
@@ -17,13 +17,13 @@ export var createString = /* #__PURE__ */factory(name, dependencies, _ref => {
17
17
  *
18
18
  * Examples:
19
19
  *
20
- * math.string(4.2) // returns string '4.2'
21
- * math.string(math.complex(3, 2) // returns string '3 + 2i'
20
+ * math.string(4.2) // returns string '4.2'
21
+ * math.string(math.complex(3, 2)) // returns string '3 + 2i'
22
22
  *
23
23
  * const u = math.unit(5, 'km')
24
- * math.string(u.to('m')) // returns string '5000 m'
24
+ * math.string(u.to('m')) // returns string '5000 m'
25
25
  *
26
- * math.string([true, false]) // returns ['true', 'false']
26
+ * math.string([true, false]) // returns ['true', 'false']
27
27
  *
28
28
  * See also:
29
29
  *
@@ -1,3 +1,3 @@
1
- export var version = '14.6.0';
1
+ export var version = '14.8.0';
2
2
  // Note: This file is automatically generated when building math.js.
3
3
  // Changes made in this file will be overwritten.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mathjs",
3
- "version": "14.6.0",
3
+ "version": "14.8.0",
4
4
  "description": "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 different data types like numbers, big numbers, complex numbers, fractions, units, and matrices.",
5
5
  "author": "Jos de Jong <wjosdejong@gmail.com> (https://github.com/josdejong)",
6
6
  "homepage": "https://mathjs.org",
@@ -36,31 +36,30 @@
36
36
  "typed-function": "^4.2.1"
37
37
  },
38
38
  "devDependencies": {
39
- "@babel/core": "7.28.0",
39
+ "@babel/core": "7.28.4",
40
40
  "@babel/plugin-transform-object-assign": "7.27.1",
41
41
  "@babel/plugin-transform-optional-catch-binding": "7.27.1",
42
- "@babel/plugin-transform-runtime": "7.28.0",
43
- "@babel/preset-env": "7.28.0",
44
- "@babel/register": "7.27.1",
42
+ "@babel/plugin-transform-runtime": "7.28.3",
43
+ "@babel/preset-env": "7.28.3",
44
+ "@babel/register": "7.28.3",
45
45
  "@types/assert": "1.5.11",
46
46
  "@types/mocha": "10.0.10",
47
- "@typescript-eslint/eslint-plugin": "8.38.0",
48
- "@typescript-eslint/parser": "8.38.0",
47
+ "@typescript-eslint/eslint-plugin": "8.44.1",
48
+ "@typescript-eslint/parser": "8.44.1",
49
49
  "assert": "2.1.0",
50
50
  "babel-loader": "10.0.0",
51
51
  "c8": "10.1.3",
52
52
  "codecov": "3.8.3",
53
- "core-js": "3.44.0",
54
- "del": "8.0.0",
55
- "dtslint": "4.2.1",
53
+ "del": "8.0.1",
56
54
  "eigen": "0.2.2",
55
+ "es-check": "9.3.1",
57
56
  "eslint": "8.57.1",
58
57
  "eslint-config-prettier": "9.1.0",
59
58
  "eslint-config-standard": "17.1.0",
60
59
  "eslint-plugin-import": "2.32.0",
61
60
  "eslint-plugin-mocha": "10.5.0",
62
61
  "eslint-plugin-n": "16.6.2",
63
- "eslint-plugin-prettier": "5.5.3",
62
+ "eslint-plugin-prettier": "5.5.4",
64
63
  "eslint-plugin-promise": "6.6.0",
65
64
  "expect-type": "1.2.2",
66
65
  "expr-eval": "2.0.2",
@@ -78,7 +77,7 @@
78
77
  "karma-webdriver-launcher": "1.0.8",
79
78
  "karma-webpack": "5.0.1",
80
79
  "mkdirp": "3.0.1",
81
- "mocha": "11.7.1",
80
+ "mocha": "11.7.2",
82
81
  "mocha-junit-reporter": "2.2.1",
83
82
  "ndarray": "1.0.19",
84
83
  "ndarray-determinant": "1.0.0",
@@ -90,10 +89,10 @@
90
89
  "process": "0.11.10",
91
90
  "sinon": "21.0.0",
92
91
  "sylvester": "0.0.21",
93
- "tinybench": "4.0.1",
92
+ "tinybench": "5.0.1",
94
93
  "ts-node": "10.9.2",
95
- "typescript": "5.8.3",
96
- "webpack": "5.100.2",
94
+ "typescript": "5.9.2",
95
+ "webpack": "5.101.3",
97
96
  "zeros": "1.0.0"
98
97
  },
99
98
  "type": "module",
@@ -149,7 +148,7 @@
149
148
  "test": "npm run test:src && npm run lint",
150
149
  "test:src": "mocha test/unit-tests",
151
150
  "test:generated": "mocha test/generated-code-tests",
152
- "test:node": "mocha test/node-tests/*.test.js test/node-tests/**/*.test.js",
151
+ "test:node": "mocha test/node-tests/*.test.{js,cjs,mjs} test/node-tests/**/*.test.{js,cjs,mjs}",
153
152
  "test:all": "npm run test:src && npm run test:generated && npm run test:node && npm run test:types",
154
153
  "test:browser": "karma start test/browser-test-config/local-karma.js",
155
154
  "test:lambdatest": "karma start test/browser-test-config/lambdatest-karma.js",
package/types/index.d.ts CHANGED
@@ -1904,6 +1904,14 @@ export interface MathJsInstance extends MathJsFactory {
1904
1904
  */
1905
1905
  det(x: MathCollection): number
1906
1906
 
1907
+ /**
1908
+ * Calculate the difference between adjacent elements of a matrix or array.
1909
+ * @param x A matrix or array
1910
+ * @param dim The dimension to apply the difference on.
1911
+ * @returns A matrix or array containing the differences
1912
+ */
1913
+ diff<T extends MathCollection>(x: T, dim?: number | BigNumber): T
1914
+
1907
1915
  /**
1908
1916
  * Create a diagonal matrix or retrieve the diagonal of a matrix. When x
1909
1917
  * is a vector, a matrix with vector x on the diagonal will be returned.
@@ -4079,7 +4087,8 @@ export const {
4079
4087
  concatTransformDependencies,
4080
4088
  stdTransformDependencies,
4081
4089
  sumTransformDependencies,
4082
- varianceTransformDependencies
4090
+ varianceTransformDependencies,
4091
+ printTransformDependencies
4083
4092
  }: Record<string, FactoryFunctionMap>
4084
4093
 
4085
4094
  export interface Matrix<T = MathGeneric> {
@@ -5805,6 +5814,15 @@ export interface MathJsChain<TValue> {
5805
5814
  y: MathCollection
5806
5815
  ): MathJsChain<MathCollection>
5807
5816
 
5817
+ /**
5818
+ * Calculate the difference between adjacent elements of the chained matrix or array.
5819
+ * @param dim The dimension to apply the difference on.
5820
+ */
5821
+ diff<T extends MathCollection>(
5822
+ this: MathJsChain<T>,
5823
+ dim?: number | BigNumber
5824
+ ): MathJsChain<T>
5825
+
5808
5826
  /**
5809
5827
  * Calculate the determinant of a matrix.
5810
5828
  */
package/types/tslint.json DELETED
@@ -1,6 +0,0 @@
1
- {
2
- "extends": "dtslint/dtslint.json",
3
- "rules": {
4
- "no-redundant-jsdoc": false
5
- }
6
- }