mathjs 14.0.1 → 14.1.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.
- package/HISTORY.md +9 -0
- package/NOTICE +1 -1
- package/README.md +7 -7
- package/bin/cli.js +1 -1
- package/lib/browser/math.js +1 -1
- package/lib/browser/math.js.LICENSE.txt +5 -5
- package/lib/browser/math.js.map +1 -1
- package/lib/cjs/entry/dependenciesAny/dependenciesLarger.generated.js +2 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesRandomInt.generated.js +2 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesSmaller.generated.js +2 -0
- package/lib/cjs/entry/dependenciesNumber/dependenciesRandomInt.generated.js +2 -0
- package/lib/cjs/entry/impureFunctionsNumber.generated.js +1 -1
- package/lib/cjs/entry/pureFunctionsAny.generated.js +3 -0
- package/lib/cjs/entry/pureFunctionsNumber.generated.js +5 -4
- package/lib/cjs/expression/embeddedDocs/function/arithmetic/sign.js +1 -1
- package/lib/cjs/function/arithmetic/log.js +12 -5
- package/lib/cjs/function/arithmetic/log10.js +15 -7
- package/lib/cjs/function/arithmetic/log2.js +9 -4
- package/lib/cjs/function/probability/randomInt.js +26 -3
- package/lib/cjs/function/relational/larger.js +12 -4
- package/lib/cjs/function/relational/smaller.js +12 -4
- package/lib/cjs/function/statistics/max.js +1 -1
- package/lib/cjs/function/statistics/min.js +1 -1
- package/lib/cjs/function/string/print.js +2 -2
- package/lib/cjs/function/utils/isInteger.js +1 -1
- package/lib/cjs/header.js +3 -3
- package/lib/cjs/utils/bigint.js +33 -0
- package/lib/cjs/utils/number.js +7 -19
- package/lib/cjs/version.js +1 -1
- package/lib/esm/entry/dependenciesAny/dependenciesLarger.generated.js +2 -0
- package/lib/esm/entry/dependenciesAny/dependenciesRandomInt.generated.js +2 -0
- package/lib/esm/entry/dependenciesAny/dependenciesSmaller.generated.js +2 -0
- package/lib/esm/entry/dependenciesNumber/dependenciesRandomInt.generated.js +2 -0
- package/lib/esm/entry/impureFunctionsNumber.generated.js +2 -2
- package/lib/esm/entry/pureFunctionsAny.generated.js +3 -0
- package/lib/esm/entry/pureFunctionsNumber.generated.js +6 -5
- package/lib/esm/expression/embeddedDocs/function/arithmetic/sign.js +1 -1
- package/lib/esm/function/arithmetic/log.js +12 -5
- package/lib/esm/function/arithmetic/log10.js +16 -8
- package/lib/esm/function/arithmetic/log2.js +9 -4
- package/lib/esm/function/probability/randomInt.js +26 -3
- package/lib/esm/function/relational/larger.js +12 -4
- package/lib/esm/function/relational/smaller.js +12 -4
- package/lib/esm/function/statistics/max.js +1 -1
- package/lib/esm/function/statistics/min.js +1 -1
- package/lib/esm/function/string/print.js +2 -2
- package/lib/esm/function/utils/isInteger.js +1 -1
- package/lib/esm/header.js +1 -1
- package/lib/esm/utils/bigint.js +27 -0
- package/lib/esm/utils/number.js +6 -17
- package/lib/esm/version.js +1 -1
- package/package.json +13 -11
| @@ -7,7 +7,7 @@ import { config } from './configReadonly.js'; | |
| 7 7 | 
             
            import { createChainClass, createNode, createObjectNode, createRangeNode, createRelationalNode, createReviver, createSymbolNode, createAccessorNode, createAssignmentNode, createBlockNode, createChain, createConditionalNode, createFunctionNode, createIndexNode, createOperatorNode, createConstantNode, createFunctionAssignmentNode, createParenthesisNode, createArrayNode, createSimplifyConstant, createParse, createResolve, createSimplifyCore, createCompile, createEvaluate, createHelpClass, createParserClass, createSimplify, createDerivative, createRationalize, createHelp, createParser, createCumSumTransform, createApplyTransform, createFilterTransform, createForEachTransform, createMapTransform, createMeanTransform, createSubsetTransform, createRangeTransform, createStdTransform, createSumTransform, createMaxTransform, createMinTransform, createVarianceTransform } from '../factoriesNumber.js';
         | 
| 8 8 | 
             
            import { e, _false, index, _Infinity, LN10, LOG10E, matrix, _NaN, _null, phi, Range, replacer, ResultSet, SQRT1_2,
         | 
| 9 9 | 
             
            // eslint-disable-line camelcase
         | 
| 10 | 
            -
            subset, tau, typed, unaryPlus, version, xor, abs, acos, acot, acsc, add, and, asec, asin, atan, atanh, bigint, bitNot, bitXor, boolean, cbrt, combinations, compare, compareText, cos, cot, csc, cube, divide, equalScalar, erf, exp, filter, forEach, format, gamma, isInteger, isNegative, isPositive, isZero, LOG2E, largerEq, leftShift, log, log1p, map, mean, mod, multiply, not, number, or, pi, pow, random, rightLogShift, SQRT2, sech, sin, size, smallerEq, square, string, subtract, tanh, typeOf, unequal, xgcd, acoth, addScalar, asech, bitAnd, combinationsWithRep, cosh, csch, divideScalar, equalText, expm1, isNumeric, LN2, lcm, log10, multiplyScalar, nthRoot, pickRandom,  | 
| 10 | 
            +
            subset, tau, typed, unaryPlus, version, xor, abs, acos, acot, acsc, add, and, asec, asin, atan, atanh, bigint, bitNot, bitXor, boolean, cbrt, combinations, compare, compareText, cos, cot, csc, cube, divide, equalScalar, erf, exp, filter, forEach, format, gamma, isInteger, isNegative, isPositive, isZero, LOG2E, largerEq, leftShift, log, log1p, map, mean, mod, multiply, not, number, or, pi, pow, random, rightLogShift, SQRT2, sech, sin, size, smallerEq, square, string, subtract, tanh, typeOf, unequal, xgcd, acoth, addScalar, asech, bitAnd, combinationsWithRep, cosh, csch, divideScalar, equalText, expm1, isNumeric, LN2, lcm, log10, multiplyScalar, nthRoot, pickRandom, rightArithShift, sec, sinh, sqrt, tan, unaryMinus, acosh, apply, asinh, bitOr, clone, coth, equal, factorial, hasNumericValue, isNaN, larger, log2, mode, norm, partitionSelect, print, randomInt, round, smaller, subtractScalar, _true, variance, zeta, acsch, atan2, catalan, compareNatural, composition, cumsum, floor, hypot, lgamma, median, multinomial, permutations, quantileSeq, sign, std, stirlingS2, ceil, deepEqual, fix, isPrime, numeric, prod, bellNumbers, gcd, mad, range, sum, corr, max, min } from './pureFunctionsNumber.generated.js';
         | 
| 11 11 | 
             
            var math = {}; // NOT pure!
         | 
| 12 12 | 
             
            var mathWithTransform = {}; // NOT pure!
         | 
| 13 13 | 
             
            var classes = {}; // NOT pure!
         | 
| @@ -325,7 +325,6 @@ _extends(math, { | |
| 325 325 | 
             
              multiplyScalar,
         | 
| 326 326 | 
             
              nthRoot,
         | 
| 327 327 | 
             
              pickRandom,
         | 
| 328 | 
            -
              randomInt,
         | 
| 329 328 | 
             
              rightArithShift,
         | 
| 330 329 | 
             
              sec,
         | 
| 331 330 | 
             
              sinh,
         | 
| @@ -348,6 +347,7 @@ _extends(math, { | |
| 348 347 | 
             
              norm,
         | 
| 349 348 | 
             
              partitionSelect,
         | 
| 350 349 | 
             
              print,
         | 
| 350 | 
            +
              randomInt,
         | 
| 351 351 | 
             
              round,
         | 
| 352 352 | 
             
              smaller,
         | 
| 353 353 | 
             
              subtractScalar,
         | 
| @@ -344,6 +344,7 @@ export var isPrime = /* #__PURE__ */createIsPrime({ | |
| 344 344 | 
             
            });
         | 
| 345 345 | 
             
            export var randomInt = /* #__PURE__ */createRandomInt({
         | 
| 346 346 | 
             
              config,
         | 
| 347 | 
            +
              log2,
         | 
| 347 348 | 
             
              typed
         | 
| 348 349 | 
             
            });
         | 
| 349 350 | 
             
            export var sech = /* #__PURE__ */createSech({
         | 
| @@ -604,6 +605,7 @@ export var round = /* #__PURE__ */createRound({ | |
| 604 605 | 
             
            export var smaller = /* #__PURE__ */createSmaller({
         | 
| 605 606 | 
             
              DenseMatrix,
         | 
| 606 607 | 
             
              SparseMatrix,
         | 
| 608 | 
            +
              bignumber,
         | 
| 607 609 | 
             
              concat,
         | 
| 608 610 | 
             
              config,
         | 
| 609 611 | 
             
              matrix,
         | 
| @@ -783,6 +785,7 @@ export var Index = /* #__PURE__ */createIndexClass({ | |
| 783 785 | 
             
            export var larger = /* #__PURE__ */createLarger({
         | 
| 784 786 | 
             
              DenseMatrix,
         | 
| 785 787 | 
             
              SparseMatrix,
         | 
| 788 | 
            +
              bignumber,
         | 
| 786 789 | 
             
              concat,
         | 
| 787 790 | 
             
              config,
         | 
| 788 791 | 
             
              matrix,
         | 
| @@ -5,7 +5,7 @@ | |
| 5 5 | 
             
            import { config } from './configReadonly.js';
         | 
| 6 6 | 
             
            import { createE, createFalse, createIndex, createInfinity, createLN10, createLOG10E, createMatrix, createNaN, createNull, createPhi, createRangeClass, createReplacer, createResultSet, createSQRT1_2,
         | 
| 7 7 | 
             
            // eslint-disable-line camelcase
         | 
| 8 | 
            -
            createSubset, createTau, createTyped, createUnaryPlus, createVersion, createXor, createAbs, createAcos, createAcot, createAcsc, createAdd, createAnd, createAsec, createAsin, createAtan, createAtanh, createBigint, createBitNot, createBitXor, createBoolean, createCbrt, createCombinations, createCompare, createCompareText, createCos, createCot, createCsc, createCube, createDivide, createEqualScalar, createErf, createExp, createFilter, createForEach, createFormat, createGamma, createIsInteger, createIsNegative, createIsPositive, createIsZero, createLOG2E, createLargerEq, createLeftShift, createLog, createLog1p, createMap, createMean, createMod, createMultiply, createNot, createNumber, createOr, createPi, createPow, createRandom, createRightLogShift, createSQRT2, createSech, createSin, createSize, createSmallerEq, createSquare, createString, createSubtract, createTanh, createTypeOf, createUnequal, createXgcd, createAcoth, createAddScalar, createAsech, createBitAnd, createCombinationsWithRep, createCosh, createCsch, createDivideScalar, createEqualText, createExpm1, createIsNumeric, createLN2, createLcm, createLog10, createMultiplyScalar, createNthRoot, createPickRandom,  | 
| 8 | 
            +
            createSubset, createTau, createTyped, createUnaryPlus, createVersion, createXor, createAbs, createAcos, createAcot, createAcsc, createAdd, createAnd, createAsec, createAsin, createAtan, createAtanh, createBigint, createBitNot, createBitXor, createBoolean, createCbrt, createCombinations, createCompare, createCompareText, createCos, createCot, createCsc, createCube, createDivide, createEqualScalar, createErf, createExp, createFilter, createForEach, createFormat, createGamma, createIsInteger, createIsNegative, createIsPositive, createIsZero, createLOG2E, createLargerEq, createLeftShift, createLog, createLog1p, createMap, createMean, createMod, createMultiply, createNot, createNumber, createOr, createPi, createPow, createRandom, createRightLogShift, createSQRT2, createSech, createSin, createSize, createSmallerEq, createSquare, createString, createSubtract, createTanh, createTypeOf, createUnequal, createXgcd, createAcoth, createAddScalar, createAsech, createBitAnd, createCombinationsWithRep, createCosh, createCsch, createDivideScalar, createEqualText, createExpm1, createIsNumeric, createLN2, createLcm, createLog10, createMultiplyScalar, createNthRoot, createPickRandom, createRightArithShift, createSec, createSinh, createSqrt, createTan, createUnaryMinus, createAcosh, createApply, createAsinh, createBitOr, createClone, createCoth, createEqual, createFactorial, createHasNumericValue, createIsNaN, createLarger, createLog2, createMode, createNorm, createPartitionSelect, createPrint, createRandomInt, createRound, createSmaller, createSubtractScalar, createTrue, createVariance, createZeta, createAcsch, createAtan2, createCatalan, createCompareNatural, createComposition, createCumSum, createFloor, createHypot, createLgamma, createMedian, createMultinomial, createPermutations, createQuantileSeq, createSign, createStd, createStirlingS2, createCeil, createDeepEqual, createFix, createIsPrime, createNumeric, createProd, createBellNumbers, createGcd, createMad, createRange, createSum, createCorr, createMax, createMin } from '../factoriesNumber.js';
         | 
| 9 9 | 
             
            export var e = /* #__PURE__ */createE({
         | 
| 10 10 | 
             
              config
         | 
| 11 11 | 
             
            });
         | 
| @@ -296,10 +296,6 @@ export var pickRandom = /* #__PURE__ */createPickRandom({ | |
| 296 296 | 
             
              config,
         | 
| 297 297 | 
             
              typed
         | 
| 298 298 | 
             
            });
         | 
| 299 | 
            -
            export var randomInt = /* #__PURE__ */createRandomInt({
         | 
| 300 | 
            -
              config,
         | 
| 301 | 
            -
              typed
         | 
| 302 | 
            -
            });
         | 
| 303 299 | 
             
            export var rightArithShift = /* #__PURE__ */createRightArithShift({
         | 
| 304 300 | 
             
              typed
         | 
| 305 301 | 
             
            });
         | 
| @@ -376,6 +372,11 @@ export var partitionSelect = /* #__PURE__ */createPartitionSelect({ | |
| 376 372 | 
             
            export var print = /* #__PURE__ */createPrint({
         | 
| 377 373 | 
             
              typed
         | 
| 378 374 | 
             
            });
         | 
| 375 | 
            +
            export var randomInt = /* #__PURE__ */createRandomInt({
         | 
| 376 | 
            +
              config,
         | 
| 377 | 
            +
              log2,
         | 
| 378 | 
            +
              typed
         | 
| 379 | 
            +
            });
         | 
| 379 380 | 
             
            export var round = /* #__PURE__ */createRound({
         | 
| 380 381 | 
             
              typed
         | 
| 381 382 | 
             
            });
         | 
| @@ -2,7 +2,7 @@ export var signDocs = { | |
| 2 2 | 
             
              name: 'sign',
         | 
| 3 3 | 
             
              category: 'Arithmetic',
         | 
| 4 4 | 
             
              syntax: ['sign(x)'],
         | 
| 5 | 
            -
              description: 'Compute the sign of a value. The sign of a value x is 1 when x> | 
| 5 | 
            +
              description: 'Compute the sign of a value. The sign of a value x is 1 when x>0, -1 when x<0, and 0 when x=0.',
         | 
| 6 6 | 
             
              examples: ['sign(3.5)', 'sign(-4.2)', 'sign(0)'],
         | 
| 7 7 | 
             
              seealso: ['abs']
         | 
| 8 8 | 
             
            };
         | 
| @@ -1,7 +1,9 @@ | |
| 1 1 | 
             
            import { factory } from '../../utils/factory.js';
         | 
| 2 | 
            +
            import { promoteLogarithm } from '../../utils/bigint.js';
         | 
| 2 3 | 
             
            import { logNumber } from '../../plain/number/index.js';
         | 
| 3 4 | 
             
            var name = 'log';
         | 
| 4 5 | 
             
            var dependencies = ['config', 'typed', 'typeOf', 'divideScalar', 'Complex'];
         | 
| 6 | 
            +
            var nlg16 = Math.log(16);
         | 
| 5 7 | 
             
            export var createLog = /* #__PURE__ */factory(name, dependencies, _ref => {
         | 
| 6 8 | 
             
              var {
         | 
| 7 9 | 
             
                typed,
         | 
| @@ -45,24 +47,29 @@ export var createLog = /* #__PURE__ */factory(name, dependencies, _ref => { | |
| 45 47 | 
             
               * @return {number | BigNumber | Fraction | Complex}
         | 
| 46 48 | 
             
               *            Returns the logarithm of `x`
         | 
| 47 49 | 
             
               */
         | 
| 50 | 
            +
              function complexLog(c) {
         | 
| 51 | 
            +
                return c.log();
         | 
| 52 | 
            +
              }
         | 
| 53 | 
            +
              function complexLogNumber(x) {
         | 
| 54 | 
            +
                return complexLog(new Complex(x, 0));
         | 
| 55 | 
            +
              }
         | 
| 48 56 | 
             
              return typed(name, {
         | 
| 49 57 | 
             
                number: function number(x) {
         | 
| 50 58 | 
             
                  if (x >= 0 || config.predictable) {
         | 
| 51 59 | 
             
                    return logNumber(x);
         | 
| 52 60 | 
             
                  } else {
         | 
| 53 61 | 
             
                    // negative value -> complex value computation
         | 
| 54 | 
            -
                    return  | 
| 62 | 
            +
                    return complexLogNumber(x);
         | 
| 55 63 | 
             
                  }
         | 
| 56 64 | 
             
                },
         | 
| 57 | 
            -
                 | 
| 58 | 
            -
             | 
| 59 | 
            -
                },
         | 
| 65 | 
            +
                bigint: promoteLogarithm(nlg16, logNumber, config, complexLogNumber),
         | 
| 66 | 
            +
                Complex: complexLog,
         | 
| 60 67 | 
             
                BigNumber: function BigNumber(x) {
         | 
| 61 68 | 
             
                  if (!x.isNegative() || config.predictable) {
         | 
| 62 69 | 
             
                    return x.ln();
         | 
| 63 70 | 
             
                  } else {
         | 
| 64 71 | 
             
                    // downgrade to number, return Complex valued result
         | 
| 65 | 
            -
                    return  | 
| 72 | 
            +
                    return complexLogNumber(x.toNumber());
         | 
| 66 73 | 
             
                  }
         | 
| 67 74 | 
             
                },
         | 
| 68 75 | 
             
                'any, any': typed.referToSelf(self => (x, base) => {
         | 
| @@ -1,13 +1,15 @@ | |
| 1 | 
            -
            import { factory } from '../../utils/factory.js';
         | 
| 2 | 
            -
            import { deepMap } from '../../utils/collection.js';
         | 
| 3 1 | 
             
            import { log10Number } from '../../plain/number/index.js';
         | 
| 2 | 
            +
            import { promoteLogarithm } from '../../utils/bigint.js';
         | 
| 3 | 
            +
            import { deepMap } from '../../utils/collection.js';
         | 
| 4 | 
            +
            import { factory } from '../../utils/factory.js';
         | 
| 4 5 | 
             
            var name = 'log10';
         | 
| 5 6 | 
             
            var dependencies = ['typed', 'config', 'Complex'];
         | 
| 7 | 
            +
            var log16 = log10Number(16);
         | 
| 6 8 | 
             
            export var createLog10 = /* #__PURE__ */factory(name, dependencies, _ref => {
         | 
| 7 9 | 
             
              var {
         | 
| 8 10 | 
             
                typed,
         | 
| 9 11 | 
             
                config,
         | 
| 10 | 
            -
                Complex | 
| 12 | 
            +
                Complex
         | 
| 11 13 | 
             
              } = _ref;
         | 
| 12 14 | 
             
              /**
         | 
| 13 15 | 
             
               * Calculate the 10-base logarithm of a value. This is the same as calculating `log(x, 10)`.
         | 
| @@ -34,24 +36,30 @@ export var createLog10 = /* #__PURE__ */factory(name, dependencies, _ref => { | |
| 34 36 | 
             
               * @return {number | BigNumber | Complex | Array | Matrix}
         | 
| 35 37 | 
             
               *            Returns the 10-base logarithm of `x`
         | 
| 36 38 | 
             
               */
         | 
| 39 | 
            +
             | 
| 40 | 
            +
              function complexLog(c) {
         | 
| 41 | 
            +
                return c.log().div(Math.LN10);
         | 
| 42 | 
            +
              }
         | 
| 43 | 
            +
              function complexLogNumber(x) {
         | 
| 44 | 
            +
                return complexLog(new Complex(x, 0));
         | 
| 45 | 
            +
              }
         | 
| 37 46 | 
             
              return typed(name, {
         | 
| 38 47 | 
             
                number: function number(x) {
         | 
| 39 48 | 
             
                  if (x >= 0 || config.predictable) {
         | 
| 40 49 | 
             
                    return log10Number(x);
         | 
| 41 50 | 
             
                  } else {
         | 
| 42 51 | 
             
                    // negative value -> complex value computation
         | 
| 43 | 
            -
                    return  | 
| 52 | 
            +
                    return complexLogNumber(x);
         | 
| 44 53 | 
             
                  }
         | 
| 45 54 | 
             
                },
         | 
| 46 | 
            -
                 | 
| 47 | 
            -
             | 
| 48 | 
            -
                },
         | 
| 55 | 
            +
                bigint: promoteLogarithm(log16, log10Number, config, complexLogNumber),
         | 
| 56 | 
            +
                Complex: complexLog,
         | 
| 49 57 | 
             
                BigNumber: function BigNumber(x) {
         | 
| 50 58 | 
             
                  if (!x.isNegative() || config.predictable) {
         | 
| 51 59 | 
             
                    return x.log();
         | 
| 52 60 | 
             
                  } else {
         | 
| 53 61 | 
             
                    // downgrade to number, return Complex valued result
         | 
| 54 | 
            -
                    return  | 
| 62 | 
            +
                    return complexLogNumber(x.toNumber());
         | 
| 55 63 | 
             
                  }
         | 
| 56 64 | 
             
                },
         | 
| 57 65 | 
             
                'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))
         | 
| @@ -1,6 +1,7 @@ | |
| 1 | 
            -
            import { factory } from '../../utils/factory.js';
         | 
| 2 | 
            -
            import { deepMap } from '../../utils/collection.js';
         | 
| 3 1 | 
             
            import { log2Number } from '../../plain/number/index.js';
         | 
| 2 | 
            +
            import { promoteLogarithm } from '../../utils/bigint.js';
         | 
| 3 | 
            +
            import { deepMap } from '../../utils/collection.js';
         | 
| 4 | 
            +
            import { factory } from '../../utils/factory.js';
         | 
| 4 5 | 
             
            var name = 'log2';
         | 
| 5 6 | 
             
            var dependencies = ['typed', 'config', 'Complex'];
         | 
| 6 7 | 
             
            export var createLog2 = /* #__PURE__ */factory(name, dependencies, _ref => {
         | 
| @@ -34,22 +35,26 @@ export var createLog2 = /* #__PURE__ */factory(name, dependencies, _ref => { | |
| 34 35 | 
             
               * @return {number | BigNumber | Complex | Array | Matrix}
         | 
| 35 36 | 
             
               *            Returns the 2-base logarithm of `x`
         | 
| 36 37 | 
             
               */
         | 
| 38 | 
            +
              function complexLog2Number(x) {
         | 
| 39 | 
            +
                return _log2Complex(new Complex(x, 0));
         | 
| 40 | 
            +
              }
         | 
| 37 41 | 
             
              return typed(name, {
         | 
| 38 42 | 
             
                number: function number(x) {
         | 
| 39 43 | 
             
                  if (x >= 0 || config.predictable) {
         | 
| 40 44 | 
             
                    return log2Number(x);
         | 
| 41 45 | 
             
                  } else {
         | 
| 42 46 | 
             
                    // negative value -> complex value computation
         | 
| 43 | 
            -
                    return  | 
| 47 | 
            +
                    return complexLog2Number(x);
         | 
| 44 48 | 
             
                  }
         | 
| 45 49 | 
             
                },
         | 
| 50 | 
            +
                bigint: promoteLogarithm(4, log2Number, config, complexLog2Number),
         | 
| 46 51 | 
             
                Complex: _log2Complex,
         | 
| 47 52 | 
             
                BigNumber: function BigNumber(x) {
         | 
| 48 53 | 
             
                  if (!x.isNegative() || config.predictable) {
         | 
| 49 54 | 
             
                    return x.log(2);
         | 
| 50 55 | 
             
                  } else {
         | 
| 51 56 | 
             
                    // downgrade to number, return Complex valued result
         | 
| 52 | 
            -
                    return  | 
| 57 | 
            +
                    return complexLog2Number(x.toNumber());
         | 
| 53 58 | 
             
                  }
         | 
| 54 59 | 
             
                },
         | 
| 55 60 | 
             
                'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))
         | 
| @@ -3,11 +3,13 @@ import { randomMatrix } from './util/randomMatrix.js'; | |
| 3 3 | 
             
            import { createRng } from './util/seededRNG.js';
         | 
| 4 4 | 
             
            import { isMatrix } from '../../utils/is.js';
         | 
| 5 5 | 
             
            var name = 'randomInt';
         | 
| 6 | 
            -
            var dependencies = ['typed', 'config', '?on'];
         | 
| 6 | 
            +
            var dependencies = ['typed', 'config', 'log2', '?on'];
         | 
| 7 | 
            +
            var simpleCutoff = 2n ** 30n;
         | 
| 7 8 | 
             
            export var createRandomInt = /* #__PURE__ */factory(name, dependencies, _ref => {
         | 
| 8 9 | 
             
              var {
         | 
| 9 10 | 
             
                typed,
         | 
| 10 11 | 
             
                config,
         | 
| 12 | 
            +
                log2,
         | 
| 11 13 | 
             
                on
         | 
| 12 14 | 
             
              } = _ref;
         | 
| 13 15 | 
             
              // seeded pseudo random number generator
         | 
| @@ -26,7 +28,7 @@ export var createRandomInt = /* #__PURE__ */factory(name, dependencies, _ref => | |
| 26 28 | 
             
               *
         | 
| 27 29 | 
             
               * Syntax:
         | 
| 28 30 | 
             
               *
         | 
| 29 | 
            -
               *     math.randomInt()                // generate  | 
| 31 | 
            +
               *     math.randomInt()                // generate either 0 or 1, randomly
         | 
| 30 32 | 
             
               *     math.randomInt(max)             // generate a random integer between 0 and max
         | 
| 31 33 | 
             
               *     math.randomInt(min, max)        // generate a random integer between min and max
         | 
| 32 34 | 
             
               *     math.randomInt(size)            // generate a matrix with random integer between 0 and 1
         | 
| @@ -50,9 +52,11 @@ export var createRandomInt = /* #__PURE__ */factory(name, dependencies, _ref => | |
| 50 52 | 
             
               * @return {number | Array | Matrix} A random integer value
         | 
| 51 53 | 
             
               */
         | 
| 52 54 | 
             
              return typed(name, {
         | 
| 53 | 
            -
                '': () => _randomInt(0,  | 
| 55 | 
            +
                '': () => _randomInt(0, 2),
         | 
| 54 56 | 
             
                number: max => _randomInt(0, max),
         | 
| 55 57 | 
             
                'number, number': (min, max) => _randomInt(min, max),
         | 
| 58 | 
            +
                bigint: max => _randomBigint(0n, max),
         | 
| 59 | 
            +
                'bigint, bigint': _randomBigint,
         | 
| 56 60 | 
             
                'Array | Matrix': size => _randomIntMatrix(size, 0, 1),
         | 
| 57 61 | 
             
                'Array | Matrix, number': (size, max) => _randomIntMatrix(size, 0, max),
         | 
| 58 62 | 
             
                'Array | Matrix, number, number': (size, min, max) => _randomIntMatrix(size, min, max)
         | 
| @@ -64,4 +68,23 @@ export var createRandomInt = /* #__PURE__ */factory(name, dependencies, _ref => | |
| 64 68 | 
             
              function _randomInt(min, max) {
         | 
| 65 69 | 
             
                return Math.floor(min + rng() * (max - min));
         | 
| 66 70 | 
             
              }
         | 
| 71 | 
            +
              function _randomBigint(min, max) {
         | 
| 72 | 
            +
                var width = max - min; // number of choices
         | 
| 73 | 
            +
                if (width <= simpleCutoff) {
         | 
| 74 | 
            +
                  // do it with number type
         | 
| 75 | 
            +
                  return min + BigInt(_randomInt(0, Number(width)));
         | 
| 76 | 
            +
                }
         | 
| 77 | 
            +
                // Too big to choose accurately that way. Instead, choose the correct
         | 
| 78 | 
            +
                // number of random bits to cover the width, and repeat until the
         | 
| 79 | 
            +
                // resulting number falls within the width
         | 
| 80 | 
            +
                var bits = log2(width);
         | 
| 81 | 
            +
                var picked = width;
         | 
| 82 | 
            +
                while (picked >= width) {
         | 
| 83 | 
            +
                  picked = 0n;
         | 
| 84 | 
            +
                  for (var i = 0; i < bits; ++i) {
         | 
| 85 | 
            +
                    picked = 2n * picked + (rng() < 0.5 ? 0n : 1n);
         | 
| 86 | 
            +
                  }
         | 
| 87 | 
            +
                }
         | 
| 88 | 
            +
                return min + picked;
         | 
| 89 | 
            +
              }
         | 
| 67 90 | 
             
            });
         | 
| @@ -7,11 +7,12 @@ import { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js'; | |
| 7 7 | 
             
            import { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';
         | 
| 8 8 | 
             
            import { createCompareUnits } from './compareUnits.js';
         | 
| 9 9 | 
             
            var name = 'larger';
         | 
| 10 | 
            -
            var dependencies = ['typed', 'config', 'matrix', 'DenseMatrix', 'concat', 'SparseMatrix'];
         | 
| 10 | 
            +
            var dependencies = ['typed', 'config', 'bignumber', 'matrix', 'DenseMatrix', 'concat', 'SparseMatrix'];
         | 
| 11 11 | 
             
            export var createLarger = /* #__PURE__ */factory(name, dependencies, _ref => {
         | 
| 12 12 | 
             
              var {
         | 
| 13 13 | 
             
                typed,
         | 
| 14 14 | 
             
                config,
         | 
| 15 | 
            +
                bignumber,
         | 
| 15 16 | 
             
                matrix,
         | 
| 16 17 | 
             
                DenseMatrix,
         | 
| 17 18 | 
             
                concat,
         | 
| @@ -68,16 +69,23 @@ export var createLarger = /* #__PURE__ */factory(name, dependencies, _ref => { | |
| 68 69 | 
             
               * @param  {number | BigNumber | bigint | Fraction | boolean | Unit | string | Array | Matrix} y Second value to compare
         | 
| 69 70 | 
             
               * @return {boolean | Array | Matrix} Returns true when the x is larger than y, else returns false
         | 
| 70 71 | 
             
               */
         | 
| 72 | 
            +
              function bignumLarger(x, y) {
         | 
| 73 | 
            +
                return x.gt(y) && !bigNearlyEqual(x, y, config.relTol, config.absTol);
         | 
| 74 | 
            +
              }
         | 
| 71 75 | 
             
              return typed(name, createLargerNumber({
         | 
| 72 76 | 
             
                typed,
         | 
| 73 77 | 
             
                config
         | 
| 74 78 | 
             
              }), {
         | 
| 75 79 | 
             
                'boolean, boolean': (x, y) => x > y,
         | 
| 76 | 
            -
                'BigNumber, BigNumber':  | 
| 77 | 
            -
                  return x.gt(y) && !bigNearlyEqual(x, y, config.relTol, config.absTol);
         | 
| 78 | 
            -
                },
         | 
| 80 | 
            +
                'BigNumber, BigNumber': bignumLarger,
         | 
| 79 81 | 
             
                'bigint, bigint': (x, y) => x > y,
         | 
| 80 82 | 
             
                'Fraction, Fraction': (x, y) => x.compare(y) === 1,
         | 
| 83 | 
            +
                'Fraction, BigNumber': function Fraction_BigNumber(x, y) {
         | 
| 84 | 
            +
                  return bignumLarger(bignumber(x), y);
         | 
| 85 | 
            +
                },
         | 
| 86 | 
            +
                'BigNumber, Fraction': function BigNumber_Fraction(x, y) {
         | 
| 87 | 
            +
                  return bignumLarger(x, bignumber(y));
         | 
| 88 | 
            +
                },
         | 
| 81 89 | 
             
                'Complex, Complex': function Complex_Complex() {
         | 
| 82 90 | 
             
                  throw new TypeError('No ordering relation is defined for complex numbers');
         | 
| 83 91 | 
             
                }
         | 
| @@ -7,11 +7,12 @@ import { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js'; | |
| 7 7 | 
             
            import { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';
         | 
| 8 8 | 
             
            import { createCompareUnits } from './compareUnits.js';
         | 
| 9 9 | 
             
            var name = 'smaller';
         | 
| 10 | 
            -
            var dependencies = ['typed', 'config', 'matrix', 'DenseMatrix', 'concat', 'SparseMatrix'];
         | 
| 10 | 
            +
            var dependencies = ['typed', 'config', 'bignumber', 'matrix', 'DenseMatrix', 'concat', 'SparseMatrix'];
         | 
| 11 11 | 
             
            export var createSmaller = /* #__PURE__ */factory(name, dependencies, _ref => {
         | 
| 12 12 | 
             
              var {
         | 
| 13 13 | 
             
                typed,
         | 
| 14 14 | 
             
                config,
         | 
| 15 | 
            +
                bignumber,
         | 
| 15 16 | 
             
                matrix,
         | 
| 16 17 | 
             
                DenseMatrix,
         | 
| 17 18 | 
             
                concat,
         | 
| @@ -68,16 +69,23 @@ export var createSmaller = /* #__PURE__ */factory(name, dependencies, _ref => { | |
| 68 69 | 
             
               * @param  {number | BigNumber | bigint | Fraction | boolean | Unit | string | Array | Matrix} y Second value to compare
         | 
| 69 70 | 
             
               * @return {boolean | Array | Matrix} Returns true when the x is smaller than y, else returns false
         | 
| 70 71 | 
             
               */
         | 
| 72 | 
            +
              function bignumSmaller(x, y) {
         | 
| 73 | 
            +
                return x.lt(y) && !bigNearlyEqual(x, y, config.relTol, config.absTol);
         | 
| 74 | 
            +
              }
         | 
| 71 75 | 
             
              return typed(name, createSmallerNumber({
         | 
| 72 76 | 
             
                typed,
         | 
| 73 77 | 
             
                config
         | 
| 74 78 | 
             
              }), {
         | 
| 75 79 | 
             
                'boolean, boolean': (x, y) => x < y,
         | 
| 76 | 
            -
                'BigNumber, BigNumber':  | 
| 77 | 
            -
                  return x.lt(y) && !bigNearlyEqual(x, y, config.relTol, config.absTol);
         | 
| 78 | 
            -
                },
         | 
| 80 | 
            +
                'BigNumber, BigNumber': bignumSmaller,
         | 
| 79 81 | 
             
                'bigint, bigint': (x, y) => x < y,
         | 
| 80 82 | 
             
                'Fraction, Fraction': (x, y) => x.compare(y) === -1,
         | 
| 83 | 
            +
                'Fraction, BigNumber': function Fraction_BigNumber(x, y) {
         | 
| 84 | 
            +
                  return bignumSmaller(bignumber(x), y);
         | 
| 85 | 
            +
                },
         | 
| 86 | 
            +
                'BigNumber, Fraction': function BigNumber_Fraction(x, y) {
         | 
| 87 | 
            +
                  return bignumSmaller(x, bignumber(y));
         | 
| 88 | 
            +
                },
         | 
| 81 89 | 
             
                'Complex, Complex': function Complex_Complex(x, y) {
         | 
| 82 90 | 
             
                  throw new TypeError('No ordering relation is defined for complex numbers');
         | 
| 83 91 | 
             
                }
         | 
| @@ -83,7 +83,7 @@ export var createMax = /* #__PURE__ */factory(name, dependencies, _ref => { | |
| 83 83 | 
             
                var res;
         | 
| 84 84 | 
             
                deepForEach(array, function (value) {
         | 
| 85 85 | 
             
                  try {
         | 
| 86 | 
            -
                    if ( | 
| 86 | 
            +
                    if (typeof value === 'number' && isNaN(value)) {
         | 
| 87 87 | 
             
                      res = NaN;
         | 
| 88 88 | 
             
                    } else if (res === undefined || larger(value, res)) {
         | 
| 89 89 | 
             
                      res = value;
         | 
| @@ -83,7 +83,7 @@ export var createMin = /* #__PURE__ */factory(name, dependencies, _ref => { | |
| 83 83 | 
             
                var min;
         | 
| 84 84 | 
             
                deepForEach(array, function (value) {
         | 
| 85 85 | 
             
                  try {
         | 
| 86 | 
            -
                    if ( | 
| 86 | 
            +
                    if (typeof value === 'number' && isNaN(value)) {
         | 
| 87 87 | 
             
                      min = NaN;
         | 
| 88 88 | 
             
                    } else if (min === undefined || smaller(value, min)) {
         | 
| 89 89 | 
             
                      min = value;
         | 
| @@ -25,12 +25,12 @@ export var createPrint = /* #__PURE__ */factory(name, dependencies, _ref => { | |
| 25 25 | 
             
               *     // the following outputs: 'The value of pi is 3.141592654'
         | 
| 26 26 | 
             
               *     math.print('The value of pi is $pi', {pi: math.pi}, 10)
         | 
| 27 27 | 
             
               *
         | 
| 28 | 
            -
               *     // the following outputs: ' | 
| 28 | 
            +
               *     // the following outputs: 'Hello Mary! The date is 2013-03-23'
         | 
| 29 29 | 
             
               *     math.print('Hello $user.name! The date is $date', {
         | 
| 30 30 | 
             
               *       user: {
         | 
| 31 31 | 
             
               *         name: 'Mary',
         | 
| 32 32 | 
             
               *       },
         | 
| 33 | 
            -
               *       date:  | 
| 33 | 
            +
               *       date: '2013-03-23'
         | 
| 34 34 | 
             
               *     })
         | 
| 35 35 | 
             
               *
         | 
| 36 36 | 
             
               *     // the following outputs: 'My favorite fruits are apples and bananas !'
         | 
| @@ -26,7 +26,7 @@ export var createIsInteger = /* #__PURE__ */factory(name, dependencies, _ref => | |
| 26 26 | 
             
               *    math.isInteger(math.fraction(4))      // returns true
         | 
| 27 27 | 
             
               *    math.isInteger('3')                   // returns true
         | 
| 28 28 | 
             
               *    math.isInteger([3, 0.5, -2])          // returns [true, false, true]
         | 
| 29 | 
            -
               *    math.isInteger(math.complex('2-4i'))  // throws  | 
| 29 | 
            +
               *    math.isInteger(math.complex('2-4i'))  // throws TypeError
         | 
| 30 30 | 
             
               *
         | 
| 31 31 | 
             
               * See also:
         | 
| 32 32 | 
             
               *
         | 
    
        package/lib/esm/header.js
    CHANGED
    
    | @@ -10,7 +10,7 @@ | |
| 10 10 | 
             
             * @date    @@date
         | 
| 11 11 | 
             
             *
         | 
| 12 12 | 
             
             * @license
         | 
| 13 | 
            -
             * Copyright (C) 2013- | 
| 13 | 
            +
             * Copyright (C) 2013-2025 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
         | 
| @@ -0,0 +1,27 @@ | |
| 1 | 
            +
            /**
         | 
| 2 | 
            +
             * Build a bigint logarithm function from a number logarithm,
         | 
| 3 | 
            +
             * still returning a number. The idea is that 15 hexadecimal digits
         | 
| 4 | 
            +
             * (60 bits) saturates the mantissa of the log, and each additional hex
         | 
| 5 | 
            +
             * digit effectively just adds the log of 16 to the resulting value. So
         | 
| 6 | 
            +
             * convert the most significant 15 hex digits to a number and take its
         | 
| 7 | 
            +
             * log, and then add the log of 16 for each additional hex digit that
         | 
| 8 | 
            +
             * was in the bigint.
         | 
| 9 | 
            +
             * For negative numbers (complex logarithms), following the bignum
         | 
| 10 | 
            +
             * implementation, it just downgrades to number and uses the complex result.
         | 
| 11 | 
            +
             * @param {number} log16  the log of 16
         | 
| 12 | 
            +
             * @param {(number) -> number} numberLog  the logarithm function for numbers
         | 
| 13 | 
            +
             * @param {ConfigurationObject} config  the mathjs configuration
         | 
| 14 | 
            +
             * @param {(number) -> Complex} cplx  the associated Complex log
         | 
| 15 | 
            +
             * @returns {(bigint) -> number}   the corresponding logarithm for bigints
         | 
| 16 | 
            +
             */
         | 
| 17 | 
            +
            export function promoteLogarithm(log16, numberLog, config, cplx) {
         | 
| 18 | 
            +
              return function (b) {
         | 
| 19 | 
            +
                if (b > 0 || config.predictable) {
         | 
| 20 | 
            +
                  if (b <= 0) return NaN;
         | 
| 21 | 
            +
                  var s = b.toString(16);
         | 
| 22 | 
            +
                  var s15 = s.substring(0, 15);
         | 
| 23 | 
            +
                  return log16 * (s.length - s15.length) + numberLog(Number('0x' + s15));
         | 
| 24 | 
            +
                }
         | 
| 25 | 
            +
                return cplx(b.toNumber());
         | 
| 26 | 
            +
              };
         | 
| 27 | 
            +
            }
         | 
    
        package/lib/esm/utils/number.js
    CHANGED
    
    | @@ -16,16 +16,6 @@ export function isInteger(value) { | |
| 16 16 | 
             
              return isFinite(value) ? value === Math.round(value) : false;
         | 
| 17 17 | 
             
            }
         | 
| 18 18 |  | 
| 19 | 
            -
            /**
         | 
| 20 | 
            -
             * Check if a string contains an integer
         | 
| 21 | 
            -
             * @param {string} str
         | 
| 22 | 
            -
             * @return {boolean} isInteger
         | 
| 23 | 
            -
             */
         | 
| 24 | 
            -
            export function isIntegerStr(str) {
         | 
| 25 | 
            -
              // regex matching strings like "123" and "-123"
         | 
| 26 | 
            -
              return /^-?\d+$/.test(str);
         | 
| 27 | 
            -
            }
         | 
| 28 | 
            -
             | 
| 29 19 | 
             
            /**
         | 
| 30 20 | 
             
             * Ensure the number type is compatible with the provided value.
         | 
| 31 21 | 
             
             * If not, return 'number' instead.
         | 
| @@ -45,8 +35,12 @@ export function isIntegerStr(str) { | |
| 45 35 | 
             
             * @returns {'number' | 'BigNumber' | 'bigint' | 'Fraction'}
         | 
| 46 36 | 
             
             */
         | 
| 47 37 | 
             
            export function safeNumberType(numberStr, config) {
         | 
| 48 | 
            -
              if (config.number === 'bigint' | 
| 49 | 
            -
                 | 
| 38 | 
            +
              if (config.number === 'bigint') {
         | 
| 39 | 
            +
                try {
         | 
| 40 | 
            +
                  BigInt(numberStr);
         | 
| 41 | 
            +
                } catch (_unused) {
         | 
| 42 | 
            +
                  return config.numberFallback;
         | 
| 43 | 
            +
                }
         | 
| 50 44 | 
             
              }
         | 
| 51 45 | 
             
              return config.number;
         | 
| 52 46 | 
             
            }
         | 
| @@ -610,11 +604,6 @@ export function digits(value) { | |
| 610 604 | 
             
              .length;
         | 
| 611 605 | 
             
            }
         | 
| 612 606 |  | 
| 613 | 
            -
            /**
         | 
| 614 | 
            -
             * Minimum number added to one that makes the result different than one
         | 
| 615 | 
            -
             */
         | 
| 616 | 
            -
            export var DBL_EPSILON = Number.EPSILON || 2.2204460492503130808472633361816E-16;
         | 
| 617 | 
            -
             | 
| 618 607 | 
             
            /**
         | 
| 619 608 | 
             
             * Compares two floating point numbers.
         | 
| 620 609 | 
             
             * @param {number} a - First value to compare
         | 
    
        package/lib/esm/version.js
    CHANGED
    
    
    
        package/package.json
    CHANGED
    
    | @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            {
         | 
| 2 2 | 
             
              "name": "mathjs",
         | 
| 3 | 
            -
              "version": "14.0 | 
| 3 | 
            +
              "version": "14.1.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",
         | 
| @@ -26,6 +26,7 @@ | |
| 26 26 | 
             
              ],
         | 
| 27 27 | 
             
              "dependencies": {
         | 
| 28 28 | 
             
                "@babel/runtime": "^7.25.7",
         | 
| 29 | 
            +
                "@lambdatest/node-tunnel": "^4.0.8",
         | 
| 29 30 | 
             
                "complex.js": "^2.2.5",
         | 
| 30 31 | 
             
                "decimal.js": "^10.4.3",
         | 
| 31 32 | 
             
                "escape-latex": "^1.2.0",
         | 
| @@ -44,13 +45,13 @@ | |
| 44 45 | 
             
                "@babel/register": "7.25.9",
         | 
| 45 46 | 
             
                "@types/assert": "1.5.11",
         | 
| 46 47 | 
             
                "@types/mocha": "10.0.10",
         | 
| 47 | 
            -
                "@typescript-eslint/eslint-plugin": "8. | 
| 48 | 
            -
                "@typescript-eslint/parser": "8. | 
| 48 | 
            +
                "@typescript-eslint/eslint-plugin": "8.21.0",
         | 
| 49 | 
            +
                "@typescript-eslint/parser": "8.21.0",
         | 
| 49 50 | 
             
                "assert": "2.1.0",
         | 
| 50 51 | 
             
                "babel-loader": "9.2.1",
         | 
| 51 52 | 
             
                "c8": "10.1.3",
         | 
| 52 53 | 
             
                "codecov": "3.8.3",
         | 
| 53 | 
            -
                "core-js": "3. | 
| 54 | 
            +
                "core-js": "3.40.0",
         | 
| 54 55 | 
             
                "del": "8.0.0",
         | 
| 55 56 | 
             
                "dtslint": "4.2.1",
         | 
| 56 57 | 
             
                "eigen": "0.2.2",
         | 
| @@ -60,24 +61,25 @@ | |
| 60 61 | 
             
                "eslint-plugin-import": "2.31.0",
         | 
| 61 62 | 
             
                "eslint-plugin-mocha": "10.5.0",
         | 
| 62 63 | 
             
                "eslint-plugin-n": "16.6.2",
         | 
| 63 | 
            -
                "eslint-plugin-prettier": "5.2. | 
| 64 | 
            +
                "eslint-plugin-prettier": "5.2.3",
         | 
| 64 65 | 
             
                "eslint-plugin-promise": "6.6.0",
         | 
| 65 66 | 
             
                "expect-type": "1.1.0",
         | 
| 66 67 | 
             
                "expr-eval": "2.0.2",
         | 
| 67 68 | 
             
                "fancy-log": "2.0.0",
         | 
| 68 | 
            -
                "glob": "11.0. | 
| 69 | 
            +
                "glob": "11.0.1",
         | 
| 69 70 | 
             
                "gulp": "5.0.0",
         | 
| 70 71 | 
             
                "gulp-babel": "8.0.0",
         | 
| 71 72 | 
             
                "handlebars": "4.7.8",
         | 
| 72 73 | 
             
                "jsep": "1.4.0",
         | 
| 73 74 | 
             
                "karma": "6.4.4",
         | 
| 74 | 
            -
                "karma-browserstack-launcher": "1.6.0",
         | 
| 75 75 | 
             
                "karma-firefox-launcher": "2.1.3",
         | 
| 76 76 | 
             
                "karma-mocha": "2.0.1",
         | 
| 77 77 | 
             
                "karma-mocha-reporter": "2.2.5",
         | 
| 78 | 
            +
                "karma-spec-reporter": "0.0.36",
         | 
| 79 | 
            +
                "karma-webdriver-launcher": "1.0.8",
         | 
| 78 80 | 
             
                "karma-webpack": "5.0.1",
         | 
| 79 81 | 
             
                "mkdirp": "3.0.1",
         | 
| 80 | 
            -
                "mocha": "11.0 | 
| 82 | 
            +
                "mocha": "11.1.0",
         | 
| 81 83 | 
             
                "mocha-junit-reporter": "2.2.1",
         | 
| 82 84 | 
             
                "ndarray": "1.0.19",
         | 
| 83 85 | 
             
                "ndarray-determinant": "1.0.0",
         | 
| @@ -89,9 +91,9 @@ | |
| 89 91 | 
             
                "process": "0.11.10",
         | 
| 90 92 | 
             
                "sinon": "19.0.2",
         | 
| 91 93 | 
             
                "sylvester": "0.0.21",
         | 
| 92 | 
            -
                "tinybench": "3.0 | 
| 94 | 
            +
                "tinybench": "3.1.0",
         | 
| 93 95 | 
             
                "ts-node": "10.9.2",
         | 
| 94 | 
            -
                "typescript": "5.7. | 
| 96 | 
            +
                "typescript": "5.7.3",
         | 
| 95 97 | 
             
                "webpack": "5.97.1",
         | 
| 96 98 | 
             
                "zeros": "1.0.0"
         | 
| 97 99 | 
             
              },
         | 
| @@ -151,7 +153,7 @@ | |
| 151 153 | 
             
                "test:node": "mocha test/node-tests/*.test.js test/node-tests/**/*.test.js",
         | 
| 152 154 | 
             
                "test:all": "npm run test:src && npm run test:generated && npm run test:node && npm run test:types",
         | 
| 153 155 | 
             
                "test:browser": "karma start test/browser-test-config/local-karma.js",
         | 
| 154 | 
            -
                "test: | 
| 156 | 
            +
                "test:lambdatest": "karma start test/browser-test-config/lambdatest-karma.js",
         | 
| 155 157 | 
             
                "test:types": " tsc -p ./tsconfig.json && node --loader ts-node/esm ./test/typescript-tests/testTypes.ts",
         | 
| 156 158 | 
             
                "coverage": "c8 --reporter=lcov --reporter=text-summary mocha test/unit-tests && echo \"\nDetailed coverage report is available at ./coverage/lcov-report/index.html\"",
         | 
| 157 159 | 
             
                "prepublishOnly": "npm run test:all && npm run lint",
         |