UNPKG

69.9 kBMarkdownView Raw
1# History
2
3
4## 2018-09-09, version 5.1.2
5
6- Fixed a typo in the docs of `parse`. Thanks @mathiasvr.
7- Fixed #1222: a typo in the docs of `subset`.
8- Fixed #1236: `quantileSeq` has inconsistent return.
9- Fixed #1237: norm sometimes returning a complex number instead of
10 number.
11- Upgraded dependencies (`fraction.js@4.0.9`)
12- Upgraded devDependencies (`babel@7`, `karma-webpack@3.0.4`,
13 `nyc@13.0.1`, `standard@12.0.0`, `uglify-js@3.4.9`, `webpack@4.17.2`)
14
15
16## 2018-08-21, version 5.1.1
17
18- Function `isNumeric` now recognizes more types.
19- Fixed #1214: functions `sqrt`, `max`, `min`, `var`, `std`, `mode`, `mad`,
20 `median`, and `partitionSelect` not neatly handling `NaN` inputs. In some
21 cases (`median`, `mad`, and `partitionSelect`) this resulted in an infinite
22 loop.
23- Upgraded dependencies (`escape-latex@1.1.1`)
24- Upgraded devDependencies (`webpack@4.17.0`)
25
26
27## 2018-08-12, version 5.1.0
28
29- Implemented support for strings enclosed in single quotes.
30 Thanks @jean-emmanuel.
31- Implemented function `getMatrixDataType`. Thanks @JasonShin.
32- Implemented new `options` argument in `simplify`. Thanks @paulobuchsbaum.
33- Bug fixes in `rationalize`, see #1173. Thanks @paulobuchsbaum.
34
35
36## 2018-07-22, version 5.0.4
37
38- Strongly improved the performance of functions `factorial` for numbers.
39 This improves performance of functions `gamma`, `permutation`, and
40 `combination` too. See #1170. Thanks @honeybar.
41- Strongly improved the performance of function `reshape`, thanks to a
42 friend of @honeybar.
43
44
45## 2018-07-14, version 5.0.3
46
47- Fixed many functions (for example `add` and `subtract`) not working
48 with matrices having a `datatype` defined.
49- Fixed #1147: bug in `format` with `engineering` notation in outputting
50 the correct number of significant figures. Thanks @ericman314.
51- Fixed #1162: transform functions not being cleaned up when overriding
52 it by importing a factory function with the same name.
53- Fixed broken links in the documentation. Thanks @stropitek.
54- Refactored the code of `parse` into a functional approach.
55 Thanks @harrysarson.
56- Changed `decimal.js` import to ES6. Thanks @weinshel.
57
58
59## 2018-07-07, version 5.0.2
60
61- Fixed #1136: rocket trajectory example broken (since v4.0.0).
62- Fixed #1137: `simplify` unnecessarily replacing implicit multiplication with
63 explicit multiplication.
64- Fixed #1146: `rationalize` throwing exceptions for some input with decimals.
65 Thanks @maruta.
66- Fixed #1088: function arguments not being passed to `rawArgs` functions.
67- Fixed advanced example `add_new_datatypes`.
68- Fixed mathjs core constants not working without complex numbers.
69 Thanks @ChristopherChudzicki.
70- Fixed a broken link in the documentation on units. Thanks @stropitek.
71- Upgraded dependencies (`typed-function@1.0.4`, `complex.js@2.0.11`).
72- Upgraded devDependencies (`babel-loader@7.1.5 `, `uglify-js@3.4.3`,
73 `expr-eval@1.2.2`, `webpack@4.15.1`).
74
75
76## 2018-07-01, version 5.0.1
77
78- Improved error messaging when converting units. Thanks @gap777.
79- Upgraded devDependencies (`kerma`, `uglify-js`, `webpack`).
80
81
82## 2018-06-16, version 5.0.0
83
84!!! BE CAREFUL: BREAKING CHANGES !!!
85
86- Implemented complex conjugate transpose `math.ctranspose`. See #1097.
87 Thanks @jackschmidt.
88- Changed the behavior of `A'` (transpose) in the expression parser to
89 calculate the complex conjugate transpose. See #1097. Thanks @jackschmidt.
90- Added support for `complex({abs: 1, arg: 1})`, and improved the docs on
91 complex numbers. Thanks @ssaket.
92- Renamed `eye` to `identity`, see #1054.
93- Math.js code can now contain ES6. The ES6 source code is moved from `lib`
94 to `src`, and `lib` now contains the compiled ES5 code.
95- Upgraded dependencies:
96 - `decimal.js` from `9.0.1` to `10.0.1`
97 - Upgraded dev dependencies
98- Changed code style to https://standardjs.com/, run linter on `npm test`.
99 See #1110.
100- Dropped support for bower. Use npm or an other package manages instead.
101- Dropped support for (non-primitive) instances of `Number`, `Boolean`, and
102 `String` from functions `clone` and `typeof`.
103- Dropped official support for IE9 (probably still works, but it's not tested).
104- Fixed #851: More consistent behavior of sqrt, nthRoot, and pow.
105 Thanks @dakotablair.
106- Fixed #1103: Calling `toTex` on node that contains `derivative` causing
107 an exception. Thanks @joelhoover.
108
109
110## 2018-06-02, version 4.4.2
111
112- Drastically improved the performance of `det`. Thanks @ericman314.
113- Fixed #1065, #1121: Fixed wrong documentation of function
114 `compareNatural` and clarified the behavior for strings.
115- Fixed #1122 a regression in function `inv` (since `v4.4.1`).
116 Thanks @ericman314.
117
118
119## 2018-05-29, version 4.4.1
120
121- Fixed #1109: a bug in `inv` when dealing with values close to zero.
122 Thanks @ericman314.
123
124
125## 2018-05-28, version 4.4.0
126
127- Implemented functions `equalText` and `compareText`. See #1085.
128
129
130## 2018-05-21, version 4.3.0
131
132- Implemented matrix exponential `math.expm`. Thanks @ericman314.
133- Fixed #1101: math.js bundle not working when loading in a WebWorker.
134- Upgraded dependencies
135 - `complex.js` from `v2.0.2` to `v2.0.10`.
136 - `fraction.js` from `v4.0.4` to `v4.0.8`.
137- Upgraded devDependencies (`mocha`, `uglify-js`, `webpack`).
138
139
140## 2018-05-05, version 4.2.2
141
142- Fixed calculating the Frobenius norm of complex matrices correctly,
143 see #1098. Thanks @jackschmidt.
144- Fixed #1076: cannot use mathjs in React VR by updating to
145 `escape-latex@1.0.3`.
146
147
148## 2018-05-02, version 4.2.1
149
150- Fixed `dist/math.js` being minified.
151
152
153## 2018-05-02, version 4.2.0
154
155- Implemented function `math.sqrtm`. Thanks @ferrolho.
156- Implemented functions `math.log2`, `math.log1p`, and `math.expm1`.
157 Thanks @BigFav and @harrysarson.
158- Fixed some unit tests broken on nodejs v10.
159- Upgraded development dependencies.
160- Dropped integration testing on nodejs v4.
161
162
163## 2018-04-18, version 4.1.2
164
165- Fixed #1082: implemented support for unit plurals `decades`, `centuries`,
166 and `millennia`.
167- Fixed #1083: units `decade` and `watt` having a wrong name when stringifying.
168 Thanks @ericman314.
169
170
171## 2018-04-11, version 4.1.1
172
173- Fixed #1063: derivative not working when resolving a variable with unary
174 minus like `math.derivative('-x', 'x')`.
175
176
177## 2018-04-08, version 4.1.0
178
179- Extended function `math.print` with support for arrays and matrices.
180 Thanks @jean-emmanuel.
181- Fixed #1077: Serialization/deserialization to JSON with reviver not being
182 supported by nodes.
183- Fixed #1016: Extended `math.typeof` with support for `ResultSet` and nodes
184 like `SymbolNode`.
185- Fixed #1072: Added support for long and short prefixes for the unit `bar`
186 (i.e. `millibar` and `mbar`).
187
188
189## 2018-03-17, version 4.0.1
190
191- Fixed #1062: mathjs not working on ES5 browsers like IE11 and Safari 9.3.
192- Fixed #1061: `math.unit` not accepting input like `1/s`.
193
194
195## 2018-02-25, version 4.0.0
196
197!!! BE CAREFUL: BREAKING CHANGES !!!
198
199Breaking changes (see also #682):
200
201- **New expression compiler**
202
203 The compiler of the expression parser is replaced with one that doesn't use
204 `eval` internally. See #1019. This means:
205
206 - a slightly improved performance on most browsers.
207 - less risk of security exploits.
208 - the code of the new compiler is easier to understand, maintain, and debug.
209
210 Breaking change here: When using custom nodes in the expression parser,
211 the syntax of `_compile` has changed. This is an undocumented feature though.
212
213- **Parsed expressions**
214
215 - The class `ConstantNode` is changed such that it just holds a value
216 instead of holding a stringified value and it's type.
217 `ConstantNode(valueStr, valueType`) is now `ConstantNode(value)`
218 Stringification uses `math.format`, which may result in differently
219 formatted numeric output.
220
221 - The constants `true`, `false`, `null`, `undefined`, `NaN`, `Infinity`,
222 and `uninitialized` are now parsed as ConstantNodes instead of
223 SymbolNodes in the expression parser. See #833.
224
225- **Implicit multiplication**
226
227 - Changed the behavior of implicit multiplication to have higher
228 precedence than explicit multiplication and division, except in
229 a number of specific cases. This gives a more natural behavior
230 for implicit multiplications. For example `24h / 6h` now returns `4`,
231 whilst `1/2 kg` evaluates to `0.5 kg`. Thanks @ericman314. See: #792.
232 Detailed documentation: https://github.com/josdejong/mathjs/blob/v4/docs/expressions/syntax.md#implicit-multiplication.
233
234 - Immediately invoking a function returned by a function like `partialAdd(2)(3)`
235 is no longer supported, instead these expressions are evaluated as
236 an implicit multiplication `partialAdd(2) * (3)`. See #1035.
237
238- **String formatting**
239
240 - In function `math.format`, the options `{exponential: {lower: number, upper: number}}`
241 (where `lower` and `upper` are values) are replaced with `{lowerExp: number, upperExp: number}`
242 (where `lowerExp` and `upperExp` are exponents). See #676. For example:
243 ```js
244 math.format(2000, {exponential: {lower: 1e-2, upper: 1e2}})
245 ```
246 is now:
247 ```js
248 math.format(2000, {lowerExp: -2, upperExp: 2})
249 ```
250
251 - In function `math.format`, the option `notation: 'fixed'` no longer rounds to
252 zero digits when no precision is specified: it leaves the digits as is.
253 See #676.
254
255- **String comparison**
256
257 Changed the behavior of relational functions (`compare`, `equal`,
258 `equalScalar`, `larger`, `largerEq`, `smaller`, `smallerEq`, `unequal`)
259 to compare strings by their numeric value they contain instead of
260 alphabetically. This also impacts functions `deepEqual`, `sort`, `min`,
261 `max`, `median`, and `partitionSelect`. Use `compareNatural` if you
262 need to sort an array with text. See #680.
263
264- **Angle units**
265
266 Changed `rad`, `deg`, and `grad` to have short prefixes,
267 and introduced `radian`, `degree`, and `gradian` and their plurals
268 having long prefixes. See #749.
269
270- **Null**
271
272 - `null` is no longer implicitly casted to a number `0`, so input like
273 `math.add(2, null)` is no longer supported. See #830, #353.
274
275 - Dropped constant `uninitialized`, which was used to initialize
276 leave new entries undefined when resizing a matrix is removed.
277 Use `undefined` instead to indicate entries that are not explicitly
278 set. See #833.
279
280- **New typed-function library**
281
282 - The `typed-function` library used to check the input types
283 of functions is completely rewritten and doesn't use `eval` under
284 the hood anymore. This means a reduced security risk, and easier
285 to debug code. The API is the same, but error messages may differ
286 a bit. Performance is comparable but may differ in specific
287 use cases and browsers.
288
289Non breaking changes:
290
291- Thanks to the new expression compiler and `typed-function` implementation,
292 mathjs doesn't use JavaScript's `eval` anymore under the hood.
293 This allows using mathjs in environments with security restrictions.
294 See #401.
295- Implemented additional methods `isUnary()` and `isBinary()` on
296 `OperatorNode`. See #1025.
297- Improved error messages for statistical functions.
298- Upgraded devDependencies.
299- Fixed #1014: `derivative` silently dropping additional arguments
300 from operator nodes with more than two arguments.
301
302
303## 2018-02-07, version 3.20.2
304
305- Upgraded to `typed-function@0.10.7` (bug-fix release).
306- Fixed option `implicit` not being copied from an `OperatorNode`
307 when applying function `map`. Thanks @HarrySarson.
308- Fixed #995: spaces and underscores not property being escaped
309 in `toTex()`. Thanks @FSMaxB.
310
311
312## 2018-01-17, version 3.20.1
313
314- Fixed #1018: `simplifyCore` failing in some cases with parentheses.
315 Thanks @firepick1.
316
317
318## 2018-01-14, version 3.20.0
319
320- Implement support for 3 or more arguments for operators `+` and `*` in
321 `derivative`. Thanks @HarrySarson. See #1002.
322- Fixed `simplify` evalution of `simplify` of functions with more than two
323 arguments wrongly: `simplify('f(x, y, z)') evaluated to `f(f(x, y), z)`
324 instead of `f(x, y, z)`. Thanks @joelhoover.
325- Fixed `simplify` throwing an error in some cases when simplifying unknown
326 functions, for example `simplify('f(4)')`. Thanks @joelhoover.
327- Fixed #1013: `simplify` wrongly simplifing some expressions containing unary
328 minus, like `0 - -x`. Thanks @joelhoover.
329- Fixed an error in an example in the documentation of `xor`. Thanks @denisx.
330
331
332## 2018-01-06, version 3.19.0
333
334- Extended functions `distance` and `intersect` with support for BigNumbers.
335 Thanks @ovk.
336- Improvements in function `simplify`: added a rule that allows combining
337 of like terms in embedded quantities. Thanks @joelhoover.
338
339
340## 2017-12-28, version 3.18.1
341
342- Fixed #998: An issue with simplifying an expression containing a subtraction.
343 Thanks @firepick1.
344
345
346## 2017-12-16, version 3.18.0
347
348- Implemented function `rationalize`. Thanks @paulobuchsbaum.
349- Upgraded dependencies:
350 ```
351 decimal.js 7.2.3 → 9.0.1 (no breaking changes affecting mathjs)
352 fraction.js 4.0.2 → 4.0.4
353 tiny-emitter 2.0.0 → 2.0.2
354 ```
355- Upgraded dev dependencies.
356- Fixed #975: a wrong example in the docs of lusolve.
357- Fixed #983: `pickRandom` returning an array instead of single value
358 when input was an array with just one value. Clarified docs.
359- Fixed #969: preven issues with yarn autoclean by renaming an
360 interally used folder "docs" to "embeddedDocs".
361
362
363## 2017-11-18, version 3.17.0
364
365- Improved `simplify` for nested exponentiations. Thanks @IvanVergiliev.
366- Fixed a security issue in `typed-function` allowing arbitrary code execution
367 in the JavaScript engine by creating a typed function with JavaScript code
368 in the name. Thanks Masato Kinugawa.
369- Fixed a security issue where forbidden properties like constructor could be
370 replaced by using unicode characters when creating an object. No known exploit,
371 but could possibly allow arbitrary code execution. Thanks Masato Kinugawa.
372
373
374## 2017-10-18, version 3.16.5
375
376- Fixed #954: Functions `add` and `multiply` not working when
377 passing three or more arrays or matrices.
378
379
380## 2017-10-01, version 3.16.4
381
382- Fixed #948, #949: function `simplify` returning wrong results or
383 running into an infinite recursive loop. Thanks @ericman314.
384- Fixed many small issues in the embedded docs. Thanks @Schnark.
385
386
387## 2017-08-28, version 3.16.3
388
389- Fixed #934: Wrong simplification of unary minus. Thanks @firepick1.
390- Fixed #933: function `simplify` reordering operations. Thanks @firepick1.
391- Fixed #930: function `isNaN` returning wrong result for complex
392 numbers having just one of their parts (re/im) being `NaN`.
393- Fixed #929: `FibonacciHeap.isEmpty` returning wrong result.
394
395
396## 2017-08-20, version 3.16.2
397
398- Fixed #924: a regression in `simplify` not accepting the signature
399 `simplify(expr, rules, scope)` anymore. Thanks @firepick1.
400- Fixed missing parenthesis when stringifying expressions containing
401 implicit multiplications (see #922). Thanks @FSMaxB.
402
403
404## 2017-08-12, version 3.16.1
405
406- For security reasons, type checking is now done in a more strict
407 way using functions like `isComplex(x)` instead of duck type checking
408 like `x && x.isComplex === true`.
409- Fixed #915: No access to property "name".
410- Fixed #901: Simplify units when calling `unit.toNumeric()`.
411 Thanks @AlexanderBeyn.
412- Fixed `toString` of a parsed expression tree containing an
413 immediately invoked function assignment not being wrapped in
414 parenthesis (for example `(f(x) = x^2)(4)`).
415
416
417## 2017-08-06, version 3.16.0
418
419- Significant performance improvements in `math.simplify`.
420 Thanks @firepick1.
421- Improved API for `math.simplify`, optionally pass a scope with
422 variables which are resolved, see #907. Thanks @firepick1.
423- Fixed #912: math.js didn't work on IE10 anymore (regression
424 since 3.15.0).
425
426
427## 2017-07-29, version 3.15.0
428
429- Added support for the dollar character `$` in symbol names (see #895).
430- Allow objects with prototypes as scope again in the expression parser,
431 this was disabled for security reasons some time ago. See #888, #899.
432 Thanks @ThomasBrierley.
433- Fixed #846: Issues in the functions `map`, `forEach`, and `filter`
434 when used in the expression parser:
435 - Not being able to use a function assignment as inline expression
436 for the callback function.
437 - Not being able to pass an inline expression as callback for `map`
438 and `forEach`.
439 - Index and original array/matrix not passed in `map` and `filter`.
440
441
442## 2017-07-05, version 3.14.2
443
444- Upgraded to `fraction.js@4.0.2`
445- Fixed #891 using BigNumbers not working in browser environments.
446
447
448## 2017-06-30, version 3.14.1
449
450- Reverted to `fraction.js@4.0.0`, there is an issue with `4.0.1`
451 in the browser.
452
453
454## 2017-06-30, version 3.14.0
455
456- Implemented set methods `setCartesian`, `setDifference`,
457 `setDistinct`, `setIntersect`, `setIsSubset`, `setPowerset`,
458 `setSize`. Thanks @Nekomajin42.
459- Implemented method `toHTML` on nodes. Thanks @Nekomajin42.
460- Implemented `compareNatural` and `sort([...], 'natural')`.
461- Upgraded dependencies to the latest versions:
462 - `complex.js@2.0.4`
463 - `decimal.js@7.2.3`
464 - `fraction.js@4.0.1`
465 - `tiny-emitter@2.0.0`
466 - And all devDependencies.
467- Fixed #865: `splitUnit` can now deal with round-off errors.
468 Thanks @ericman314.
469- Fixed #876: incorrect definition for unit `erg`. Thanks @pjhampton.
470- More informative error message when using single quotes instead of
471 double quotes around a string. Thanks @HarrySarson.
472
473
474## 2017-05-27, version 3.13.3
475
476- Fixed a bug in function `intersection` of line and plane.
477 Thanks @viclai.
478- Fixed security vulnerabilities.
479
480
481## 2017-05-26, version 3.13.2
482
483- Disabled function `chain` inside the expression parser for security
484 reasons (it's not needed there anyway).
485- Fixed #856: function `subset` not returning non-primitive scalars
486 from Arrays correctly. (like `math.eval('arr[1]', {arr: [math.bignumber(2)]})`.
487- Fixed #861: physical constants not available in the expression parser.
488
489
490## 2017-05-12, version 3.13.1
491
492- Fixed creating units with an alias not working within the expression
493 parser.
494- Fixed security vulnerabilities. Thanks Sam.
495
496
497## 2017-05-12, version 3.13.0
498
499- Command line application can now evaluate inline expressions
500 like `mathjs 1+2`. Thanks @slavaGanzin.
501- Function `derivative` now supports `abs`. Thanks @tetslee.
502- Function `simplify` now supports BigNumbers. Thanks @tetslee.
503- Prevent against endless loops in `simplify`. Thanks @tetslee.
504- Fixed #813: function `simplify` converting small numbers to inexact
505 Fractions. Thanks @tetslee.
506- Fixed #838: Function `simplify` now supports constants like `e`.
507 Thanks @tetslee.
508
509
510## 2017-05-05, version 3.12.3
511
512- Fixed security vulnerabilities. Thanks Dan and Sam.
513
514
515## 2017-04-30, version 3.12.2
516
517- Added a rocket trajectory optimization example.
518
519
520## 2017-04-24, version 3.12.1
521
522- Fixed #804
523 - Improved handling of powers of `Infinity`. Thanks @HarrySarson.
524 - Fixed wrong formatting of complex NaN.
525- Fixed security vulnerabilities in the expression parser.
526 Thanks Sam and Dan.
527
528
529## 2017-04-17, version 3.12.0
530
531- Implemented QR decomposition, function `math.qr`. Thanks @HarrySarson.
532- Fixed #824: Calling `math.random()` freezes IE and node.js.
533
534
535## 2017-04-08, version 3.11.5
536
537- More security measures in the expression parser.
538 WARNING: the behavior of the expression parser is now more strict,
539 some undocumented features may not work any longer.
540 - Accessing and assigning properties is now only allowed on plain
541 objects, not on classes, arrays, and functions anymore.
542 - Accessing methods is restricted to a set of known, safe methods.
543
544
545## 2017-04-03, version 3.11.4
546
547- Fixed a security vulnerability in the expression parser. Thanks @xfix.
548
549
550## 2017-04-03, version 3.11.3
551
552- Fixed a security vulnerability in the expression parser. Thanks @xfix.
553
554
555## 2017-04-03, version 3.11.2
556
557- Fixed a security vulnerability in the expression parser. Thanks @xfix.
558
559
560## 2017-04-02, version 3.11.1
561
562- Fixed security vulnerabilities in the expression parser.
563 Thanks Joe Vennix and @xfix.
564
565
566## 2017-04-02, version 3.11.0
567
568- Implemented method Unit.toSI() to convert a unit to base SI units.
569 Thanks @ericman314.
570- Fixed #821, #822: security vulnerabilities in the expression parser.
571 Thanks @comex and @xfix.
572
573
574## 2017-03-31, version 3.10.3
575
576- More security fixes related to the ones fixed in `v3.10.2`.
577
578
579## 2017-03-31, version 3.10.2
580
581- Fixed a security vulnerability in the expression parser allowing
582 execution of arbitrary JavaScript. Thanks @CapacitorSet and @denvit.
583
584
585## 2017-03-26, version 3.10.1
586
587- Fixed `xgcd` for negative values. Thanks @litmit.
588- Fixed #807: function transform of existing functions not being removed when
589 overriding such a function.
590
591
592## 2017-03-05, version 3.10.0
593
594- Implemented function `reshape`. Thanks @patgrasso and @ericman314.
595- Implemented configuration option `seedRandom` for deterministic random
596 numbers. Thanks @morsecodist.
597- Small fixes in the docs. Thanks @HarrySarson.
598- Dropped support for component package manager (which became deprecated about
599 one and a half year ago).
600
601
602## 2017-02-22, version 3.9.3
603
604- Fixed #797: issue with production builds of React Native projects.
605- Fixed `math.round` not accepting inputs `NaN`, `Infinity`, `-Infinity`.
606- Upgraded all dependencies.
607
608
609## 2017-02-16, version 3.9.2
610
611- Fixed #795: Parse error in case of a multi-line expression with just comments.
612
613
614## 2017-02-06, version 3.9.1
615
616- Fixed #789: Math.js not supporting conversion of `string` to `BigNumber`,
617 `Fraction`, or `Complex` number.
618- Fixed #790: Expression parser did not pass function arguments of enclosing
619 functions via `scope` to functions having `rawArgs = true`.
620- Small fixes in the docs. Thanks @HarrySarson.
621
622
623## 2017-01-23, version 3.9.0
624
625- Implemented support for algebra: powerful new functions `simplify` and
626 `derivative`. Thanks @ericman314, @tetslee, and @BigFav.
627- Implemented Kronecker Product `kron`. Thanks @adamisntdead.
628- Reverted `FunctionNode` not accepting a string as function name anymore.
629- Fixed #765: `FunctionAssignmentNode.toString()` returning a string
630 incompatible with the function assignment syntax.
631
632
633## 2016-12-15, version 3.8.1
634
635- Implemented function `mad` (median absolute deviation). Thanks @ruhleder.
636- Fixed #762: expression parser failing to invoke a function returned
637 by a function.
638
639
640## 2016-11-18, version 3.8.0
641
642- Functions `add` and `multiply` now accept more than two arguments. See #739.
643- `OperatorNode` now supports more than two arguments. See #739. Thanks @FSMaxB.
644- Implemented a method `Node.cloneDeep` for the expression nodes. See #745.
645- Fixed a bug in `Node.clone()` not cloning implicit multiplication correctly.
646 Thanks @FSMaxB.
647- Fixed #737: Improved algorithm determining the best prefix for units.
648 It will now retain the original unit like `1 cm` when close enough,
649 instead of returning `10 mm`. Thanks @ericman314.
650- Fixed #732: Allow letter-like unicode characters like Ohm `\u2126`.
651- Fixed #749: Units `rad`, `deg`, and `grad` can now have prefixes like `millirad`.
652- Some fixes in the docs and comments of examples. Thanks @HarrySarson.
653
654
655## 2016-11-05, version 3.7.0
656
657- Implemented method `Node.equals(other)` for all nodes of the expression parser.
658- Implemented BigNumber support in function `arg()`.
659- Command Line Interface loads faster.
660- Implicit conversions between Fractions and BigNumbers throw a neat error now
661 (See #710).
662
663
664## 2016-10-21, version 3.6.0
665
666- Implemented function `erf()`. THanks @patgrasso.
667- Extended function `cross()` to support n-d vectors. Thanks @patgrasso.
668- Extended function `pickRandom` with the option to pick multiple values from
669 an array and give the values weights: `pickRandom(possibles, number, weights)`.
670 Thanks @woylie.
671- Parser now exposes test functions like `isAlpha` which can be replaced in
672 order to adjust the allowed characters in variables names (See #715).
673- Fixed #727: Parser not throwing an error for invalid implicit multiplications
674 like `-2 2` and `2^3 4` (right after the second value of an operator).
675- Fixed #688: Describe allowed variable names in the docs.
676
677
678## 2016-09-21, version 3.5.3
679
680- Some more fixes regarding numbers ending with a decimal mark (like `2.`).
681
682
683## 2016-09-20, version 3.5.2
684
685- Fixed numbers ending with a decimal mark (like `2.`) not being supported by
686 the parser, solved the underlying ambiguity in the parser. See #707, #711.
687
688
689## 2016-09-12, version 3.5.1
690
691- Removed a left over console.log statement. Thanks @eknkc.
692
693
694## 2016-09-07, version 3.5.0
695
696- Comments of expressions are are now stored in the parsed nodes. See #690.
697- Fixed function `print` not accepting an Object with formatting options as
698 third parameter Thanks @ThomasBrierley.
699- Fixed #707: The expression parser no longer accepts numbers ending with a dot
700 like `2.`.
701
702
703## 2016-08-08, version 3.4.1
704
705- Fixed broken bundle files (`dist/math.js`, `dist/math.min.js`).
706- Fixed some layout issues in the function reference docs.
707
708
709## 2016-08-07, version 3.4.0
710
711- Implemented support for custom units using `createUnit`. Thanks @ericman314.
712- Implemented function `splitUnits`. Thanks @ericman314.
713- Implemented function `isPrime`. Thanks @MathBunny.
714
715
716## 2016-07-05, version 3.3.0
717
718- Implemented function `isNaN`.
719- Function `math.filter` now passes three arguments to the callback function:
720 value, index, and array.
721- Removed the check on the number of arguments from functions defined in the
722 expression parser (see #665).
723- Fixed #665: functions `map`, `forEach`, and `filter` now invoke callbacks
724 which are a typed-function with the correct number of arguments.
725
726
727## 2016-04-26, version 3.2.1
728
729- Fixed #651: unable to perform calculations on "Unit-less" units.
730- Fixed matrix.subset mutating the replacement matrix when unsqueezing it.
731
732
733## 2016-04-16, version 3.2.0
734
735- Implemented #644: method `Parser.getAll()` to retrieve all defined variables.
736- Upgraded dependencies (decimal.js@5.0.8, fraction.js@3.3.1,
737 typed-function@0.10.4).
738- Fixed #601: Issue with unnamed typed-functions by upgrading to
739 typed-function v0.10.4.
740- Fixed #636: More strict `toTex` templates, reckon with number of arguments.
741- Fixed #641: Bug in expression parser parsing implicit multiplication with
742 wrong precedence in specific cases.
743- Fixed #645: Added documentation about `engineering` notation of function
744 `math.format`.
745
746
747## 2016-04-03, version 3.1.4
748
749- Using ES6 Math functions like `Math.sinh`, `Math.cbrt`, `Math.sign`, etc when
750 available.
751- Fixed #631: unit aliases `weeks`, `months`, and `years` where missing.
752- Fixed #632: problem with escaped backslashes at the end of strings.
753- Fixed #635: `Node.toString` options where not passed to function arguments.
754- Fixed #629: expression parser throws an error when passing a number with
755 decimal exponent instead of parsing them as implicit multiplication.
756- Fixed #484, #555: inaccuracy of `math.sinh` for values between -1 and 1.
757- Fixed #625: Unit `in` (`inch`) not always working due to ambiguity with
758 the operator `a in b` (alias of `a to b`).
759
760
761## 2016-03-24, version 3.1.3
762
763- Fix broken bundle.
764
765
766## 2016-03-24, version 3.1.2
767
768- Fix broken npm release.
769
770
771## 2016-03-24, version 3.1.1
772
773- Fixed #621: a bug in parsing implicit multiplications like `(2)(3)+4`.
774- Fixed #623: `nthRoot` of zero with a negative root returned `0` instead of
775 `Infinity`.
776- Throw an error when functions `min`, `max`, `mean`, or `median` are invoked
777 with multiple matrices as arguments (see #598).
778
779
780## 2016-03-19, version 3.1.0
781
782- Hide multiplication operator by default when outputting `toTex` and `toString`
783 for implicit multiplications. Implemented and option to output the operator.
784- Implemented unit `kip` and alias `kips`. Thanks @hgupta9.
785- Added support for prefixes for units `mol` and `mole`. Thanks @stu-blair.
786- Restored support for implicit multiplications like `2(3+4)` and `(2+3)(4+5)`.
787- Some improvements in the docs.
788- Added automatic conversions from `boolean` and `null` to `Fraction`,
789 and conversions from `Fraction` to `Complex`.
790
791
792## 2016-03-04, version 3.0.0
793
794### breaking changes
795
796- More restricted support for implicit multiplication in the expression
797 parser: `(...)(...)` is now evaluated as a function invocation,
798 and `[...][...]` as a matrix subset.
799- Matrix multiplication no longer squeezes scalar outputs to a scalar value,
800 but leaves them as they are: a vector or matrix containing a single value.
801 See #529.
802- Assignments in the expression parser now return the assigned value rather
803 than the created or updated object (see #533). Example:
804
805 ```
806 A = eye(3)
807 A[1,1] = 2 # this assignment now returns 2 instead of A
808 ```
809
810- Expression parser now supports objects. This involves a refactoring and
811 extension in expression nodes:
812 - Implemented new node `ObjectNode`.
813 - Refactored `AssignmentNode`, `UpdateNode`, and `IndexNode` are refactored
814 into `AccessorNode`, `AssignmentNode`, and `IndexNode` having a different API.
815- Upgraded the used BigNumber library `decimal.js` to v5. Replaced the
816 trigonometric functions of math.js with those provided in decimal.js v5.
817 This can give slightly different behavior qua round-off errors.
818- Replaced the internal `Complex.js` class with the `complex.js` library
819 created by @infusion.
820- Entries in a matrix (typically numbers, BigNumbers, Units, etc) are now
821 considered immutable, they are no longer copied when performing operations on
822 the entries, improving performance.
823- Implemented nearly equal comparison for relational functions (`equal`,
824 `larger`, `smaller`, etc.) when using BigNumbers.
825- Changed the casing of the configuration options `matrix` (`Array` or `Matrix`)
826 and `number` (`number`, `BigNumber`, `Fraction`) such that they now match
827 the type returned by `math.typeof`. Wrong casing gives a console warning but
828 will still work.
829- Changed the default config value for `epsilon` from `1e-14` to `1e-12`,
830 see #561.
831
832### non-breaking changes
833
834- Extended function `pow` to return the real root for cubic roots of negative
835 numbers. See #525, #482, #567.
836- Implemented support for JSON objects in the expression parser and the
837 function `math.format`.
838- Function `math.fraction` now supports `BigNumber`, and function
839 `math.bignumber` now supports `Fraction`.
840- Expression parser now allows function and/or variable assignments inside
841 accessors and conditionals, like `A[x=2]` or `a > 2 ? b="ok" : b="fail"`.
842- Command line interface:
843 - Outputs the variable name of assignments.
844 - Fixed not rounding BigNumbers to 14 digits like numbers.
845 - Fixed non-working autocompletion of user defined variables.
846- Reorganized and extended docs, added docs on classes and more. Thanks @hgupta9.
847- Added new units `acre`, `hectare`, `torr`, `bar`, `mmHg`, `mmH2O`, `cmH2O`,
848 and added new aliases `acres`, `hectares`, `sqfeet`, `sqyard`, `sqmile`,
849 `sqmiles`, `mmhg`, `mmh2o`, `cmh2o`. Thanks @hgupta9.
850- Fixed a bug in the toString method of an IndexNode.
851- Fixed angle units `deg`, `rad`, `grad`, `cycle`, `arcsec`, and `arcmin` not
852 being defined as BigNumbers when configuring to use BigNumbers.
853
854
855## 2016-02-03, version 2.7.0
856
857- Added more unit aliases for time: `secs`, `mins`, `hr`, `hrs`. See #551.
858- Added support for doing operations with mixed `Fractions` and `BigNumbers`.
859- Fixed #540: `math.intersect()` returning null in some cases. Thanks @void42.
860- Fixed #546: Cannot import BigNumber, Fraction, Matrix, Array.
861 Thanks @brettjurgens.
862
863
864## 2016-01-08, version 2.6.0
865
866- Implemented (complex) units `VA` and `VAR`.
867- Implemented time units for weeks, months, years, decades, centuries, and
868 millennia. Thanks @owenversteeg.
869- Implemented new notation `engineering` in function `math.format`.
870 Thanks @johnmarinelli.
871- Fixed #523: In some circumstances, matrix subset returned a scalar instead
872 of the correct subset.
873- Fixed #536: A bug in an internal method used for sparse matrices.
874
875
876## 2015-12-05, version 2.5.0
877
878- Implemented support for numeric types `Fraction` and `BigNumber` in units.
879- Implemented new method `toNumeric` for units.
880- Implemented new units `arcsec`, `arcsecond`, `arcmin`, `arcminute`.
881 Thanks @devdevdata222.
882- Implemented new unit `Herts` (`Hz`). Thanks @SwamWithTurtles.
883- Fixed #485: Scoping issue with variables both used globally as well as in a
884 function definition.
885- Fixed: Function `number` didn't support `Fraction` as input.
886
887
888## 2015-11-14, version 2.4.2
889
890- Fixed #502: Issue with `format` in some JavaScript engines.
891- Fixed #503: Removed trailing commas and the use of keyword `import` as
892 property, as this gives issues with old JavaScript engines.
893
894
895## 2015-10-29, version 2.4.1
896
897- Fixed #480: `nthRoot` not working on Internet Explorer (up to IE 11).
898- Fixed #490: `nthRoot` returning an error for negative values like
899 `nthRoot(-2, 3)`.
900- Fixed #489: an issue with initializing a sparse matrix without data.
901 Thanks @Retsam.
902- Fixed: #493: function `combinations` did not throw an exception for
903 non-integer values of `k`.
904- Fixed: function `import` did not override typed functions when the option
905 override was set true.
906- Fixed: added functions `math.sparse` and `math.index` to the reference docs,
907 they where missing.
908- Fixed: removed memoization from `gamma` and `factorial` functions, this
909 could blow up memory.
910
911
912## 2015-10-09, version 2.4.0
913
914- Added support in the expression parser for mathematical alphanumeric symbols
915 in the expression parser: unicode range \u{1D400} to \u{1D7FF} excluding
916 invalid code points.
917- Extended function `distance` with more signatures. Thanks @kv-kunalvyas.
918- Fixed a bug in functions `sin` and `cos`, which gave wrong results for
919 BigNumber integer values around multiples of tau (i.e. `sin(bignumber(7))`).
920- Fixed value of unit `stone`. Thanks @Esvandiary for finding the error.
921
922
923## 2015-09-19, version 2.3.0
924
925- Implemented function `distance`. Thanks @devanp92.
926- Implemented support for Fractions in function `lcm`. Thanks @infusion.
927- Implemented function `cbrt` for numbers, complex numbers, BigNumbers, Units.
928- Implemented function `hypot`.
929- Upgraded to fraction.js v3.0.0.
930- Fixed #450: issue with non sorted index in sparse matrices.
931- Fixed #463, #322: inconsistent handling of implicit multiplication.
932- Fixed #444: factorial of infinity not returning infinity.
933
934
935## 2015-08-30, version 2.2.0
936
937- Units with powers (like `m^2` and `s^-1`) now output with the best prefix.
938- Implemented support for units to `abs`, `cube`, `sign`, `sqrt`, `square`.
939 Thanks @ericman314.
940- Implemented function `catalan` (Combinatorics). Thanks @devanp92.
941- Improved the `canDefineProperty` check to return false in case of IE8, which
942 has a broken implementation of `defineProperty`. Thanks @golmansax.
943- Fixed function `to` not working in case of a simplified unit.
944- Fixed #437: an issue with row swapping in `lup`, also affecting `lusolve`.
945
946
947## 2015-08-12, version 2.1.1
948
949- Fixed wrong values of the physical constants `speedOfLight`, `molarMassC12`,
950 and `magneticFluxQuantum`. Thanks @ericman314 for finding two of them.
951
952
953## 2015-08-11, version 2.1.0
954
955- Implemented derived units (like `110 km/h in m/s`). Thanks @ericman314.
956- Implemented support for electric units. Thanks @ericman314.
957- Implemented about 50 physical constants like `speedOfLight`, `gravity`, etc.
958- Implemented function `kldivergence` (Kullback-Leibler divergence).
959 Thanks @saromanov.
960- Implemented function `mode`. Thanks @kv-kunalvyas.
961- Added support for unicode characters in the expression parser: greek letters
962 and latin letters with accents. See #265.
963- Internal functions `Unit.parse` and `Complex.parse` now throw an Error
964 instead of returning null when passing invalid input.
965
966
967## 2015-07-29, version 2.0.1
968
969- Fixed operations with mixed fractions and numbers be converted to numbers
970 instead of fractions.
971
972
973## 2015-07-28, version 2.0.0
974
975- Large internal refactoring:
976 - performance improvements.
977 - allows to create custom bundles
978 - functions are composed using `typed-function` and are extensible
979- Implemented support for fractions, powered by the library `fraction.js`.
980- Implemented matrix LU decomposition with partial pivoting and a LU based
981 linear equations solver (functions `lup` and `lusolve`). Thanks @rjbaucells.
982- Implemented a new configuration option `predictable`, which can be set to
983 true in order to ensure predictable function output types.
984- Implemented function `intersect`. Thanks @kv-kunalvyas.
985- Implemented support for adding `toTex` properties to custom functions.
986 Thanks @FSMaxB.
987- Implemented support for complex values to `nthRoot`. Thanks @gangachris.
988- Implemented util functions `isInteger`, `isNegative`, `isNumeric`,
989 `isPositive`, and `isZero`.
990
991### breaking changes
992
993- String input is now converted to numbers by default for all functions.
994- Adding two strings will no longer concatenate them, but will convert the
995 strings to numbers and add them.
996- Function `index` does no longer accept an array `[start, end, step]`, but
997 instead accepts an array with arbitrary index values. It also accepts
998 a `Range` object as input.
999- Function `typeof` no longer returns lower case names, but now returns lower
1000 case names for primitives (like `number`, `boolean`, `string`), and
1001 upper-camel-case for non-primitives (like `Array`, `Complex`, `Function`).
1002- Function `import` no longer supports a module name as argument. Instead,
1003 modules can be loaded using require: `math.import(require('module-name'))`.
1004- Function `import` has a new option `silent` to ignore errors, and throws
1005 errors on duplicates by default.
1006- Method `Node.compile()` no longer needs `math` to be passed as argument.
1007- Reintroduced method `Node.eval([scope])`.
1008- Function `sum` now returns zero when input is an empty array. Thanks @FSMAxB.
1009- The size of Arrays is no longer validated. Matrices will validate this on
1010 creation.
1011
1012
1013## 2015-07-12, version 1.7.1
1014
1015- Fixed #397: Inaccuracies in nthRoot for very large values, and wrong results
1016 for very small values. (backported from v2)
1017- Fixed #405: Parser throws error when defining a function in a multiline
1018 expression.
1019
1020
1021## 2015-05-31, version 1.7.0
1022
1023- Implemented function `quantileSeq` and `partitionSelect`. Thanks @BigFav.
1024- Implemented functions `stirlingS2`, `bellNumbers`, `composition`, and
1025 `multinomial`. Thanks @devanp92.
1026- Improved the performance of `median` (see #373). Thanks @BigFav.
1027- Extended the command line interface with a `mode` option to output either
1028 the expressions result, string representation, or tex representation.
1029 Thanks @FSMaxB.
1030- Fixed #309: Function median mutating the input matrix. Thanks @FSMaxB.
1031- Fixed `Node.transform` not recursing over replaced parts of the
1032 node tree (see #349).
1033- Fixed #381: issue in docs of `randomInt`.
1034
1035
1036## 2015-04-22, version 1.6.0
1037
1038- Improvements in `toTex`. Thanks @FSMaxB.
1039- Fixed #328: `abs(0 + 0i)` evaluated to `NaN`.
1040- Fixed not being able to override lazy loaded constants.
1041
1042
1043## 2015-04-09, version 1.5.2
1044
1045- Fixed #313: parsed functions did not handle recursive calls correctly.
1046- Fixed #251: binary prefix and SI prefix incorrectly used for byte. Now
1047 following SI standards (`1 KiB == 1024 B`, `1 kB == 1000 B`).
1048- Performance improvements in parsed functions.
1049
1050
1051## 2015-04-08, version 1.5.1
1052
1053- Fixed #316: a bug in rounding values when formatting.
1054- Fixed #317, #319: a bug in formatting negative values.
1055
1056
1057## 2015-03-28, version 1.5.0
1058
1059- Added unit `stone` (6.35 kg).
1060- Implemented support for sparse matrices. Thanks @rjbaucells.
1061- Implemented BigNumber support for function `atan2`. Thanks @BigFav.
1062- Implemented support for custom LaTeX representations. Thanks @FSMaxB.
1063- Improvements and bug fixes in outputting parentheses in `Node.toString` and
1064 `Node.toTex` functions. Thanks @FSMaxB.
1065- Fixed #291: function `format` sometimes returning exponential notation when
1066 it should return a fixed notation.
1067
1068
1069## 2015-02-28, version 1.4.0
1070
1071- Implemented trigonometric functions:
1072 `acosh`, `acoth`, `acsch`, `asech`, `asinh`, `atanh`, `acot`, `acsc`, `asec`.
1073 Thanks @BigFav.
1074- Added BigNumber support for functions: `cot`, `csc`, `sec`, `coth`,
1075 `csch`, `sech`. Thanks @BigFav.
1076- Implemented support for serialization and deserialization of math.js data
1077 types.
1078- Fixed the calculation of `norm()` and `abs()` for large complex numbers.
1079 Thanks @rjbaucells.
1080- Fixed #281: improved formatting complex numbers. Round the real or imaginary
1081 part to zero when the difference is larger than the configured precision.
1082
1083
1084## 2015-02-09, version 1.3.0
1085
1086- Implemented BigNumber implementations of most trigonometric functions: `sin`,
1087 `cos`, `tan`, `asin`, `acos`, `atan`, `cosh`, `sinh`, `tanh`. Thanks @BigFav.
1088- Implemented function `trace`. Thanks @pcorey.
1089- Faster loading of BigNumber configuration with a high precision by lazy
1090 loading constants like `pi` and `e`.
1091- Fixed constants `NaN` and `Infinity` not being BigNumber objects when
1092 BigNumbers are configured.
1093- Fixed missing parentheses in the `toTex` representation of function
1094 `permutations`.
1095- Some minor fixes in the docs. Thanks @KenanY.
1096
1097
1098## 2014-12-25, version 1.2.0
1099
1100- Support for bitwise operations `bitAnd`, `bitNot`, `bitOr`, `bitXor`,
1101 `leftShift`, `rightArithShift`, and `rightLogShift`. Thanks @BigFav.
1102- Support for boolean operations `and`, `not`, `or`, `xor`. Thanks @BigFav.
1103- Support for `gamma` function. Thanks @BigFav.
1104- Converting a unit without value will now result in a unit *with* value,
1105 i.e. `inch in cm` will return `2.54 cm` instead of `cm`.
1106- Improved accuracy of `sinh` and complex `cos` and `sin`. Thanks @pavpanchekha.
1107- Renamed function `select` to `chain`. The old function `select` will remain
1108 functional until math.js v2.0.
1109- Upgraded to decimal.js v4.0.1 (BigNumber library).
1110
1111
1112## 2014-11-22, version 1.1.1
1113
1114- Fixed Unit divided by Number returning zero.
1115- Fixed BigNumber downgrading to Number for a negative base in `pow`.
1116- Fixed some typos in error messaging (thanks @andy0130tw) and docs.
1117
1118
1119## 2014-11-15, version 1.1.0
1120
1121- Implemented functions `dot` (dot product), `cross` (cross product), and
1122 `nthRoot`.
1123- Officially opened up the API of expression trees:
1124 - Documented the API.
1125 - Implemented recursive functions `clone`, `map`, `forEach`, `traverse`,
1126 `transform`, and `filter` for expression trees.
1127 - Parameter `index` in the callbacks of `map` and `forEach` are now cloned
1128 for every callback.
1129 - Some internal refactoring inside nodes to make the API consistent:
1130 - Renamed `params` to `args` and vice versa to make things consistent.
1131 - Renamed `Block.nodes` to `Block.blocks`.
1132 - `FunctionNode` now has a `name: string` instead of a `symbol: SymbolNode`.
1133 - Changed constructor of `RangeNode` to
1134 `new RangeNode(start: Node, end: Node [, step: Node])`.
1135 - Nodes for a `BlockNode` must now be passed via the constructor instead
1136 of via a function `add`.
1137- Fixed `2e` giving a syntax error instead of being parsed as `2 * e`.
1138
1139
1140## 2014-09-12, version 1.0.1
1141
1142- Disabled array notation for ranges in a matrix index in the expression parser
1143 (it is confusing and redundant there).
1144- Fixed a regression in the build of function subset not being able to return
1145 a scalar.
1146- Fixed some missing docs and broken links in the docs.
1147
1148
1149## 2014-09-04, version 1.0.0
1150
1151- Implemented a function `filter(x, test)`.
1152- Removed `math.distribution` for now, needs some rethinking.
1153- `math.number` can convert units to numbers (requires a second argument)
1154- Fixed some precedence issues with the range and conversion operators.
1155- Fixed an zero-based issue when getting a matrix subset using an index
1156 containing a matrix.
1157
1158
1159## 2014-08-21, version 0.27.0
1160
1161- Implemented functions `sort(x [, compare])` and `flatten(x)`.
1162- Implemented support for `null` in all functions.
1163- Implemented support for "rawArgs" functions in the expression parser. Raw
1164 functions are invoked with unevaluated parameters (nodes).
1165- Expressions in the expression parser can now be spread over multiple lines,
1166 like '2 +\n3'.
1167- Changed default value of the option `wrap` of function `math.import` to false.
1168- Changed the default value for new entries in a resized matrix when to zero.
1169 To leave new entries uninitialized, use the new constant `math.uninitialized`
1170 as default value.
1171- Renamed transform property from `__transform__` to `transform`, and documented
1172 the transform feature.
1173- Fixed a bug in `math.import` not applying options when passing a module name.
1174- A returned matrix subset is now only squeezed when the `index` consists of
1175 scalar values, and no longer for ranges resolving into a single value.
1176
1177
1178## 2014-08-03, version 0.26.0
1179
1180- A new instance of math.js can no longer be created like `math([options])`,
1181 to prevent side effects from math being a function instead of an object.
1182 Instead, use the function `math.create([options])` to create a new instance.
1183- Implemented `BigNumber` support for all constants: `pi`, `tau`, `e`, `phi`,
1184 `E`, `LN2`, `LN10`, `LOG2E`, `LOG10E`, `PI`, `SQRT1_2`, and `SQRT2`.
1185- Implemented `BigNumber` support for functions `gcd`, `xgcd`, and `lcm`.
1186- Fixed function `gxcd` returning an Array when math.js was configured
1187 as `{matrix: 'matrix'}`.
1188- Multi-line expressions now return a `ResultSet` instead of an `Array`.
1189- Implemented transforms (used right now to transform one-based indices to
1190 zero-based for expressions).
1191- When used inside the expression parser, functions `concat`, `min`, `max`,
1192 and `mean` expect an one-based dimension number.
1193- Functions `map` and `forEach` invoke the callback with one-based indices
1194 when used from within the expression parser.
1195- When adding or removing dimensions when resizing a matrix, the dimensions
1196 are added/removed from the inner side (right) instead of outer side (left).
1197- Improved index out of range errors.
1198- Fixed function `concat` not accepting a `BigNumber` for parameter `dim`.
1199- Function `squeeze` now squeezes both inner and outer singleton dimensions.
1200- Output of getting a matrix subset is not automatically squeezed anymore
1201 except for scalar output.
1202- Renamed `FunctionNode` to `FunctionAssignmentNode`, and renamed `ParamsNode`
1203 to `FunctionNode` for more clarity.
1204- Fixed broken auto completion in CLI.
1205- Some minor fixes.
1206
1207
1208## 2014-07-01, version 0.25.0
1209
1210- The library now immediately returns a default instance of mathjs, there is
1211 no need to instantiate math.js in a separate step unless one ones to set
1212 configuration options:
1213
1214 // instead of:
1215 var mathjs = require('mathjs'), // load math.js
1216 math = mathjs(); // create an instance
1217
1218 // just do:
1219 var math = require('mathjs');
1220- Implemented support for implicit multiplication, like `math.eval('2a', {a:3})`
1221 and `math.eval('(2+3)(1-3)')`. This changes behavior of matrix indexes as
1222 well: an expression like `[...][...]` is not evaluated as taking a subset of
1223 the first matrix, but as an implicit multiplication of two matrices.
1224- Removed utility function `ifElse`. This function is redundant now the
1225 expression parser has a conditional operator `a ? b : c`.
1226- Fixed a bug with multiplying a number with a temperature,
1227 like `math.eval('10 * celsius')`.
1228- Fixed a bug with symbols having value `undefined` not being evaluated.
1229
1230
1231## 2014-06-20, version 0.24.1
1232
1233- Something went wrong with publishing on npm.
1234
1235
1236## 2014-06-20, version 0.24.0
1237
1238- Added constant `null`.
1239- Functions `equal` and `unequal` support `null` and `undefined` now.
1240- Function `typeof` now recognizes regular expressions as well.
1241- Objects `Complex`, `Unit`, and `Help` now return their string representation
1242 when calling `.valueOf()`.
1243- Changed the default number of significant digits for BigNumbers from 20 to 64.
1244- Changed the behavior of the conditional operator (a ? b : c) to lazy
1245 evaluating.
1246- Fixed imported, wrapped functions not accepting `null` and `undefined` as
1247 function arguments.
1248
1249
1250## 2014-06-10, version 0.23.0
1251
1252- Renamed some functions (everything now has a logical, camel case name):
1253 - Renamed functions `edivide`, `emultiply`, and `epow` to `dotDivide`,
1254 `dotMultiply`, and `dotPow` respectively.
1255 - Renamed functions `smallereq` and `largereq` to `smallerEq` and `largerEq`.
1256 - Renamed function `unary` to `unaryMinus` and added support for strings.
1257- `end` is now a reserved keyword which cannot be used as function or symbol
1258 name in the expression parser, and is not allowed in the scope against which
1259 an expression is evaluated.
1260- Implemented function `unaryPlus` and unary plus operator.
1261- Implemented function `deepEqual` for matrix comparisons.
1262- Added constant `phi`, the golden ratio (`phi = 1.618...`).
1263- Added constant `version`, returning the version number of math.js as string.
1264- Added unit `drop` (`gtt`).
1265- Fixed not being able to load math.js using AMD/require.js.
1266- Changed signature of `math.parse(expr, nodes)` to `math.parse(expr, options)`
1267 where `options: {nodes: Object.<String, Node>}`
1268- Removed matrix support from conditional function `ifElse`.
1269- Removed automatic assignment of expression results to variable `ans`.
1270 This functionality can be restored by pre- or postprocessing every evaluation,
1271 something like:
1272
1273 function evalWithAns (expr, scope) {
1274 var ans = math.eval(expr, scope);
1275 if (scope) {
1276 scope.ans = ans;
1277 }
1278 return ans;
1279 }
1280
1281
1282## 2014-05-22, version 0.22.0
1283
1284- Implemented support to export expressions to LaTeX. Thanks Niels Heisterkamp
1285 (@nheisterkamp).
1286- Output of matrix multiplication is now consistently squeezed.
1287- Added reference documentation in the section /docs/reference.
1288- Fixed a bug in multiplying units without value with a number (like `5 * cm`).
1289- Fixed a bug in multiplying two matrices containing vectors (worked fine for
1290 arrays).
1291- Fixed random functions not accepting Matrix as input, and always returning
1292 a Matrix as output.
1293
1294
1295## 2014-05-13, version 0.21.1
1296
1297- Removed `crypto` library from the bundle.
1298- Deprecated functions `Parser.parse` and `Parser.compile`. Use
1299 `math.parse` and `math.compile` instead.
1300- Fixed function `add` not adding strings and matrices element wise.
1301- Fixed parser not being able to evaluate an exponent followed by a unary minus
1302 like `2^-3`, and a transpose followed by an index like `[3]'[1]`.
1303
1304
1305## 2014-04-24, version 0.21.0
1306
1307- Implemented trigonometric hyperbolic functions `cosh`, `coth`, `csch`,
1308 `sech`, `sinh`, `tanh`. Thanks Rogelio J. Baucells (@rjbaucells).
1309- Added property `type` to all expression nodes in an expression tree.
1310- Fixed functions `log`, `log10`, `pow`, and `sqrt` not supporting complex
1311 results from BigNumber input (like `sqrt(bignumber(-4))`).
1312
1313
1314## 2014-04-16, version 0.20.0
1315
1316- Switched to module `decimal.js` for BigNumber support, instead of
1317 `bignumber.js`.
1318- Implemented support for polar coordinates to the `Complex` datatype.
1319 Thanks Finn Pauls (@finnp).
1320- Implemented BigNumber support for functions `exp`, `log`, and `log10`.
1321- Implemented conditional operator `a ? b : c` in expression parser.
1322- Improved floating point comparison: the functions now check whether values
1323 are nearly equal, against a configured maximum relative difference `epsilon`.
1324 Thanks Rogelio J. Baucells (@rjbaucells).
1325- Implemented function `norm`. Thanks Rogelio J. Baucells (@rjbaucells).
1326- Improved function `ifElse`, is now specified for special data types too.
1327- Improved function `det`. Thanks Bryan Cuccioli (@bcuccioli).
1328- Implemented `BigNumber` support for functions `det` and `diag`.
1329- Added unit alias `lbs` (pound mass).
1330- Changed configuration option `decimals` to `precision` (applies to BigNumbers
1331 only).
1332- Fixed support for element-wise comparisons between a string and a matrix.
1333- Fixed: expression parser now trows IndexErrors with one-based indices instead
1334 of zero-based.
1335- Minor bug fixes.
1336
1337
1338## 2014-03-30, version 0.19.0
1339
1340- Implemented functions `compare`, `sum`, `prod`, `var`, `std`, `median`.
1341- Implemented function `ifElse` Thanks @mtraynham.
1342- Minor bug fixes.
1343
1344
1345## 2014-02-15, version 0.18.1
1346
1347- Added unit `feet`.
1348- Implemented function `compile` (shortcut for parsing and then compiling).
1349- Improved performance of function `pow` for matrices. Thanks @hamadu.
1350- Fixed broken auto completion in the command line interface.
1351- Fixed an error in function `combinations` for large numbers, and
1352 improved performance of both functions `combinations` and `permutations`.
1353
1354
1355## 2014-01-18, version 0.18.0
1356
1357- Changed matrix index notation of expression parser from round brackets to
1358 square brackets, for example `A[1, 1:3]` instead of `A(1, 1:3)`.
1359- Removed need to use the `function` keyword for function assignments in the
1360 expression parser, you can define a function now like `f(x) = x^2`.
1361- Implemented a compilation step in the expression parser: expressions are
1362 compiled into JavaScript, giving much better performance (easily 10x as fast).
1363- Renamed unit conversion function and operator `in` to `to`. Operator `in` is
1364 still available in the expression parser as an alias for `to`. Added unit
1365 `in`, an abbreviation for `inch`. Thanks Elijah Insua (@tmpvar).
1366- Added plurals and aliases for units.
1367- Implemented an argument `includeEnd` for function `range` (false by default).
1368- Ranges in the expression parser now support big numbers.
1369- Implemented functions `permutations` and `combinations`.
1370 Thanks Daniel Levin (@daniel-levin).
1371- Added lower case abbreviation `l` for unit litre.
1372
1373
1374## 2013-12-19, version 0.17.1
1375
1376- Fixed a bug with negative temperatures.
1377- Fixed a bug with prefixes of units squared meter `m2` and cubic meter `m3`.
1378
1379
1380## 2013-12-12, version 0.17.0
1381
1382- Renamed and flattened configuration settings:
1383 - `number.defaultType` is now `number`.
1384 - `number.precision` is now `decimals`.
1385 - `matrix.defaultType` is now `matrix`.
1386- Function `multiply` now consistently outputs a complex number on complex input.
1387- Fixed `mod` and `in` not working as function (only as operator).
1388- Fixed support for old browsers (IE8 and older), compatible when using es5-shim.
1389- Fixed support for Java's ScriptEngine.
1390
1391
1392## 2013-11-28, version 0.16.0
1393
1394- Implemented BigNumber support for arbitrary precision calculations.
1395 Added settings `number.defaultType` and `number.precision` to configure
1396 big numbers.
1397- Documentation is extended.
1398- Removed utility functions `isScalar`, `toScalar`, `isVector`, `toVector`
1399 from `Matrix` and `Range`. Use `math.squeeze` and `math.size` instead.
1400- Implemented functions `get` and `set` on `Matrix`, for easier and faster
1401 retrieval/replacement of elements in a matrix.
1402- Implemented function `resize`, handling matrices, scalars, and strings.
1403- Functions `ones` and `zeros` now return an empty matrix instead of a
1404 number 1 or 0 when no arguments are provided.
1405- Implemented functions `min` and `max` for `Range` and `Index`.
1406- Resizing matrices now leaves new elements undefined by default instead of
1407 filling them with zeros. Function `resize` now has an extra optional
1408 parameter `defaultValue`.
1409- Range operator `:` in expression parser has been given a higher precedence.
1410- Functions don't allow arguments of unknown type anymore.
1411- Options be set when constructing a math.js instance or using the new function
1412 `config(options`. Options are no longer accessible via `math.options`.
1413- Renamed `scientific` notation to `exponential` in function `format`.
1414- Function `format` outputs exponential notation with positive exponents now
1415 always with `+` sign, so outputs `2.1e+3` instead of `2.1e3`.
1416- Fixed function `squeeze` not being able squeeze into a scalar.
1417- Some fixes and performance improvements in the `resize` and `subset`
1418 functions.
1419- Function `size` now adheres to the option `matrix.defaultType` for scalar
1420 input.
1421- Minor bug fixes.
1422
1423
1424## 2013-10-26, version 0.15.0
1425
1426- Math.js must be instantiated now, static calls are no longer supported. Usage:
1427 - node.js: `var math = require('mathjs')();`
1428 - browser: `var math = mathjs();`
1429- Implemented support for multiplying vectors with matrices.
1430- Improved number formatting:
1431 - Function `format` now support various options: precision, different
1432 notations (`fixed`, `scientific`, `auto`), and more.
1433 - Numbers are no longer rounded to 5 digits by default when formatted.
1434 - Implemented a function `format` for `Matrix`, `Complex`, `Unit`, `Range`,
1435 and `Selector` to format using options.
1436 - Function `format` does only stringify values now, and has a new parameter
1437 `precision` to round to a specific number of digits.
1438 - Removed option `math.options.precision`,
1439 use `math.format(value [, precision])` instead.
1440 - Fixed formatting numbers as scientific notation in some cases returning
1441 a zero digit left from the decimal point. (like "0.33333e8" rather than
1442 "3.3333e7"). Thanks @husayt.
1443- Implemented a function `print` to interpolate values in a template string,
1444 this functionality was moved from the function `format`.
1445- Implemented statistics function `mean`. Thanks Guillermo Indalecio Fernandez
1446 (@guillermobox).
1447- Extended and changed `max` and `min` for multi dimensional matrices: they now
1448 return the maximum and minimum of the flattened array. An optional second
1449 argument `dim` allows to calculate the `max` or `min` for specified dimension.
1450- Renamed option `math.options.matrix.default` to
1451 `math.options.matrix.defaultType`.
1452- Removed support for comparing complex numbers in functions `smaller`,
1453 `smallereq`, `larger`, `largereq`. Complex numbers cannot be ordered.
1454
1455
1456## 2013-10-08, version 0.14.0
1457
1458- Introduced an option `math.options.matrix.default` which can have values
1459 `matrix` (default) or `array`. This option is used by the functions `eye`,
1460 `ones`, `range`, and `zeros`, to determine the type of matrix output.
1461- Getting a subset of a matrix will automatically squeeze the resulting subset,
1462 setting a subset of a matrix will automatically unsqueeze the given subset.
1463- Removed concatenation of nested arrays in the expression parser.
1464 You can now input nested arrays like in JavaScript. Matrices can be
1465 concatenated using the function `concat`.
1466- The matrix syntax `[...]` in the expression parser now creates 1 dimensional
1467 matrices by default. `math.eval('[1,2,3,4]')` returns a matrix with
1468 size `[4]`, `math.eval('[1,2;3,4]')` returns a matrix with size `[2,2]`.
1469- Documentation is restructured and extended.
1470- Fixed non working operator `mod` (modulus operator).
1471
1472
1473## 2013-09-03, version 0.13.0
1474
1475- Implemented support for booleans in all relevant functions.
1476- Implemented functions `map` and `forEach`. Thanks Sebastien Piquemal (@sebpic).
1477- All construction functions can be used to convert the type of variables,
1478 also element-wise for all elements in an Array or Matrix.
1479- Changed matrix indexes of the expression parser to one-based with the
1480 upper-bound included, similar to most math applications. Note that on a
1481 JavaScript level, math.js uses zero-based indexes with excluded upper-bound.
1482- Removed support for scalars in the function `subset`, it now only supports
1483 Array, Matrix, and String.
1484- Removed the functions `get` and `set` from a selector, they are a duplicate
1485 of the function `subset`.
1486- Replaced functions `get` and `set` of `Matrix` with a single function
1487 `subset`.
1488- Some moving around with code and namespaces:
1489 - Renamed namespace `math.expr` to `math.expression` (contains Scope, Parser,
1490 node objects).
1491 - Renamed namespace `math.docs` to `math.expression.docs`.
1492 - Moved `math.expr.Selector` to `math.chaining.Selector`.
1493- Fixed some edge cases in functions `lcm` and `xgcd`.
1494
1495
1496## 2013-08-22, version 0.12.1
1497
1498- Fixed outdated version of README.md.
1499- Fixed a broken unit test.
1500
1501
1502## 2013-08-22, version 0.12.0
1503
1504- Implemented functions `random([min, max])`, `randomInt([min, max])`,
1505 `pickRandom(array)`. Thanks Sebastien Piquemal (@sebpic).
1506- Implemented function `distribution(name)`, generating a distribution object
1507 with functions `random`, `randomInt`, `pickRandom` for different
1508 distributions. Currently supporting `uniform` and `normal`.
1509- Changed the behavior of `range` to exclude the upper bound, so `range(1, 4)`
1510 now returns `[1, 2, 3]` instead of `[1, 2, 3, 4]`.
1511- Changed the syntax of `range`, which is now `range(start, end [, step])`
1512 instead of `range(start, [step, ] end)`.
1513- Changed the behavior of `ones` and `zeros` to geometric dimensions, for
1514 example `ones(3)` returns a vector with length 3, filled with ones, and
1515 `ones(3,3)` returns a 2D array with size [3, 3].
1516- Changed the return type of `ones` and `zeros`: they now return an Array when
1517 arguments are Numbers or an Array, and returns a Matrix when the argument
1518 is a Matrix.
1519- Change matrix index notation in parser from round brackets to square brackets,
1520 for example `A[0, 0:3]`.
1521- Removed the feature introduced in v0.10.0 to automatically convert a complex
1522 value with an imaginary part equal to zero to a number.
1523- Fixed zeros being formatted as null. Thanks @TimKraft.
1524
1525
1526## 2013-07-23, version 0.11.1
1527
1528- Fixed missing development dependency
1529
1530
1531## 2013-07-23, version 0.11.0
1532
1533- Changed math.js from one-based to zero-based indexes.
1534 - Getting and setting matrix subset is now zero-based.
1535 - The dimension argument in function `concat` is now zero-based.
1536- Improvements in the string output of function help.
1537- Added constants `true` and `false`.
1538- Added constructor function `boolean`.
1539- Fixed function `select` not accepting `0` as input.
1540 Thanks Elijah Manor (@elijahmanor).
1541- Parser now supports multiple unary minus operators after each other.
1542- Fixed not accepting empty matrices like `[[], []]`.
1543- Some fixes in the end user documentation.
1544
1545
1546## 2013-07-08, version 0.10.0
1547
1548- For complex calculations, all functions now automatically replace results
1549 having an imaginary part of zero with a Number. (`2i * 2i` now returns a
1550 Number `-4` instead of a Complex `-4 + 0i`).
1551- Implemented support for injecting custom node handlers in the parser. Can be
1552 used for example to implement a node handler for plotting a graph.
1553- Implemented end user documentation and a new `help` function.
1554- Functions `size` and `squeeze` now return a Matrix instead of an Array as
1555 output on Matrix input.
1556- Added a constant tau (2 * pi). Thanks Zak Zibrat (@palimpsests).
1557- Renamed function `unaryminus` to `unary`.
1558- Fixed a bug in determining node dependencies in function assignments.
1559
1560
1561## 2013-06-14, version 0.9.1
1562
1563- Implemented element-wise functions and operators: `emultiply` (`x .* y`),
1564 `edivide` (`x ./ y`), `epow` (`x .^ y`).
1565- Added constants `Infinity` and `NaN`.
1566- Removed support for Workspace to keep the library focused on its core task.
1567- Fixed a bug in the Complex constructor, not accepting NaN values.
1568- Fixed division by zero in case of pure complex values.
1569- Fixed a bug in function multiply multiplying a pure complex value with
1570 Infinity.
1571
1572
1573## 2013-05-29, version 0.9.0
1574
1575- Implemented function `math.parse(expr [,scope])`. Optional parameter scope can
1576 be a plain JavaScript Object containing variables.
1577- Extended function `math.expr(expr [, scope])` with an additional parameter
1578 `scope`, similar to `parse`. Example: `math.eval('x^a', {x:3, a:2});`.
1579- Implemented function `subset`, to get or set a subset from a matrix, string,
1580 or other data types.
1581- Implemented construction functions number and string (mainly useful inside
1582 the parser).
1583- Improved function `det`. Thanks Bryan Cuccioli (@bcuccioli).
1584- Moved the parse code from prototype math.expr.Parser to function math.parse,
1585 simplified Parser a little bit.
1586- Strongly simplified the code of Scope and Workspace.
1587- Fixed function mod for negative numerators, and added error messages in case
1588 of wrong input.
1589
1590
1591## 2013-05-18, version 0.8.2
1592
1593- Extended the import function and some other minor improvements.
1594- Fixed a bug in merging one dimensional vectors into a matrix.
1595- Fixed a bug in function subtract, when subtracting a complex number from a
1596 real number.
1597
1598
1599## 2013-05-10, version 0.8.1
1600
1601- Fixed an npm warning when installing mathjs globally.
1602
1603
1604## 2013-05-10, version 0.8.0
1605
1606- Implemented a command line interface. When math.js is installed globally via
1607 npm, the application is available on your system as 'mathjs'.
1608- Implemented `end` keyword for index operator, and added support for implicit
1609 start and end (expressions like `a(2,:)` and `b(2:end,3:end-1)` are supported
1610 now).
1611- Function math.eval is more flexible now: it supports variables and multi-line
1612 expressions.
1613- Removed the read-only option from Parser and Scope.
1614- Fixed non-working unequal operator != in the parser.
1615- Fixed a bug in resizing matrices when replacing a subset.
1616- Fixed a bug in updating a subset of a non-existing variable.
1617- Minor bug fixes.
1618
1619
1620## 2013-05-04, version 0.7.2
1621
1622- Fixed method unequal, which was checking for equality instead of inequality.
1623 Thanks @FJS2.
1624
1625
1626## 2013-04-27, version 0.7.1
1627
1628- Improvements in the parser:
1629 - Added support for chained arguments.
1630 - Added support for chained variable assignments.
1631 - Added a function remove(name) to remove a variable from the parsers scope.
1632 - Renamed nodes for more consistency and to resolve naming conflicts.
1633 - Improved stringification of an expression tree.
1634 - Some simplifications in the code.
1635 - Minor bug fixes.
1636- Fixed a bug in the parser, returning NaN instead of throwing an error for a
1637 number with multiple decimal separators like `2.3.4`.
1638- Fixed a bug in Workspace.insertAfter.
1639- Fixed: math.js now works on IE 6-8 too.
1640
1641
1642## 2013-04-20, version 0.7.0
1643
1644- Implemented method `math.eval`, which uses a readonly parser to evaluate
1645 expressions.
1646- Implemented method `xgcd` (extended eucledian algorithm). Thanks Bart Kiers
1647 (@bkiers).
1648- Improved math.format, which now rounds values to a maximum number of digits
1649 instead of decimals (default is 5 digits, for example `math.format(math.pi)`
1650 returns `3.1416`).
1651- Added examples.
1652- Changed methods square and cube to evaluate matrices element wise (consistent
1653 with all other methods).
1654- Changed second parameter of method import to an object with options.
1655- Fixed method math.typeof on IE.
1656- Minor bug fixes and improvements.
1657
1658
1659## 2013-04-13, version 0.6.0
1660
1661- Implemented chained operations via method math.select(). For example
1662 `math.select(3).add(4).subtract(2).done()` will return `5`.
1663- Implemented methods gcd and lcm.
1664- Implemented method `Unit.in(unit)`, which creates a clone of the unit with a
1665 fixed representation. For example `math.unit('5.08 cm').in('inch')` will
1666 return a unit which string representation always is in inch, thus `2 inch`.
1667 `Unit.in(unit)` is the same as method `math.in(x, unit)`.
1668- Implemented `Unit.toNumber(unit)`, which returns the value of the unit when
1669 represented with given unit. For example
1670 `math.unit('5.08 cm').toNumber('inch')` returns the number `2`, as the
1671 representation of the unit in inches has 2 as value.
1672- Improved: method `math.in(x, unit)` now supports a string as second parameter,
1673 for example `math.in(math.unit('5.08 cm'), 'inch')`.
1674- Split the end user documentation of the parser functions from the source
1675 files.
1676- Removed function help and the built-in documentation from the core library.
1677- Fixed constant i being defined as -1i instead of 1i.
1678- Minor bug fixes.
1679
1680
1681## 2013-04-06, version 0.5.0
1682
1683- Implemented data types Matrix and Range.
1684- Implemented matrix methods clone, concat, det, diag, eye, inv, ones, size,
1685 squeeze, transpose, zeros.
1686- Implemented range operator `:`, and transpose operator `'` in parser.
1687- Changed: created construction methods for easy object creation for all data
1688 types and for the parser. For example, a complex value is now created
1689 with `math.complex(2, 3)` instead of `new math.Complex(2, 3)`, and a parser
1690 is now created with `math.parser()` instead of `new math.parser.Parser()`.
1691- Changed: moved all data types under the namespace math.type, and moved the
1692 Parser, Workspace, etc. under the namespace math.expr.
1693- Changed: changed operator precedence of the power operator:
1694 - it is now right associative instead of left associative like most scripting
1695 languages. So `2^3^4` is now calculated as `2^(3^4)`.
1696 - it has now higher precedence than unary minus most languages, thus `-3^2` is
1697 now calculated as `-(3^2)`.
1698- Changed: renamed the parsers method 'put' into 'set'.
1699- Fixed: method 'in' did not check for units to have the same base.
1700
1701
1702## 2013-03-16, version 0.4.0
1703
1704- Implemented Array support for all methods.
1705- Implemented Array support in the Parser.
1706- Implemented method format.
1707- Implemented parser for units, math.Unit.parse(str).
1708- Improved parser for complex values math.Complex.parse(str);
1709- Improved method help: it now evaluates the examples.
1710- Fixed: a scoping issue with the Parser when defining functions.
1711- Fixed: method 'typeof' was not working well with minified and mangled code.
1712- Fixed: errors in determining the best prefix for a unit.
1713
1714
1715## 2013-03-09, version 0.3.0
1716
1717- Implemented Workspace
1718- Implemented methods cot, csc, sec.
1719- Implemented Array support for methods with one parameter.
1720
1721
1722## 2013-02-25, version 0.2.0
1723
1724- Parser, Scope, and expression tree with Nodes implemented.
1725- Implemented method import which makes it easy to extend math.js.
1726- Implemented methods arg, conj, cube, equal, factorial, im, largereq,
1727 log(x, base), log10, mod, re, sign, smallereq, square, unequal.
1728
1729
1730## 2013-02-18, version 0.1.0
1731
1732- Reached full compatibility with Javascripts built-in Math library.
1733- More functions implemented.
1734- Some bugfixes.
1735
1736
1737## 2013-02-16, version 0.0.2
1738
1739- All constants of Math implemented, plus the imaginary unit i.
1740- Data types Complex and Unit implemented.
1741- First set of functions implemented.
1742
1743
1744## 2013-02-15, version 0.0.1
1745
1746- First publish of the mathjs package. (package is still empty)
1747
\No newline at end of file