mathjs 12.3.0 → 12.3.1
Sign up to get free protection for your applications and to get access to all the features.
- package/HISTORY.md +19 -0
- package/lib/browser/math.js +1 -1
- package/lib/browser/math.js.LICENSE.txt +2 -2
- package/lib/browser/math.js.map +1 -1
- package/lib/cjs/entry/configReadonly.js +1 -1
- package/lib/cjs/entry/dependenciesAny/dependenciesHelpClass.generated.js +2 -2
- package/lib/cjs/entry/dependenciesNumber/dependenciesHelpClass.generated.js +2 -2
- package/lib/cjs/entry/impureFunctionsAny.generated.js +14 -14
- package/lib/cjs/entry/impureFunctionsNumber.generated.js +1 -1
- package/lib/cjs/entry/pureFunctionsAny.generated.js +11 -11
- package/lib/cjs/expression/Help.js +21 -4
- package/lib/cjs/function/string/bin.js +3 -3
- package/lib/cjs/function/string/format.js +3 -3
- package/lib/cjs/function/string/hex.js +3 -3
- package/lib/cjs/function/string/oct.js +3 -3
- package/lib/cjs/header.js +2 -2
- package/lib/cjs/type/unit/physicalConstants.js +1 -1
- package/lib/cjs/utils/bignumber/formatter.js +17 -27
- package/lib/cjs/utils/number.js +75 -33
- package/lib/cjs/version.js +1 -1
- package/lib/esm/entry/configReadonly.js +1 -1
- package/lib/esm/entry/dependenciesAny/dependenciesHelpClass.generated.js +2 -2
- package/lib/esm/entry/dependenciesNumber/dependenciesHelpClass.generated.js +2 -2
- package/lib/esm/entry/impureFunctionsAny.generated.js +16 -16
- package/lib/esm/entry/impureFunctionsNumber.generated.js +1 -1
- package/lib/esm/entry/pureFunctionsAny.generated.js +12 -12
- package/lib/esm/expression/Help.js +21 -4
- package/lib/esm/function/string/bin.js +3 -3
- package/lib/esm/function/string/format.js +3 -3
- package/lib/esm/function/string/hex.js +3 -3
- package/lib/esm/function/string/oct.js +3 -3
- package/lib/esm/type/unit/physicalConstants.js +1 -1
- package/lib/esm/utils/bignumber/formatter.js +19 -28
- package/lib/esm/utils/number.js +76 -34
- package/lib/esm/version.js +1 -1
- package/package.json +11 -11
- package/types/index.d.ts +30 -18
@@ -4,10 +4,10 @@ import _extends from "@babel/runtime/helpers/extends";
|
|
4
4
|
* DON'T MAKE CHANGES HERE
|
5
5
|
*/
|
6
6
|
import { config } from './configReadonly.js';
|
7
|
-
import { createNode, createObjectNode, createOperatorNode, createParenthesisNode, createRelationalNode, createArrayNode, createBlockNode, createConditionalNode, createConstantNode, createRangeNode, createReviver, createChainClass, createFunctionAssignmentNode, createChain, createIndexNode, createAccessorNode, createAssignmentNode, createSymbolNode, createFunctionNode, createParse, createResolve, createSimplifyConstant, createCompile,
|
7
|
+
import { createNode, createObjectNode, createOperatorNode, createParenthesisNode, createRelationalNode, createArrayNode, createBlockNode, createConditionalNode, createConstantNode, createRangeNode, createReviver, createChainClass, createFunctionAssignmentNode, createChain, createIndexNode, createAccessorNode, createAssignmentNode, createSymbolNode, createFunctionNode, createParse, createResolve, createSimplifyConstant, createCompile, createSimplifyCore, createEvaluate, createHelpClass, createParserClass, createSimplify, createSymbolicEqual, createLeafCount, createParser, createRationalize, createDerivative, createHelp, createFilterTransform, createForEachTransform, createMapTransform, createApplyTransform, createOrTransform, createAndTransform, createConcatTransform, createMaxTransform, createPrintTransform, createBitAndTransform, createDiffTransform, createMinTransform, createSubsetTransform, createBitOrTransform, createCumSumTransform, createIndexTransform, createSumTransform, createRangeTransform, createRowTransform, createColumnTransform, createMeanTransform, createQuantileSeqTransform, createVarianceTransform, createStdTransform } from '../factoriesAny.js';
|
8
8
|
import { BigNumber, Complex, e, _false, fineStructure, Fraction, i, _Infinity, LN10, LOG10E, Matrix, _NaN, _null, phi, Range, ResultSet, SQRT1_2,
|
9
9
|
// eslint-disable-line camelcase
|
10
|
-
sackurTetrode, tau, _true, version, DenseMatrix, efimovFactor, LN2, pi, replacer, SQRT2, typed, unaryPlus, weakMixingAngle, abs, acos, acot, acsc, addScalar, arg, asech, asinh, atan, atanh, bignumber, bitNot, boolean, clone, combinations, complex, conj, cos, cot, csc, cube, equalScalar, erf, exp, expm1, filter, forEach, format, getMatrixDataType, hex, im, isInteger, isNegative, isPositive, isZero, LOG2E, lgamma, log10, log2, map, multiplyScalar, not, number, oct, pickRandom, print, random, re, sec, sign, sin, SparseMatrix, splitUnit, square, string, subtractScalar, tan, typeOf, acosh, acsch, apply, asec, bin, combinationsWithRep, cosh, csch, isNaN, isPrime, randomInt, sech, sinh, sparse, sqrt, tanh, unaryMinus, acoth, coth, fraction, isNumeric, matrix, matrixFromFunction, mode, numeric, prod, reshape, size, squeeze, transpose, xgcd, zeros, asin, cbrt, concat, count, ctranspose, diag, divideScalar, dotDivide, equal, flatten, hasNumericValue, identity, kron, largerEq, leftShift, lsolve, matrixFromColumns, nthRoot, ones, qr, resize, rightArithShift, round, smaller, subtract, to, unequal, usolve, xor, add, atan2, bitAnd, bitOr, bitXor, catalan, compare, compareText, cumsum, deepEqual, diff, distance, dot, equalText, floor, gcd, hypot, ImmutableDenseMatrix, Index, larger, log, lsolveAll, matrixFromRows, min, mod, multiply, nthRoots, or, partitionSelect, rightLogShift, slu, subset, sum, trace, usolveAll, zpk2tf, ceil, compareNatural, composition, cross, det, dotMultiply, FibonacciHeap, fix, index, intersect, invmod, lcm, log1p, max, setCartesian, setDistinct, setIsSubset, setPowerset, smallerEq, sort, and, range, row, setDifference, setMultiplicity, setSymDifference, Spa, column, inv, lup, pinv, pow, setIntersect, setUnion, sqrtm, Unit, vacuumImpedance, wienDisplacement, atomicMass, bohrMagneton, boltzmann, conductanceQuantum, coulomb, deuteronMass, dotPow, electricConstant, elementaryCharge, expm, faraday, fft, gamma, gravitationConstant, hartreeEnergy, ifft, klitzing, loschmidt, magneticConstant, molarMass, molarPlanckConstant, neutronMass, nuclearMagneton, planckCharge, planckLength, planckTemperature, protonMass, quantumOfCirculation, reducedPlanckConstant, rydberg, secondRadiation, speedOfLight, stefanBoltzmann, thomsonCrossSection, avogadro, bohrRadius, createUnit, divide, electronMass, factorial, firstRadiation, gravity, inverseConductanceQuantum, lusolve, magneticFluxQuantum, molarMassC12, multinomial, permutations, planckMass, polynomialRoot, setSize, solveODE, stirlingS2, unit, bellNumbers, eigs, fermiCoupling, gasConstant, mean, molarVolume, planckConstant, quantileSeq, variance, classicalElectronRadius, median, corr, freqz, mad, std, zeta, norm, rotationMatrix,
|
10
|
+
sackurTetrode, tau, _true, version, DenseMatrix, efimovFactor, LN2, pi, replacer, SQRT2, typed, unaryPlus, weakMixingAngle, abs, acos, acot, acsc, addScalar, arg, asech, asinh, atan, atanh, bignumber, bitNot, boolean, clone, combinations, complex, conj, cos, cot, csc, cube, equalScalar, erf, exp, expm1, filter, forEach, format, getMatrixDataType, hex, im, isInteger, isNegative, isPositive, isZero, LOG2E, lgamma, log10, log2, map, multiplyScalar, not, number, oct, pickRandom, print, random, re, sec, sign, sin, SparseMatrix, splitUnit, square, string, subtractScalar, tan, typeOf, acosh, acsch, apply, asec, bin, combinationsWithRep, cosh, csch, isNaN, isPrime, randomInt, sech, sinh, sparse, sqrt, tanh, unaryMinus, acoth, coth, fraction, isNumeric, matrix, matrixFromFunction, mode, numeric, prod, reshape, size, squeeze, transpose, xgcd, zeros, asin, cbrt, concat, count, ctranspose, diag, divideScalar, dotDivide, equal, flatten, hasNumericValue, identity, kron, largerEq, leftShift, lsolve, matrixFromColumns, nthRoot, ones, qr, resize, rightArithShift, round, smaller, subtract, to, unequal, usolve, xor, add, atan2, bitAnd, bitOr, bitXor, catalan, compare, compareText, cumsum, deepEqual, diff, distance, dot, equalText, floor, gcd, hypot, ImmutableDenseMatrix, Index, larger, log, lsolveAll, matrixFromRows, min, mod, multiply, nthRoots, or, partitionSelect, rightLogShift, slu, subset, sum, trace, usolveAll, zpk2tf, ceil, compareNatural, composition, cross, det, dotMultiply, FibonacciHeap, fix, index, intersect, invmod, lcm, log1p, max, setCartesian, setDistinct, setIsSubset, setPowerset, smallerEq, sort, and, range, row, setDifference, setMultiplicity, setSymDifference, Spa, column, inv, lup, pinv, pow, setIntersect, setUnion, sqrtm, Unit, vacuumImpedance, wienDisplacement, atomicMass, bohrMagneton, boltzmann, conductanceQuantum, coulomb, deuteronMass, dotPow, electricConstant, elementaryCharge, expm, faraday, fft, gamma, gravitationConstant, hartreeEnergy, ifft, klitzing, loschmidt, magneticConstant, molarMass, molarPlanckConstant, neutronMass, nuclearMagneton, planckCharge, planckLength, planckTemperature, protonMass, quantumOfCirculation, reducedPlanckConstant, rydberg, secondRadiation, speedOfLight, stefanBoltzmann, thomsonCrossSection, avogadro, bohrRadius, createUnit, divide, electronMass, factorial, firstRadiation, gravity, inverseConductanceQuantum, lusolve, magneticFluxQuantum, molarMassC12, multinomial, permutations, planckMass, polynomialRoot, setSize, solveODE, stirlingS2, unit, bellNumbers, eigs, fermiCoupling, gasConstant, kldivergence, mean, molarVolume, planckConstant, quantileSeq, variance, classicalElectronRadius, median, corr, freqz, mad, std, zeta, norm, rotationMatrix, planckTime, schur, rotate, sylvester, lyap } from './pureFunctionsAny.generated.js';
|
11
11
|
var math = {}; // NOT pure!
|
12
12
|
var mathWithTransform = {}; // NOT pure!
|
13
13
|
var classes = {}; // NOT pure!
|
@@ -129,13 +129,6 @@ export var compile = createCompile({
|
|
129
129
|
parse,
|
130
130
|
typed
|
131
131
|
});
|
132
|
-
export var Help = createHelpClass({
|
133
|
-
parse
|
134
|
-
});
|
135
|
-
export var leafCount = createLeafCount({
|
136
|
-
parse,
|
137
|
-
typed
|
138
|
-
});
|
139
132
|
export var simplifyCore = createSimplifyCore({
|
140
133
|
AccessorNode,
|
141
134
|
ArrayNode,
|
@@ -160,10 +153,8 @@ export var evaluate = createEvaluate({
|
|
160
153
|
parse,
|
161
154
|
typed
|
162
155
|
});
|
163
|
-
export var
|
164
|
-
|
165
|
-
mathWithTransform,
|
166
|
-
typed
|
156
|
+
export var Help = createHelpClass({
|
157
|
+
evaluate
|
167
158
|
});
|
168
159
|
export var Parser = createParserClass({
|
169
160
|
evaluate
|
@@ -202,6 +193,10 @@ export var symbolicEqual = createSymbolicEqual({
|
|
202
193
|
simplify,
|
203
194
|
typed
|
204
195
|
});
|
196
|
+
export var leafCount = createLeafCount({
|
197
|
+
parse,
|
198
|
+
typed
|
199
|
+
});
|
205
200
|
export var parser = createParser({
|
206
201
|
Parser,
|
207
202
|
typed
|
@@ -248,6 +243,11 @@ export var derivative = createDerivative({
|
|
248
243
|
simplify,
|
249
244
|
typed
|
250
245
|
});
|
246
|
+
export var help = createHelp({
|
247
|
+
Help,
|
248
|
+
mathWithTransform,
|
249
|
+
typed
|
250
|
+
});
|
251
251
|
_extends(math, {
|
252
252
|
e,
|
253
253
|
false: _false,
|
@@ -525,7 +525,7 @@ _extends(math, {
|
|
525
525
|
eigs,
|
526
526
|
fermiCoupling,
|
527
527
|
gasConstant,
|
528
|
-
|
528
|
+
kldivergence,
|
529
529
|
mean,
|
530
530
|
molarVolume,
|
531
531
|
planckConstant,
|
@@ -534,12 +534,12 @@ _extends(math, {
|
|
534
534
|
variance,
|
535
535
|
classicalElectronRadius,
|
536
536
|
evaluate,
|
537
|
-
help,
|
538
537
|
median,
|
539
538
|
simplify,
|
540
539
|
symbolicEqual,
|
541
540
|
corr,
|
542
541
|
freqz,
|
542
|
+
leafCount,
|
543
543
|
mad,
|
544
544
|
parser,
|
545
545
|
rationalize,
|
@@ -548,7 +548,7 @@ _extends(math, {
|
|
548
548
|
derivative,
|
549
549
|
norm,
|
550
550
|
rotationMatrix,
|
551
|
-
|
551
|
+
help,
|
552
552
|
planckTime,
|
553
553
|
schur,
|
554
554
|
rotate,
|
@@ -5,7 +5,7 @@
|
|
5
5
|
import { config } from './configReadonly.js';
|
6
6
|
import { createBigNumberClass, createComplexClass, createE, createFalse, createFineStructure, createFractionClass, createI, createInfinity, createLN10, createLOG10E, createMatrixClass, createNaN, createNull, createPhi, createRangeClass, createResultSet, createSQRT1_2,
|
7
7
|
// eslint-disable-line camelcase
|
8
|
-
createSackurTetrode, createTau, createTrue, createVersion, createDenseMatrixClass, createEfimovFactor, createLN2, createPi, createReplacer, createSQRT2, createTyped, createUnaryPlus, createWeakMixingAngle, createAbs, createAcos, createAcot, createAcsc, createAddScalar, createArg, createAsech, createAsinh, createAtan, createAtanh, createBignumber, createBitNot, createBoolean, createClone, createCombinations, createComplex, createConj, createCos, createCot, createCsc, createCube, createEqualScalar, createErf, createExp, createExpm1, createFilter, createForEach, createFormat, createGetMatrixDataType, createHex, createIm, createIsInteger, createIsNegative, createIsPositive, createIsZero, createLOG2E, createLgamma, createLog10, createLog2, createMap, createMultiplyScalar, createNot, createNumber, createOct, createPickRandom, createPrint, createRandom, createRe, createSec, createSign, createSin, createSparseMatrixClass, createSplitUnit, createSquare, createString, createSubtractScalar, createTan, createTypeOf, createAcosh, createAcsch, createApply, createAsec, createBin, createCombinationsWithRep, createCosh, createCsch, createIsNaN, createIsPrime, createRandomInt, createSech, createSinh, createSparse, createSqrt, createTanh, createUnaryMinus, createAcoth, createCoth, createFraction, createIsNumeric, createMatrix, createMatrixFromFunction, createMode, createNumeric, createProd, createReshape, createSize, createSqueeze, createTranspose, createXgcd, createZeros, createAsin, createCbrt, createConcat, createCount, createCtranspose, createDiag, createDivideScalar, createDotDivide, createEqual, createFlatten, createHasNumericValue, createIdentity, createKron, createLargerEq, createLeftShift, createLsolve, createMatrixFromColumns, createNthRoot, createOnes, createQr, createResize, createRightArithShift, createRound, createSmaller, createSubtract, createTo, createUnequal, createUsolve, createXor, createAdd, createAtan2, createBitAnd, createBitOr, createBitXor, createCatalan, createCompare, createCompareText, createCumSum, createDeepEqual, createDiff, createDistance, createDot, createEqualText, createFloor, createGcd, createHypot, createImmutableDenseMatrixClass, createIndexClass, createLarger, createLog, createLsolveAll, createMatrixFromRows, createMin, createMod, createMultiply, createNthRoots, createOr, createPartitionSelect, createRightLogShift, createSlu, createSubset, createSum, createTrace, createUsolveAll, createZpk2tf, createCeil, createCompareNatural, createComposition, createCross, createDet, createDotMultiply, createFibonacciHeapClass, createFix, createIndex, createIntersect, createInvmod, createLcm, createLog1p, createMax, createSetCartesian, createSetDistinct, createSetIsSubset, createSetPowerset, createSmallerEq, createSort, createAnd, createRange, createRow, createSetDifference, createSetMultiplicity, createSetSymDifference, createSpaClass, createColumn, createInv, createLup, createPinv, createPow, createSetIntersect, createSetUnion, createSqrtm, createUnitClass, createVacuumImpedance, createWienDisplacement, createAtomicMass, createBohrMagneton, createBoltzmann, createConductanceQuantum, createCoulomb, createDeuteronMass, createDotPow, createElectricConstant, createElementaryCharge, createExpm, createFaraday, createFft, createGamma, createGravitationConstant, createHartreeEnergy, createIfft, createKlitzing, createLoschmidt, createMagneticConstant, createMolarMass, createMolarPlanckConstant, createNeutronMass, createNuclearMagneton, createPlanckCharge, createPlanckLength, createPlanckTemperature, createProtonMass, createQuantumOfCirculation, createReducedPlanckConstant, createRydberg, createSecondRadiation, createSpeedOfLight, createStefanBoltzmann, createThomsonCrossSection, createAvogadro, createBohrRadius, createCreateUnit, createDivide, createElectronMass, createFactorial, createFirstRadiation, createGravity, createInverseConductanceQuantum, createLusolve, createMagneticFluxQuantum, createMolarMassC12, createMultinomial, createPermutations, createPlanckMass, createPolynomialRoot, createSetSize, createSolveODE, createStirlingS2, createUnitFunction, createBellNumbers, createEigs, createFermiCoupling, createGasConstant, createMean, createMolarVolume, createPlanckConstant, createQuantileSeq, createVariance, createClassicalElectronRadius, createMedian, createCorr, createFreqz, createMad, createStd, createZeta, createNorm, createRotationMatrix,
|
8
|
+
createSackurTetrode, createTau, createTrue, createVersion, createDenseMatrixClass, createEfimovFactor, createLN2, createPi, createReplacer, createSQRT2, createTyped, createUnaryPlus, createWeakMixingAngle, createAbs, createAcos, createAcot, createAcsc, createAddScalar, createArg, createAsech, createAsinh, createAtan, createAtanh, createBignumber, createBitNot, createBoolean, createClone, createCombinations, createComplex, createConj, createCos, createCot, createCsc, createCube, createEqualScalar, createErf, createExp, createExpm1, createFilter, createForEach, createFormat, createGetMatrixDataType, createHex, createIm, createIsInteger, createIsNegative, createIsPositive, createIsZero, createLOG2E, createLgamma, createLog10, createLog2, createMap, createMultiplyScalar, createNot, createNumber, createOct, createPickRandom, createPrint, createRandom, createRe, createSec, createSign, createSin, createSparseMatrixClass, createSplitUnit, createSquare, createString, createSubtractScalar, createTan, createTypeOf, createAcosh, createAcsch, createApply, createAsec, createBin, createCombinationsWithRep, createCosh, createCsch, createIsNaN, createIsPrime, createRandomInt, createSech, createSinh, createSparse, createSqrt, createTanh, createUnaryMinus, createAcoth, createCoth, createFraction, createIsNumeric, createMatrix, createMatrixFromFunction, createMode, createNumeric, createProd, createReshape, createSize, createSqueeze, createTranspose, createXgcd, createZeros, createAsin, createCbrt, createConcat, createCount, createCtranspose, createDiag, createDivideScalar, createDotDivide, createEqual, createFlatten, createHasNumericValue, createIdentity, createKron, createLargerEq, createLeftShift, createLsolve, createMatrixFromColumns, createNthRoot, createOnes, createQr, createResize, createRightArithShift, createRound, createSmaller, createSubtract, createTo, createUnequal, createUsolve, createXor, createAdd, createAtan2, createBitAnd, createBitOr, createBitXor, createCatalan, createCompare, createCompareText, createCumSum, createDeepEqual, createDiff, createDistance, createDot, createEqualText, createFloor, createGcd, createHypot, createImmutableDenseMatrixClass, createIndexClass, createLarger, createLog, createLsolveAll, createMatrixFromRows, createMin, createMod, createMultiply, createNthRoots, createOr, createPartitionSelect, createRightLogShift, createSlu, createSubset, createSum, createTrace, createUsolveAll, createZpk2tf, createCeil, createCompareNatural, createComposition, createCross, createDet, createDotMultiply, createFibonacciHeapClass, createFix, createIndex, createIntersect, createInvmod, createLcm, createLog1p, createMax, createSetCartesian, createSetDistinct, createSetIsSubset, createSetPowerset, createSmallerEq, createSort, createAnd, createRange, createRow, createSetDifference, createSetMultiplicity, createSetSymDifference, createSpaClass, createColumn, createInv, createLup, createPinv, createPow, createSetIntersect, createSetUnion, createSqrtm, createUnitClass, createVacuumImpedance, createWienDisplacement, createAtomicMass, createBohrMagneton, createBoltzmann, createConductanceQuantum, createCoulomb, createDeuteronMass, createDotPow, createElectricConstant, createElementaryCharge, createExpm, createFaraday, createFft, createGamma, createGravitationConstant, createHartreeEnergy, createIfft, createKlitzing, createLoschmidt, createMagneticConstant, createMolarMass, createMolarPlanckConstant, createNeutronMass, createNuclearMagneton, createPlanckCharge, createPlanckLength, createPlanckTemperature, createProtonMass, createQuantumOfCirculation, createReducedPlanckConstant, createRydberg, createSecondRadiation, createSpeedOfLight, createStefanBoltzmann, createThomsonCrossSection, createAvogadro, createBohrRadius, createCreateUnit, createDivide, createElectronMass, createFactorial, createFirstRadiation, createGravity, createInverseConductanceQuantum, createLusolve, createMagneticFluxQuantum, createMolarMassC12, createMultinomial, createPermutations, createPlanckMass, createPolynomialRoot, createSetSize, createSolveODE, createStirlingS2, createUnitFunction, createBellNumbers, createEigs, createFermiCoupling, createGasConstant, createKldivergence, createMean, createMolarVolume, createPlanckConstant, createQuantileSeq, createVariance, createClassicalElectronRadius, createMedian, createCorr, createFreqz, createMad, createStd, createZeta, createNorm, createRotationMatrix, createPlanckTime, createSchur, createRotate, createSylvester, createLyap } from '../factoriesAny.js';
|
9
9
|
export var BigNumber = /* #__PURE__ */createBigNumberClass({
|
10
10
|
config
|
11
11
|
});
|
@@ -1602,6 +1602,17 @@ export var gasConstant = /* #__PURE__ */createGasConstant({
|
|
1602
1602
|
Unit,
|
1603
1603
|
config
|
1604
1604
|
});
|
1605
|
+
export var kldivergence = /* #__PURE__ */createKldivergence({
|
1606
|
+
divide,
|
1607
|
+
dotDivide,
|
1608
|
+
isNumeric,
|
1609
|
+
log,
|
1610
|
+
map,
|
1611
|
+
matrix,
|
1612
|
+
multiply,
|
1613
|
+
sum,
|
1614
|
+
typed
|
1615
|
+
});
|
1605
1616
|
export var mean = /* #__PURE__ */createMean({
|
1606
1617
|
add,
|
1607
1618
|
divide,
|
@@ -1732,17 +1743,6 @@ export var rotationMatrix = /* #__PURE__ */createRotationMatrix({
|
|
1732
1743
|
typed,
|
1733
1744
|
unaryMinus
|
1734
1745
|
});
|
1735
|
-
export var kldivergence = /* #__PURE__ */createKldivergence({
|
1736
|
-
divide,
|
1737
|
-
dotDivide,
|
1738
|
-
isNumeric,
|
1739
|
-
log,
|
1740
|
-
map,
|
1741
|
-
matrix,
|
1742
|
-
multiply,
|
1743
|
-
sum,
|
1744
|
-
typed
|
1745
|
-
});
|
1746
1746
|
export var planckTime = /* #__PURE__ */createPlanckTime({
|
1747
1747
|
BigNumber,
|
1748
1748
|
Unit,
|
@@ -3,10 +3,10 @@ import { clone } from '../utils/object.js';
|
|
3
3
|
import { format } from '../utils/string.js';
|
4
4
|
import { factory } from '../utils/factory.js';
|
5
5
|
var name = 'Help';
|
6
|
-
var dependencies = ['
|
6
|
+
var dependencies = ['evaluate'];
|
7
7
|
export var createHelpClass = /* #__PURE__ */factory(name, dependencies, _ref => {
|
8
8
|
var {
|
9
|
-
|
9
|
+
evaluate
|
10
10
|
} = _ref;
|
11
11
|
/**
|
12
12
|
* Documentation object
|
@@ -55,14 +55,26 @@ export var createHelpClass = /* #__PURE__ */factory(name, dependencies, _ref =>
|
|
55
55
|
}
|
56
56
|
if (doc.examples) {
|
57
57
|
desc += 'Examples:\n';
|
58
|
-
|
58
|
+
|
59
|
+
// after evaluating the examples, we restore config in case the examples
|
60
|
+
// did change the config.
|
61
|
+
var configChanged = false;
|
62
|
+
var originalConfig = evaluate('config()');
|
63
|
+
var scope = {
|
64
|
+
config: newConfig => {
|
65
|
+
configChanged = true;
|
66
|
+
return evaluate('config(newConfig)', {
|
67
|
+
newConfig
|
68
|
+
});
|
69
|
+
}
|
70
|
+
};
|
59
71
|
for (var i = 0; i < doc.examples.length; i++) {
|
60
72
|
var expr = doc.examples[i];
|
61
73
|
desc += ' ' + expr + '\n';
|
62
74
|
var res = void 0;
|
63
75
|
try {
|
64
76
|
// note: res can be undefined when `expr` is an empty string
|
65
|
-
res =
|
77
|
+
res = evaluate(expr, scope);
|
66
78
|
} catch (e) {
|
67
79
|
res = e;
|
68
80
|
}
|
@@ -73,6 +85,11 @@ export var createHelpClass = /* #__PURE__ */factory(name, dependencies, _ref =>
|
|
73
85
|
}
|
74
86
|
}
|
75
87
|
desc += '\n';
|
88
|
+
if (configChanged) {
|
89
|
+
evaluate('config(originalConfig)', {
|
90
|
+
originalConfig
|
91
|
+
});
|
92
|
+
}
|
76
93
|
}
|
77
94
|
if (doc.mayThrow && doc.mayThrow.length) {
|
78
95
|
desc += 'Throws: ' + doc.mayThrow.join(', ') + '\n\n';
|
@@ -19,8 +19,8 @@ var dependencies = ['typed', 'format'];
|
|
19
19
|
* oct
|
20
20
|
* hex
|
21
21
|
*
|
22
|
-
* @param {number} value Value to be stringified
|
23
|
-
* @param {number} wordSize Optional word size (see `format`)
|
22
|
+
* @param {number | BigNumber} value Value to be stringified
|
23
|
+
* @param {number | BigNumber} wordSize Optional word size (see `format`)
|
24
24
|
* @return {string} The formatted value
|
25
25
|
*/
|
26
26
|
export var createBin = factory(name, dependencies, _ref => {
|
@@ -34,7 +34,7 @@ export var createBin = factory(name, dependencies, _ref => {
|
|
34
34
|
notation: 'bin'
|
35
35
|
});
|
36
36
|
},
|
37
|
-
'number | BigNumber, number': function
|
37
|
+
'number | BigNumber, number | BigNumber': function numberBigNumberNumberBigNumber(n, wordSize) {
|
38
38
|
return format(n, {
|
39
39
|
notation: 'bin',
|
40
40
|
wordSize
|
@@ -42,7 +42,7 @@ export var createFormat = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
42
42
|
* - `'bin'`, `'oct'`, or `'hex'`
|
43
43
|
* Format the number using binary, octal, or hexadecimal notation.
|
44
44
|
* For example `'0b1101'` and `'0x10fe'`.
|
45
|
-
* - `wordSize: number`
|
45
|
+
* - `wordSize: number | BigNumber`
|
46
46
|
* The word size in bits to use for formatting in binary, octal, or
|
47
47
|
* hexadecimal notation. To be used only with `'bin'`, `'oct'`, or `'hex'`
|
48
48
|
* values for `notation` option. When this option is defined the value
|
@@ -50,7 +50,7 @@ export var createFormat = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
50
50
|
* size and the size suffix is appended to the output.
|
51
51
|
* For example `format(-1, {notation: 'hex', wordSize: 8}) === '0xffi8'`.
|
52
52
|
* Default value is undefined.
|
53
|
-
* - `precision: number`
|
53
|
+
* - `precision: number | BigNumber`
|
54
54
|
* Limit the number of digits of the formatted value.
|
55
55
|
* For regular numbers, must be a number between `0` and `16`.
|
56
56
|
* For bignumbers, the maximum depends on the configured precision,
|
@@ -126,6 +126,6 @@ export var createFormat = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
126
126
|
*/
|
127
127
|
return typed(name, {
|
128
128
|
any: formatString,
|
129
|
-
'any, Object | function | number': formatString
|
129
|
+
'any, Object | function | number | BigNumber': formatString
|
130
130
|
});
|
131
131
|
});
|
@@ -18,8 +18,8 @@ var dependencies = ['typed', 'format'];
|
|
18
18
|
* oct
|
19
19
|
* bin
|
20
20
|
*
|
21
|
-
* @param {number} value Value to be stringified
|
22
|
-
* @param {number} wordSize Optional word size (see `format`)
|
21
|
+
* @param {number | BigNumber} value Value to be stringified
|
22
|
+
* @param {number | BigNumber} wordSize Optional word size (see `format`)
|
23
23
|
* @return {string} The formatted value
|
24
24
|
*/
|
25
25
|
export var createHex = factory(name, dependencies, _ref => {
|
@@ -33,7 +33,7 @@ export var createHex = factory(name, dependencies, _ref => {
|
|
33
33
|
notation: 'hex'
|
34
34
|
});
|
35
35
|
},
|
36
|
-
'number | BigNumber, number': function
|
36
|
+
'number | BigNumber, number | BigNumber': function numberBigNumberNumberBigNumber(n, wordSize) {
|
37
37
|
return format(n, {
|
38
38
|
notation: 'hex',
|
39
39
|
wordSize
|
@@ -19,8 +19,8 @@ var dependencies = ['typed', 'format'];
|
|
19
19
|
* bin
|
20
20
|
* hex
|
21
21
|
*
|
22
|
-
* @param {number} value Value to be stringified
|
23
|
-
* @param {number} wordSize Optional word size (see `format`)
|
22
|
+
* @param {number | BigNumber} value Value to be stringified
|
23
|
+
* @param {number | BigNumber} wordSize Optional word size (see `format`)
|
24
24
|
* @return {string} The formatted value
|
25
25
|
*/
|
26
26
|
|
@@ -35,7 +35,7 @@ export var createOct = factory(name, dependencies, _ref => {
|
|
35
35
|
notation: 'oct'
|
36
36
|
});
|
37
37
|
},
|
38
|
-
'number | BigNumber, number': function
|
38
|
+
'number | BigNumber, number | BigNumber': function numberBigNumberNumberBigNumber(n, wordSize) {
|
39
39
|
return format(n, {
|
40
40
|
notation: 'oct',
|
41
41
|
wordSize
|
@@ -44,7 +44,7 @@ export var createAvogadro = /* #__PURE__ */unitFactory('avogadro', '6.02214076e2
|
|
44
44
|
export var createBoltzmann = /* #__PURE__ */unitFactory('boltzmann', '1.380649e-23', 'J K^-1');
|
45
45
|
export var createFaraday = /* #__PURE__ */unitFactory('faraday', '96485.33212331001', 'C mol^-1');
|
46
46
|
export var createFirstRadiation = /* #__PURE__ */unitFactory('firstRadiation', '3.7417718521927573e-16', 'W m^2');
|
47
|
-
//
|
47
|
+
// TODO spectralRadiance = 1.1910429723971881e-16 W m^2 sr^-1
|
48
48
|
export var createLoschmidt = /* #__PURE__ */unitFactory('loschmidt', '2.686780111798444e25', 'm^-3');
|
49
49
|
export var createGasConstant = /* #__PURE__ */unitFactory('gasConstant', '8.31446261815324', 'J K^-1 mol^-1');
|
50
50
|
export var createMolarPlanckConstant = /* #__PURE__ */unitFactory('molarPlanckConstant', '3.990312712893431e-10', 'J s mol^-1');
|
@@ -1,4 +1,5 @@
|
|
1
|
-
import {
|
1
|
+
import { isBigNumber, isNumber } from '../is.js';
|
2
|
+
import { isInteger, normalizeFormatOptions } from '../number.js';
|
2
3
|
|
3
4
|
/**
|
4
5
|
* Formats a BigNumber in a given base
|
@@ -119,7 +120,7 @@ function formatBigNumberToBase(n, base, size) {
|
|
119
120
|
* format(12400, {notation: 'engineering'}) // returns '12.400e+3'
|
120
121
|
*
|
121
122
|
* @param {BigNumber} value
|
122
|
-
* @param {Object | Function | number} [options]
|
123
|
+
* @param {Object | Function | number | BigNumber} [options]
|
123
124
|
* @return {string} str The formatted value
|
124
125
|
*/
|
125
126
|
export function format(value, options) {
|
@@ -132,30 +133,11 @@ export function format(value, options) {
|
|
132
133
|
if (!value.isFinite()) {
|
133
134
|
return value.isNaN() ? 'NaN' : value.gt(0) ? 'Infinity' : '-Infinity';
|
134
135
|
}
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
if (options !== undefined) {
|
141
|
-
// determine notation from options
|
142
|
-
if (options.notation) {
|
143
|
-
notation = options.notation;
|
144
|
-
}
|
145
|
-
|
146
|
-
// determine precision from options
|
147
|
-
if (typeof options === 'number') {
|
148
|
-
precision = options;
|
149
|
-
} else if (options.precision !== undefined) {
|
150
|
-
precision = options.precision;
|
151
|
-
}
|
152
|
-
if (options.wordSize) {
|
153
|
-
wordSize = options.wordSize;
|
154
|
-
if (typeof wordSize !== 'number') {
|
155
|
-
throw new Error('Option "wordSize" must be a number');
|
156
|
-
}
|
157
|
-
}
|
158
|
-
}
|
136
|
+
var {
|
137
|
+
notation,
|
138
|
+
precision,
|
139
|
+
wordSize
|
140
|
+
} = normalizeFormatOptions(options);
|
159
141
|
|
160
142
|
// handle the various notations
|
161
143
|
switch (notation) {
|
@@ -175,8 +157,8 @@ export function format(value, options) {
|
|
175
157
|
{
|
176
158
|
// determine lower and upper bound for exponential notation.
|
177
159
|
// TODO: implement support for upper and lower to be BigNumbers themselves
|
178
|
-
var lowerExp = options
|
179
|
-
var upperExp = options
|
160
|
+
var lowerExp = _toNumberOrDefault(options === null || options === void 0 ? void 0 : options.lowerExp, -3);
|
161
|
+
var upperExp = _toNumberOrDefault(options === null || options === void 0 ? void 0 : options.upperExp, 5);
|
180
162
|
|
181
163
|
// handle special case zero
|
182
164
|
if (value.isZero()) return '0';
|
@@ -249,4 +231,13 @@ export function toExponential(value, precision) {
|
|
249
231
|
*/
|
250
232
|
export function toFixed(value, precision) {
|
251
233
|
return value.toFixed(precision);
|
234
|
+
}
|
235
|
+
function _toNumberOrDefault(value, defaultValue) {
|
236
|
+
if (isNumber(value)) {
|
237
|
+
return value;
|
238
|
+
} else if (isBigNumber(value)) {
|
239
|
+
return value.toNumber();
|
240
|
+
} else {
|
241
|
+
return defaultValue;
|
242
|
+
}
|
252
243
|
}
|
package/lib/esm/utils/number.js
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import { isNumber } from './is.js';
|
1
|
+
import { isBigNumber, isNumber, isObject } from './is.js';
|
2
2
|
|
3
3
|
/**
|
4
4
|
* @typedef {{sign: '+' | '-' | '', coefficients: number[], exponent: number}} SplitValue
|
@@ -21,7 +21,7 @@ export function isInteger(value) {
|
|
21
21
|
* @param {number} x
|
22
22
|
* @returns {number}
|
23
23
|
*/
|
24
|
-
export var sign =
|
24
|
+
export var sign = Math.sign || function (x) {
|
25
25
|
if (x > 0) {
|
26
26
|
return 1;
|
27
27
|
} else if (x < 0) {
|
@@ -36,7 +36,7 @@ export var sign = /* #__PURE__ */Math.sign || function (x) {
|
|
36
36
|
* @param {number} x
|
37
37
|
* @returns {number}
|
38
38
|
*/
|
39
|
-
export var log2 =
|
39
|
+
export var log2 = Math.log2 || function log2(x) {
|
40
40
|
return Math.log(x) / Math.LN2;
|
41
41
|
};
|
42
42
|
|
@@ -45,7 +45,7 @@ export var log2 = /* #__PURE__ */Math.log2 || function log2(x) {
|
|
45
45
|
* @param {number} x
|
46
46
|
* @returns {number}
|
47
47
|
*/
|
48
|
-
export var log10 =
|
48
|
+
export var log10 = Math.log10 || function log10(x) {
|
49
49
|
return Math.log(x) / Math.LN10;
|
50
50
|
};
|
51
51
|
|
@@ -54,7 +54,7 @@ export var log10 = /* #__PURE__ */Math.log10 || function log10(x) {
|
|
54
54
|
* @param {number} x
|
55
55
|
* @returns {number}
|
56
56
|
*/
|
57
|
-
export var log1p =
|
57
|
+
export var log1p = Math.log1p || function (x) {
|
58
58
|
return Math.log(x + 1);
|
59
59
|
};
|
60
60
|
|
@@ -67,7 +67,7 @@ export var log1p = /* #__PURE__ */Math.log1p || function (x) {
|
|
67
67
|
* @param {number} x
|
68
68
|
* @returns {number} Returns the cubic root of x
|
69
69
|
*/
|
70
|
-
export var cbrt =
|
70
|
+
export var cbrt = Math.cbrt || function cbrt(x) {
|
71
71
|
if (x === 0) {
|
72
72
|
return x;
|
73
73
|
}
|
@@ -91,7 +91,7 @@ export var cbrt = /* #__PURE__ */Math.cbrt || function cbrt(x) {
|
|
91
91
|
* @param {number} x
|
92
92
|
* @return {number} res
|
93
93
|
*/
|
94
|
-
export var expm1 =
|
94
|
+
export var expm1 = Math.expm1 || function expm1(x) {
|
95
95
|
return x >= 2e-4 || x <= -2e-4 ? Math.exp(x) - 1 : x + x * x / 2 + x * x * x / 6;
|
96
96
|
};
|
97
97
|
|
@@ -234,30 +234,11 @@ export function format(value, options) {
|
|
234
234
|
} else if (isNaN(value)) {
|
235
235
|
return 'NaN';
|
236
236
|
}
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
if (options) {
|
243
|
-
// determine notation from options
|
244
|
-
if (options.notation) {
|
245
|
-
notation = options.notation;
|
246
|
-
}
|
247
|
-
|
248
|
-
// determine precision from options
|
249
|
-
if (isNumber(options)) {
|
250
|
-
precision = options;
|
251
|
-
} else if (isNumber(options.precision)) {
|
252
|
-
precision = options.precision;
|
253
|
-
}
|
254
|
-
if (options.wordSize) {
|
255
|
-
wordSize = options.wordSize;
|
256
|
-
if (typeof wordSize !== 'number') {
|
257
|
-
throw new Error('Option "wordSize" must be a number');
|
258
|
-
}
|
259
|
-
}
|
260
|
-
}
|
237
|
+
var {
|
238
|
+
notation,
|
239
|
+
precision,
|
240
|
+
wordSize
|
241
|
+
} = normalizeFormatOptions(options);
|
261
242
|
|
262
243
|
// handle the various notations
|
263
244
|
switch (notation) {
|
@@ -275,7 +256,7 @@ export function format(value, options) {
|
|
275
256
|
return formatNumberToBase(value, 16, wordSize);
|
276
257
|
case 'auto':
|
277
258
|
// remove trailing zeros after the decimal point
|
278
|
-
return toPrecision(value, precision, options
|
259
|
+
return toPrecision(value, precision, options).replace(/((\.\d*?)(0+))($|e)/, function () {
|
279
260
|
var digits = arguments[2];
|
280
261
|
var e = arguments[4];
|
281
262
|
return digits !== '.' ? digits + e : e;
|
@@ -285,6 +266,49 @@ export function format(value, options) {
|
|
285
266
|
}
|
286
267
|
}
|
287
268
|
|
269
|
+
/**
|
270
|
+
* Normalize format options into an object:
|
271
|
+
* {
|
272
|
+
* notation: string,
|
273
|
+
* precision: number | undefined,
|
274
|
+
* wordSize: number | undefined
|
275
|
+
* }
|
276
|
+
*/
|
277
|
+
export function normalizeFormatOptions(options) {
|
278
|
+
// default values for options
|
279
|
+
var notation = 'auto';
|
280
|
+
var precision;
|
281
|
+
var wordSize;
|
282
|
+
if (options !== undefined) {
|
283
|
+
if (isNumber(options)) {
|
284
|
+
precision = options;
|
285
|
+
} else if (isBigNumber(options)) {
|
286
|
+
precision = options.toNumber();
|
287
|
+
} else if (isObject(options)) {
|
288
|
+
if (options.precision !== undefined) {
|
289
|
+
precision = _toNumberOrThrow(options.precision, () => {
|
290
|
+
throw new Error('Option "precision" must be a number or BigNumber');
|
291
|
+
});
|
292
|
+
}
|
293
|
+
if (options.wordSize !== undefined) {
|
294
|
+
wordSize = _toNumberOrThrow(options.wordSize, () => {
|
295
|
+
throw new Error('Option "wordSize" must be a number or BigNumber');
|
296
|
+
});
|
297
|
+
}
|
298
|
+
if (options.notation) {
|
299
|
+
notation = options.notation;
|
300
|
+
}
|
301
|
+
} else {
|
302
|
+
throw new Error('Unsupported type of options, number, BigNumber, or object expected');
|
303
|
+
}
|
304
|
+
}
|
305
|
+
return {
|
306
|
+
notation,
|
307
|
+
precision,
|
308
|
+
wordSize
|
309
|
+
};
|
310
|
+
}
|
311
|
+
|
288
312
|
/**
|
289
313
|
* Split a number into sign, coefficients, and exponent
|
290
314
|
* @param {number | string} value
|
@@ -448,8 +472,8 @@ export function toPrecision(value, precision, options) {
|
|
448
472
|
}
|
449
473
|
|
450
474
|
// determine lower and upper bound for exponential notation.
|
451
|
-
var lowerExp = options
|
452
|
-
var upperExp = options
|
475
|
+
var lowerExp = _toNumberOrDefault(options === null || options === void 0 ? void 0 : options.lowerExp, -3);
|
476
|
+
var upperExp = _toNumberOrDefault(options === null || options === void 0 ? void 0 : options.upperExp, 5);
|
453
477
|
var split = splitNumber(value);
|
454
478
|
var rounded = precision ? roundDigits(split, precision) : split;
|
455
479
|
if (rounded.exponent < lowerExp || rounded.exponent >= upperExp) {
|
@@ -654,4 +678,22 @@ export function copysign(x, y) {
|
|
654
678
|
var signx = x > 0 ? true : x < 0 ? false : 1 / x === Infinity;
|
655
679
|
var signy = y > 0 ? true : y < 0 ? false : 1 / y === Infinity;
|
656
680
|
return signx ^ signy ? -x : x;
|
681
|
+
}
|
682
|
+
function _toNumberOrThrow(value, onError) {
|
683
|
+
if (isNumber(value)) {
|
684
|
+
return value;
|
685
|
+
} else if (isBigNumber(value)) {
|
686
|
+
return value.toNumber();
|
687
|
+
} else {
|
688
|
+
onError();
|
689
|
+
}
|
690
|
+
}
|
691
|
+
function _toNumberOrDefault(value, defaultValue) {
|
692
|
+
if (isNumber(value)) {
|
693
|
+
return value;
|
694
|
+
} else if (isBigNumber(value)) {
|
695
|
+
return value.toNumber();
|
696
|
+
} else {
|
697
|
+
return defaultValue;
|
698
|
+
}
|
657
699
|
}
|
package/lib/esm/version.js
CHANGED
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "mathjs",
|
3
|
-
"version": "12.3.
|
3
|
+
"version": "12.3.1",
|
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",
|
@@ -25,7 +25,7 @@
|
|
25
25
|
"unit"
|
26
26
|
],
|
27
27
|
"dependencies": {
|
28
|
-
"@babel/runtime": "^7.23.
|
28
|
+
"@babel/runtime": "^7.23.9",
|
29
29
|
"complex.js": "^2.1.1",
|
30
30
|
"decimal.js": "^10.4.3",
|
31
31
|
"escape-latex": "^1.2.0",
|
@@ -36,21 +36,21 @@
|
|
36
36
|
"typed-function": "^4.1.1"
|
37
37
|
},
|
38
38
|
"devDependencies": {
|
39
|
-
"@babel/core": "7.23.
|
39
|
+
"@babel/core": "7.23.9",
|
40
40
|
"@babel/plugin-transform-object-assign": "7.23.3",
|
41
|
-
"@babel/plugin-transform-runtime": "7.23.
|
42
|
-
"@babel/preset-env": "7.23.
|
41
|
+
"@babel/plugin-transform-runtime": "7.23.9",
|
42
|
+
"@babel/preset-env": "7.23.9",
|
43
43
|
"@babel/register": "7.23.7",
|
44
44
|
"@types/assert": "1.5.10",
|
45
45
|
"@types/mocha": "10.0.6",
|
46
|
-
"@typescript-eslint/eslint-plugin": "6.
|
47
|
-
"@typescript-eslint/parser": "6.
|
46
|
+
"@typescript-eslint/eslint-plugin": "6.20.0",
|
47
|
+
"@typescript-eslint/parser": "6.20.0",
|
48
48
|
"assert": "2.1.0",
|
49
49
|
"babel-loader": "9.1.3",
|
50
50
|
"benchmark": "2.1.4",
|
51
|
-
"c8": "9.
|
51
|
+
"c8": "9.1.0",
|
52
52
|
"codecov": "3.8.3",
|
53
|
-
"core-js": "3.35.
|
53
|
+
"core-js": "3.35.1",
|
54
54
|
"del": "6.1.1",
|
55
55
|
"dtslint": "4.2.1",
|
56
56
|
"eslint": "8.56.0",
|
@@ -85,12 +85,12 @@
|
|
85
85
|
"ndarray-pack": "1.2.1",
|
86
86
|
"numericjs": "1.2.6",
|
87
87
|
"pad-right": "0.2.2",
|
88
|
-
"prettier": "3.
|
88
|
+
"prettier": "3.2.4",
|
89
89
|
"process": "0.11.10",
|
90
90
|
"sylvester": "0.0.21",
|
91
91
|
"ts-node": "10.9.2",
|
92
92
|
"typescript": "5.3.3",
|
93
|
-
"webpack": "5.
|
93
|
+
"webpack": "5.90.0",
|
94
94
|
"zeros": "1.0.0"
|
95
95
|
},
|
96
96
|
"type": "module",
|