mathjs 7.5.1 → 7.6.0

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