85 Commits

Author SHA1 Message Date
Jos de Jong
db39237c0f Update browser versions in browserstack tests 2021-09-15 12:24:40 +02:00
Michal Grňo
4dbf40460b
Fix intersect not returning null for matrix input (#2270)
* refactored intersect, fixed it not returning null for matrix input

* intersect: improved flattening algorithm, added tests

Co-authored-by: Jos de Jong <wjosdejong@gmail.com>
2021-07-07 09:16:22 +02:00
davidtranhq
f79fec6db5
Fix ArrayNode.toTex(): Remove the row delimiter on the last row (#2267)
* fix toTex(): remove row delimiter on the last row

* remove row delimiter on the last row (use map and join instead of forEach)

* fix ArrayNode.toTex() unit tests incorrectly expecting a row delimiter on the last row

* added toTex() tests for nested cases

* fixed ArrayNode.toTex() for nested cases

* removed redunant variable
2021-07-03 12:10:22 +02:00
Michal Grňo
b4eed8ee92
Fix Decimal prototype pollution (#2244)
* changed BigNumber to a class that extends Decimal.clone(...)

* it works... if you patch decimal.js

* added a test that checks if sum of Decimals works

* minor improvement of code quality

* updated Decimal.js to 10.3

* removed the optional chaining operator to keep compat w/ Node 12

* removed try/catch from isBigNumber

Co-authored-by: Jos de Jong <wjosdejong@gmail.com>
2021-06-23 15:23:08 +02:00
Jos de Jong
4d841e4572 Create a mocha config file, define global timeout of 10 seconds 2021-06-23 11:03:08 +02:00
Jos de Jong
827373521d Give unit test more time to run (for IE) 2021-06-05 11:32:13 +02:00
Michal Grno
0dfc1482ac fix linting issues 2021-06-03 02:49:26 +02:00
Michal Grno
c99f3a0160 added a test for inverse iteration 2021-06-03 02:49:26 +02:00
Jos de Jong
e051cae156 Do not use Object.entries for now (gives IE11 error, babel transpilation missing I suppose) 2021-05-19 16:34:19 +02:00
jhugman
e80995d52d
Add support for scopes with get and set methods (#2166)
* Add support for scopes with get and set methods

* Fix build for node v12

* Fixup cli and parser tests

* Add tests for simplify and evaluate

* Add example for a custom scope object

* Function calls need child scopes

* Transitionary step: Separate Safe and Scope Property calls

* Renamed identifiers in FunctionNode

* Evaluate with ObjectScopeWrapper

* Simplify tests passing

* Assume all scopes are map-like. Except parser

* Remove isMapLike check in customs.*SafeProperty() methods

* Change MapLike to Map

* Move keywords from an Object to a Set

* Move ScopeProperty functions in to scope.js

* Removed deprecation warning

* Rename scope.js to map.js

* Rename ScopeProperty to MapProperty

* Add tests and docs for map.js

* Put back the micro-optimization of function calls

* Use Map in the parser

* Called scope methods directly in cli.js

* Coercing of scope into a Map is done in Node, not evaluate

* Move createSubScope to its own file

* Fixup following self-review

* Add scope docs

* Final self-review changes

* Address reviewer comments

* Remove MapProperty witness marks

* Converted broken benchmark possibly lost in a rebase

* Use bare map as scope in benchmark

Co-authored-by: Jos de Jong <wjosdejong@gmail.com>
2021-05-16 13:33:01 +02:00
Jos de Jong
7ed12ccd70 Upgrade to fraction.js@4.1.0, and integrate support for pow of rational exponents 2021-05-16 10:22:36 +02:00
Michal Grňo
435a6a0879
Fix “AIAO-MIMO” of my previous PRs (#2210)
* fix aiao-mimo of eigs(m)

* fix aiao-mimo of matrixFromFunction
2021-05-12 10:34:40 +02:00
Michal Grňo
d7a5693e91
Matrix creation and conversion methods (#2155)
* made dense and sparse matrices iterable, fixed #1184

* added matrixFromFunction, fixes #2153

* added tests for matrixFromFunction

* added matrixFromRows

* added matrixFromColumns

* added rows() and columns() for dense matrix

* improved sparse documentation a tiny bit

* fix linting issues

* added matrixFromRow/Column to seealso of row and column

* removed unnecessary duplication from matrixFromRows/Columns

* added babel runtime

Co-authored-by: Jos de Jong <wjosdejong@gmail.com>
2021-05-09 10:26:16 +02:00
Michal Grňo
9e8deb5c86
General eigenproblem algorithm (#1743)
* split the eigs function into multiple algorithms

* moved checks and coersions to eigs.js, made them more robust

* fix little bugs, make im and re more robust

* Implemented matrix balancing algorithm

* fix typos

* a draft of reduction to Hessenberg matrix

* finished implementation of reduction to Hessenberg

* fix Hessenberg elimination for complex numbers

* implemented non-shifted explicit QR algorithm for real matrices

* implemented vector computation, won't work untill usolve is fixed

* refactored to match yarn lint

* some minor changes

* solve merge conflicts

* refactored and re-fixed #1789

* some old uncommited changes

* fix small problems introduced by merging

* done some polishing

* improved jsdoc description of eigs

* little changes in jsdoc

Co-authored-by: Jos de Jong <wjosdejong@gmail.com>
2021-04-18 10:52:51 +02:00
Jos de Jong
e6af8ec92a Fix #2167: typo in error message 2021-04-14 10:07:55 +02:00
Viktor
91141bbbb6
Miller–Rabin primality test (#2139)
* Miller–Rabin primality test

* add tests for some big numbers

* Update isPrime.js

* Update isPrime.js

Co-authored-by: Jos de Jong <wjosdejong@gmail.com>
2021-04-10 10:14:16 +02:00
Jos de Jong
67a9878073 Revert "Configure default timeout for mocha tests as 10 seconds"
This reverts commit f812e662
2021-02-03 19:01:15 +01:00
Jos de Jong
f812e66252 Configure default timeout for mocha tests as 10 seconds 2021-02-03 17:58:37 +01:00
Josef Wittmann
bf0eedfdd5
Implement count based on size (#2092)
* Implement count based on size

Closes #2085

* Improve count implementation

Co-authored-by: Jos de Jong <wjosdejong@gmail.com>
2021-01-31 11:02:26 +01:00
Quentin Truong
02d36c1177
Check for equal number of arguments in simplify (#2090)
* Check for equal number of arguments when simplifying non-associative nodes

* Use === instead of ==

* Run linter and remove trailing space
2021-01-27 11:10:14 +01:00
Jos de Jong
6fc5d0e39b Fix merge conflicts 2021-01-24 11:03:55 +01:00
Colin Holzman
d12f3a5fac
Word size suffix and BigNumber support for bin oct hex literals (#1996)
* added support for word size suffix in getToken

* start modifying number(string) to support word size suffix for signed integers

* word size suffixes for Number

* initial support for BigNumber

* fix linter issues

* remove unused variable

* start extending bitwise operators for Number for values greater than 32 bits

* Revert "start extending bitwise operators for Number for values greater than 32 bits"

This reverts commit 6fac1a7b10665a221ab5de521c08fa9fcf959eb1.

* add a test for 53 bit literal

* added an optional second argument to bin, oct, and hex to allow formatting signed numbers with custom word size

* removed size checks

* Attempted to extend bin, oct, hex format functions to work with BigNumber, but not working fully.

Apparently Decimal.js toString method doesn't take a base parameter like js number does. I guess I have to do the formatting myself.

* Added n2base function to do formatting for BigNumber.

* Added check for zero in n2base.

* Removed old failing tests.

* Added some tests (failing).

* Extended 'format' function with 'base' and 'wordSize' options and changed 'bin', 'oct', and 'hex' to use 'format' function.

* Fixed lint issues.

* Fixed issues related to the merge.

* Corrected a test.

* Fixed bignumber formatter.

* Added tests for math.format with 'base' and 'wordSize' options.

* Fixed lint issue.

* Changed 'base' option to 'bin', 'oct', and 'hex' values for 'notation' option of 'format' function.

* Added word size suffix to the output of format, bin, oct, and hex.

* Updated documentation.
2021-01-06 09:46:58 +01:00
Josef Wittmann
dcab05272a
Add numpy-like reshape wildcard 2020-12-31 09:49:25 +01:00
Josef Wittmann
e62bff8506
Add Julia-like reshape wildcard (wip)
Problem: The parser tries to find `end` for the wildcard.
2020-12-31 09:19:42 +01:00
Jos de Jong
9250f44e88 Fix #2026: introduce new option fractionsLimit in function simplify 2020-11-13 15:14:04 +01:00
Jos de Jong
488943d299 Fix #2026: have function simplify not output decimal values into fractions with very large numerator/denominator 2020-11-13 14:47:30 +01:00
Jos de Jong
46b5102f92 Add missing file extensions on import 2020-11-02 12:53:16 +01:00
Jos de Jong
41c5e2fabe Merge branch 'develop' into v8
# Conflicts:
#	HISTORY.md
#	package-lock.json
#	package.json
#	src/expression/embeddedDocs/embeddedDocs.js
#	src/factoriesAny.js
#	src/function/special/erf.js
#	src/plain/number/probability.js
#	src/version.js
2020-11-02 11:59:12 +01:00
Jos de Jong
3c9d9a9fc5 Increase timeouts for IE 2020-11-02 09:46:49 +01:00
Jos de Jong
68c6a91801 Update devDependencies 2020-11-02 09:33:11 +01:00
rnd-debug
5849038918
implementing rotate(w, theta) (#1992)
* emplementing rotate(w, theta)

* will return same type as input

* edge cases arraySize

* rising coverage

* making result type predictable

Co-authored-by: Jos de Jong <wjosdejong@gmail.com>
2020-10-28 12:00:52 +01:00
Jos de Jong
eb9fcb3c41 Fix timeout on IE10 2020-10-18 13:05:11 +02:00
Jos de Jong
e788c1d7f3 Fix #1990: improve pickRandom: return matrix output on matrix input, introduce new option elementWise, always return n number of random picks (see also #1976). 2020-10-18 12:25:02 +02:00
Jos de Jong
5f59174614 Fix unit test and missing import extension 2020-10-18 10:23:36 +02:00
Jos de Jong
83e1963cee Merge branch 'develop' into v8
# Conflicts:
#	HISTORY.md
#	src/function/probability/pickRandom.js
#	test/unit-tests/function/probability/pickRandom.test.js
2020-10-18 10:14:32 +02:00
Jos de Jong
c5ab722d95 Merge branch 'pickrandom-allow-any-array)' of https://github.com/KonradLinkowski/mathjs into develop 2020-10-07 15:06:52 +02:00
Jos de Jong
4633d702f3 Fix merge conflicts 2020-10-07 13:40:21 +02:00
Jos de Jong
adb259b194 Merge remote-tracking branch 'origin/develop' into v8
# Conflicts:
#	HISTORY.md
#	package-lock.json
#	package.json
#	src/expression/embeddedDocs/embeddedDocs.js
#	src/factoriesAny.js
2020-10-07 13:35:05 +02:00
rnd-debug
439ec41e13
Feat/rotate matrix (#1984)
* providing rotationMatrix(theta, v)

* increase coverage

* adding latex test as is

* fixing rounding issues with math.pi

* fixing lint

* Update rotationMatrix.js

remove non-sense doc

* Update rotationMatrix.js

Remove non-sense from docs

* removing nonsense from docs

* Renaming functions

Co-authored-by: Jos de Jong <wjosdejong@gmail.com>
2020-10-07 12:41:50 +02:00
Jos de Jong
99b738f3e6 Merge branch 'develop' into v8
# Conflicts:
#	AUTHORS
#	HISTORY.md
#	package-lock.json
#	package.json
#	src/expression/embeddedDocs/embeddedDocs.js
#	src/factoriesAny.js
#	src/function/arithmetic/ceil.js
#	src/function/arithmetic/fix.js
#	src/function/arithmetic/floor.js
#	test/unit-tests/function/arithmetic/ceil.test.js
2020-10-07 12:12:35 +02:00
Konrad Linkowski
a5cbb6aa37 pickRandom - flatten the array 2020-10-03 19:37:21 +02:00
Konrad Linkowski
ca05c25546 Allow any array in pickRandom function 2020-10-03 19:37:21 +02:00
Konrad Linkowski
becab4099b
sqrtm - throw an error for matrices with dimension greater than two (#1977) 2020-09-30 12:37:32 +02:00
rnd-debug
9f06dad72f
floor and cell with precision (#1967)
* floor and cell with precision

* appends missing files

* fixing lint

* fixing ceil and floor tests: string typing issue

* fixing ceil and floor tests: string typing issue

* fixing ceil and floor tests: string typing issue

* fixing ceil and floor tests: string typing issue

* adding fix(x,n); adding more tests for floor and ceil

* rising coverage

* adding docs for fix(x,n)

* completing fix(x, n)

* fixing string typing issue
2020-09-27 17:07:38 +02:00
Colin Holzman
f5d843bbc6
Binary, octal, and hexadecimal literals and formatting (#1968)
* allow binary, octal, and hex literals as in JS (0b, 0o, 0x)

* add tests

* fix lint issues

* add notation for binary, octal, and hex in formatNumber

* remove the extra format notations

* add bin, oct, and hex functions for formatting

* move bin, oct, and hex from base.js to their own files, fixed built test error about documentation

* parse and format treat values as 32 bit signed 2s complement integers

* add section in syntax documentation

* typo

Co-authored-by: Jos de Jong <wjosdejong@gmail.com>
2020-09-26 17:45:10 +02:00
ovk
36c53b72af
Fix negative dividend modulo for BigNumber and Fraction (#1973) 2020-09-23 11:42:10 +02:00
Jos de Jong
6f00715754
Specify import require paths (continuation of #1941) (#1962)
* Add `.js` extension to source file imports

* Specify package `exports` in `package.json`

Specify package type as `commonjs` (It's good to be specific)

* Move all compiled scripts into `lib` directory

Remove ./number.js (You can use the compiled ones in `./lib/*`)

Tell node that the `esm` directory is type `module` and enable tree shaking.

Remove unused files from packages `files` property

* Allow importing of package.json

* Make library ESM first

* - Fix merge conflicts
- Refactor `bundleAny` into `defaultInstance.js` and `browserBundle.cjs`
- Refactor unit tests to be able to run with plain nodejs (no transpiling)
- Fix browser examples

* Fix browser and browserstack tests

* Fix running unit tests on Node 10 (which has no support for modules)

* Fix node.js examples (those are still commonjs)

* Remove the need for `browserBundle.cjs`

* Generate minified bundle only

* [Security] Bump node-fetch from 2.6.0 to 2.6.1 (#1963)

Bumps [node-fetch](https://github.com/bitinn/node-fetch) from 2.6.0 to 2.6.1. **This update includes a security fix.**
- [Release notes](https://github.com/bitinn/node-fetch/releases)
- [Changelog](https://github.com/node-fetch/node-fetch/blob/master/docs/CHANGELOG.md)
- [Commits](https://github.com/bitinn/node-fetch/compare/v2.6.0...v2.6.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>

* Cleanup console.log

* Add integration tests to test the entry points (commonjs/esm, full/number only)

* Create backward compatibility error messages in the files moved/removed since v8

* Describe breaking changes in HISTORY.md

* Bump karma from 5.2.1 to 5.2.2 (#1965)

Bumps [karma](https://github.com/karma-runner/karma) from 5.2.1 to 5.2.2.
- [Release notes](https://github.com/karma-runner/karma/releases)
- [Changelog](https://github.com/karma-runner/karma/blob/master/CHANGELOG.md)
- [Commits](https://github.com/karma-runner/karma/compare/v5.2.1...v5.2.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>

Co-authored-by: Lee Langley-Rees <lee@greenimp.co.uk>
Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-09-20 18:01:29 +02:00
Jos de Jong
1ce9acd7d7 Replace underscore with lodash (used in some unit tests) 2020-09-06 10:03:07 +02:00
rnd-debug
d08f2bc893
enable variance() and std() to use arrays with units (#1959) 2020-09-06 09:29:25 +02:00
Michal Grňo
ba4ff2f9c9
Add usolveAll and lsolveAll methods (#1916)
* refactor solveValidation

* refactor usolve

* usolve algorithm implemented (for square mat.)

* added lsolve, consistent return type, fixed tests

* fixed lusolve and its tests, fixed linting issues

* added tests for usolve&lsolve, try-catch in lusolve

* put changes into separate files (u-/lsolveAll), revert changes to u-, l- and lusolve

* made *solveAll return [] for non-solvable, implemented sparse algorithms

* improved documentation for *solve(All)

Co-authored-by: Jos de Jong <wjosdejong@gmail.com>
2020-08-29 13:11:16 +02:00