mathjs 7.5.1 → 7.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/HISTORY.md +7 -0
  2. package/dist/math.js +123 -29
  3. package/dist/math.min.js +3 -3
  4. package/dist/math.min.map +1 -1
  5. package/docs/datatypes/units.md +21 -0
  6. package/docs/reference/functions/rotate.md +47 -0
  7. package/docs/reference/functions/rotationMatrix.md +1 -1
  8. package/docs/reference/functions.md +1 -0
  9. package/es/entry/dependenciesAny/dependenciesRotate.generated.js +14 -0
  10. package/es/entry/dependenciesAny.generated.js +1 -0
  11. package/es/entry/impureFunctionsAny.generated.js +24 -23
  12. package/es/entry/pureFunctionsAny.generated.js +10 -5
  13. package/es/expression/embeddedDocs/embeddedDocs.js +2 -0
  14. package/es/expression/embeddedDocs/function/matrix/rotate.js +8 -0
  15. package/es/expression/node/FunctionNode.js +1 -1
  16. package/es/expression/node/Node.js +2 -2
  17. package/es/factoriesAny.js +1 -0
  18. package/es/function/matrix/rotate.js +78 -0
  19. package/es/function/matrix/rotationMatrix.js +5 -4
  20. package/es/function/special/erf.js +1 -0
  21. package/es/plain/number/constants.js +1 -1
  22. package/es/plain/number/probability.js +1 -0
  23. package/es/type/unit/Unit.js +17 -18
  24. package/es/version.js +1 -1
  25. package/examples/bignumbers.js +2 -0
  26. package/lib/entry/dependenciesAny/dependenciesRotate.generated.js +26 -0
  27. package/lib/entry/dependenciesAny.generated.js +8 -0
  28. package/lib/entry/impureFunctionsAny.generated.js +27 -26
  29. package/lib/entry/mainAny.js +5 -0
  30. package/lib/entry/mainNumber.js +5 -0
  31. package/lib/entry/pureFunctionsAny.generated.js +14 -8
  32. package/lib/expression/embeddedDocs/embeddedDocs.js +3 -0
  33. package/lib/expression/embeddedDocs/function/matrix/rotate.js +15 -0
  34. package/lib/expression/node/FunctionNode.js +1 -1
  35. package/lib/expression/node/Node.js +2 -2
  36. package/lib/factoriesAny.js +8 -0
  37. package/lib/function/matrix/rotate.js +88 -0
  38. package/lib/function/matrix/rotationMatrix.js +5 -4
  39. package/lib/function/special/erf.js +1 -0
  40. package/lib/header.js +2 -2
  41. package/lib/plain/bignumber/index.js +1 -0
  42. package/lib/plain/number/constants.js +2 -1
  43. package/lib/plain/number/index.js +9 -0
  44. package/lib/plain/number/probability.js +1 -0
  45. package/lib/type/unit/Unit.js +17 -18
  46. package/lib/version.js +1 -1
  47. package/package.json +9 -9
  48. package/src/core/function/import.js +2 -2
  49. package/src/entry/dependenciesAny/dependenciesRotate.generated.js +15 -0
  50. package/src/entry/dependenciesAny.generated.js +1 -0
  51. package/src/entry/impureFunctionsAny.generated.js +20 -18
  52. package/src/entry/pureFunctionsAny.generated.js +7 -5
  53. package/src/expression/embeddedDocs/embeddedDocs.js +2 -0
  54. package/src/expression/embeddedDocs/function/matrix/rotate.js +19 -0
  55. package/src/expression/node/FunctionNode.js +1 -1
  56. package/src/expression/node/Node.js +2 -1
  57. package/src/factoriesAny.js +1 -0
  58. package/src/function/matrix/rotate.js +79 -0
  59. package/src/function/matrix/rotationMatrix.js +5 -4
  60. package/src/function/special/erf.js +2 -0
  61. package/src/plain/number/constants.js +1 -1
  62. package/src/plain/number/probability.js +2 -0
  63. package/src/type/unit/Unit.js +18 -21
  64. package/src/version.js +1 -1
@@ -139,6 +139,7 @@ math.createUnit('mile', '1609.347218694', {override: true}})
139
139
  ```
140
140
  Base units created without specifying a definition cannot be overridden.
141
141
 
142
+ ### Create several units at once
142
143
  Multiple units can defined using a single call to `createUnit` by passing an object map as the first argument, where each key in the object is the name of a new unit and the value is either a string defining the unit, or an object with the configuration properties listed above. If the value is an empty string or an object lacking a definition property, a new base unit is created.
143
144
 
144
145
  For example:
@@ -169,6 +170,26 @@ math.evaluate('45 mile/hour to createUnit("knot", "0.514444m/s")')
169
170
  // 39.103964668651976 knot
170
171
  ```
171
172
 
173
+ ### Support of custom characters in unit names
174
+ Per default, the name of a new unit:
175
+ - should start by a latin (A-Z or a-z) character
176
+ - should contain only numeric (0-9) or latin characters
177
+
178
+ It is possible to allow the usage of special characters (such as Greek alphabet, cyrillic alphabet, any Unicode symbols, etc.) by overriding the `Unit.isValidAlpha` static method. For example:
179
+ ```js
180
+ const isAlphaOriginal = math.Unit.isValidAlpha
181
+ const isGreekLowercaseChar = function (c) {
182
+ const charCode = c.charCodeAt(0)
183
+ return charCode > 944 && charCode < 970
184
+ }
185
+ math.Unit.isValidAlpha = function (c) {
186
+ return isAlphaOriginal(c) || isGreekLowercaseChar(c)
187
+ }
188
+
189
+ math.createUnit('θ', '1 rad')
190
+ math.evaluate('1θ + 3 deg').toNumber('deg') // 60.29577951308232
191
+ ```
192
+
172
193
  ## API
173
194
  A `Unit` object contains the following functions:
174
195
 
@@ -0,0 +1,47 @@
1
+ <!-- Note: This file is automatically generated from source code comments. Changes made in this file will be overridden. -->
2
+
3
+ # Function rotate
4
+
5
+ Rotate a vector of size 1x2 counter-clockwise by a given angle
6
+ Rotate a vector of size 1x3 counter-clockwise by a given angle around the given axis
7
+
8
+
9
+ ## Syntax
10
+
11
+ ```js
12
+ math.rotate(w, theta)
13
+ math.rotate(w, theta, v)
14
+ ```
15
+
16
+ ### Parameters
17
+
18
+ Parameter | Type | Description
19
+ --------- | ---- | -----------
20
+ `w` | Array &#124; Matrix | Vector to rotate
21
+ `theta` | number &#124; BigNumber &#124; Complex &#124; Unit | Rotation angle
22
+ `v` | Array &#124; Matrix | Rotation axis
23
+
24
+ ### Returns
25
+
26
+ Type | Description
27
+ ---- | -----------
28
+ Array &#124; Matrix | Multiplication of the rotation matrix and w
29
+
30
+
31
+ ## Examples
32
+
33
+ ```js
34
+ math.rotate([11, 12], math.pi / 2) // returns matrix([-12, 11])
35
+ math.rotate(matrix([11, 12]), math.pi / 2) // returns matrix([-12, 11])
36
+
37
+ math.rotate([1, 0, 0], unit('90deg'), [0, 0, 1]) // returns matrix([0, 1, 0])
38
+ math.rotate(matrix([1, 0, 0]), unit('90deg'), [0, 0, 1]) // returns matrix([0, 1, 0])
39
+
40
+ math.rotate([1, 0], math.complex(1 + i)) // returns matrix([cos(1 + i) - sin(1 + i), sin(1 + i) + cos(1 + i)])
41
+ ```
42
+
43
+
44
+ ## See also
45
+
46
+ [matrix](matrix.md),
47
+ [rotationMatrix](rotationMatrix.md)
@@ -34,7 +34,7 @@ Array &#124; Matrix | Rotation matrix
34
34
 
35
35
  ```js
36
36
  math.rotationMatrix(math.pi / 2) // returns [[0, -1], [1, 0]]
37
- math.rotationMatrix(math.bignumber(45)) // returns [[ bignumber(1 / sqrt(2)), - bignumber(1 / sqrt(2))], [ bignumber(1 / sqrt(2)), bignumber(1 / sqrt(2))]]
37
+ math.rotationMatrix(math.bignumber(1)) // returns [[bignumber(cos(1)), bignumber(-sin(1))], [bignumber(sin(1)), bignumber(cos(1))]]
38
38
  math.rotationMatrix(math.complex(1 + i)) // returns [[cos(1 + i), -sin(1 + i)], [sin(1 + i), cos(1 + i)]]
39
39
  math.rotationMatrix(math.unit('1rad')) // returns [[cos(1), -sin(1)], [sin(1), cos(1)]]
40
40
 
@@ -165,6 +165,7 @@ Function | Description
165
165
  [math.range(start,&nbsp;end&nbsp;[,&nbsp;step])](functions/range.md) | Create an array from a range.
166
166
  [math.reshape(x,&nbsp;sizes)](functions/reshape.md) | Reshape a multi dimensional array to fit the specified dimensions.
167
167
  [math.resize(x,&nbsp;size&nbsp;[,&nbsp;defaultValue])](functions/resize.md) | Resize a matrix.
168
+ [math.rotate(w,&nbsp;theta)](functions/rotate.md) | Rotate a vector of size 1x2 counter-clockwise by a given angle Rotate a vector of size 1x3 counter-clockwise by a given angle around the given axis.
168
169
  [math.rotationMatrix(theta)](functions/rotationMatrix.md) | Create a 2-dimensional counter-clockwise rotation matrix (2x2) for a given angle (expressed in radians).
169
170
  [math.row(value,&nbsp;index)](functions/row.md) | Return a row from a Matrix.
170
171
  [math.size(x)](functions/size.md) | Calculate the size of a matrix or scalar.
@@ -0,0 +1,14 @@
1
+ /**
2
+ * THIS FILE IS AUTO-GENERATED
3
+ * DON'T MAKE CHANGES HERE
4
+ */
5
+ import { multiplyDependencies } from './dependenciesMultiply.generated';
6
+ import { rotationMatrixDependencies } from './dependenciesRotationMatrix.generated';
7
+ import { typedDependencies } from './dependenciesTyped.generated';
8
+ import { createRotate } from '../../factoriesAny.js';
9
+ export var rotateDependencies = {
10
+ multiplyDependencies: multiplyDependencies,
11
+ rotationMatrixDependencies: rotationMatrixDependencies,
12
+ typedDependencies: typedDependencies,
13
+ createRotate: createRotate
14
+ };
@@ -82,6 +82,7 @@ export { onesDependencies } from './dependenciesAny/dependenciesOnes.generated';
82
82
  export { rangeDependencies } from './dependenciesAny/dependenciesRange.generated';
83
83
  export { reshapeDependencies } from './dependenciesAny/dependenciesReshape.generated';
84
84
  export { resizeDependencies } from './dependenciesAny/dependenciesResize.generated';
85
+ export { rotateDependencies } from './dependenciesAny/dependenciesRotate.generated';
85
86
  export { rotationMatrixDependencies } from './dependenciesAny/dependenciesRotationMatrix.generated';
86
87
  export { rowDependencies } from './dependenciesAny/dependenciesRow.generated';
87
88
  export { sizeDependencies } from './dependenciesAny/dependenciesSize.generated';
@@ -5,9 +5,9 @@ function _extends() { _extends = Object.assign || function (target) { for (var i
5
5
  * DON'T MAKE CHANGES HERE
6
6
  */
7
7
  import { config } from './configReadonly';
8
- import { createNode, createArrayNode, createBlockNode, createConstantNode, createObjectNode, createParenthesisNode, createRelationalNode, createChainClass, createReviver, createConditionalNode, createOperatorNode, createRangeNode, createFunctionAssignmentNode, createChain, createAccessorNode, createIndexNode, createAssignmentNode, createSymbolNode, createFunctionNode, createParse, createEvaluate, createHelpClass, createSimplify, createRationalize, createCompile, createHelp, createParserClass, createDerivative, createParser, createApplyTransform, createFilterTransform, createMapTransform, createForEachTransform, createSubsetTransform, createIndexTransform, createConcatTransform, createMaxTransform, createMinTransform, createSumTransform, createColumnTransform, createRangeTransform, createDiffTransform, createRowTransform, createMeanTransform, createVarianceTransform, createStdTransform } from '../factoriesAny';
8
+ import { createNode, createArrayNode, createBlockNode, createConstantNode, createObjectNode, createParenthesisNode, createRelationalNode, createChainClass, createReviver, createConditionalNode, createOperatorNode, createRangeNode, createFunctionAssignmentNode, createChain, createAccessorNode, createIndexNode, createAssignmentNode, createSymbolNode, createFunctionNode, createParse, createEvaluate, createHelpClass, createParserClass, createHelp, createCompile, createSimplify, createRationalize, createParser, createDerivative, createApplyTransform, createFilterTransform, createMapTransform, createForEachTransform, createSubsetTransform, createIndexTransform, createConcatTransform, createMaxTransform, createMinTransform, createSumTransform, createColumnTransform, createRangeTransform, createDiffTransform, createRowTransform, createMeanTransform, createVarianceTransform, createStdTransform } from '../factoriesAny';
9
9
  import { ResultSet, Complex, Range, _false, _null, _true, BigNumber, Matrix, replacer, i, LN10, LOG10E, _NaN, pi, SQRT1_2 // eslint-disable-line camelcase
10
- , tau, efimovFactor, fineStructure, sackurTetrode, weakMixingAngle, Fraction, e, _Infinity, LOG2E, version, DenseMatrix, phi, typed, isInteger, isNumeric, isPositive, isNaN, equalScalar, number, boolean as _boolean, complex, splitUnit, unaryPlus, apply, cube, expm1, log10, multiplyScalar, sign, square, bitNot, arg, im, not, filter, forEach, map, erf, format, oct, print, isPrime, acos, acot, acsc, asec, asin, atan, atanh, cosh, coth, csch, sech, sinh, tanh, combinations, pickRandom, randomInt, LN2, clone, hasNumericValue, typeOf, string, fraction, unaryMinus, addScalar, exp, log2, sqrt, conj, getMatrixDataType, mode, bin, acosh, acsch, asinh, cos, csc, sin, combinationsWithRep, random, SQRT2, isNegative, SparseMatrix, matrix, cbrt, gcd, mod, nthRoot, xgcd, bitAnd, bitXor, or, concat, diag, identity, ones, reshape, size, subset, zeros, hex, round, leftShift, rightLogShift, compare, compareText, smaller, larger, unequal, ImmutableDenseMatrix, FibonacciHeap, sparse, acoth, atan2, sec, add, dot, composition, isZero, abs, floor, multiply, dotMultiply, re, flatten, resize, squeeze, to, pow, dotPow, rightArithShift, compareNatural, equalText, largerEq, partitionSelect, Index, asech, tan, setDifference, setIntersect, setMultiplicity, setSize, trace, quantileSeq, gamma, bignumber, lcm, bitOr, kron, transpose, numeric, and, smallerEq, sort, min, cot, setDistinct, setPowerset, index, sum, factorial, permutations, ceil, subtract, cross, range, row, prod, equal, max, setCartesian, setSymDifference, fix, column, ctranspose, deepEqual, setIsSubset, xor, divideScalar, nthRoots, lsolve, lsolveAll, Spa, setUnion, lup, slu, det, distance, stirlingS2, catalan, diff, log, dotDivide, usolveAll, hypot, qr, inv, expm, divide, mean, variance, kldivergence, bellNumbers, log1p, Unit, createUnit, eigs, intersect, std, atomicMass, bohrMagneton, boltzmann, conductanceQuantum, deuteronMass, electronMass, faraday, firstRadiation, gravitationConstant, hartreeEnergy, klitzing, magneticConstant, molarMass, molarPlanckConstant, neutronMass, planckCharge, planckLength, planckTemperature, protonMass, reducedPlanckConstant, secondRadiation, stefanBoltzmann, vacuumImpedance, usolve, norm, lusolve, sqrtm, multinomial, avogadro, classicalElectronRadius, electricConstant, fermiCoupling, gravity, loschmidt, molarMassC12, nuclearMagneton, planckMass, quantumOfCirculation, speedOfLight, wienDisplacement, rotationMatrix, median, bohrRadius, elementaryCharge, inverseConductanceQuantum, molarVolume, planckTime, thomsonCrossSection, unit, mad, coulomb, magneticFluxQuantum, rydberg, planckConstant, gasConstant } from './pureFunctionsAny.generated';
10
+ , tau, efimovFactor, fineStructure, sackurTetrode, weakMixingAngle, Fraction, e, _Infinity, LOG2E, version, DenseMatrix, phi, typed, isInteger, isNumeric, isPositive, isNaN, equalScalar, number, boolean as _boolean, complex, splitUnit, unaryPlus, apply, cube, expm1, log10, multiplyScalar, sign, square, bitNot, arg, im, not, filter, forEach, map, erf, format, oct, print, isPrime, acos, acot, acsc, asec, asin, atan, atanh, cosh, coth, csch, sech, sinh, tanh, combinations, pickRandom, randomInt, LN2, clone, hasNumericValue, typeOf, string, fraction, unaryMinus, addScalar, exp, log2, sqrt, conj, getMatrixDataType, mode, bin, acosh, acsch, asinh, cos, csc, sin, combinationsWithRep, random, SQRT2, isNegative, SparseMatrix, matrix, cbrt, gcd, mod, nthRoot, xgcd, bitAnd, bitXor, or, concat, diag, identity, ones, reshape, size, subset, zeros, hex, round, leftShift, rightLogShift, compare, compareText, smaller, larger, unequal, ImmutableDenseMatrix, FibonacciHeap, sparse, acoth, atan2, sec, add, dot, composition, isZero, abs, floor, multiply, dotMultiply, re, flatten, resize, squeeze, to, pow, dotPow, rightArithShift, compareNatural, equalText, largerEq, partitionSelect, Index, asech, tan, setDifference, setIntersect, setMultiplicity, setSize, trace, quantileSeq, gamma, bignumber, lcm, bitOr, kron, transpose, numeric, and, smallerEq, sort, min, cot, setDistinct, setPowerset, index, sum, factorial, permutations, ceil, subtract, cross, range, row, prod, equal, max, setCartesian, setSymDifference, fix, column, ctranspose, deepEqual, setIsSubset, xor, divideScalar, nthRoots, lsolve, lsolveAll, Spa, setUnion, lup, slu, det, distance, stirlingS2, catalan, diff, log, dotDivide, usolveAll, hypot, qr, inv, expm, divide, mean, variance, kldivergence, bellNumbers, log1p, Unit, createUnit, eigs, intersect, std, atomicMass, bohrMagneton, boltzmann, conductanceQuantum, deuteronMass, electronMass, faraday, firstRadiation, gravitationConstant, hartreeEnergy, klitzing, magneticConstant, molarMass, molarPlanckConstant, neutronMass, planckCharge, planckLength, planckTemperature, protonMass, reducedPlanckConstant, secondRadiation, stefanBoltzmann, vacuumImpedance, usolve, norm, lusolve, sqrtm, multinomial, avogadro, classicalElectronRadius, electricConstant, fermiCoupling, gravity, loschmidt, molarMassC12, nuclearMagneton, planckMass, quantumOfCirculation, speedOfLight, wienDisplacement, rotationMatrix, median, bohrRadius, elementaryCharge, inverseConductanceQuantum, molarVolume, planckTime, thomsonCrossSection, rotate, mad, coulomb, magneticFluxQuantum, rydberg, unit, gasConstant, planckConstant } from './pureFunctionsAny.generated';
11
11
  var math = {}; // NOT pure!
12
12
 
13
13
  var mathWithTransform = {}; // NOT pure!
@@ -110,6 +110,18 @@ export var evaluate = createEvaluate({
110
110
  export var Help = createHelpClass({
111
111
  parse: parse
112
112
  });
113
+ export var Parser = createParserClass({
114
+ parse: parse
115
+ });
116
+ export var help = createHelp({
117
+ Help: Help,
118
+ mathWithTransform: mathWithTransform,
119
+ typed: typed
120
+ });
121
+ export var compile = createCompile({
122
+ parse: parse,
123
+ typed: typed
124
+ });
113
125
  export var simplify = createSimplify({
114
126
  bignumber: bignumber,
115
127
  fraction: fraction,
@@ -151,18 +163,10 @@ export var rationalize = createRationalize({
151
163
  subtract: subtract,
152
164
  typed: typed
153
165
  });
154
- export var compile = createCompile({
155
- parse: parse,
156
- typed: typed
157
- });
158
- export var help = createHelp({
159
- Help: Help,
160
- mathWithTransform: mathWithTransform,
166
+ export var parser = createParser({
167
+ Parser: Parser,
161
168
  typed: typed
162
169
  });
163
- export var Parser = createParserClass({
164
- parse: parse
165
- });
166
170
  export var derivative = createDerivative({
167
171
  ConstantNode: ConstantNode,
168
172
  FunctionNode: FunctionNode,
@@ -177,10 +181,6 @@ export var derivative = createDerivative({
177
181
  simplify: simplify,
178
182
  typed: typed
179
183
  });
180
- export var parser = createParser({
181
- Parser: Parser,
182
- typed: typed
183
- });
184
184
 
185
185
  _extends(math, {
186
186
  reviver: reviver,
@@ -447,21 +447,22 @@ _extends(math, {
447
447
  molarVolume: molarVolume,
448
448
  planckTime: planckTime,
449
449
  thomsonCrossSection: thomsonCrossSection,
450
- unit: unit,
450
+ rotate: rotate,
451
+ parse: parse,
452
+ evaluate: evaluate,
451
453
  mad: mad,
452
454
  coulomb: coulomb,
453
455
  magneticFluxQuantum: magneticFluxQuantum,
454
456
  rydberg: rydberg,
455
- parse: parse,
456
- evaluate: evaluate,
457
+ unit: unit,
458
+ help: help,
459
+ gasConstant: gasConstant,
460
+ compile: compile,
457
461
  simplify: simplify,
458
462
  rationalize: rationalize,
463
+ parser: parser,
459
464
  planckConstant: planckConstant,
460
- compile: compile,
461
- help: help,
462
- gasConstant: gasConstant,
463
465
  derivative: derivative,
464
- parser: parser,
465
466
  config: config
466
467
  });
467
468
 
@@ -4,7 +4,7 @@
4
4
  */
5
5
  import { config } from './configReadonly';
6
6
  import { createResultSet, createComplexClass, createRangeClass, createFalse, createNull, createTrue, createBigNumberClass, createMatrixClass, createReplacer, createI, createLN10, createLOG10E, createNaN, createPi, createSQRT1_2 // eslint-disable-line camelcase
7
- , createTau, createEfimovFactor, createFineStructure, createSackurTetrode, createWeakMixingAngle, createFractionClass, createE, createInfinity, createLOG2E, createVersion, createDenseMatrixClass, createPhi, createTyped, createIsInteger, createIsNumeric, createIsPositive, createIsNaN, createEqualScalar, createNumber, createBoolean, createComplex, createSplitUnit, createUnaryPlus, createApply, createCube, createExpm1, createLog10, createMultiplyScalar, createSign, createSquare, createBitNot, createArg, createIm, createNot, createFilter, createForEach, createMap, createErf, createFormat, createOct, createPrint, createIsPrime, createAcos, createAcot, createAcsc, createAsec, createAsin, createAtan, createAtanh, createCosh, createCoth, createCsch, createSech, createSinh, createTanh, createCombinations, createPickRandom, createRandomInt, createLN2, createClone, createHasNumericValue, createTypeOf, createString, createFraction, createUnaryMinus, createAddScalar, createExp, createLog2, createSqrt, createConj, createGetMatrixDataType, createMode, createBin, createAcosh, createAcsch, createAsinh, createCos, createCsc, createSin, createCombinationsWithRep, createRandom, createSQRT2, createIsNegative, createSparseMatrixClass, createMatrix, createCbrt, createGcd, createMod, createNthRoot, createXgcd, createBitAnd, createBitXor, createOr, createConcat, createDiag, createIdentity, createOnes, createReshape, createSize, createSubset, createZeros, createHex, createRound, createLeftShift, createRightLogShift, createCompare, createCompareText, createSmaller, createLarger, createUnequal, createImmutableDenseMatrixClass, createFibonacciHeapClass, createSparse, createAcoth, createAtan2, createSec, createAdd, createDot, createComposition, createIsZero, createAbs, createFloor, createMultiply, createDotMultiply, createRe, createFlatten, createResize, createSqueeze, createTo, createPow, createDotPow, createRightArithShift, createCompareNatural, createEqualText, createLargerEq, createPartitionSelect, createIndexClass, createAsech, createTan, createSetDifference, createSetIntersect, createSetMultiplicity, createSetSize, createTrace, createQuantileSeq, createGamma, createBignumber, createLcm, createBitOr, createKron, createTranspose, createNumeric, createAnd, createSmallerEq, createSort, createMin, createCot, createSetDistinct, createSetPowerset, createIndex, createSum, createFactorial, createPermutations, createCeil, createSubtract, createCross, createRange, createRow, createProd, createEqual, createMax, createSetCartesian, createSetSymDifference, createFix, createColumn, createCtranspose, createDeepEqual, createSetIsSubset, createXor, createDivideScalar, createNthRoots, createLsolve, createLsolveAll, createSpaClass, createSetUnion, createLup, createSlu, createDet, createDistance, createStirlingS2, createCatalan, createDiff, createLog, createDotDivide, createUsolveAll, createHypot, createQr, createInv, createExpm, createDivide, createMean, createVariance, createKldivergence, createBellNumbers, createLog1p, createUnitClass, createCreateUnit, createEigs, createIntersect, createStd, createAtomicMass, createBohrMagneton, createBoltzmann, createConductanceQuantum, createDeuteronMass, createElectronMass, createFaraday, createFirstRadiation, createGravitationConstant, createHartreeEnergy, createKlitzing, createMagneticConstant, createMolarMass, createMolarPlanckConstant, createNeutronMass, createPlanckCharge, createPlanckLength, createPlanckTemperature, createProtonMass, createReducedPlanckConstant, createSecondRadiation, createStefanBoltzmann, createVacuumImpedance, createUsolve, createNorm, createLusolve, createSqrtm, createMultinomial, createAvogadro, createClassicalElectronRadius, createElectricConstant, createFermiCoupling, createGravity, createLoschmidt, createMolarMassC12, createNuclearMagneton, createPlanckMass, createQuantumOfCirculation, createSpeedOfLight, createWienDisplacement, createRotationMatrix, createMedian, createBohrRadius, createElementaryCharge, createInverseConductanceQuantum, createMolarVolume, createPlanckTime, createThomsonCrossSection, createUnitFunction, createMad, createCoulomb, createMagneticFluxQuantum, createRydberg, createPlanckConstant, createGasConstant } from '../factoriesAny';
7
+ , createTau, createEfimovFactor, createFineStructure, createSackurTetrode, createWeakMixingAngle, createFractionClass, createE, createInfinity, createLOG2E, createVersion, createDenseMatrixClass, createPhi, createTyped, createIsInteger, createIsNumeric, createIsPositive, createIsNaN, createEqualScalar, createNumber, createBoolean, createComplex, createSplitUnit, createUnaryPlus, createApply, createCube, createExpm1, createLog10, createMultiplyScalar, createSign, createSquare, createBitNot, createArg, createIm, createNot, createFilter, createForEach, createMap, createErf, createFormat, createOct, createPrint, createIsPrime, createAcos, createAcot, createAcsc, createAsec, createAsin, createAtan, createAtanh, createCosh, createCoth, createCsch, createSech, createSinh, createTanh, createCombinations, createPickRandom, createRandomInt, createLN2, createClone, createHasNumericValue, createTypeOf, createString, createFraction, createUnaryMinus, createAddScalar, createExp, createLog2, createSqrt, createConj, createGetMatrixDataType, createMode, createBin, createAcosh, createAcsch, createAsinh, createCos, createCsc, createSin, createCombinationsWithRep, createRandom, createSQRT2, createIsNegative, createSparseMatrixClass, createMatrix, createCbrt, createGcd, createMod, createNthRoot, createXgcd, createBitAnd, createBitXor, createOr, createConcat, createDiag, createIdentity, createOnes, createReshape, createSize, createSubset, createZeros, createHex, createRound, createLeftShift, createRightLogShift, createCompare, createCompareText, createSmaller, createLarger, createUnequal, createImmutableDenseMatrixClass, createFibonacciHeapClass, createSparse, createAcoth, createAtan2, createSec, createAdd, createDot, createComposition, createIsZero, createAbs, createFloor, createMultiply, createDotMultiply, createRe, createFlatten, createResize, createSqueeze, createTo, createPow, createDotPow, createRightArithShift, createCompareNatural, createEqualText, createLargerEq, createPartitionSelect, createIndexClass, createAsech, createTan, createSetDifference, createSetIntersect, createSetMultiplicity, createSetSize, createTrace, createQuantileSeq, createGamma, createBignumber, createLcm, createBitOr, createKron, createTranspose, createNumeric, createAnd, createSmallerEq, createSort, createMin, createCot, createSetDistinct, createSetPowerset, createIndex, createSum, createFactorial, createPermutations, createCeil, createSubtract, createCross, createRange, createRow, createProd, createEqual, createMax, createSetCartesian, createSetSymDifference, createFix, createColumn, createCtranspose, createDeepEqual, createSetIsSubset, createXor, createDivideScalar, createNthRoots, createLsolve, createLsolveAll, createSpaClass, createSetUnion, createLup, createSlu, createDet, createDistance, createStirlingS2, createCatalan, createDiff, createLog, createDotDivide, createUsolveAll, createHypot, createQr, createInv, createExpm, createDivide, createMean, createVariance, createKldivergence, createBellNumbers, createLog1p, createUnitClass, createCreateUnit, createEigs, createIntersect, createStd, createAtomicMass, createBohrMagneton, createBoltzmann, createConductanceQuantum, createDeuteronMass, createElectronMass, createFaraday, createFirstRadiation, createGravitationConstant, createHartreeEnergy, createKlitzing, createMagneticConstant, createMolarMass, createMolarPlanckConstant, createNeutronMass, createPlanckCharge, createPlanckLength, createPlanckTemperature, createProtonMass, createReducedPlanckConstant, createSecondRadiation, createStefanBoltzmann, createVacuumImpedance, createUsolve, createNorm, createLusolve, createSqrtm, createMultinomial, createAvogadro, createClassicalElectronRadius, createElectricConstant, createFermiCoupling, createGravity, createLoschmidt, createMolarMassC12, createNuclearMagneton, createPlanckMass, createQuantumOfCirculation, createSpeedOfLight, createWienDisplacement, createRotationMatrix, createMedian, createBohrRadius, createElementaryCharge, createInverseConductanceQuantum, createMolarVolume, createPlanckTime, createThomsonCrossSection, createRotate, createMad, createCoulomb, createMagneticFluxQuantum, createRydberg, createUnitFunction, createGasConstant, createPlanckConstant } from '../factoriesAny';
8
8
  export var ResultSet = /* #__PURE__ */createResultSet({});
9
9
  export var Complex = /* #__PURE__ */createComplexClass({});
10
10
  export var Range = /* #__PURE__ */createRangeClass({});
@@ -1473,8 +1473,9 @@ export var thomsonCrossSection = /* #__PURE__ */createThomsonCrossSection({
1473
1473
  Unit: Unit,
1474
1474
  config: config
1475
1475
  });
1476
- export var unit = /* #__PURE__ */createUnitFunction({
1477
- Unit: Unit,
1476
+ export var rotate = /* #__PURE__ */createRotate({
1477
+ multiply: multiply,
1478
+ rotationMatrix: rotationMatrix,
1478
1479
  typed: typed
1479
1480
  });
1480
1481
  export var mad = /* #__PURE__ */createMad({
@@ -1499,12 +1500,16 @@ export var rydberg = /* #__PURE__ */createRydberg({
1499
1500
  Unit: Unit,
1500
1501
  config: config
1501
1502
  });
1502
- export var planckConstant = /* #__PURE__ */createPlanckConstant({
1503
+ export var unit = /* #__PURE__ */createUnitFunction({
1504
+ Unit: Unit,
1505
+ typed: typed
1506
+ });
1507
+ export var gasConstant = /* #__PURE__ */createGasConstant({
1503
1508
  BigNumber: BigNumber,
1504
1509
  Unit: Unit,
1505
1510
  config: config
1506
1511
  });
1507
- export var gasConstant = /* #__PURE__ */createGasConstant({
1512
+ export var planckConstant = /* #__PURE__ */createPlanckConstant({
1508
1513
  BigNumber: BigNumber,
1509
1514
  Unit: Unit,
1510
1515
  config: config
@@ -215,6 +215,7 @@ import { numericDocs } from './function/utils/numeric';
215
215
  import { columnDocs } from './function/matrix/column';
216
216
  import { rowDocs } from './function/matrix/row';
217
217
  import { rotationMatrixDocs } from './function/matrix/rotationMatrix';
218
+ import { rotateDocs } from './function/matrix/rotate';
218
219
  export var embeddedDocs = {
219
220
  // construction functions
220
221
  bignumber: bignumberDocs,
@@ -558,6 +559,7 @@ export var embeddedDocs = {
558
559
  range: rangeDocs,
559
560
  resize: resizeDocs,
560
561
  reshape: reshapeDocs,
562
+ rotate: rotateDocs,
561
563
  rotationMatrix: rotationMatrixDocs,
562
564
  row: rowDocs,
563
565
  size: sizeDocs,
@@ -0,0 +1,8 @@
1
+ export var rotateDocs = {
2
+ name: 'rotate',
3
+ category: 'Matrix',
4
+ syntax: ['rotate(w, theta)', 'rotate(w, theta, v)'],
5
+ description: 'Returns a 2-D rotation matrix (2x2) for a given angle (in radians). ' + 'Returns a 2-D rotation matrix (3x3) of a given angle (in radians) around given axis.',
6
+ examples: ['rotate([1, 0], math.pi / 2)', 'rotate(matrix([1, 0]), unit("35deg"))', 'rotate([1, 0, 0], unit("90deg"), [0, 0, 1])', 'rotate(matrix([1, 0, 0]), unit("90deg"), matrix([0, 0, 1]))'],
7
+ seealso: ['matrix', 'rotationMatrix']
8
+ };
@@ -289,7 +289,7 @@ export var createFunctionNode = /* #__PURE__ */factory(name, dependencies, funct
289
289
  var latex = ''; // Match everything of the form ${identifier} or ${identifier[2]} or $$
290
290
  // while submatching identifier and 2 (in the second case)
291
291
 
292
- var regex = new RegExp('\\$(?:\\{([a-z_][a-z_0-9]*)(?:\\[([0-9]+)\\])?\\}|\\$)', 'ig');
292
+ var regex = /\$(?:\{([a-z_][a-z_0-9]*)(?:\[([0-9]+)\])?\}|\$)/gi;
293
293
  var inputPos = 0; // position in the input string
294
294
 
295
295
  var match;
@@ -123,8 +123,8 @@ export var createNode = /* #__PURE__ */factory(name, dependencies, function (_re
123
123
 
124
124
  Node.prototype.traverse = function (callback) {
125
125
  // execute callback for itself
126
- callback(this, null, null); // eslint-disable-line standard/no-callback-literal
127
- // recursively traverse over all childs of a node
126
+ // eslint-disable-next-line
127
+ callback(this, null, null); // recursively traverse over all childs of a node
128
128
 
129
129
  function _traverse(node, callback) {
130
130
  node.forEach(function (child, path, parent) {
@@ -78,6 +78,7 @@ export { createOnes } from './function/matrix/ones';
78
78
  export { createRange } from './function/matrix/range';
79
79
  export { createReshape } from './function/matrix/reshape';
80
80
  export { createResize } from './function/matrix/resize';
81
+ export { createRotate } from './function/matrix/rotate';
81
82
  export { createRotationMatrix } from './function/matrix/rotationMatrix';
82
83
  export { createRow } from './function/matrix/row';
83
84
  export { createSize } from './function/matrix/size';
@@ -0,0 +1,78 @@
1
+ import { factory } from '../../utils/factory';
2
+ import { arraySize } from '../../utils/array';
3
+ var name = 'rotate';
4
+ var dependencies = ['typed', 'multiply', 'rotationMatrix'];
5
+ export var createRotate = /* #__PURE__ */factory(name, dependencies, function (_ref) {
6
+ var typed = _ref.typed,
7
+ multiply = _ref.multiply,
8
+ rotationMatrix = _ref.rotationMatrix;
9
+
10
+ /**
11
+ * Rotate a vector of size 1x2 counter-clockwise by a given angle
12
+ * Rotate a vector of size 1x3 counter-clockwise by a given angle around the given axis
13
+ *
14
+ * Syntax:
15
+ *
16
+ * math.rotate(w, theta)
17
+ * math.rotate(w, theta, v)
18
+ *
19
+ * Examples:
20
+ *
21
+ * math.rotate([11, 12], math.pi / 2) // returns matrix([-12, 11])
22
+ * math.rotate(matrix([11, 12]), math.pi / 2) // returns matrix([-12, 11])
23
+ *
24
+ * math.rotate([1, 0, 0], unit('90deg'), [0, 0, 1]) // returns matrix([0, 1, 0])
25
+ * math.rotate(matrix([1, 0, 0]), unit('90deg'), [0, 0, 1]) // returns matrix([0, 1, 0])
26
+ *
27
+ * math.rotate([1, 0], math.complex(1 + i)) // returns matrix([cos(1 + i) - sin(1 + i), sin(1 + i) + cos(1 + i)])
28
+ *
29
+ * See also:
30
+ *
31
+ * matrix, rotationMatrix
32
+ *
33
+ * @param {Array | Matrix} w Vector to rotate
34
+ * @param {number | BigNumber | Complex | Unit} theta Rotation angle
35
+ * @param {Array | Matrix} [v] Rotation axis
36
+ * @return {Array | Matrix} Multiplication of the rotation matrix and w
37
+ */
38
+ return typed(name, {
39
+ 'Array , number | BigNumber | Complex | Unit': function ArrayNumberBigNumberComplexUnit(w, theta) {
40
+ _validateSize(w, 2);
41
+
42
+ var matrixRes = multiply(rotationMatrix(theta), w);
43
+ return matrixRes.toArray();
44
+ },
45
+ 'Matrix , number | BigNumber | Complex | Unit': function MatrixNumberBigNumberComplexUnit(w, theta) {
46
+ _validateSize(w, 2);
47
+
48
+ return multiply(rotationMatrix(theta), w);
49
+ },
50
+ 'Array, number | BigNumber | Complex | Unit, Array | Matrix': function ArrayNumberBigNumberComplexUnitArrayMatrix(w, theta, v) {
51
+ _validateSize(w, 3);
52
+
53
+ var matrixRes = multiply(rotationMatrix(theta, v), w);
54
+ return matrixRes;
55
+ },
56
+ 'Matrix, number | BigNumber | Complex | Unit, Array | Matrix': function MatrixNumberBigNumberComplexUnitArrayMatrix(w, theta, v) {
57
+ _validateSize(w, 3);
58
+
59
+ return multiply(rotationMatrix(theta, v), w);
60
+ }
61
+ });
62
+
63
+ function _validateSize(v, expectedSize) {
64
+ var actualSize = Array.isArray(v) ? arraySize(v) : v.size();
65
+
66
+ if (actualSize.length > 2) {
67
+ throw new RangeError("Vector must be of dimensions 1x".concat(expectedSize));
68
+ }
69
+
70
+ if (actualSize.length === 2 && actualSize[1] !== 1) {
71
+ throw new RangeError("Vector must be of dimensions 1x".concat(expectedSize));
72
+ }
73
+
74
+ if (actualSize[0] !== expectedSize) {
75
+ throw new RangeError("Vector must be of dimensions 1x".concat(expectedSize));
76
+ }
77
+ }
78
+ });
@@ -30,7 +30,7 @@ export var createRotationMatrix = /* #__PURE__ */factory(name, dependencies, fun
30
30
  * Examples:
31
31
  *
32
32
  * math.rotationMatrix(math.pi / 2) // returns [[0, -1], [1, 0]]
33
- * math.rotationMatrix(math.bignumber(45)) // returns [[ bignumber(1 / sqrt(2)), - bignumber(1 / sqrt(2))], [ bignumber(1 / sqrt(2)), bignumber(1 / sqrt(2))]]
33
+ * math.rotationMatrix(math.bignumber(1)) // returns [[bignumber(cos(1)), bignumber(-sin(1))], [bignumber(sin(1)), bignumber(cos(1))]]
34
34
  * math.rotationMatrix(math.complex(1 + i)) // returns [[cos(1 + i), -sin(1 + i)], [sin(1 + i), cos(1 + i)]]
35
35
  * math.rotationMatrix(math.unit('1rad')) // returns [[cos(1), -sin(1)], [sin(1), cos(1)]]
36
36
  *
@@ -66,12 +66,13 @@ export var createRotationMatrix = /* #__PURE__ */factory(name, dependencies, fun
66
66
 
67
67
  _validateVector(matrixV);
68
68
 
69
- return _rotationMatrix3x3(theta, matrixV, config.matrix === 'Matrix' ? 'dense' : undefined);
69
+ return _rotationMatrix3x3(theta, matrixV, undefined);
70
70
  },
71
71
  'number | BigNumber | Complex | Unit, Matrix': function numberBigNumberComplexUnitMatrix(theta, v) {
72
72
  _validateVector(v);
73
73
 
74
- return _rotationMatrix3x3(theta, v, config.matrix === 'Matrix' ? 'dense' : undefined);
74
+ var storageType = v.storage() || (config.matrix === 'Matrix' ? 'dense' : undefined);
75
+ return _rotationMatrix3x3(theta, v, storageType);
75
76
  },
76
77
  'number | BigNumber | Complex | Unit, Array, string': function numberBigNumberComplexUnitArrayString(theta, v, format) {
77
78
  var matrixV = matrix(v);
@@ -148,7 +149,7 @@ export var createRotationMatrix = /* #__PURE__ */factory(name, dependencies, fun
148
149
  var normV = norm(v);
149
150
 
150
151
  if (normV === 0) {
151
- return _convertToFormat([], format);
152
+ throw new RangeError('Rotation around zero vector');
152
153
  }
153
154
 
154
155
  var Big = isBigNumber(theta) ? BigNumber : null;
@@ -1,3 +1,4 @@
1
+ /* eslint-disable no-loss-of-precision */
1
2
  import { deepMap } from '../../utils/collection';
2
3
  import { sign } from '../../utils/number';
3
4
  import { factory } from '../../utils/factory';
@@ -1,4 +1,4 @@
1
1
  export var pi = Math.PI;
2
2
  export var tau = 2 * Math.PI;
3
3
  export var e = Math.E;
4
- export var phi = 1.61803398874989484820458683436563811772030917980576286213545;
4
+ export var phi = 1.6180339887498948; // eslint-disable-line no-loss-of-precision
@@ -1,3 +1,4 @@
1
+ /* eslint-disable no-loss-of-precision */
1
2
  import { isInteger } from '../../utils/number';
2
3
  import { product } from '../../utils/product';
3
4
  export function gammaNumber(n) {
@@ -207,19 +207,16 @@ export var createUnitClass = /* #__PURE__ */factory(name, dependencies, function
207
207
  function parseUnit() {
208
208
  var unitName = ''; // Alphanumeric characters only; matches [a-zA-Z0-9]
209
209
 
210
- var code = text.charCodeAt(index);
211
-
212
- while (code >= 48 && code <= 57 || code >= 65 && code <= 90 || code >= 97 && code <= 122) {
210
+ while (isDigit(c) || Unit.isValidAlpha(c)) {
213
211
  unitName += c;
214
212
  next();
215
- code = text.charCodeAt(index);
216
213
  } // Must begin with [a-zA-Z]
217
214
 
218
215
 
219
- code = unitName.charCodeAt(0);
216
+ var firstC = unitName.charAt(0);
220
217
 
221
- if (code >= 65 && code <= 90 || code >= 97 && code <= 122) {
222
- return unitName || null;
218
+ if (Unit.isValidAlpha(firstC)) {
219
+ return unitName;
223
220
  } else {
224
221
  return null;
225
222
  }
@@ -3674,24 +3671,26 @@ export var createUnitClass = /* #__PURE__ */factory(name, dependencies, function
3674
3671
  UNITS[_name2] = alias;
3675
3672
  }
3676
3673
  }
3674
+ /**
3675
+ * Checks if a character is a valid latin letter (upper or lower case).
3676
+ * Note that this function can be overridden, for example to allow support of other alphabets.
3677
+ * @param {string} c Tested character
3678
+ */
3677
3679
 
3678
- function assertUnitNameIsValid(name) {
3679
- for (var i = 0; i < name.length; i++) {
3680
- var _c = name.charAt(i);
3681
3680
 
3682
- var isValidAlpha = function isValidAlpha(p) {
3683
- return /^[a-zA-Z]$/.test(p);
3684
- };
3681
+ Unit.isValidAlpha = function isValidAlpha(c) {
3682
+ return /^[a-zA-Z]$/.test(c);
3683
+ };
3685
3684
 
3686
- var _isDigit = function _isDigit(c) {
3687
- return c >= '0' && c <= '9';
3688
- };
3685
+ function assertUnitNameIsValid(name) {
3686
+ for (var i = 0; i < name.length; i++) {
3687
+ c = name.charAt(i);
3689
3688
 
3690
- if (i === 0 && !isValidAlpha(_c)) {
3689
+ if (i === 0 && !Unit.isValidAlpha(c)) {
3691
3690
  throw new Error('Invalid unit name (must begin with alpha character): "' + name + '"');
3692
3691
  }
3693
3692
 
3694
- if (i > 0 && !(isValidAlpha(_c) || _isDigit(_c))) {
3693
+ if (i > 0 && !(Unit.isValidAlpha(c) || isDigit(c))) {
3695
3694
  throw new Error('Invalid unit name (only alphanumeric characters are allowed): "' + name + '"');
3696
3695
  }
3697
3696
  }
package/es/version.js CHANGED
@@ -1,2 +1,2 @@
1
- export var version = '7.5.1'; // Note: This file is automatically generated when building math.js.
1
+ export var version = '7.6.0'; // Note: This file is automatically generated when building math.js.
2
2
  // Changes made in this file will be overwritten.
@@ -1,3 +1,5 @@
1
+ /* eslint-disable no-loss-of-precision */
2
+
1
3
  // BigNumbers
2
4
 
3
5
  const { create, all } = require('..')
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.rotateDependencies = void 0;
7
+
8
+ var _dependenciesMultiply = require("./dependenciesMultiply.generated");
9
+
10
+ var _dependenciesRotationMatrix = require("./dependenciesRotationMatrix.generated");
11
+
12
+ var _dependenciesTyped = require("./dependenciesTyped.generated");
13
+
14
+ var _factoriesAny = require("../../factoriesAny.js");
15
+
16
+ /**
17
+ * THIS FILE IS AUTO-GENERATED
18
+ * DON'T MAKE CHANGES HERE
19
+ */
20
+ var rotateDependencies = {
21
+ multiplyDependencies: _dependenciesMultiply.multiplyDependencies,
22
+ rotationMatrixDependencies: _dependenciesRotationMatrix.rotationMatrixDependencies,
23
+ typedDependencies: _dependenciesTyped.typedDependencies,
24
+ createRotate: _factoriesAny.createRotate
25
+ };
26
+ exports.rotateDependencies = rotateDependencies;
@@ -483,6 +483,12 @@ Object.defineProperty(exports, "resizeDependencies", {
483
483
  return _dependenciesResize.resizeDependencies;
484
484
  }
485
485
  });
486
+ Object.defineProperty(exports, "rotateDependencies", {
487
+ enumerable: true,
488
+ get: function get() {
489
+ return _dependenciesRotate.rotateDependencies;
490
+ }
491
+ });
486
492
  Object.defineProperty(exports, "rotationMatrixDependencies", {
487
493
  enumerable: true,
488
494
  get: function get() {
@@ -2138,6 +2144,8 @@ var _dependenciesReshape = require("./dependenciesAny/dependenciesReshape.genera
2138
2144
 
2139
2145
  var _dependenciesResize = require("./dependenciesAny/dependenciesResize.generated");
2140
2146
 
2147
+ var _dependenciesRotate = require("./dependenciesAny/dependenciesRotate.generated");
2148
+
2141
2149
  var _dependenciesRotationMatrix = require("./dependenciesAny/dependenciesRotationMatrix.generated");
2142
2150
 
2143
2151
  var _dependenciesRow = require("./dependenciesAny/dependenciesRow.generated");