68 Commits

Author SHA1 Message Date
Vrushaket Chaudhari
1ee8733832
added correlation function to statistics (#3015)
* added correlation function to statistics

* added implemenation for signature Matrix, Matrix and support for BigNumbers

* reverted changes to default for version numbers of devDepenencies

* reverted changes to default for version numbers of devDepenencies in package-lock.json

* change variable name from xArray, yArray to x and y

* added Matrix as param in index.d.ts

* corrected the file and function names for correlation function

* renamed createCorrelation to createCorr in factoriesNumber.js

* fixed failing test case for matrix and added params and return in corr
2023-09-01 13:38:49 +02:00
David Contreras
3ab9bc1ea3
Extend quantileSeq with support for a dimension (#3002)
* Included math to syntax when missing

* Included solveODE

* renamed initialStep as firstStep

* Included tests for solveODE

* Test the full state instead of the final state

* Fixed issue with tolerance

* Added unit signature for y0

* Included units test also for y0

* Included embedded docs and more tests

* Included error for tspan

* It works with bignumbers

* reduced calling bignumber

* extended the search for bignumbers

* The jsdocs is less ambiguous

* included tests for step options

* Allowed for 0 minStep

* Optimization to avoid checking the sign every step

* added dim to quantile

* Included transform

* Removed modification of the docs

I made an unwanted modification

---------

Co-authored-by: David Contreras <david.contreras@guentner.com>
Co-authored-by: Jos de Jong <wjosdejong@gmail.com>
2023-08-23 12:36:54 +02:00
Jos de Jong
9669734cb4 fix a typo in the examples functions distance, getMatrixDataType, subset, and max (see #2902) 2023-02-23 17:04:53 +01:00
Jos de Jong
f865658339 fix: quantileSeq not accepting a matrix as second argument prob (see #2902) 2023-02-23 16:48:56 +01:00
Jos de Jong
a012c1ee25 fix #2883: add missing syntax for statistical functions in docs 2023-01-23 10:55:27 +01:00
Jos de Jong
59320053fd
V11 with typed-function@3 (#2560)
* refactor: Remove the automatic conversion from number to string. (#2482)

This is a breaking change. However, nothing in the unit tests or examples
  actually depended on such a conversion, and it's difficult to construct
  situations in which it's necessary. The best such example is e.g.
  `count(57)` which formerly gave the number of digits in its numeric
  argument. Of course, after this commit, that behavior can still be
  obtained by the just slightly longer expression `count(string(57))`

  The change is proposed in preparation for an addition of new facilities/
  handlers to allow symbolic computation in a couple of different ways
  (see #2475 and #2470).

* feat(simplifyCore): convert equivalent function calls into operators (#2466)

* feat(simplifyCore): convert equivalent function calls into operators

  Resolves #2415.

* docs: Every operator has a function form

  Also documents the new behavior of simplifyCore to convert function calls
  into any equivalent operator form they may have. Also fixes the syntax
  errors so that simplifyCore will successfully doctest.

* docs: Fix table syntax for operator->function correspondence

* fix(parse): Implement amended "Rule 2"

  As per the discussion in #2370, the amended "Rule 2" is
  "when having a division followed by an implicit multiplication, the
   division gets higher precedence over the implicit multiplication when
   (a) the numerator is a constant with optionally a
       prefix operator (-, +, ~), and
   (b) the denominator is a constant."
  This commit implements that behavior and adds tests for it.
  Resolves #2370.

* fix: OperatorNode.toString() outputs match implicit multiplication parsing

  Also greatly extends the tests on OperatorNode.toString() and .toTex(), and
  ensures that all tests are performed on both. (toHTML() is still a testing
  stepchild.)
  Also fixes other small bugs in .toString() and .toTex() revealed by the
  new tests.
  Resolves #1431.

* test(parse): More cases of implicit multiplication

* refactor: Alter the precedence of implicit multiplication

  This greatly simplifies OperatorNode:calculateNecessaryParentheses,
  as opposed to trying to correct for the change in precedence after
  the fact.

* Fix broken unit test

* Replace `options && options.implicit` with `options?.implicit`

* Replace `options?.implicit` with `options && options.implicit` again, it breaks the Node 12 tests

* chore: Prevent confusion with standard matrix functions. (#2465)

* chore: Prevent consfusion with standard matrix functions.

  Prior to this commit, many functions operated elementwise on matrices
  even though in standard mathematical usage they have a different
  meaning on square matrices. Since the elementwise operation is easily
  recoverable using `math.map`, this commit removes the elementwise
  operation on arrays and matrices from these functions.
  Affected functions include all trigonometric functions, exp, log, gamma,
  square, sqrt, cube, and cbrt.
  Resolves #2440.

* chore(typescript): Revise usages in light of changes

  sqrt() is now correctly typed as `number | Complex` and so must
  be explicitly cast to number when called on a positive and used
  where a Complex is disallowed; sqrt() no longer applies to matrices
  at all.

* feat: Provide better error messages for v10 -> v11 transition

  Uses new `typed.onMismatch` handler so that matrix calls that used to
  work will suggest a replacement.

* Fix #2412: let function diff return an empty matrix when the input contains only one element (#2422)

* Fix #2412: let function diff return an empty matrix when the input has only one element

* Undo changes in History in this fixme

* Add TypeScript definitions for src/utils/is.js (#2432)

This is a first step toward full publication of these functions,
that were already being exported by mathjs but had not yet
had the associated actions (documentation/available in 
parser/typed, etc.) Also, makes most of them into TypeScript
type guards, and adds Matrix as a constructor type. Resolved #2431.

Co-authored-by: Glen Whitney <glen@studioinfinity.org>

* test: add two-dimensional test cases for diff of length 1

Co-authored-by: Chris Chudzicki <christopher.chudzicki@gmail.com>
Co-authored-by: Glen Whitney <glen@studioinfinity.org>

* Refactor/simplify core cleanup (#2490)

* refactor: don't simplify constants in simplifyCore

  Keeps the operation of simplifyCore cleanly separate from
  simplifyConstant.

* fix; handle multiple consecutive operations in simplifyCore()

   Also adds support for logical operators.
   Resolves #2484.

* feat: export simplifyConstant

  Now that simplifyCore does not do any constant folding, clients may
  wish to access that behavior via simplifyConstant. Moreover, exporting it
  makes it easier to use in custom rule lists for simplify().

  Also adds docs, embedded docs, and tests for simplifyConstant().

  Also fixes simplifyCore() on logical functions (they always return boolean,
  rather than "short-circuiting").

  Resolves #2459.

* refactor: Rename matrix algorithms to stay sane in next refactor

* refactor: Create a generator for boilerplate matrix versions of operations

  This reduces code length and duplication, and significantly reduces the
  number of instances of 'this' that will require replacement when moving on
  top of typed-function v3.

* refactor: add automatic conversion from string to Node

  Eliminates many `this` calls in src/function/algebra, which will help
  conversion to typed-function v3a.

  Also make `resolve` into a typed function so that it will now work
  on strings as well, and adds a test that it does.

* refactor: Use temporary conversions to simplify typed-function definitions

  Specifically, temporarily converting Object to Map eases the definition
  of 'simplify' and a new, generally ignored type 'identifier' (a subtype
  of 'string') with a temporary conversion to 'SymbolNode' simplifies the
  definition of 'derivative'.

  These refactors eliminate multiple instances of this, which will ease
  conversion to typed-function v3a.

* refactor: Speed up utils/is.js typeOf function

  In preparation for using it as the function selector for the Unit class.
  Also fixes the inconsistency between the `typed` type hierarchy
  'function' and typeOf returning 'Function' in favor of
  'function', again to minimize the special cases in typeOf

* feat(Unit): Add a method giving the (string name of the) type of the value

  E.g. `math.unit('5cm').valType()` returns `number`.

  Also uses this for an internal method that directly gives the number
  converter for a Unit.

  Also fixes lint errors from previous commit (not clean, I know, I forgot
  that build-and-test does not run lint).

  Adds tests for unit.valType()

* refactor: Eliminate hyperbolic functions operating on angles

  There is no mathematical meaning to a hyperbolic function operating on
  an angle (the proper units of its argument is actually area), and it
  eliminates a number of uses of `this`, so remove such arguments.

* refactor: Remove miscellaneous unnecessary typed-function this refs

* refactor: Adapt to typed-function v3a

  Mostly this involves replaceing instances of 'this' with used of (preferably)
  typed.referTo() or typed.referToSelf(). Some repeated batterns of boilerpolate
  signatures within different divisions of functions (bitwise, relational,
  trigonometry) were factored out into their own files and reused in several
  of the individual functions.

* tests: Only require that derivative tests mention the proper node type

* refactor: remove typed.ignore

* chore: Update to typed-function 3.0

  Also had to deal with new typing for `resolve()` in that it now accepts
  strings and Matrices; added tests for the new possibilities for `resolve()`,
  and eliminated empty comments from the Node representation of parsed
  strings as they can't really be doing anyone any good and they are a pain
  for testing.

  Also updates the TypeScript declarations and tests for `resolve()`

* chore: Object.hasOwn not supported in Node 14

  Also removes 'resolve' from the known failing doc tests, now that it handles
  strings.

* chore: Drop ES5 / IE 11 support.

* fix(types): Remove no-longer-implementd matrix overloads

* test(identifier): As requested in review item 2

* refactor(Unit): valType => valueType as per review item 3

* test(hasNumericValue): Test boolean arguments as per review item 4

* refactor(Node): Use class syntax rather than assigning prototypes

  This change simplifies the typeOf() function, because now all subclasses
  of Node have the expected constructor name.

  Also, reformats the documentation of the typeOf() function so that the
  doc test of that function will serve as an exhaustive test that the bundle
  returns the proper types.

* Prevent chain functions from matching stored value with a rest parameter (#2559)

* chore: Prevent confusion with standard matrix functions. (#2465)

* chore: Prevent consfusion with standard matrix functions.

  Prior to this commit, many functions operated elementwise on matrices
  even though in standard mathematical usage they have a different
  meaning on square matrices. Since the elementwise operation is easily
  recoverable using `math.map`, this commit removes the elementwise
  operation on arrays and matrices from these functions.
  Affected functions include all trigonometric functions, exp, log, gamma,
  square, sqrt, cube, and cbrt.
  Resolves #2440.

* chore(typescript): Revise usages in light of changes

  sqrt() is now correctly typed as `number | Complex` and so must
  be explicitly cast to number when called on a positive and used
  where a Complex is disallowed; sqrt() no longer applies to matrices
  at all.

* feat: Provide better error messages for v10 -> v11 transition

  Uses new `typed.onMismatch` handler so that matrix calls that used to
  work will suggest a replacement.

* fix: prevent chain from matching rest parameter with stored value

  Since the revised code needs the isTypedFunction predicate, switch to using
  the typed-function implementation for that throughout mathjs, rather than
  rolling our own here.

  Also adds a test that chain() no longer allows this kind of usage.

  Removes the two type declarations in types/index.d.ts that were allowing
  this sort of "split rest" call and added tests that such calls are
  forbidden.

  Adds to the chaining documentation page that such "split" calls are not
  allowed.

* chore: Refresh this PR to reflect underlying changes

  Also addresses the review request with a detailed comment on the
  correctness of a new code section.

  Note that it reverts some changes to the TypeScript signatures of the
  matrix functions ones() and zeros() -- they do not actually have a
  typed-function signature of two numbers and an optional format
  specifically for two dimensions. What they have is a single rest
  parameter, from which the format is extracted if present.

  Hence, due to the ban on breaking rest parameters, it is not
  valid to call math.chain(3).zeros(2) to make a 3-by-2 matrix of zeros,
  which seems like a perfectly valid ban as the division of the dimensions
  is very confusing; this should be written as math.chain([3,2]).zeros().
  The TypeScript signatures are fixed accordingly, along with the edge
  case of no arguments to ones() and zeros() at all, which does work to
  produce the "empty matrix".

* Unit test `typeOf` on the minified bundle (currently failing)

* Update AUTHORS

* Improve testing of typeOf on browser bundle (WIP)

* fix #2621: Module "mathjs" has no exported member "count" .ts(2305) (#2622)

* fix #2621: Module "mathjs" has no exported member "count" .ts(2305)

* feat: Update comments of  count

* feat: update the signature for count

* feat: add usage example for count and sum

* chore: Ensure type info remains in bundling

Co-authored-by: Glen Whitney <glen@studioinfinity.org>
Co-authored-by: Chris Chudzicki <christopher.chudzicki@gmail.com>
Co-authored-by: Hansuku <1556207795@qq.com>
2022-07-19 12:04:35 +02:00
Jos de Jong
c957d41053
Implement cumsum function for computing cumulative sums (#1870)
Resolves #1633

Co-authored-by: Hjortur Jonasson <hjorturjonasson@gmail.com>
Co-authored-by: Jos de Jong <wjosdejong@gmail.com>
Co-authored-by: Glen Whitney <glen@studioinfinity.org>
2022-03-05 23:06:51 -08: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
rnd-debug
d08f2bc893
enable variance() and std() to use arrays with units (#1959) 2020-09-06 09:29:25 +02:00
Nick Ewing
859cfa208a
Replace recursive calls in typed-functions with this-style calls (#1903)
* Fix #1902: typo in an example in the documentation

* Replace recursive calls in typed-functions with `this`-style calls

* Replace more recursive calls in typed-functions with `this`-style calls

* Refactor compareNatural to use this-style recursion

Co-authored-by: josdejong <wjosdejong@gmail.com>
2020-07-13 17:37:30 +02:00
josdejong
c19492a3c9 Fix functions sum, prod, min, and max not throwing a conversion error when passing a single string, like sum("abc") 2020-06-24 09:47:46 +02:00
josdejong
eef3b9e612 Fix prod("abc") not throwing a conversion error 2020-06-23 20:30:20 +02:00
josdejong
0ae2d49232 Fix sum("abc") not throwing a conversion error 2020-06-23 20:21:07 +02:00
josdejong
6c7f4c860e Fix #1882: have DenseMatrix.resize and SparseMatrix.resize accept DenseMatrix and SparseMatrix as inputs too 2020-06-13 13:19:40 +02:00
josdejong
23e38bea60 Remove all deprecated code and warnings 2020-05-06 21:57:33 +02:00
Clinton Curry
69dd165afb Allow taking means of quantities with units. (#1644)
* Allow taking means of quantities with units.

* Fix silly error in test.

The test as written did not test anything about units.

* Fix same error again...
2019-10-03 20:28:25 +02:00
Harry Sarson
4cfef3ac34 fix no-case-declarations lint 2019-08-21 10:09:10 +01:00
jos
41efed79d3 Fix #1473: remove 'use strict' in every file 2019-05-26 20:21:18 +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
22bec13d10 Implement number factories, dependencies. Make matrix and bignumber optional where possible 2019-04-03 09:46:44 +02:00
bnlcas
0db42306ec Extend std var for variable dimensions request 999 (#1444)
* initial implementation of multidimensional std and var

* consolidated std function into var, cleaned up the interface for var, fixed bias correction

* added documentation of variable axis for std and var

* updated documentation for std and var

* changed the order of normalization and dimension for a three parameter input in the functions

* updated documentation for var and std

* add transform expressions for std and var with variable axis

* added test coverage for std and var with a variable axis

* update to documentation

* change n dim std to use apply function

* fixed tests, removed unnecessary code, updated docs

* fixed typo in docs

* update docs to remove a type

* changed location of apply function

* updated tests to use deepStrictEqual to pass linter

* adding test coverage for var.transform and std.transform
2019-03-20 15:21:55 +01:00
jos
6acadd71a0 Create number implementations of all functions in mainNumber.js 2019-03-06 21:49:30 +01:00
jos
554d2243de Refactor hasNumericValue and sum.transform 2019-02-09 21:56:22 +01:00
jos
83df09800b Merge branch 'develop' into modular_architecture_merge
# Conflicts:
#	HISTORY.md
#	gulpfile.js
#	package-lock.json
#	package.json
#	src/core/function/typed.js
#	src/expression/transform/index.js
#	src/function/statistics/sum.js
#	src/function/utils/index.js
#	src/type/unit/Unit.js
#	src/version.js
#	test/expression/node/FunctionNode.test.js
#	test/type/unit/function/createUnit.test.js
#	test/utils/bignumber/formatter.test.js
#	test/utils/number.test.js
2019-02-09 21:26:25 +01:00
jos
869d4960f9 Create and use factory.js to import all dependencies in main instance. Deprecate all old nested index.js files. 2019-01-30 14:38:47 +01:00
jos
c42844a5d8 Flatten all type.* dependencies 2019-01-30 13:47:45 +01:00
jos
e36cb13c25 Implement util function warnOnce which is used for deprecated functionality 2019-01-14 21:16:44 +01:00
Maximilian
6c661f609f Update min.js
change maximum to minimum
2019-01-10 12:26:15 +00:00
jos
05e6cfec7f Doc generation working again. Renamed variance and evaluate occurrences in the docs. 2019-01-09 11:21:43 +01:00
jos
016e10109d Fix functions having the actual config values.
Fix classes not listening for changes in config.
Decouple creating classes from `core`.
2018-12-30 20:41:06 +01:00
bnlcas
e45c8805b3 Add axis for sum request 1244 (#1310)
* enable sum function to take an argument of dimension for a matrix fulfilling issue #1244

* added sum along a dimension to the unit test coverage for sum

* added information about sum along a dimension to the markdown

* fixed typo in error message

* made formatting chagnes for linter

* add sum to transformed functions
2018-12-09 13:09:36 +01:00
jos
01a230a996 Add /* #__PURE__ */ everywhere to enable tree-shaking in webpack 2018-12-01 11:21:36 +01:00
jos
c7e0d211b7 All functions use plain object config properties, and use a copy of the config (finalize them) 2018-11-21 21:09:20 +01:00
jos
19275e5eaa Moved all toTex properties to latex util file 2018-11-21 18:08:21 +01:00
jos
7a48d972ce Refactored all statistics functions. Renamed var to variance 2018-11-09 12:33:13 +01:00
jos
2d7a407ee2 Create mainAll.js. Change algorithm functions to be internal factory functions (not injected). Convert more functions and data types. 2018-11-07 16:43:06 +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
94e9668b4a Refactor functions into ES6 import/export 2018-10-31 20:53:01 +01:00
jos
9800f25b35 Reorganized utils functions and refactored to ES6 import/export 2018-10-31 19:58:33 +01:00
jos
7bc1dd3c8c Move isBigNumber, isMatrix, and isCollection into is.js 2018-10-31 18:56:41 +01:00
jos
e3211a7efc Move all is* functions like isComplex into is.js 2018-10-31 15:28:51 +01: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
56a52f6dfd Fix unit tests broken on Nodejs 6 and 8 (no proper NaN assertions) 2018-08-21 21:27:11 +02:00
jos
b6ab40cf88 Fixed #1214: median and other functions not neatly handling NaN 2018-08-21 21:16:15 +02:00
jos
b0ec2d4739 Fixed undefined variables/globals 2018-06-13 18:09:19 +02:00
jos
0583771e4e Cleanup unused variables and imports 2018-06-13 17:25:51 +02:00
jos
b6b36bfd9b Use strict equality checks everywhere (=== and !==) 2018-06-13 15:02:21 +02:00
jos
b3b96749bf Refactored var into const/let, and removed a lot of semicolons 2018-06-13 12:21:14 +02:00
jos
c2777c856b Fixed linting issues "Unexpected template string expression" 2018-06-12 21:18:45 +02:00