* Optimize the map and forEach functions in DenseMatrix.js
* Changed index back to Array from Uint32Array and clone it using index.slice(0) instead of [...index]
* Fixed merge conflicts with the fast callback optimization
* Fixed the documentation for _forEach()
* Fixed _forEach comment and made it return an immutable index array
* Resolved DenseMatrix unit test suggestions
---------
Co-authored-by: Jos de Jong <wjosdejong@gmail.com>
* fix: disable parser functions in the CLI (security issue)
* fix: ensure `ObjectWrappingMap` doesn't allow deleting unsafe properties (security issue)
* fix: enable using methods and (safe) properties on plain arrays
* docs: update the "Less vulnerable expression parser" section in the docs
* chore: fix typos and linting issues
* chore: keep functions like `simplify` enabled in the CLI
* docs: update the security page
* fix: ensure `ObjectWrappingMap.keys` cannot list unsafe properties
* fix: when overwriting a rawArgs function with a non-rawArgs function it was still called with raw arguments
* docs: fix a typo
* Removed maxArgumentCount in favor of applyCallback
* Making a pure _recurse function
* Added cbrt tests, removed unnecesary changes in functions.
* Fixed main bottleneck
* Restored back function before unintended change
* Fix format
---------
Co-authored-by: Jos de Jong <wjosdejong@gmail.com>
* feat: export util functions `isMap`, `isPartitionedMap`, and `isObjectWrappingMap` and improve the documentation of `scope` (see #3150)
* chore: fix broken unit tests
* docs: refine the explanation about scopes
1 US gallon is defined as 231 cubic inches, which is exactly 3.785411784 L (since 1 inch is defined as 25.4 mm). Other units are defined against the gallon.
Co-authored-by: Jos de Jong <wjosdejong@gmail.com>
* nearlyEqual with absolute and relative tolerances
* Format
* nearlyEqual for bigNumber
* Added skip for NaN
* Reduce diff a bit
* Issue with examples in jsdcos
* Updated all calls for nearlyEqual
* Fixed failing tests
* Changed epsilon to relTol, absTol
* Changed references to epsilon in docs and tests
* Added warning for config.epsilon
* Fix warning in zeta.test
* Added config test
* Added sinon to test console.warn
---------
Co-authored-by: Jos de Jong <wjosdejong@gmail.com>
* Use referToSelf() to recursively check if various types are NaN in an array or matrix
* fix array test description from isNegative to isNaN
* Add test for units in a matrix
---------
Co-authored-by: Jos de Jong <wjosdejong@gmail.com>
* Fixing rounding bug from issue 3100
* Corrected syntax and converted if...else to logic using ternary operator
* Removing nearlyEqual comparison because a false
return value was mathematically impossible by
user input.
Adding dynamic epsilon logic to cover cases when
a user requests to round a number to a higher
precision than epsilon in the config file.
Also adding tests to cover dynamic epsilon cases.
* Removing dynamic epsilon and adding test for changing config.epsilon during runtime
* Reintroducing nearly equal verification for
round function.
Adding test case for changing epsilon at runtime.
Both tests for changing epsilon at runtime also
verify the false nearlyEqual scenario.
---------
Co-authored-by: Jos de Jong <wjosdejong@gmail.com>
* chore: write unit tests using `and` and `or` inside a function definition (WIP)
* fix: #3143 fix scope issues in rawArgs functions by implementing a `PartitionedMap`
* fix: add more unit tests for `ObjectWrappingMap`
* fix: don't let `ObjectWrappingMap` and `PartitionedMap` extend `Map` (risk of having non-overwritten methods)
* docs: update docs about `rawArgs` functions
* Add new test for degC toSI
* Convert value using to() if needed
* Only set ret.value = null when it is not already null
---------
Co-authored-by: Jos de Jong <wjosdejong@gmail.com>
* Add test for conversion to unitless quantity
* Avoid access to missing array index
* Also check that other.units is not empty
* Add test for abs of dimensionless unit
* Fix: avoid access to missing units array index
---------
Co-authored-by: Jos de Jong <wjosdejong@gmail.com>
* added Q, R, r, q metrix prefixes
* tests added for new prefixes
* removed duplicate tests
* maybe square and cubic tests will bump code cov into the positive
* Check numeric value
---------
Co-authored-by: Jos de Jong <wjosdejong@gmail.com>
* If fn has rawArgs set, pass unevaluated args
* Add shared helper function for evaluating truthiness
* Add and & or transform functions for lazy evaluation
* Add lazy evaluation of bitwise & and | operators
* Add unit tests for lazy evaluation
* Add lazy evaluation note to docs
* Move documentation to Syntax page
* Replace `testCondition()` with test evaluation
of logical function itself
* Use `isCollection()` to simplify bitwise transform functions
* fix: do not copy scope in raw OperatorNode, test lazy operators scope
* fix: linting issues
---------
Co-authored-by: Brooks Smith <brooks.smith@clearcalcs.com>
* fix#2761: implement support for units in function `round` (WIP)
* fix#2761: extend function `round` with support for units
* docs: describe all signatures in the docs of function round
* chore: fix linting issue
* chore: remove less-useful signatures for round with units and matrices