mathjs 10.5.2 → 10.5.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (303) hide show
  1. package/HISTORY.md +8 -0
  2. package/lib/browser/math.js +3 -3
  3. package/lib/browser/math.js.map +1 -1
  4. package/lib/cjs/header.js +2 -2
  5. package/lib/cjs/version.js +1 -1
  6. package/lib/esm/version.js +1 -1
  7. package/package.json +6 -11
  8. package/docs/command_line_interface.md +0 -87
  9. package/docs/core/chaining.md +0 -41
  10. package/docs/core/configuration.md +0 -144
  11. package/docs/core/extension.md +0 -263
  12. package/docs/core/index.md +0 -21
  13. package/docs/core/serialization.md +0 -50
  14. package/docs/custom_bundling.md +0 -116
  15. package/docs/datatypes/bignumbers.md +0 -102
  16. package/docs/datatypes/complex_numbers.md +0 -168
  17. package/docs/datatypes/fractions.md +0 -75
  18. package/docs/datatypes/index.md +0 -67
  19. package/docs/datatypes/matrices.md +0 -375
  20. package/docs/datatypes/numbers.md +0 -106
  21. package/docs/datatypes/units.md +0 -444
  22. package/docs/expressions/algebra.md +0 -110
  23. package/docs/expressions/customization.md +0 -379
  24. package/docs/expressions/expression_trees.md +0 -710
  25. package/docs/expressions/html_classes.md +0 -38
  26. package/docs/expressions/index.md +0 -21
  27. package/docs/expressions/parsing.md +0 -224
  28. package/docs/expressions/security.md +0 -89
  29. package/docs/expressions/syntax.md +0 -706
  30. package/docs/getting_started.md +0 -124
  31. package/docs/index.md +0 -39
  32. package/docs/reference/classes/densematrix.md +0 -247
  33. package/docs/reference/classes/fibonacciheap.md +0 -70
  34. package/docs/reference/classes/matrixindex.md +0 -133
  35. package/docs/reference/classes/matrixrange.md +0 -158
  36. package/docs/reference/classes/resultset.md +0 -47
  37. package/docs/reference/classes/sparsematrix.md +0 -245
  38. package/docs/reference/classes/unit.md +0 -242
  39. package/docs/reference/classes.md +0 -86
  40. package/docs/reference/constants.md +0 -29
  41. package/docs/reference/functions/abs.md +0 -46
  42. package/docs/reference/functions/acos.md +0 -49
  43. package/docs/reference/functions/acosh.md +0 -47
  44. package/docs/reference/functions/acot.md +0 -48
  45. package/docs/reference/functions/acoth.md +0 -46
  46. package/docs/reference/functions/acsc.md +0 -49
  47. package/docs/reference/functions/acsch.md +0 -46
  48. package/docs/reference/functions/add.md +0 -59
  49. package/docs/reference/functions/and.md +0 -53
  50. package/docs/reference/functions/apply.md +0 -56
  51. package/docs/reference/functions/arg.md +0 -53
  52. package/docs/reference/functions/asec.md +0 -49
  53. package/docs/reference/functions/asech.md +0 -46
  54. package/docs/reference/functions/asin.md +0 -49
  55. package/docs/reference/functions/asinh.md +0 -46
  56. package/docs/reference/functions/atan.md +0 -49
  57. package/docs/reference/functions/atan2.md +0 -56
  58. package/docs/reference/functions/atanh.md +0 -46
  59. package/docs/reference/functions/bellNumbers.md +0 -45
  60. package/docs/reference/functions/bignumber.md +0 -47
  61. package/docs/reference/functions/bin.md +0 -45
  62. package/docs/reference/functions/bitAnd.md +0 -51
  63. package/docs/reference/functions/bitNot.md +0 -51
  64. package/docs/reference/functions/bitOr.md +0 -52
  65. package/docs/reference/functions/bitXor.md +0 -51
  66. package/docs/reference/functions/boolean.md +0 -50
  67. package/docs/reference/functions/catalan.md +0 -45
  68. package/docs/reference/functions/cbrt.md +0 -60
  69. package/docs/reference/functions/ceil.md +0 -63
  70. package/docs/reference/functions/chain.md +0 -54
  71. package/docs/reference/functions/clone.md +0 -43
  72. package/docs/reference/functions/column.md +0 -45
  73. package/docs/reference/functions/combinations.md +0 -49
  74. package/docs/reference/functions/combinationsWithRep.md +0 -49
  75. package/docs/reference/functions/compare.md +0 -67
  76. package/docs/reference/functions/compareNatural.md +0 -92
  77. package/docs/reference/functions/compareText.md +0 -54
  78. package/docs/reference/functions/compile.md +0 -56
  79. package/docs/reference/functions/complex.md +0 -17
  80. package/docs/reference/functions/composition.md +0 -46
  81. package/docs/reference/functions/concat.md +0 -56
  82. package/docs/reference/functions/config.md +0 -44
  83. package/docs/reference/functions/conj.md +0 -50
  84. package/docs/reference/functions/cos.md +0 -51
  85. package/docs/reference/functions/cosh.md +0 -46
  86. package/docs/reference/functions/cot.md +0 -47
  87. package/docs/reference/functions/coth.md +0 -49
  88. package/docs/reference/functions/count.md +0 -45
  89. package/docs/reference/functions/createUnit.md +0 -52
  90. package/docs/reference/functions/cross.md +0 -58
  91. package/docs/reference/functions/csc.md +0 -47
  92. package/docs/reference/functions/csch.md +0 -49
  93. package/docs/reference/functions/ctranspose.md +0 -50
  94. package/docs/reference/functions/cube.md +0 -51
  95. package/docs/reference/functions/cumsum.md +0 -57
  96. package/docs/reference/functions/deepEqual.md +0 -53
  97. package/docs/reference/functions/derivative.md +0 -61
  98. package/docs/reference/functions/det.md +0 -49
  99. package/docs/reference/functions/diag.md +0 -61
  100. package/docs/reference/functions/diff.md +0 -70
  101. package/docs/reference/functions/distance.md +0 -80
  102. package/docs/reference/functions/divide.md +0 -55
  103. package/docs/reference/functions/dot.md +0 -48
  104. package/docs/reference/functions/dotDivide.md +0 -52
  105. package/docs/reference/functions/dotMultiply.md +0 -52
  106. package/docs/reference/functions/dotPow.md +0 -49
  107. package/docs/reference/functions/eigs.md +0 -54
  108. package/docs/reference/functions/equal.md +0 -75
  109. package/docs/reference/functions/equalText.md +0 -53
  110. package/docs/reference/functions/erf.md +0 -49
  111. package/docs/reference/functions/evaluate.md +0 -56
  112. package/docs/reference/functions/exp.md +0 -54
  113. package/docs/reference/functions/expm.md +0 -49
  114. package/docs/reference/functions/expm1.md +0 -54
  115. package/docs/reference/functions/factorial.md +0 -49
  116. package/docs/reference/functions/fft.md +0 -35
  117. package/docs/reference/functions/filter.md +0 -50
  118. package/docs/reference/functions/fix.md +0 -62
  119. package/docs/reference/functions/flatten.md +0 -46
  120. package/docs/reference/functions/floor.md +0 -66
  121. package/docs/reference/functions/forEach.md +0 -41
  122. package/docs/reference/functions/format.md +0 -127
  123. package/docs/reference/functions/fraction.md +0 -45
  124. package/docs/reference/functions/gamma.md +0 -49
  125. package/docs/reference/functions/gcd.md +0 -50
  126. package/docs/reference/functions/getMatrixDataType.md +0 -59
  127. package/docs/reference/functions/hasNumericValue.md +0 -55
  128. package/docs/reference/functions/help.md +0 -42
  129. package/docs/reference/functions/hex.md +0 -45
  130. package/docs/reference/functions/hypot.md +0 -51
  131. package/docs/reference/functions/identity.md +0 -57
  132. package/docs/reference/functions/ifft.md +0 -35
  133. package/docs/reference/functions/im.md +0 -53
  134. package/docs/reference/functions/import.md +0 -68
  135. package/docs/reference/functions/index.md +0 -55
  136. package/docs/reference/functions/intersect.md +0 -50
  137. package/docs/reference/functions/inv.md +0 -45
  138. package/docs/reference/functions/invmod.md +0 -47
  139. package/docs/reference/functions/isInteger.md +0 -55
  140. package/docs/reference/functions/isNaN.md +0 -56
  141. package/docs/reference/functions/isNegative.md +0 -55
  142. package/docs/reference/functions/isNumeric.md +0 -55
  143. package/docs/reference/functions/isPositive.md +0 -57
  144. package/docs/reference/functions/isPrime.md +0 -54
  145. package/docs/reference/functions/isZero.md +0 -59
  146. package/docs/reference/functions/kldivergence.md +0 -41
  147. package/docs/reference/functions/kron.md +0 -53
  148. package/docs/reference/functions/larger.md +0 -60
  149. package/docs/reference/functions/largerEq.md +0 -56
  150. package/docs/reference/functions/lcm.md +0 -54
  151. package/docs/reference/functions/leafCount.md +0 -52
  152. package/docs/reference/functions/leftShift.md +0 -52
  153. package/docs/reference/functions/lgamma.md +0 -46
  154. package/docs/reference/functions/log.md +0 -57
  155. package/docs/reference/functions/log10.md +0 -50
  156. package/docs/reference/functions/log1p.md +0 -54
  157. package/docs/reference/functions/log2.md +0 -50
  158. package/docs/reference/functions/lsolve.md +0 -51
  159. package/docs/reference/functions/lsolveAll.md +0 -51
  160. package/docs/reference/functions/lup.md +0 -52
  161. package/docs/reference/functions/lusolve.md +0 -59
  162. package/docs/reference/functions/mad.md +0 -50
  163. package/docs/reference/functions/map.md +0 -65
  164. package/docs/reference/functions/matrix.md +0 -56
  165. package/docs/reference/functions/matrixFromColumns.md +0 -49
  166. package/docs/reference/functions/matrixFromFunction.md +0 -54
  167. package/docs/reference/functions/matrixFromRows.md +0 -49
  168. package/docs/reference/functions/max.md +0 -61
  169. package/docs/reference/functions/mean.md +0 -57
  170. package/docs/reference/functions/median.md +0 -57
  171. package/docs/reference/functions/min.md +0 -61
  172. package/docs/reference/functions/mod.md +0 -59
  173. package/docs/reference/functions/mode.md +0 -50
  174. package/docs/reference/functions/multinomial.md +0 -46
  175. package/docs/reference/functions/multiply.md +0 -60
  176. package/docs/reference/functions/norm.md +0 -59
  177. package/docs/reference/functions/not.md +0 -50
  178. package/docs/reference/functions/nthRoot.md +0 -53
  179. package/docs/reference/functions/nthRoots.md +0 -58
  180. package/docs/reference/functions/number.md +0 -49
  181. package/docs/reference/functions/numeric.md +0 -52
  182. package/docs/reference/functions/oct.md +0 -45
  183. package/docs/reference/functions/ones.md +0 -59
  184. package/docs/reference/functions/or.md +0 -53
  185. package/docs/reference/functions/parse.md +0 -56
  186. package/docs/reference/functions/parser.md +0 -70
  187. package/docs/reference/functions/partitionSelect.md +0 -53
  188. package/docs/reference/functions/permutations.md +0 -51
  189. package/docs/reference/functions/pickRandom.md +0 -59
  190. package/docs/reference/functions/pinv.md +0 -44
  191. package/docs/reference/functions/pow.md +0 -65
  192. package/docs/reference/functions/print.md +0 -64
  193. package/docs/reference/functions/prod.md +0 -55
  194. package/docs/reference/functions/qr.md +0 -65
  195. package/docs/reference/functions/quantileSeq.md +0 -62
  196. package/docs/reference/functions/random.md +0 -54
  197. package/docs/reference/functions/randomInt.md +0 -53
  198. package/docs/reference/functions/range.md +0 -70
  199. package/docs/reference/functions/rationalize.md +0 -68
  200. package/docs/reference/functions/re.md +0 -53
  201. package/docs/reference/functions/reshape.md +0 -60
  202. package/docs/reference/functions/resize.md +0 -51
  203. package/docs/reference/functions/resolve.md +0 -46
  204. package/docs/reference/functions/rightArithShift.md +0 -52
  205. package/docs/reference/functions/rightLogShift.md +0 -52
  206. package/docs/reference/functions/rotate.md +0 -53
  207. package/docs/reference/functions/rotationMatrix.md +0 -57
  208. package/docs/reference/functions/round.md +0 -61
  209. package/docs/reference/functions/row.md +0 -45
  210. package/docs/reference/functions/sec.md +0 -47
  211. package/docs/reference/functions/sech.md +0 -49
  212. package/docs/reference/functions/setCartesian.md +0 -49
  213. package/docs/reference/functions/setDifference.md +0 -47
  214. package/docs/reference/functions/setDistinct.md +0 -43
  215. package/docs/reference/functions/setIntersect.md +0 -46
  216. package/docs/reference/functions/setIsSubset.md +0 -47
  217. package/docs/reference/functions/setMultiplicity.md +0 -46
  218. package/docs/reference/functions/setPowerset.md +0 -43
  219. package/docs/reference/functions/setSize.md +0 -47
  220. package/docs/reference/functions/setSymDifference.md +0 -47
  221. package/docs/reference/functions/setUnion.md +0 -46
  222. package/docs/reference/functions/sign.md +0 -52
  223. package/docs/reference/functions/simplify.md +0 -130
  224. package/docs/reference/functions/simplifyConstant.md +0 -52
  225. package/docs/reference/functions/simplifyCore.md +0 -50
  226. package/docs/reference/functions/sin.md +0 -51
  227. package/docs/reference/functions/sinh.md +0 -46
  228. package/docs/reference/functions/size.md +0 -50
  229. package/docs/reference/functions/slu.md +0 -57
  230. package/docs/reference/functions/smaller.md +0 -60
  231. package/docs/reference/functions/smallerEq.md +0 -56
  232. package/docs/reference/functions/sort.md +0 -56
  233. package/docs/reference/functions/sparse.md +0 -51
  234. package/docs/reference/functions/splitUnit.md +0 -37
  235. package/docs/reference/functions/sqrt.md +0 -50
  236. package/docs/reference/functions/sqrtm.md +0 -46
  237. package/docs/reference/functions/square.md +0 -51
  238. package/docs/reference/functions/squeeze.md +0 -53
  239. package/docs/reference/functions/std.md +0 -76
  240. package/docs/reference/functions/stirlingS2.md +0 -52
  241. package/docs/reference/functions/string.md +0 -49
  242. package/docs/reference/functions/subset.md +0 -65
  243. package/docs/reference/functions/subtract.md +0 -54
  244. package/docs/reference/functions/sum.md +0 -54
  245. package/docs/reference/functions/symbolicEqual.md +0 -62
  246. package/docs/reference/functions/tan.md +0 -49
  247. package/docs/reference/functions/tanh.md +0 -50
  248. package/docs/reference/functions/to.md +0 -47
  249. package/docs/reference/functions/trace.md +0 -50
  250. package/docs/reference/functions/transpose.md +0 -49
  251. package/docs/reference/functions/typeOf.md +0 -81
  252. package/docs/reference/functions/typed.md +0 -56
  253. package/docs/reference/functions/unaryMinus.md +0 -49
  254. package/docs/reference/functions/unaryPlus.md +0 -48
  255. package/docs/reference/functions/unequal.md +0 -74
  256. package/docs/reference/functions/unit.md +0 -48
  257. package/docs/reference/functions/usolve.md +0 -51
  258. package/docs/reference/functions/usolveAll.md +0 -51
  259. package/docs/reference/functions/variance.md +0 -78
  260. package/docs/reference/functions/xgcd.md +0 -47
  261. package/docs/reference/functions/xor.md +0 -53
  262. package/docs/reference/functions/zeros.md +0 -57
  263. package/docs/reference/functions.md +0 -297
  264. package/docs/reference/index.md +0 -5
  265. package/examples/advanced/convert_fraction_to_bignumber.js +0 -59
  266. package/examples/advanced/custom_argument_parsing.js +0 -98
  267. package/examples/advanced/custom_datatype.js +0 -56
  268. package/examples/advanced/custom_evaluate_using_factories.js +0 -19
  269. package/examples/advanced/custom_evaluate_using_import.js +0 -18
  270. package/examples/advanced/custom_loading.js +0 -33
  271. package/examples/advanced/custom_relational_functions.js +0 -62
  272. package/examples/advanced/custom_scope_objects.js +0 -115
  273. package/examples/advanced/expression_trees.js +0 -55
  274. package/examples/advanced/function_transform.js +0 -50
  275. package/examples/advanced/more_secure_eval.js +0 -36
  276. package/examples/advanced/use_bigint.js +0 -43
  277. package/examples/advanced/web_server/math_worker.js +0 -24
  278. package/examples/advanced/web_server/server.js +0 -80
  279. package/examples/algebra.js +0 -34
  280. package/examples/basic_usage.js +0 -49
  281. package/examples/bignumbers.js +0 -52
  282. package/examples/browser/angle_configuration.html +0 -134
  283. package/examples/browser/basic_usage.html +0 -39
  284. package/examples/browser/currency_conversion.html +0 -125
  285. package/examples/browser/custom_separators.html +0 -81
  286. package/examples/browser/plot.html +0 -78
  287. package/examples/browser/pretty_printing_with_mathjax.html +0 -122
  288. package/examples/browser/printing_html.html +0 -170
  289. package/examples/browser/requirejs_loading.html +0 -20
  290. package/examples/browser/rocket_trajectory_optimization.html +0 -301
  291. package/examples/browser/webworkers/webworkers.html +0 -80
  292. package/examples/browser/webworkers/worker.js +0 -28
  293. package/examples/chaining.js +0 -56
  294. package/examples/complex_numbers.js +0 -67
  295. package/examples/expressions.js +0 -188
  296. package/examples/fractions.js +0 -74
  297. package/examples/import.js +0 -95
  298. package/examples/matrices.js +0 -101
  299. package/examples/objects.js +0 -35
  300. package/examples/package.json +0 -3
  301. package/examples/serialization.js +0 -16
  302. package/examples/sparse_matrices.js +0 -19
  303. 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>