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.
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>