mathjs 10.5.2 → 10.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/HISTORY.md +8 -0
- package/lib/browser/math.js +3 -3
- package/lib/browser/math.js.map +1 -1
- package/lib/cjs/header.js +2 -2
- package/lib/cjs/version.js +1 -1
- package/lib/esm/version.js +1 -1
- package/package.json +6 -11
- package/docs/command_line_interface.md +0 -87
- package/docs/core/chaining.md +0 -41
- package/docs/core/configuration.md +0 -144
- package/docs/core/extension.md +0 -263
- package/docs/core/index.md +0 -21
- package/docs/core/serialization.md +0 -50
- package/docs/custom_bundling.md +0 -116
- package/docs/datatypes/bignumbers.md +0 -102
- package/docs/datatypes/complex_numbers.md +0 -168
- package/docs/datatypes/fractions.md +0 -75
- package/docs/datatypes/index.md +0 -67
- package/docs/datatypes/matrices.md +0 -375
- package/docs/datatypes/numbers.md +0 -106
- package/docs/datatypes/units.md +0 -444
- package/docs/expressions/algebra.md +0 -110
- package/docs/expressions/customization.md +0 -379
- package/docs/expressions/expression_trees.md +0 -710
- package/docs/expressions/html_classes.md +0 -38
- package/docs/expressions/index.md +0 -21
- package/docs/expressions/parsing.md +0 -224
- package/docs/expressions/security.md +0 -89
- package/docs/expressions/syntax.md +0 -706
- package/docs/getting_started.md +0 -124
- package/docs/index.md +0 -39
- package/docs/reference/classes/densematrix.md +0 -247
- package/docs/reference/classes/fibonacciheap.md +0 -70
- package/docs/reference/classes/matrixindex.md +0 -133
- package/docs/reference/classes/matrixrange.md +0 -158
- package/docs/reference/classes/resultset.md +0 -47
- package/docs/reference/classes/sparsematrix.md +0 -245
- package/docs/reference/classes/unit.md +0 -242
- package/docs/reference/classes.md +0 -86
- package/docs/reference/constants.md +0 -29
- package/docs/reference/functions/abs.md +0 -46
- package/docs/reference/functions/acos.md +0 -49
- package/docs/reference/functions/acosh.md +0 -47
- package/docs/reference/functions/acot.md +0 -48
- package/docs/reference/functions/acoth.md +0 -46
- package/docs/reference/functions/acsc.md +0 -49
- package/docs/reference/functions/acsch.md +0 -46
- package/docs/reference/functions/add.md +0 -59
- package/docs/reference/functions/and.md +0 -53
- package/docs/reference/functions/apply.md +0 -56
- package/docs/reference/functions/arg.md +0 -53
- package/docs/reference/functions/asec.md +0 -49
- package/docs/reference/functions/asech.md +0 -46
- package/docs/reference/functions/asin.md +0 -49
- package/docs/reference/functions/asinh.md +0 -46
- package/docs/reference/functions/atan.md +0 -49
- package/docs/reference/functions/atan2.md +0 -56
- package/docs/reference/functions/atanh.md +0 -46
- package/docs/reference/functions/bellNumbers.md +0 -45
- package/docs/reference/functions/bignumber.md +0 -47
- package/docs/reference/functions/bin.md +0 -45
- package/docs/reference/functions/bitAnd.md +0 -51
- package/docs/reference/functions/bitNot.md +0 -51
- package/docs/reference/functions/bitOr.md +0 -52
- package/docs/reference/functions/bitXor.md +0 -51
- package/docs/reference/functions/boolean.md +0 -50
- package/docs/reference/functions/catalan.md +0 -45
- package/docs/reference/functions/cbrt.md +0 -60
- package/docs/reference/functions/ceil.md +0 -63
- package/docs/reference/functions/chain.md +0 -54
- package/docs/reference/functions/clone.md +0 -43
- package/docs/reference/functions/column.md +0 -45
- package/docs/reference/functions/combinations.md +0 -49
- package/docs/reference/functions/combinationsWithRep.md +0 -49
- package/docs/reference/functions/compare.md +0 -67
- package/docs/reference/functions/compareNatural.md +0 -92
- package/docs/reference/functions/compareText.md +0 -54
- package/docs/reference/functions/compile.md +0 -56
- package/docs/reference/functions/complex.md +0 -17
- package/docs/reference/functions/composition.md +0 -46
- package/docs/reference/functions/concat.md +0 -56
- package/docs/reference/functions/config.md +0 -44
- package/docs/reference/functions/conj.md +0 -50
- package/docs/reference/functions/cos.md +0 -51
- package/docs/reference/functions/cosh.md +0 -46
- package/docs/reference/functions/cot.md +0 -47
- package/docs/reference/functions/coth.md +0 -49
- package/docs/reference/functions/count.md +0 -45
- package/docs/reference/functions/createUnit.md +0 -52
- package/docs/reference/functions/cross.md +0 -58
- package/docs/reference/functions/csc.md +0 -47
- package/docs/reference/functions/csch.md +0 -49
- package/docs/reference/functions/ctranspose.md +0 -50
- package/docs/reference/functions/cube.md +0 -51
- package/docs/reference/functions/cumsum.md +0 -57
- package/docs/reference/functions/deepEqual.md +0 -53
- package/docs/reference/functions/derivative.md +0 -61
- package/docs/reference/functions/det.md +0 -49
- package/docs/reference/functions/diag.md +0 -61
- package/docs/reference/functions/diff.md +0 -70
- package/docs/reference/functions/distance.md +0 -80
- package/docs/reference/functions/divide.md +0 -55
- package/docs/reference/functions/dot.md +0 -48
- package/docs/reference/functions/dotDivide.md +0 -52
- package/docs/reference/functions/dotMultiply.md +0 -52
- package/docs/reference/functions/dotPow.md +0 -49
- package/docs/reference/functions/eigs.md +0 -54
- package/docs/reference/functions/equal.md +0 -75
- package/docs/reference/functions/equalText.md +0 -53
- package/docs/reference/functions/erf.md +0 -49
- package/docs/reference/functions/evaluate.md +0 -56
- package/docs/reference/functions/exp.md +0 -54
- package/docs/reference/functions/expm.md +0 -49
- package/docs/reference/functions/expm1.md +0 -54
- package/docs/reference/functions/factorial.md +0 -49
- package/docs/reference/functions/fft.md +0 -35
- package/docs/reference/functions/filter.md +0 -50
- package/docs/reference/functions/fix.md +0 -62
- package/docs/reference/functions/flatten.md +0 -46
- package/docs/reference/functions/floor.md +0 -66
- package/docs/reference/functions/forEach.md +0 -41
- package/docs/reference/functions/format.md +0 -127
- package/docs/reference/functions/fraction.md +0 -45
- package/docs/reference/functions/gamma.md +0 -49
- package/docs/reference/functions/gcd.md +0 -50
- package/docs/reference/functions/getMatrixDataType.md +0 -59
- package/docs/reference/functions/hasNumericValue.md +0 -55
- package/docs/reference/functions/help.md +0 -42
- package/docs/reference/functions/hex.md +0 -45
- package/docs/reference/functions/hypot.md +0 -51
- package/docs/reference/functions/identity.md +0 -57
- package/docs/reference/functions/ifft.md +0 -35
- package/docs/reference/functions/im.md +0 -53
- package/docs/reference/functions/import.md +0 -68
- package/docs/reference/functions/index.md +0 -55
- package/docs/reference/functions/intersect.md +0 -50
- package/docs/reference/functions/inv.md +0 -45
- package/docs/reference/functions/invmod.md +0 -47
- package/docs/reference/functions/isInteger.md +0 -55
- package/docs/reference/functions/isNaN.md +0 -56
- package/docs/reference/functions/isNegative.md +0 -55
- package/docs/reference/functions/isNumeric.md +0 -55
- package/docs/reference/functions/isPositive.md +0 -57
- package/docs/reference/functions/isPrime.md +0 -54
- package/docs/reference/functions/isZero.md +0 -59
- package/docs/reference/functions/kldivergence.md +0 -41
- package/docs/reference/functions/kron.md +0 -53
- package/docs/reference/functions/larger.md +0 -60
- package/docs/reference/functions/largerEq.md +0 -56
- package/docs/reference/functions/lcm.md +0 -54
- package/docs/reference/functions/leafCount.md +0 -52
- package/docs/reference/functions/leftShift.md +0 -52
- package/docs/reference/functions/lgamma.md +0 -46
- package/docs/reference/functions/log.md +0 -57
- package/docs/reference/functions/log10.md +0 -50
- package/docs/reference/functions/log1p.md +0 -54
- package/docs/reference/functions/log2.md +0 -50
- package/docs/reference/functions/lsolve.md +0 -51
- package/docs/reference/functions/lsolveAll.md +0 -51
- package/docs/reference/functions/lup.md +0 -52
- package/docs/reference/functions/lusolve.md +0 -59
- package/docs/reference/functions/mad.md +0 -50
- package/docs/reference/functions/map.md +0 -65
- package/docs/reference/functions/matrix.md +0 -56
- package/docs/reference/functions/matrixFromColumns.md +0 -49
- package/docs/reference/functions/matrixFromFunction.md +0 -54
- package/docs/reference/functions/matrixFromRows.md +0 -49
- package/docs/reference/functions/max.md +0 -61
- package/docs/reference/functions/mean.md +0 -57
- package/docs/reference/functions/median.md +0 -57
- package/docs/reference/functions/min.md +0 -61
- package/docs/reference/functions/mod.md +0 -59
- package/docs/reference/functions/mode.md +0 -50
- package/docs/reference/functions/multinomial.md +0 -46
- package/docs/reference/functions/multiply.md +0 -60
- package/docs/reference/functions/norm.md +0 -59
- package/docs/reference/functions/not.md +0 -50
- package/docs/reference/functions/nthRoot.md +0 -53
- package/docs/reference/functions/nthRoots.md +0 -58
- package/docs/reference/functions/number.md +0 -49
- package/docs/reference/functions/numeric.md +0 -52
- package/docs/reference/functions/oct.md +0 -45
- package/docs/reference/functions/ones.md +0 -59
- package/docs/reference/functions/or.md +0 -53
- package/docs/reference/functions/parse.md +0 -56
- package/docs/reference/functions/parser.md +0 -70
- package/docs/reference/functions/partitionSelect.md +0 -53
- package/docs/reference/functions/permutations.md +0 -51
- package/docs/reference/functions/pickRandom.md +0 -59
- package/docs/reference/functions/pinv.md +0 -44
- package/docs/reference/functions/pow.md +0 -65
- package/docs/reference/functions/print.md +0 -64
- package/docs/reference/functions/prod.md +0 -55
- package/docs/reference/functions/qr.md +0 -65
- package/docs/reference/functions/quantileSeq.md +0 -62
- package/docs/reference/functions/random.md +0 -54
- package/docs/reference/functions/randomInt.md +0 -53
- package/docs/reference/functions/range.md +0 -70
- package/docs/reference/functions/rationalize.md +0 -68
- package/docs/reference/functions/re.md +0 -53
- package/docs/reference/functions/reshape.md +0 -60
- package/docs/reference/functions/resize.md +0 -51
- package/docs/reference/functions/resolve.md +0 -46
- package/docs/reference/functions/rightArithShift.md +0 -52
- package/docs/reference/functions/rightLogShift.md +0 -52
- package/docs/reference/functions/rotate.md +0 -53
- package/docs/reference/functions/rotationMatrix.md +0 -57
- package/docs/reference/functions/round.md +0 -61
- package/docs/reference/functions/row.md +0 -45
- package/docs/reference/functions/sec.md +0 -47
- package/docs/reference/functions/sech.md +0 -49
- package/docs/reference/functions/setCartesian.md +0 -49
- package/docs/reference/functions/setDifference.md +0 -47
- package/docs/reference/functions/setDistinct.md +0 -43
- package/docs/reference/functions/setIntersect.md +0 -46
- package/docs/reference/functions/setIsSubset.md +0 -47
- package/docs/reference/functions/setMultiplicity.md +0 -46
- package/docs/reference/functions/setPowerset.md +0 -43
- package/docs/reference/functions/setSize.md +0 -47
- package/docs/reference/functions/setSymDifference.md +0 -47
- package/docs/reference/functions/setUnion.md +0 -46
- package/docs/reference/functions/sign.md +0 -52
- package/docs/reference/functions/simplify.md +0 -130
- package/docs/reference/functions/simplifyConstant.md +0 -52
- package/docs/reference/functions/simplifyCore.md +0 -50
- package/docs/reference/functions/sin.md +0 -51
- package/docs/reference/functions/sinh.md +0 -46
- package/docs/reference/functions/size.md +0 -50
- package/docs/reference/functions/slu.md +0 -57
- package/docs/reference/functions/smaller.md +0 -60
- package/docs/reference/functions/smallerEq.md +0 -56
- package/docs/reference/functions/sort.md +0 -56
- package/docs/reference/functions/sparse.md +0 -51
- package/docs/reference/functions/splitUnit.md +0 -37
- package/docs/reference/functions/sqrt.md +0 -50
- package/docs/reference/functions/sqrtm.md +0 -46
- package/docs/reference/functions/square.md +0 -51
- package/docs/reference/functions/squeeze.md +0 -53
- package/docs/reference/functions/std.md +0 -76
- package/docs/reference/functions/stirlingS2.md +0 -52
- package/docs/reference/functions/string.md +0 -49
- package/docs/reference/functions/subset.md +0 -65
- package/docs/reference/functions/subtract.md +0 -54
- package/docs/reference/functions/sum.md +0 -54
- package/docs/reference/functions/symbolicEqual.md +0 -62
- package/docs/reference/functions/tan.md +0 -49
- package/docs/reference/functions/tanh.md +0 -50
- package/docs/reference/functions/to.md +0 -47
- package/docs/reference/functions/trace.md +0 -50
- package/docs/reference/functions/transpose.md +0 -49
- package/docs/reference/functions/typeOf.md +0 -81
- package/docs/reference/functions/typed.md +0 -56
- package/docs/reference/functions/unaryMinus.md +0 -49
- package/docs/reference/functions/unaryPlus.md +0 -48
- package/docs/reference/functions/unequal.md +0 -74
- package/docs/reference/functions/unit.md +0 -48
- package/docs/reference/functions/usolve.md +0 -51
- package/docs/reference/functions/usolveAll.md +0 -51
- package/docs/reference/functions/variance.md +0 -78
- package/docs/reference/functions/xgcd.md +0 -47
- package/docs/reference/functions/xor.md +0 -53
- package/docs/reference/functions/zeros.md +0 -57
- package/docs/reference/functions.md +0 -297
- package/docs/reference/index.md +0 -5
- package/examples/advanced/convert_fraction_to_bignumber.js +0 -59
- package/examples/advanced/custom_argument_parsing.js +0 -98
- package/examples/advanced/custom_datatype.js +0 -56
- package/examples/advanced/custom_evaluate_using_factories.js +0 -19
- package/examples/advanced/custom_evaluate_using_import.js +0 -18
- package/examples/advanced/custom_loading.js +0 -33
- package/examples/advanced/custom_relational_functions.js +0 -62
- package/examples/advanced/custom_scope_objects.js +0 -115
- package/examples/advanced/expression_trees.js +0 -55
- package/examples/advanced/function_transform.js +0 -50
- package/examples/advanced/more_secure_eval.js +0 -36
- package/examples/advanced/use_bigint.js +0 -43
- package/examples/advanced/web_server/math_worker.js +0 -24
- package/examples/advanced/web_server/server.js +0 -80
- package/examples/algebra.js +0 -34
- package/examples/basic_usage.js +0 -49
- package/examples/bignumbers.js +0 -52
- package/examples/browser/angle_configuration.html +0 -134
- package/examples/browser/basic_usage.html +0 -39
- package/examples/browser/currency_conversion.html +0 -125
- package/examples/browser/custom_separators.html +0 -81
- package/examples/browser/plot.html +0 -78
- package/examples/browser/pretty_printing_with_mathjax.html +0 -122
- package/examples/browser/printing_html.html +0 -170
- package/examples/browser/requirejs_loading.html +0 -20
- package/examples/browser/rocket_trajectory_optimization.html +0 -301
- package/examples/browser/webworkers/webworkers.html +0 -80
- package/examples/browser/webworkers/worker.js +0 -28
- package/examples/chaining.js +0 -56
- package/examples/complex_numbers.js +0 -67
- package/examples/expressions.js +0 -188
- package/examples/fractions.js +0 -74
- package/examples/import.js +0 -95
- package/examples/matrices.js +0 -101
- package/examples/objects.js +0 -35
- package/examples/package.json +0 -3
- package/examples/serialization.js +0 -16
- package/examples/sparse_matrices.js +0 -19
- package/examples/units.js +0 -108
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="utf-8">
|
|
5
|
-
<title>math.js | angle configuration</title>
|
|
6
|
-
<style>
|
|
7
|
-
body, input, select {
|
|
8
|
-
font: 11pt sans-serif;
|
|
9
|
-
}
|
|
10
|
-
input, select, th, #result {
|
|
11
|
-
padding: 5px 10px;
|
|
12
|
-
}
|
|
13
|
-
th {
|
|
14
|
-
text-align: left;
|
|
15
|
-
}
|
|
16
|
-
</style>
|
|
17
|
-
|
|
18
|
-
<script src="../../lib/browser/math.js"></script>
|
|
19
|
-
</head>
|
|
20
|
-
<body>
|
|
21
|
-
|
|
22
|
-
<p>
|
|
23
|
-
This code example extends the trigonometric functions of math.js with configurable angles: degrees, radians, or gradians.
|
|
24
|
-
</p>
|
|
25
|
-
|
|
26
|
-
<table>
|
|
27
|
-
<tr>
|
|
28
|
-
<th>Angles</th>
|
|
29
|
-
<td>
|
|
30
|
-
<select id="angles">
|
|
31
|
-
<option value="deg">deg</option>
|
|
32
|
-
<option value="grad">grad</option>
|
|
33
|
-
<option value="rad">rad</option>
|
|
34
|
-
</select>
|
|
35
|
-
</td>
|
|
36
|
-
</tr>
|
|
37
|
-
<tr>
|
|
38
|
-
<th>Expression</th>
|
|
39
|
-
<td>
|
|
40
|
-
<input id="expression" type="text" value="sin(45)" />
|
|
41
|
-
<input id="evaluate" type="button" value="Evaluate">
|
|
42
|
-
</td>
|
|
43
|
-
</tr>
|
|
44
|
-
<tr>
|
|
45
|
-
<th>Result</th>
|
|
46
|
-
<td id="result"></td>
|
|
47
|
-
</tr>
|
|
48
|
-
</table>
|
|
49
|
-
|
|
50
|
-
<script>
|
|
51
|
-
let replacements = {}
|
|
52
|
-
|
|
53
|
-
// our extended configuration options
|
|
54
|
-
const config = {
|
|
55
|
-
angles: 'deg' // 'rad', 'deg', 'grad'
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
// create trigonometric functions replacing the input depending on angle config
|
|
59
|
-
const fns1 = ['sin', 'cos', 'tan', 'sec', 'cot', 'csc']
|
|
60
|
-
fns1.forEach(function(name) {
|
|
61
|
-
const fn = math[name] // the original function
|
|
62
|
-
|
|
63
|
-
const fnNumber = function (x) {
|
|
64
|
-
// convert from configured type of angles to radians
|
|
65
|
-
switch (config.angles) {
|
|
66
|
-
case 'deg':
|
|
67
|
-
return fn(x / 360 * 2 * Math.PI)
|
|
68
|
-
case 'grad':
|
|
69
|
-
return fn(x / 400 * 2 * Math.PI)
|
|
70
|
-
default:
|
|
71
|
-
return fn(x)
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
// create a typed-function which check the input types
|
|
76
|
-
replacements[name] = math.typed(name, {
|
|
77
|
-
'number': fnNumber,
|
|
78
|
-
'Array | Matrix': function (x) {
|
|
79
|
-
return math.map(x, fnNumber)
|
|
80
|
-
}
|
|
81
|
-
})
|
|
82
|
-
})
|
|
83
|
-
|
|
84
|
-
// create trigonometric functions replacing the output depending on angle config
|
|
85
|
-
const fns2 = ['asin', 'acos', 'atan', 'atan2', 'acot', 'acsc', 'asec']
|
|
86
|
-
fns2.forEach(function(name) {
|
|
87
|
-
const fn = math[name] // the original function
|
|
88
|
-
|
|
89
|
-
const fnNumber = function (x) {
|
|
90
|
-
const result = fn(x)
|
|
91
|
-
|
|
92
|
-
if (typeof result === 'number') {
|
|
93
|
-
// convert to radians to configured type of angles
|
|
94
|
-
switch(config.angles) {
|
|
95
|
-
case 'deg': return result / 2 / Math.PI * 360
|
|
96
|
-
case 'grad': return result / 2 / Math.PI * 400
|
|
97
|
-
default: return result
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
return result
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
// create a typed-function which check the input types
|
|
105
|
-
replacements[name] = math.typed(name, {
|
|
106
|
-
'number': fnNumber,
|
|
107
|
-
'Array | Matrix': function (x) {
|
|
108
|
-
return math.map(x, fnNumber)
|
|
109
|
-
}
|
|
110
|
-
})
|
|
111
|
-
})
|
|
112
|
-
|
|
113
|
-
// import all replacements into math.js, override existing trigonometric functions
|
|
114
|
-
math.import(replacements, {override: true})
|
|
115
|
-
|
|
116
|
-
// pointers to the input elements
|
|
117
|
-
const expression = document.getElementById('expression')
|
|
118
|
-
const evaluate = document.getElementById('evaluate')
|
|
119
|
-
const result = document.getElementById('result')
|
|
120
|
-
const angles = document.getElementById('angles')
|
|
121
|
-
|
|
122
|
-
// attach event handlers for select box and button
|
|
123
|
-
angles.onchange = function () {
|
|
124
|
-
config.angles = this.value
|
|
125
|
-
config.angles = this.value
|
|
126
|
-
}
|
|
127
|
-
evaluate.onclick = function () {
|
|
128
|
-
result.innerHTML = math.evaluate(expression.value)
|
|
129
|
-
}
|
|
130
|
-
</script>
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
</body>
|
|
134
|
-
</html>
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="utf-8">
|
|
5
|
-
<title>math.js | basic usage</title>
|
|
6
|
-
<script src="../../lib/browser/math.js"></script>
|
|
7
|
-
</head>
|
|
8
|
-
<body>
|
|
9
|
-
|
|
10
|
-
<script>
|
|
11
|
-
function print(value) {
|
|
12
|
-
const precision = 14
|
|
13
|
-
document.write(math.format(value, precision) + '<br>')
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
// functions and constants
|
|
17
|
-
print(math.round(math.e, 3)) // 2.718
|
|
18
|
-
print(math.atan2(3, -3) / math.pi) // 0.75
|
|
19
|
-
print(math.log(10000, 10)) // 4
|
|
20
|
-
print(math.sqrt(-4)) // 2i
|
|
21
|
-
print(math.pow([[-1, 2], [3, 1]], 2)) // [[7, 0], [0, 7]]
|
|
22
|
-
print(math.derivative('x^2 + x', 'x')) // 2 * x + 1
|
|
23
|
-
|
|
24
|
-
// expressions
|
|
25
|
-
print(math.evaluate('12 / (2.3 + 0.7)')) // 4
|
|
26
|
-
print(math.evaluate('12.7 cm to inch')) // 5 inch
|
|
27
|
-
print(math.evaluate('9 / 3 + 2i')) // 3 + 2i
|
|
28
|
-
print(math.evaluate('det([-1, 2; 3, 1])')) // -7
|
|
29
|
-
|
|
30
|
-
// chained operations
|
|
31
|
-
const a = math.chain(3)
|
|
32
|
-
.add(4)
|
|
33
|
-
.multiply(2)
|
|
34
|
-
.done()
|
|
35
|
-
print(a) // 14
|
|
36
|
-
</script>
|
|
37
|
-
|
|
38
|
-
</body>
|
|
39
|
-
</html>
|
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="utf-8">
|
|
5
|
-
<title>math.js | currency conversion</title>
|
|
6
|
-
|
|
7
|
-
<script src="../../lib/browser/math.js"></script>
|
|
8
|
-
|
|
9
|
-
<style>
|
|
10
|
-
body,
|
|
11
|
-
html,
|
|
12
|
-
input {
|
|
13
|
-
font-size: 11pt;
|
|
14
|
-
font-family: verdana, arial, sans-serif;
|
|
15
|
-
color: #4d4d4d;
|
|
16
|
-
max-width: 600px;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
h1 {
|
|
20
|
-
font-size: 120%;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
input {
|
|
24
|
-
padding: 5px;
|
|
25
|
-
width: 400px;
|
|
26
|
-
}
|
|
27
|
-
button {
|
|
28
|
-
padding: 5px;
|
|
29
|
-
}
|
|
30
|
-
</style>
|
|
31
|
-
</head>
|
|
32
|
-
<body>
|
|
33
|
-
|
|
34
|
-
<h1>Currency conversion with math.js</h1>
|
|
35
|
-
|
|
36
|
-
<p>
|
|
37
|
-
This example demonstrates how you can fetch actual currencies from <a href="https://fixer.io">fixer.io</a> and use them in math.js.
|
|
38
|
-
</p>
|
|
39
|
-
|
|
40
|
-
<p>
|
|
41
|
-
Create a (free) account at <a href="https://fixer.io">fixer.io</a> and fill in your API access key below:
|
|
42
|
-
</p>
|
|
43
|
-
|
|
44
|
-
<form id="fetchForm">
|
|
45
|
-
<input type="text" id="apiKey" placeholder="fixer.io API access key..." />
|
|
46
|
-
<button type="submit" id="ok">Fetch currencies</button>
|
|
47
|
-
</form>
|
|
48
|
-
|
|
49
|
-
<p id="info">
|
|
50
|
-
</p>
|
|
51
|
-
<div id="form" style="display: none;">
|
|
52
|
-
<p>
|
|
53
|
-
<label for="expr">Enter an expression with currencies:</label>
|
|
54
|
-
</p>
|
|
55
|
-
<p>
|
|
56
|
-
<input id="expr" value="5 EUR + 2 * 3 EUR in USD" /><br/>
|
|
57
|
-
</p>
|
|
58
|
-
<p id="result"></p>
|
|
59
|
-
</div>
|
|
60
|
-
|
|
61
|
-
<script>
|
|
62
|
-
const accessKey = document.getElementById('apiKey')
|
|
63
|
-
const fetchForm = document.getElementById('fetchForm')
|
|
64
|
-
|
|
65
|
-
fetchForm.onsubmit = function (event) {
|
|
66
|
-
event.preventDefault()
|
|
67
|
-
|
|
68
|
-
document.getElementById('info').innerHTML = 'Fetching currencies...'
|
|
69
|
-
|
|
70
|
-
fetchAndImportCurrencies(accessKey.value)
|
|
71
|
-
.then(function (currencies) {
|
|
72
|
-
document.getElementById('expr').oninput = evaluate
|
|
73
|
-
document.getElementById('form').style.display = ''
|
|
74
|
-
document.getElementById('info').innerHTML = 'Available currencies: ' + currencies.join(', ')
|
|
75
|
-
|
|
76
|
-
evaluate()
|
|
77
|
-
})
|
|
78
|
-
.catch(function (err) {
|
|
79
|
-
console.error(err)
|
|
80
|
-
document.getElementById('info').innerHTML = '<span style="color: red;">' + err.toString() + '</span>'
|
|
81
|
-
})
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
function fetchAndImportCurrencies (accessKey) {
|
|
85
|
-
// fetch actual currency conversion rates
|
|
86
|
-
return fetch('http://data.fixer.io/api/latest?access_key=' + accessKey)
|
|
87
|
-
.then(function (response) {
|
|
88
|
-
return response.json()
|
|
89
|
-
})
|
|
90
|
-
.then(function (data) {
|
|
91
|
-
if (data.success) {
|
|
92
|
-
// import the currencies
|
|
93
|
-
math.createUnit(data.base)
|
|
94
|
-
Object.keys(data.rates)
|
|
95
|
-
.filter(function (currency) {
|
|
96
|
-
return currency !== data.base
|
|
97
|
-
})
|
|
98
|
-
.forEach(function (currency) {
|
|
99
|
-
math.createUnit(currency, math.unit(1 / data.rates[currency], data.base))
|
|
100
|
-
})
|
|
101
|
-
|
|
102
|
-
// return an array with all available currencies
|
|
103
|
-
return Object.keys(data.rates).concat(data.base)
|
|
104
|
-
}
|
|
105
|
-
else {
|
|
106
|
-
throw new Error(data.error.info)
|
|
107
|
-
}
|
|
108
|
-
})
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
function evaluate () {
|
|
112
|
-
const expr = document.getElementById('expr')
|
|
113
|
-
const result = document.getElementById('result')
|
|
114
|
-
|
|
115
|
-
try {
|
|
116
|
-
const resultStr = math.format(math.evaluate(expr.value), {notation: 'fixed', precision: 2})
|
|
117
|
-
result.innerHTML = '<span style="color: dodgerblue;">' + resultStr + '</span>'
|
|
118
|
-
}
|
|
119
|
-
catch (err) {
|
|
120
|
-
result.innerHTML = '<span style="color: red;">' + err.toString() + '</span>'
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
</script>
|
|
124
|
-
</body>
|
|
125
|
-
</html>
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="utf-8">
|
|
5
|
-
<title>math.js | custom separators</title>
|
|
6
|
-
<style>
|
|
7
|
-
body, input, select {
|
|
8
|
-
font: 11pt sans-serif;
|
|
9
|
-
}
|
|
10
|
-
input, select, th, #result {
|
|
11
|
-
padding: 5px 10px;
|
|
12
|
-
}
|
|
13
|
-
th {
|
|
14
|
-
text-align: left;
|
|
15
|
-
}
|
|
16
|
-
</style>
|
|
17
|
-
|
|
18
|
-
<script src="../../lib/browser/math.js"></script>
|
|
19
|
-
</head>
|
|
20
|
-
<body>
|
|
21
|
-
|
|
22
|
-
<p>
|
|
23
|
-
This code example shows how to apply custom separators for function arguments and decimal separator.
|
|
24
|
-
</p>
|
|
25
|
-
|
|
26
|
-
<table>
|
|
27
|
-
<tr>
|
|
28
|
-
<th>Argument separator</th>
|
|
29
|
-
<td>
|
|
30
|
-
<input id="args" type="text" value=";">
|
|
31
|
-
</td>
|
|
32
|
-
</tr>
|
|
33
|
-
<tr>
|
|
34
|
-
<th>Decimal separator</th>
|
|
35
|
-
<td>
|
|
36
|
-
<input id="decimals" type="text" value=",">
|
|
37
|
-
</td>
|
|
38
|
-
</tr>
|
|
39
|
-
<tr>
|
|
40
|
-
<th>Expression</th>
|
|
41
|
-
<td>
|
|
42
|
-
<input id="expression" type="text" value="sum(3,4; 2,1; 2,0)" />
|
|
43
|
-
<input id="evaluate" type="button" value="Evaluate">
|
|
44
|
-
</td>
|
|
45
|
-
</tr>
|
|
46
|
-
<tr>
|
|
47
|
-
<th>Result</th>
|
|
48
|
-
<td id="result"></td>
|
|
49
|
-
</tr>
|
|
50
|
-
</table>
|
|
51
|
-
|
|
52
|
-
<script>
|
|
53
|
-
// pointers to the input elements
|
|
54
|
-
const expression = document.getElementById('expression')
|
|
55
|
-
const evaluate = document.getElementById('evaluate')
|
|
56
|
-
const result = document.getElementById('result')
|
|
57
|
-
const args = document.getElementById('args')
|
|
58
|
-
const decimals = document.getElementById('decimals')
|
|
59
|
-
|
|
60
|
-
// attach event handler to the button
|
|
61
|
-
evaluate.onclick = function () {
|
|
62
|
-
// replace the custom separators in the input with the default separators
|
|
63
|
-
const expr = expression.value
|
|
64
|
-
.replace(new RegExp('\\' + decimals.value + '|\\' + args.value, 'g'), function (match) {
|
|
65
|
-
return match === decimals.value ? '.': ','
|
|
66
|
-
})
|
|
67
|
-
|
|
68
|
-
// do the actual evaluation
|
|
69
|
-
const res = math.evaluate(expr)
|
|
70
|
-
|
|
71
|
-
// replace the default separators in the output with custom separators
|
|
72
|
-
result.innerHTML = res.toString()
|
|
73
|
-
.replace(new RegExp(',|\\.', 'g'), function (match) {
|
|
74
|
-
return match === '.' ? decimals.value : args.value
|
|
75
|
-
})
|
|
76
|
-
}
|
|
77
|
-
</script>
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
</body>
|
|
81
|
-
</html>
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="utf-8">
|
|
5
|
-
<title>math.js | plot</title>
|
|
6
|
-
<script src="../../lib/browser/math.js"></script>
|
|
7
|
-
|
|
8
|
-
<script src="https://cdn.plot.ly/plotly-1.35.2.min.js"></script>
|
|
9
|
-
|
|
10
|
-
<style>
|
|
11
|
-
input[type=text] {
|
|
12
|
-
width: 300px;
|
|
13
|
-
}
|
|
14
|
-
input {
|
|
15
|
-
padding: 6px;
|
|
16
|
-
}
|
|
17
|
-
body, html, input {
|
|
18
|
-
font-family: sans-serif;
|
|
19
|
-
font-size: 11pt;
|
|
20
|
-
|
|
21
|
-
}
|
|
22
|
-
form {
|
|
23
|
-
margin: 20px 0;
|
|
24
|
-
}
|
|
25
|
-
</style>
|
|
26
|
-
</head>
|
|
27
|
-
<body>
|
|
28
|
-
|
|
29
|
-
<form id="form">
|
|
30
|
-
<label for="eq">Enter an equation:</label>
|
|
31
|
-
<input type="text" id="eq" value="4 * sin(x) + 5 * cos(x/2)" />
|
|
32
|
-
<input type="submit" value="Draw" />
|
|
33
|
-
</form>
|
|
34
|
-
|
|
35
|
-
<div id="plot"></div>
|
|
36
|
-
|
|
37
|
-
<p>
|
|
38
|
-
Used plot library: <a href="https://plot.ly/javascript/">Plotly</a>
|
|
39
|
-
</p>
|
|
40
|
-
|
|
41
|
-
<script>
|
|
42
|
-
function draw() {
|
|
43
|
-
try {
|
|
44
|
-
// compile the expression once
|
|
45
|
-
const expression = document.getElementById('eq').value
|
|
46
|
-
const expr = math.compile(expression)
|
|
47
|
-
|
|
48
|
-
// evaluate the expression repeatedly for different values of x
|
|
49
|
-
const xValues = math.range(-10, 10, 0.5).toArray()
|
|
50
|
-
const yValues = xValues.map(function (x) {
|
|
51
|
-
return expr.evaluate({x: x})
|
|
52
|
-
})
|
|
53
|
-
|
|
54
|
-
// render the plot using plotly
|
|
55
|
-
const trace1 = {
|
|
56
|
-
x: xValues,
|
|
57
|
-
y: yValues,
|
|
58
|
-
type: 'scatter'
|
|
59
|
-
}
|
|
60
|
-
const data = [trace1]
|
|
61
|
-
Plotly.newPlot('plot', data)
|
|
62
|
-
}
|
|
63
|
-
catch (err) {
|
|
64
|
-
console.error(err)
|
|
65
|
-
alert(err)
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
document.getElementById('form').onsubmit = function (event) {
|
|
70
|
-
event.preventDefault()
|
|
71
|
-
draw()
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
draw()
|
|
75
|
-
</script>
|
|
76
|
-
|
|
77
|
-
</body>
|
|
78
|
-
</html>
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="utf-8">
|
|
5
|
-
<title>math.js | pretty printing with MathJax</title>
|
|
6
|
-
|
|
7
|
-
<script src="../../lib/browser/math.js"></script>
|
|
8
|
-
<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
|
|
9
|
-
<script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
|
10
|
-
|
|
11
|
-
<style>
|
|
12
|
-
body,
|
|
13
|
-
html,
|
|
14
|
-
table td,
|
|
15
|
-
table th,
|
|
16
|
-
input[type=text] {
|
|
17
|
-
font-size: 11pt;
|
|
18
|
-
font-family: verdana, arial, sans-serif;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
h1 {
|
|
22
|
-
font-size: 11pt;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
input[type=text] {
|
|
26
|
-
padding: 5px;
|
|
27
|
-
width: 400px;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
table {
|
|
31
|
-
border-collapse: collapse;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
table td,
|
|
35
|
-
table th {
|
|
36
|
-
padding: 5px;
|
|
37
|
-
border: 1px solid lightgray;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
table th {
|
|
41
|
-
background-color: lightgray;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
</style>
|
|
45
|
-
</head>
|
|
46
|
-
<body>
|
|
47
|
-
|
|
48
|
-
<h1>
|
|
49
|
-
Expression evaluation with math.js, pretty printing with MathJax
|
|
50
|
-
</h1>
|
|
51
|
-
|
|
52
|
-
<table>
|
|
53
|
-
<tr>
|
|
54
|
-
<th>Expression</th>
|
|
55
|
-
<td><input type="text" id="expr"/></td>
|
|
56
|
-
</tr>
|
|
57
|
-
<tr>
|
|
58
|
-
<th>Pretty print</th>
|
|
59
|
-
<td><div id="pretty"></div></td>
|
|
60
|
-
</tr>
|
|
61
|
-
<tr>
|
|
62
|
-
<th>Result</th>
|
|
63
|
-
<td><div id="result"></div></td>
|
|
64
|
-
</tr>
|
|
65
|
-
</table>
|
|
66
|
-
<b>Parenthesis option:</b>
|
|
67
|
-
<input type="radio" name="parenthesis" value="keep" onclick="parenthesis = 'keep'; expr.oninput();" checked>keep
|
|
68
|
-
<input type="radio" name="parenthesis" value="auto" onclick="parenthesis = 'auto'; expr.oninput();">auto
|
|
69
|
-
<input type="radio" name="parenthesis" value="all" onclick="parenthesis = 'all'; expr.oninput();">all
|
|
70
|
-
<br/>
|
|
71
|
-
<b>Implicit multiplication:</b>
|
|
72
|
-
<input type="radio" name="implicit" value="hide" onclick="implicit = 'hide'; expr.oninput();" checked>hide
|
|
73
|
-
<input type="radio" name="implicit" value="show" onclick="implicit = 'show'; expr.oninput();">show
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
<script>
|
|
77
|
-
const expr = document.getElementById('expr')
|
|
78
|
-
const pretty = document.getElementById('pretty')
|
|
79
|
-
const result = document.getElementById('result')
|
|
80
|
-
let parenthesis = 'keep'
|
|
81
|
-
let implicit = 'hide'
|
|
82
|
-
|
|
83
|
-
const mj = function (tex) {
|
|
84
|
-
return MathJax.tex2svg(tex, {em: 16, ex: 6, display: false});
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
// initialize with an example expression
|
|
88
|
-
expr.value = 'sqrt(75 / 3) + det([[-1, 2], [3, 1]]) - sin(pi / 4)^2'
|
|
89
|
-
pretty.innerHTML = '';
|
|
90
|
-
pretty.appendChild(mj(math.parse(expr.value).toTex({parenthesis: parenthesis})));
|
|
91
|
-
result.innerHTML = math.format(math.evaluate(expr.value))
|
|
92
|
-
|
|
93
|
-
expr.oninput = function () {
|
|
94
|
-
let node = null
|
|
95
|
-
|
|
96
|
-
try {
|
|
97
|
-
// parse the expression
|
|
98
|
-
node = math.parse(expr.value)
|
|
99
|
-
|
|
100
|
-
// evaluate the result of the expression
|
|
101
|
-
result.innerHTML = math.format(node.compile().evaluate())
|
|
102
|
-
}
|
|
103
|
-
catch (err) {
|
|
104
|
-
result.innerHTML = '<span style="color: red;">' + err.toString() + '</span>'
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
try {
|
|
108
|
-
// export the expression to LaTeX
|
|
109
|
-
const latex = node ? node.toTex({parenthesis: parenthesis, implicit: implicit}) : ''
|
|
110
|
-
console.log('LaTeX expression:', latex)
|
|
111
|
-
|
|
112
|
-
// display and re-render the expression
|
|
113
|
-
MathJax.typesetClear();
|
|
114
|
-
pretty.innerHTML = '';
|
|
115
|
-
pretty.appendChild(mj(latex));
|
|
116
|
-
}
|
|
117
|
-
catch (err) {}
|
|
118
|
-
}
|
|
119
|
-
</script>
|
|
120
|
-
|
|
121
|
-
</body>
|
|
122
|
-
</html>
|