196 Commits

Author SHA1 Message Date
Glen Whitney
fd88f32073 WIP: "Actual" symbolic evaluation
This PR is not intended for merging as-is, but serves as an
  alternate demonstration (vis-a-vis issue #2437) that essentially all
  the ingredients already exist in mathjs for evaluation in which all
  undefined variables evaluate to symbols, therefore possibly returning
  an expression (Node) rather than a concrete value (while still
  evaluating all the way to concrete values when possible).
  Moreover, mathematical manipulation of symbolic expressions can be
  supported without circularity and without modifying numerous source
  files.

  This PR does however depend on a small addition to typed-function.js,
  see https://github.com/josdejong/typed-function/pull/125.

  See (or run) examples/symbolic_evaluation.mjs for further details on this.
2022-03-09 16:17:17 -08:00
Akira Cai
8c5c5b03b6
Update expressions.js (#2366) 2021-12-22 08:25:01 +01:00
Jos de Jong
780bde7ed5 Extend example custom_datatype.js demoing it a bit more 2021-06-23 09:15:31 +02:00
Jos de Jong
69e395cd2f Extend example custom_datatype.js demoing it a bit more 2021-06-23 09:14:49 +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
Josef Wittmann
eabaaf0048
Update rocket example (#2072)
* Update rocket example

- use values for moon ascent (was earth)
- refactor to use easier syntax
- extract functions for readability
- add comments explaining equations
- label chart axes

* Simulate Falcon 9 launch (with atmosphere)

* Add more charts to rocket example

* Track time in rocket example

* Update comments and extract chart options
2021-01-06 09:22:36 +01:00
Peter Krautzberger
02137e01c9
docs: update pretty print with MathJax (#2023)
Upgrades to MathJax v3 and adjusts to new APIs.
2020-11-09 13:23:18 +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
68c6a91801 Update devDependencies 2020-11-02 09:33:11 +01: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
Jos de Jong
d82fc392ac Simplify require url in math_worker example 2020-09-26 11:29:11 +02:00
Jos de Jong
91fa8ea5aa Fix require url in math_worker example 2020-09-26 11:28:25 +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
josdejong
cab986671e Merge remote-tracking branch 'origin/develop' into develop 2020-06-28 22:14:53 +02:00
josdejong
2df28bb609 Fix #1899: documentation on expression trees still using old namespace
`math.expression.node.*` instead of `math.*`
2020-06-28 22:14:27 +02:00
SungJinWoo-SL
98ce1fe437
g != h (#1897)
ik it's small but I was reading and it was kind of annoying
2020-06-27 09:41:30 +02:00
josdejong
7b5038eb89 Update devDependencies. Fix linting error 2020-06-23 21:09:38 +02:00
josdejong
f8521d3344 Add two examples on creating a custom instance of evaluate 2020-06-23 21:00:10 +02:00
josdejong
654e193a78 Fix fixer.io example, the free plan doesn't support SSL 2020-05-06 10:14:18 +02:00
josdejong
28b7a02f01 Fix #1834: value Infinity cannot be serialized and deserialized 2020-05-03 15:41:03 +02:00
jos
d8a4f3a00a Update to standard@13.0.2 2019-07-20 13:46:31 +02:00
jos
c74a736ff9 Create an example showing how to override relational functions, see #1557 2019-07-10 12:20:50 +02:00
jos
51f99dbcd3 Remove old_browsers example (these browsers aren't supported anymore) 2019-06-08 13:59:39 +02:00
jos
a4d2c70c37 Define HTML charset and lang in all browser examples 2019-06-08 13:57:17 +02:00
jos
a602a38340 Updated docs for v6 2019-05-20 21:42:49 +02:00
jos
794803c0cd Updated readme, history, and some examples 2019-04-30 21:06:08 +02:00
jos
e4bb1c6198 Generate individual files for dependencies (tree shaking working now :) ) 2019-04-24 21:13:49 +02:00
jos
ecaa30c05e Update urls of examples to point to root instead of index.js 2019-04-24 10:50:54 +02:00
jos
f4d4180cea Move all entry files under ./src/entry 2019-04-24 10:48:01 +02:00
jos
33cead1327 Improved deprecation errors and warnings. Introduce lazy again for factories. 2019-04-22 09:45:57 +02:00
jos
6081360d6a Merged develop into modular_architecture 2019-04-13 16:51:51 +02:00
jos
d8957d23ae Get all examples running :) 2019-04-10 16:52:02 +02:00
jos
70cbc3ec30 Replace http urls with https where supported 2019-02-27 13:08:42 +01:00
jos
2d15621a3b Fixes in examples (WIP) 2019-02-11 21:38:53 +01:00
jos
99da53da0e Flatten everything in a mathjs instance to make it consistent with the ES6 exports. Create deprecation warnings for the old classes and functions 2019-02-07 21:24:51 +01:00
jos
078f1dd69f Renamed methods .eval to .evaluate, updated all docs and examples accordingly 2019-01-16 10:11:32 +01:00
jos
046173c531 Converted all arithmetic functions 2018-11-06 13:13:52 +01:00
jos
f6b524a966 Use object destructuring in factory function callback. Rename typeof to typeOf. Only pass dependencies in scope to factory function. 2018-11-06 09:17:21 +01:00
jos
51960aafe0 Change the structure of a factory function from an function to an object with meta data 2018-11-05 10:25:32 +01:00
jos
7d2c87be04 Move plain functions under ./src/plain 2018-10-31 11:37:02 +01:00
jos
3019b4a526 Merge branch 'develop' into modular_architecture 2018-10-20 18:25:43 +02:00
jos
a715786690 Release v5.2.0 2018-10-05 21:25:21 +02:00
jos
c13466bd0a Merge branch 'develop' into modular_architecture 2018-09-21 20:11:47 +02:00
greenkeeper[bot]
c5971b371a Update standard to the latest version 🚀 (#1226)
* chore(package): update standard to version 12.0.0

* update to new lint version with --fix

I believe this mainly adds whitespace to `{}`'s.

* Replace assert.equal with assert.strictEqual

This breaks a lot of tests which I will endevour to fix in the next
commits.

* Fix most errors due to assert.strictEquals

Some instances of `strictEquals` are replaced by `deepEquals`.
`toString` has been used to make some string comparisions explicit.
Tests will still fail untill #1236 and #1237 are fixed.

* Fix assertion erros due to -0

With node 10, assert.strictEqual no longer considers `0 === -0`.
I missed these first time round as I was using node 8.

* Put toString correct side of bracket

I was converting the constructor to a string rather
than the result of the computation. Oops.

* Fixed #1236: quantileSeq has inconsistant return

* Update package-lock

* Fixed #1237: norm sometimes returning a complex number instead of number

* Fix cli tests

* More changes for standardjs, and fixes in unit tests
2018-09-08 16:33:58 +02:00
jos
5610c72e84 Experiment with different dependency injection (WIP) 2018-07-28 22:21:33 +02:00
jos
3ee6201981 Fixed advanced example add_new_datatypes, upgraded dependencies 2018-07-04 12:26:38 +02:00
jos
41febe2bc1 Fixed #1136: rocket trajectory example broken 2018-07-04 10:10:28 +02:00
jos
8b5eb89a02 Minor tweaks in the docs 2018-06-16 14:57:28 +02:00
jos
dff0a57219 Some fixes in examples 2018-06-16 14:32:47 +02:00
jos
88263c47c7 Woohoo fixed the last lint errors 2018-06-13 21:51:09 +02:00