mathjs 9.4.5 → 10.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/HISTORY.md +35 -0
- package/bin/cli.js +0 -0
- package/docs/expressions/syntax.md +46 -43
- package/docs/reference/functions/format.md +5 -2
- package/docs/reference/functions/parser.md +4 -4
- package/docs/reference/functions/setCartesian.md +3 -1
- package/lib/browser/math.js +5 -5
- package/lib/browser/math.js.map +1 -1
- package/lib/cjs/constants.js +1 -1
- package/lib/cjs/core/function/config.js +1 -1
- package/lib/cjs/core/function/import.js +2 -1
- package/lib/cjs/entry/dependenciesAny/dependenciesParserClass.generated.js +2 -2
- package/lib/cjs/entry/dependenciesAny.generated.js +999 -999
- package/lib/cjs/entry/dependenciesNumber/dependenciesParserClass.generated.js +2 -2
- package/lib/cjs/entry/dependenciesNumber.generated.js +581 -581
- package/lib/cjs/entry/impureFunctionsAny.generated.js +314 -313
- package/lib/cjs/entry/impureFunctionsNumber.generated.js +223 -222
- package/lib/cjs/entry/mainAny.js +8 -8
- package/lib/cjs/entry/mainNumber.js +8 -8
- package/lib/cjs/entry/pureFunctionsAny.generated.js +1100 -1100
- package/lib/cjs/entry/pureFunctionsNumber.generated.js +375 -375
- package/lib/cjs/entry/typeChecks.js +12 -12
- package/lib/cjs/expression/Parser.js +6 -5
- package/lib/cjs/expression/embeddedDocs/function/set/setCartesian.js +1 -1
- package/lib/cjs/expression/function/parser.js +4 -4
- package/lib/cjs/expression/node/OperatorNode.js +9 -6
- package/lib/cjs/expression/operators.js +1 -1
- package/lib/cjs/expression/parse.js +42 -6
- package/lib/cjs/factoriesAny.js +660 -660
- package/lib/cjs/factoriesNumber.js +268 -237
- package/lib/cjs/function/set/setCartesian.js +3 -1
- package/lib/cjs/function/string/format.js +5 -2
- package/lib/cjs/header.js +2 -2
- package/lib/cjs/plain/bignumber/arithmetic.js +2 -2
- package/lib/cjs/plain/number/arithmetic.js +10 -10
- package/lib/cjs/plain/number/constants.js +1 -1
- package/lib/cjs/plain/number/logical.js +1 -1
- package/lib/cjs/plain/number/probability.js +2 -1
- package/lib/cjs/plain/number/trigonometry.js +1 -1
- package/lib/cjs/plain/number/utils.js +1 -1
- package/lib/cjs/type/unit/physicalConstants.js +1 -1
- package/lib/cjs/utils/array.js +14 -14
- package/lib/cjs/utils/bignumber/bitwise.js +1 -1
- package/lib/cjs/utils/customs.js +5 -5
- package/lib/cjs/utils/factory.js +3 -3
- package/lib/cjs/utils/function.js +1 -1
- package/lib/cjs/utils/is.js +23 -23
- package/lib/cjs/utils/latex.js +2 -1
- package/lib/cjs/utils/map.js +3 -3
- package/lib/cjs/utils/noop.js +1 -1
- package/lib/cjs/utils/number.js +10 -6
- package/lib/cjs/utils/object.js +8 -8
- package/lib/cjs/utils/snapshot.js +1 -1
- package/lib/cjs/utils/string.js +2 -2
- package/lib/cjs/version.js +1 -1
- package/lib/esm/core/function/import.js +2 -1
- package/lib/esm/entry/dependenciesAny/dependenciesParserClass.generated.js +2 -2
- package/lib/esm/entry/dependenciesAny.generated.js +270 -270
- package/lib/esm/entry/dependenciesNumber/dependenciesParserClass.generated.js +2 -2
- package/lib/esm/entry/dependenciesNumber.generated.js +163 -163
- package/lib/esm/entry/impureFunctionsAny.generated.js +301 -301
- package/lib/esm/entry/impureFunctionsNumber.generated.js +211 -211
- package/lib/esm/entry/pureFunctionsAny.generated.js +816 -816
- package/lib/esm/entry/pureFunctionsNumber.generated.js +234 -234
- package/lib/esm/expression/Parser.js +6 -5
- package/lib/esm/expression/embeddedDocs/function/set/setCartesian.js +1 -1
- package/lib/esm/expression/function/parser.js +4 -4
- package/lib/esm/expression/node/OperatorNode.js +9 -6
- package/lib/esm/expression/parse.js +42 -6
- package/lib/esm/function/set/setCartesian.js +3 -1
- package/lib/esm/function/string/format.js +5 -2
- package/lib/esm/version.js +1 -1
- package/package.json +16 -16
- package/types/index.d.ts +281 -77
    
        package/types/index.d.ts
    CHANGED
    
    | @@ -5,10 +5,10 @@ export as namespace math; | |
| 5 5 | 
             
            export = math;
         | 
| 6 6 |  | 
| 7 7 | 
             
            type NoLiteralType<T> =
         | 
| 8 | 
            -
             | 
| 9 | 
            -
             | 
| 10 | 
            -
             | 
| 11 | 
            -
             | 
| 8 | 
            +
                T extends number ? number :
         | 
| 9 | 
            +
                    T extends string ? string :
         | 
| 10 | 
            +
                        T extends boolean ? boolean :
         | 
| 11 | 
            +
                            T;
         | 
| 12 12 |  | 
| 13 13 | 
             
            declare namespace math {
         | 
| 14 14 | 
             
              type MathArray = number[] | number[][];
         | 
| @@ -21,7 +21,7 @@ declare namespace math { | |
| 21 21 | 
             
              interface FactoryFunctionMap {
         | 
| 22 22 | 
             
                [key: string]: FactoryFunction<any> | FactoryFunctionMap;
         | 
| 23 23 | 
             
              }
         | 
| 24 | 
            -
             | 
| 24 | 
            +
             | 
| 25 25 |  | 
| 26 26 | 
             
              /** Available options for parse */
         | 
| 27 27 | 
             
              interface ParseOptions {
         | 
| @@ -156,6 +156,168 @@ declare namespace math { | |
| 156 156 | 
             
                isHexDigit(c: string): boolean;
         | 
| 157 157 | 
             
              }
         | 
| 158 158 |  | 
| 159 | 
            +
              interface AccessorNode extends MathNodeCommon {
         | 
| 160 | 
            +
                type: 'AccessorNode';
         | 
| 161 | 
            +
                isAccessorNode: true;
         | 
| 162 | 
            +
                object: MathNode;
         | 
| 163 | 
            +
                index: IndexNode;
         | 
| 164 | 
            +
                name: string;
         | 
| 165 | 
            +
              }
         | 
| 166 | 
            +
              interface AccessorNodeCtor {
         | 
| 167 | 
            +
                new(object: MathNode, index: IndexNode): AccessorNode;
         | 
| 168 | 
            +
              }
         | 
| 169 | 
            +
             | 
| 170 | 
            +
              interface ArrayNode extends MathNodeCommon {
         | 
| 171 | 
            +
                type: 'ArrayNode';
         | 
| 172 | 
            +
                isArrayNode: true;
         | 
| 173 | 
            +
                items: MathNode[];
         | 
| 174 | 
            +
              }
         | 
| 175 | 
            +
              interface ArrayNodeCtor {
         | 
| 176 | 
            +
                new(items: MathNode[]): ArrayNode;
         | 
| 177 | 
            +
              }
         | 
| 178 | 
            +
             | 
| 179 | 
            +
              interface AssignmentNode extends MathNodeCommon {
         | 
| 180 | 
            +
                type: 'AssignmentNode';
         | 
| 181 | 
            +
                isAssignmentNode: true;
         | 
| 182 | 
            +
                object: SymbolNode | AccessorNode;
         | 
| 183 | 
            +
                index: IndexNode | null;
         | 
| 184 | 
            +
                value: MathNode;
         | 
| 185 | 
            +
                name: string;
         | 
| 186 | 
            +
              }
         | 
| 187 | 
            +
              interface AssignmentNodeCtor {
         | 
| 188 | 
            +
                new(object: SymbolNode, value: MathNode): AssignmentNode;
         | 
| 189 | 
            +
                new(object: SymbolNode | AccessorNode, index: IndexNode, value: MathNode): AssignmentNode;
         | 
| 190 | 
            +
              }
         | 
| 191 | 
            +
             | 
| 192 | 
            +
              interface BlockNode extends MathNodeCommon {
         | 
| 193 | 
            +
                type: 'BlockNode';
         | 
| 194 | 
            +
                isBlockNode: true;
         | 
| 195 | 
            +
                blocks: Array<{node: MathNode, visible: boolean}>;
         | 
| 196 | 
            +
              }
         | 
| 197 | 
            +
              interface BlockNodeCtor {
         | 
| 198 | 
            +
                new(arr: Array<{node: MathNode} | {node: MathNode, visible: boolean}>): BlockNode;
         | 
| 199 | 
            +
              }
         | 
| 200 | 
            +
             | 
| 201 | 
            +
              interface ConditionalNode extends MathNodeCommon {
         | 
| 202 | 
            +
                type: 'ConditionalNode';
         | 
| 203 | 
            +
                isConditionalNode: boolean;
         | 
| 204 | 
            +
                condition: MathNode;
         | 
| 205 | 
            +
                trueExpr: MathNode;
         | 
| 206 | 
            +
                falseExpr: MathNode;
         | 
| 207 | 
            +
              }
         | 
| 208 | 
            +
              interface ConditionalNodeCtor {
         | 
| 209 | 
            +
                new(condition: MathNode, trueExpr: MathNode, falseExpr: MathNode): ConditionalNode;
         | 
| 210 | 
            +
              }
         | 
| 211 | 
            +
             | 
| 212 | 
            +
              interface ConstantNode extends MathNodeCommon {
         | 
| 213 | 
            +
                type: 'ConstantNode';
         | 
| 214 | 
            +
                isConstantNode: true;
         | 
| 215 | 
            +
                value: any;
         | 
| 216 | 
            +
              }
         | 
| 217 | 
            +
             | 
| 218 | 
            +
              interface ConstantNodeCtor {
         | 
| 219 | 
            +
                new(constant: number): ConstantNode;
         | 
| 220 | 
            +
              }
         | 
| 221 | 
            +
             | 
| 222 | 
            +
              interface FunctionAssignmentNode extends MathNodeCommon {
         | 
| 223 | 
            +
                type: 'FunctionAssignmentNode';
         | 
| 224 | 
            +
                isFunctionAssignmentNode: true;
         | 
| 225 | 
            +
                name: string;
         | 
| 226 | 
            +
                params: string[];
         | 
| 227 | 
            +
                expr: MathNode;
         | 
| 228 | 
            +
              }
         | 
| 229 | 
            +
              interface FunctionAssignmentNodeCtor {
         | 
| 230 | 
            +
                new(name: string, params: string[], expr: MathNode): FunctionAssignmentNode;
         | 
| 231 | 
            +
              }
         | 
| 232 | 
            +
             | 
| 233 | 
            +
              interface FunctionNode extends MathNodeCommon {
         | 
| 234 | 
            +
                type: 'FunctionNode';
         | 
| 235 | 
            +
                isFunctionNode: true;
         | 
| 236 | 
            +
                fn: SymbolNode;
         | 
| 237 | 
            +
                args: MathNode[];
         | 
| 238 | 
            +
              }
         | 
| 239 | 
            +
              interface FunctionNodeCtor {
         | 
| 240 | 
            +
                new(fn: MathNode | string, args: MathNode[]): FunctionNode;
         | 
| 241 | 
            +
              }
         | 
| 242 | 
            +
             | 
| 243 | 
            +
              interface IndexNode extends MathNodeCommon {
         | 
| 244 | 
            +
                type: 'IndexNode';
         | 
| 245 | 
            +
                isIndexNode: true;
         | 
| 246 | 
            +
                dimensions: MathNode[];
         | 
| 247 | 
            +
                dotNotation: boolean;
         | 
| 248 | 
            +
              }
         | 
| 249 | 
            +
              interface IndexNodeCtor {
         | 
| 250 | 
            +
                new(dimensions: MathNode[]): IndexNode;
         | 
| 251 | 
            +
                new(dimensions: MathNode[], dotNotation: boolean): IndexNode;
         | 
| 252 | 
            +
              }
         | 
| 253 | 
            +
             | 
| 254 | 
            +
              interface ObjectNode extends MathNodeCommon {
         | 
| 255 | 
            +
                type: 'ObjectNode';
         | 
| 256 | 
            +
                isObjectNode: true;
         | 
| 257 | 
            +
                properties: Record<string, MathNode>;
         | 
| 258 | 
            +
              }
         | 
| 259 | 
            +
              interface ObjectNodeCtor {
         | 
| 260 | 
            +
                new(properties: Record<string, MathNode>): ObjectNode;
         | 
| 261 | 
            +
              }
         | 
| 262 | 
            +
             | 
| 263 | 
            +
              interface OperatorNode extends MathNodeCommon {
         | 
| 264 | 
            +
                type: 'OperatorNode';
         | 
| 265 | 
            +
                isOperatorNode: true;
         | 
| 266 | 
            +
                op: string;
         | 
| 267 | 
            +
                fn: string;
         | 
| 268 | 
            +
                args: MathNode[];
         | 
| 269 | 
            +
                implicit: boolean;
         | 
| 270 | 
            +
                isUnary(): boolean;
         | 
| 271 | 
            +
                isBinary(): boolean;
         | 
| 272 | 
            +
              }
         | 
| 273 | 
            +
              interface OperatorNodeCtor {
         | 
| 274 | 
            +
                new(op: string, fn: string, args: MathNode[], implicit?: boolean): OperatorNode;
         | 
| 275 | 
            +
              }
         | 
| 276 | 
            +
             | 
| 277 | 
            +
              interface ParenthesisNode extends MathNodeCommon {
         | 
| 278 | 
            +
                type: 'ParenthesisNode';
         | 
| 279 | 
            +
                isParenthesisNode: true;
         | 
| 280 | 
            +
                content: MathNode;
         | 
| 281 | 
            +
              }
         | 
| 282 | 
            +
              interface ParenthesisNodeCtor {
         | 
| 283 | 
            +
                new(content: MathNode): ParenthesisNode;
         | 
| 284 | 
            +
              }
         | 
| 285 | 
            +
             | 
| 286 | 
            +
              interface RangeNode extends MathNodeCommon {
         | 
| 287 | 
            +
                type: 'RangeNode';
         | 
| 288 | 
            +
                isRangeNode: true;
         | 
| 289 | 
            +
                start: MathNode;
         | 
| 290 | 
            +
                end: MathNode;
         | 
| 291 | 
            +
                step: MathNode | null;
         | 
| 292 | 
            +
              }
         | 
| 293 | 
            +
              interface RangeNodeCtor {
         | 
| 294 | 
            +
                new(start: MathNode, end: MathNode, step?: MathNode): RangeNode;
         | 
| 295 | 
            +
              }
         | 
| 296 | 
            +
             | 
| 297 | 
            +
              interface RelationalNode extends MathNodeCommon {
         | 
| 298 | 
            +
                type: 'RelationalNode';
         | 
| 299 | 
            +
                isRelationalNode: true;
         | 
| 300 | 
            +
                conditionals: string[];
         | 
| 301 | 
            +
                params: MathNode[];
         | 
| 302 | 
            +
              }
         | 
| 303 | 
            +
              interface RelationalNodeCtor {
         | 
| 304 | 
            +
                new(conditionals: string[], params: MathNode[]): RelationalNode;
         | 
| 305 | 
            +
              }
         | 
| 306 | 
            +
             | 
| 307 | 
            +
              interface SymbolNode extends MathNodeCommon {
         | 
| 308 | 
            +
                type: 'SymbolNode';
         | 
| 309 | 
            +
                isSymbolNode: true;
         | 
| 310 | 
            +
                name: string;
         | 
| 311 | 
            +
              }
         | 
| 312 | 
            +
              interface SymbolNodeCtor {
         | 
| 313 | 
            +
                new(name: string): SymbolNode;
         | 
| 314 | 
            +
              }
         | 
| 315 | 
            +
             | 
| 316 | 
            +
              type MathNode = AccessorNode | ArrayNode | AssignmentNode | BlockNode | ConditionalNode | ConstantNode |
         | 
| 317 | 
            +
                  FunctionAssignmentNode | FunctionNode | IndexNode | ObjectNode | OperatorNode | ParenthesisNode | RangeNode |
         | 
| 318 | 
            +
                  RelationalNode | SymbolNode;
         | 
| 319 | 
            +
             | 
| 320 | 
            +
             | 
| 159 321 | 
             
              type MathJsFunctionName = keyof MathJsStatic;
         | 
| 160 322 |  | 
| 161 323 | 
             
              interface MathJsStatic extends FactoryDependencies {
         | 
| @@ -173,6 +335,23 @@ declare namespace math { | |
| 173 335 | 
             
                SQRT2: number;
         | 
| 174 336 | 
             
                tau: number;
         | 
| 175 337 |  | 
| 338 | 
            +
                // Class-like constructors
         | 
| 339 | 
            +
                AccessorNode: AccessorNodeCtor;
         | 
| 340 | 
            +
                ArrayNode: ArrayNodeCtor;
         | 
| 341 | 
            +
                AssignmentNode: AssignmentNodeCtor;
         | 
| 342 | 
            +
                BlockNode: BlockNodeCtor;
         | 
| 343 | 
            +
                ConditionalNode: ConditionalNodeCtor;
         | 
| 344 | 
            +
                ConstantNode: ConstantNodeCtor;
         | 
| 345 | 
            +
                FunctionAssignmentNode: FunctionAssignmentNodeCtor;
         | 
| 346 | 
            +
                FunctionNode: FunctionNodeCtor;
         | 
| 347 | 
            +
                IndexNode: IndexNodeCtor;
         | 
| 348 | 
            +
                ObjectNode: ObjectNodeCtor;
         | 
| 349 | 
            +
                OperatorNode: OperatorNodeCtor;
         | 
| 350 | 
            +
                ParenthesisNode: ParenthesisNodeCtor;
         | 
| 351 | 
            +
                RangeNode: RangeNodeCtor;
         | 
| 352 | 
            +
                RelationalNode: RelationalNodeCtor;
         | 
| 353 | 
            +
                SymbolNode: SymbolNodeCtor;
         | 
| 354 | 
            +
             | 
| 176 355 | 
             
                /**
         | 
| 177 356 | 
             
                 * If null were to be included in this interface, it would be
         | 
| 178 357 | 
             
                 * auto-suggested as an import in VSCode. This causes issues because
         | 
| @@ -310,8 +489,8 @@ declare namespace math { | |
| 310 489 | 
             
                 * @returns Returns a fraction
         | 
| 311 490 | 
             
                 */
         | 
| 312 491 | 
             
                fraction(
         | 
| 313 | 
            -
             | 
| 314 | 
            -
             | 
| 492 | 
            +
                    numerator: number | string | MathArray | Matrix,
         | 
| 493 | 
            +
                    denominator?: number | string | MathArray | Matrix
         | 
| 315 494 | 
             
                ): Fraction | MathArray | Matrix;
         | 
| 316 495 |  | 
| 317 496 | 
             
                /**
         | 
| @@ -500,6 +679,7 @@ declare namespace math { | |
| 500 679 | 
             
                 */
         | 
| 501 680 | 
             
                qr(A: Matrix | MathArray): { Q: MathArray | Matrix; R: MathArray | Matrix };
         | 
| 502 681 |  | 
| 682 | 
            +
                rationalize(expr: MathNode | string, optional?: object | boolean, detailed?: false): MathNode;
         | 
| 503 683 | 
             
                /**
         | 
| 504 684 | 
             
                 * Transform a rationalizable expression in a rational fraction. If
         | 
| 505 685 | 
             
                 * rational fraction is one variable polynomial then converts the
         | 
| @@ -513,11 +693,11 @@ declare namespace math { | |
| 513 693 | 
             
                 * @returns The rational polynomial of expr
         | 
| 514 694 | 
             
                 */
         | 
| 515 695 | 
             
                rationalize(
         | 
| 516 | 
            -
             | 
| 517 | 
            -
             | 
| 518 | 
            -
             | 
| 696 | 
            +
                    expr: MathNode | string,
         | 
| 697 | 
            +
                    optional?: object | boolean,
         | 
| 698 | 
            +
                    detailed?: true
         | 
| 519 699 | 
             
                ): { expression: MathNode | string; variables: string[]; coefficients: MathType[] };
         | 
| 520 | 
            -
             | 
| 700 | 
            +
             | 
| 521 701 |  | 
| 522 702 | 
             
                /**
         | 
| 523 703 | 
             
                 * Simplify an expression tree.
         | 
| @@ -530,13 +710,7 @@ declare namespace math { | |
| 530 710 | 
             
                 * @param [options] (optional) An object with simplify options
         | 
| 531 711 | 
             
                 * @returns Returns the simplified form of expr
         | 
| 532 712 | 
             
                 */
         | 
| 533 | 
            -
                simplify | 
| 534 | 
            -
                  expr: MathNode | string,
         | 
| 535 | 
            -
                  rules?: Array<{ l: string; r: string } | string | ((node: MathNode) => MathNode)>,
         | 
| 536 | 
            -
                  scope?: object,
         | 
| 537 | 
            -
                  options?: SimplifyOptions,
         | 
| 538 | 
            -
                ): MathNode;
         | 
| 539 | 
            -
                simplify(expr: MathNode | string, scope?: object, options?: SimplifyOptions): MathNode;
         | 
| 713 | 
            +
                simplify: Simplify;
         | 
| 540 714 |  | 
| 541 715 | 
             
                /**
         | 
| 542 716 | 
             
                 * Calculate the Sparse Matrix LU decomposition with full pivoting.
         | 
| @@ -649,6 +823,7 @@ declare namespace math { | |
| 649 823 | 
             
                 * @returns Quotient, x / y
         | 
| 650 824 | 
             
                 */
         | 
| 651 825 | 
             
                divide(x: Unit, y: Unit): Unit | number;
         | 
| 826 | 
            +
                divide(x: Unit, y: number): Unit;
         | 
| 652 827 | 
             
                divide(x: number, y: number): number;
         | 
| 653 828 | 
             
                divide(x: MathType, y: MathType): MathType;
         | 
| 654 829 |  | 
| @@ -728,17 +903,17 @@ declare namespace math { | |
| 728 903 | 
             
                floor(x: MathArray): MathArray;
         | 
| 729 904 | 
             
                floor(x: Matrix): Matrix;
         | 
| 730 905 |  | 
| 731 | 
            -
             | 
| 906 | 
            +
                /**
         | 
| 732 907 | 
             
                 * Round a value towards minus infinity. For matrices, the function is
         | 
| 733 908 | 
             
                 * evaluated element wise.
         | 
| 734 909 | 
             
                 * @param x Number to be rounded
         | 
| 735 910 | 
             
                 * @param n Number of decimals Default value: 0.
         | 
| 736 911 | 
             
                 * @returns Rounded value
         | 
| 737 912 | 
             
                 */
         | 
| 738 | 
            -
             | 
| 913 | 
            +
                floor(
         | 
| 739 914 | 
             
                    x: number | BigNumber | Fraction | Complex | MathArray | Matrix,
         | 
| 740 915 | 
             
                    n: number | BigNumber | MathArray
         | 
| 741 | 
            -
             | 
| 916 | 
            +
                ): number | BigNumber | Fraction | Complex | MathArray | Matrix;
         | 
| 742 917 |  | 
| 743 918 | 
             
                /**
         | 
| 744 919 | 
             
                 * Calculate the greatest common divisor for two or more values or
         | 
| @@ -834,8 +1009,8 @@ declare namespace math { | |
| 834 1009 | 
             
                 * @returns Returns the remainder of x divided by y
         | 
| 835 1010 | 
             
                 */
         | 
| 836 1011 | 
             
                mod<T extends number | BigNumber | Fraction | MathArray | Matrix>(
         | 
| 837 | 
            -
             | 
| 838 | 
            -
             | 
| 1012 | 
            +
                    x: T,
         | 
| 1013 | 
            +
                    y: number | BigNumber | Fraction | MathArray | Matrix
         | 
| 839 1014 | 
             
                ): NoLiteralType<T>;
         | 
| 840 1015 |  | 
| 841 1016 | 
             
                /**
         | 
| @@ -888,8 +1063,8 @@ declare namespace math { | |
| 888 1063 | 
             
                 * @returns Rounded value of x
         | 
| 889 1064 | 
             
                 */
         | 
| 890 1065 | 
             
                round<T extends number | BigNumber | Fraction | Complex | MathArray | Matrix>(
         | 
| 891 | 
            -
             | 
| 892 | 
            -
             | 
| 1066 | 
            +
                    x: T,
         | 
| 1067 | 
            +
                    n?: number | BigNumber | MathArray
         | 
| 893 1068 | 
             
                ): NoLiteralType<T>;
         | 
| 894 1069 |  | 
| 895 1070 | 
             
                /**
         | 
| @@ -941,6 +1116,8 @@ declare namespace math { | |
| 941 1116 | 
             
                 * @param y Value to subtract from x
         | 
| 942 1117 | 
             
                 * @returns Subtraction of x and y
         | 
| 943 1118 | 
             
                 */
         | 
| 1119 | 
            +
                subtract(x: number, y: number): number;
         | 
| 1120 | 
            +
                subtract(x: Unit, y: Unit): Unit;
         | 
| 944 1121 | 
             
                subtract(x: MathType, y: MathType): MathType;
         | 
| 945 1122 |  | 
| 946 1123 | 
             
                /**
         | 
| @@ -1201,8 +1378,8 @@ declare namespace math { | |
| 1201 1378 | 
             
                 * nonzero/nonempty value.
         | 
| 1202 1379 | 
             
                 */
         | 
| 1203 1380 | 
             
                and(
         | 
| 1204 | 
            -
             | 
| 1205 | 
            -
             | 
| 1381 | 
            +
                    x: number | BigNumber | Complex | Unit | MathArray | Matrix,
         | 
| 1382 | 
            +
                    y: number | BigNumber | Complex | Unit | MathArray | Matrix
         | 
| 1206 1383 | 
             
                ): boolean | MathArray | Matrix;
         | 
| 1207 1384 |  | 
| 1208 1385 | 
             
                /**
         | 
| @@ -1223,8 +1400,8 @@ declare namespace math { | |
| 1223 1400 | 
             
                 * nonzero/nonempty value.
         | 
| 1224 1401 | 
             
                 */
         | 
| 1225 1402 | 
             
                or(
         | 
| 1226 | 
            -
             | 
| 1227 | 
            -
             | 
| 1403 | 
            +
                    x: number | BigNumber | Complex | Unit | MathArray | Matrix,
         | 
| 1404 | 
            +
                    y: number | BigNumber | Complex | Unit | MathArray | Matrix
         | 
| 1228 1405 | 
             
                ): boolean | MathArray | Matrix;
         | 
| 1229 1406 |  | 
| 1230 1407 | 
             
                /**
         | 
| @@ -1237,14 +1414,27 @@ declare namespace math { | |
| 1237 1414 | 
             
                 * nonzero/nonempty value.
         | 
| 1238 1415 | 
             
                 */
         | 
| 1239 1416 | 
             
                xor(
         | 
| 1240 | 
            -
             | 
| 1241 | 
            -
             | 
| 1417 | 
            +
                    x: number | BigNumber | Complex | Unit | MathArray | Matrix,
         | 
| 1418 | 
            +
                    y: number | BigNumber | Complex | Unit | MathArray | Matrix
         | 
| 1242 1419 | 
             
                ): boolean | MathArray | Matrix;
         | 
| 1243 1420 |  | 
| 1244 1421 | 
             
                /*************************************************************************
         | 
| 1245 1422 | 
             
                 * Matrix functions
         | 
| 1246 1423 | 
             
                 ************************************************************************/
         | 
| 1247 1424 |  | 
| 1425 | 
            +
                /**
         | 
| 1426 | 
            +
                 * Apply a function that maps an array to a scalar along a given axis of a
         | 
| 1427 | 
            +
                 * matrix or array. Returns a new matrix or array with one less dimension
         | 
| 1428 | 
            +
                 * than the input.
         | 
| 1429 | 
            +
                 * @param array The input Matrix
         | 
| 1430 | 
            +
                 * @param dim The dimension along which the callback is applied
         | 
| 1431 | 
            +
                 * @param callback The callback function that is applied. This Function should take an
         | 
| 1432 | 
            +
                 * array or 1-d matrix as an input and return a number.
         | 
| 1433 | 
            +
                 * @returns The residual matrix with the function applied over some dimension.
         | 
| 1434 | 
            +
                 */
         | 
| 1435 | 
            +
                apply<T extends MathArray | Matrix>(array: T, dim: number, callback: (array: MathArray | Matrix) => number): T
         | 
| 1436 | 
            +
             | 
| 1437 | 
            +
             | 
| 1248 1438 | 
             
                /**
         | 
| 1249 1439 | 
             
                 * Concatenate two or more matrices. dim: number is a zero-based
         | 
| 1250 1440 | 
             
                 * dimension over which to concatenate the matrices. By default the last
         | 
| @@ -1312,7 +1502,7 @@ declare namespace math { | |
| 1312 1502 | 
             
                 * @param prec Precision, default value: 1e-15
         | 
| 1313 1503 | 
             
                 * @returns Object containing an array of eigenvalues and a matrix with eigenvectors as columns.
         | 
| 1314 1504 | 
             
                 */
         | 
| 1315 | 
            -
             | 
| 1505 | 
            +
                eigs(x: MathArray | Matrix, prec?:number|BigNumber): {values: MathArray | Matrix, vectors: MathArray | Matrix}
         | 
| 1316 1506 |  | 
| 1317 1507 | 
             
                /**
         | 
| 1318 1508 | 
             
                 * Compute the matrix exponential, expm(A) = e^A. The matrix must be
         | 
| @@ -1351,8 +1541,8 @@ declare namespace math { | |
| 1351 1541 | 
             
                 * traversed. The function must return a boolean.
         | 
| 1352 1542 | 
             
                 */
         | 
| 1353 1543 | 
             
                filter(
         | 
| 1354 | 
            -
             | 
| 1355 | 
            -
             | 
| 1544 | 
            +
                    x: Matrix | MathArray | string[],
         | 
| 1545 | 
            +
                    test: ((value: any, index: any, matrix: Matrix | MathArray | string[]) => boolean) | RegExp
         | 
| 1356 1546 | 
             
                ): Matrix | MathArray;
         | 
| 1357 1547 |  | 
| 1358 1548 | 
             
                /**
         | 
| @@ -1808,8 +1998,8 @@ declare namespace math { | |
| 1808 1998 |  | 
| 1809 1999 | 
             
                /**
         | 
| 1810 2000 | 
             
                 * Create the cartesian product of two (multi)sets. Multi-dimension
         | 
| 1811 | 
            -
                 * arrays will be converted to single-dimension arrays  | 
| 1812 | 
            -
                 * operation.
         | 
| 2001 | 
            +
                 * arrays will be converted to single-dimension arrays and the values
         | 
| 2002 | 
            +
                 * will be sorted in ascending order before the operation.
         | 
| 1813 2003 | 
             
                 * @param a1 A (multi)set
         | 
| 1814 2004 | 
             
                 * @param a2 A (multi)set
         | 
| 1815 2005 | 
             
                 * @returns The cartesian product of two (multi)sets
         | 
| @@ -2429,15 +2619,15 @@ declare namespace math { | |
| 2429 2619 | 
             
                 */
         | 
| 2430 2620 | 
             
                clone(x: any): any;
         | 
| 2431 2621 |  | 
| 2432 | 
            -
             | 
| 2622 | 
            +
                /**
         | 
| 2433 2623 | 
             
                 * Test whether a value is an numeric value. In case of a string,
         | 
| 2434 | 
            -
                 *  true is returned if the string contains a numeric value. | 
| 2624 | 
            +
                 *  true is returned if the string contains a numeric value.
         | 
| 2435 2625 | 
             
                 * @param x Value to be tested
         | 
| 2436 2626 | 
             
                 * @returns Returns true when x is a number, BigNumber, Fraction, Boolean, or a String containing number.
         | 
| 2437 2627 | 
             
                 * Returns false for other types.
         | 
| 2438 2628 | 
             
                 * Throws an error in case of unknown types.
         | 
| 2439 2629 | 
             
                 */
         | 
| 2440 | 
            -
             | 
| 2630 | 
            +
                hasNumericValue(x: any ): boolean| boolean[];
         | 
| 2441 2631 |  | 
| 2442 2632 | 
             
                /**
         | 
| 2443 2633 | 
             
                 * Test whether a value is an integer number. The function supports
         | 
| @@ -2540,12 +2730,12 @@ declare namespace math { | |
| 2540 2730 | 
             
               * Factory and Dependencies
         | 
| 2541 2731 | 
             
               ************************************************************************/
         | 
| 2542 2732 | 
             
              interface FactoryDependencies {
         | 
| 2543 | 
            -
                create: (factories: FactoryFunctionMap, config?: ConfigOptions) =>  | 
| 2733 | 
            +
                create: (factories: FactoryFunctionMap, config?: ConfigOptions) => MathJsStatic;
         | 
| 2544 2734 | 
             
                factory: <T>(
         | 
| 2545 | 
            -
             | 
| 2546 | 
            -
             | 
| 2547 | 
            -
             | 
| 2548 | 
            -
             | 
| 2735 | 
            +
                    name: string,
         | 
| 2736 | 
            +
                    dependencies: MathJsFunctionName[],
         | 
| 2737 | 
            +
                    create: (injected: Partial<MathJsStatic>) => T,
         | 
| 2738 | 
            +
                    meta?: any
         | 
| 2549 2739 | 
             
                ) => FactoryFunction<T>;
         | 
| 2550 2740 | 
             
                all: FactoryFunctionMap;
         | 
| 2551 2741 |  | 
| @@ -2879,6 +3069,7 @@ declare namespace math { | |
| 2879 3069 | 
             
                create(data: MathArray, datatype?: string): void;
         | 
| 2880 3070 | 
             
                density(): number;
         | 
| 2881 3071 | 
             
                subset(index: Index, replacement?: any, defaultValue?: any): Matrix;
         | 
| 3072 | 
            +
                apply(dim: number, callback: (array: MathArray | Matrix) => number): Matrix | MathArray;
         | 
| 2882 3073 | 
             
                get(index: number[]): any;
         | 
| 2883 3074 | 
             
                set(index: number[], value: any, defaultValue?: number | string): Matrix;
         | 
| 2884 3075 | 
             
                resize(size: MathArray | Matrix, defaultValue?: number | string): Matrix;
         | 
| @@ -2941,14 +3132,14 @@ declare namespace math { | |
| 2941 3132 | 
             
                pow(unit: Unit): Unit;
         | 
| 2942 3133 | 
             
                abs(unit: Unit): Unit;
         | 
| 2943 3134 | 
             
                to(unit: string): Unit;
         | 
| 2944 | 
            -
                toNumber(unit | 
| 2945 | 
            -
                toNumeric(unit | 
| 3135 | 
            +
                toNumber(unit?: string): number;
         | 
| 3136 | 
            +
                toNumeric(unit?: string): number | Fraction | BigNumber;
         | 
| 2946 3137 | 
             
                toSI(): Unit;
         | 
| 2947 3138 | 
             
                toString(): string;
         | 
| 2948 3139 | 
             
                toJSON(): MathJSON;
         | 
| 2949 3140 | 
             
                formatUnits(): string;
         | 
| 2950 3141 | 
             
                format(options: FormatOptions): string;
         | 
| 2951 | 
            -
                splitUnit(parts: ReadonlyArray<string | Unit>): Unit[]; | 
| 3142 | 
            +
                splitUnit(parts: ReadonlyArray<string | Unit>): Unit[];
         | 
| 2952 3143 | 
             
              }
         | 
| 2953 3144 |  | 
| 2954 3145 | 
             
              interface CreateUnitOptions {
         | 
| @@ -2969,6 +3160,26 @@ declare namespace math { | |
| 2969 3160 | 
             
                fractionsLimit?: number;
         | 
| 2970 3161 | 
             
              }
         | 
| 2971 3162 |  | 
| 3163 | 
            +
              type SimplifyRule = { l: string; r: string } | string | ((node: MathNode) => MathNode);
         | 
| 3164 | 
            +
             | 
| 3165 | 
            +
              interface Simplify {
         | 
| 3166 | 
            +
                (
         | 
| 3167 | 
            +
                    expr: MathNode | string,
         | 
| 3168 | 
            +
                    rules?: SimplifyRule[],
         | 
| 3169 | 
            +
                    scope?: object,
         | 
| 3170 | 
            +
                    options?: SimplifyOptions,
         | 
| 3171 | 
            +
                ): MathNode;
         | 
| 3172 | 
            +
                (
         | 
| 3173 | 
            +
                    expr: MathNode | string,
         | 
| 3174 | 
            +
                    scope?: object,
         | 
| 3175 | 
            +
                    options?: SimplifyOptions,
         | 
| 3176 | 
            +
                ): MathNode;
         | 
| 3177 | 
            +
             | 
| 3178 | 
            +
                rules: SimplifyRule[];
         | 
| 3179 | 
            +
             | 
| 3180 | 
            +
                simplifyCore(expr: MathNode): MathNode;
         | 
| 3181 | 
            +
              }
         | 
| 3182 | 
            +
             | 
| 2972 3183 | 
             
              interface UnitDefinition {
         | 
| 2973 3184 | 
             
                definition?: string | Unit;
         | 
| 2974 3185 | 
             
                prefixes?: string;
         | 
| @@ -2982,32 +3193,14 @@ declare namespace math { | |
| 2982 3193 | 
             
                evaluate(scope?: any): any;
         | 
| 2983 3194 | 
             
              }
         | 
| 2984 3195 |  | 
| 2985 | 
            -
              interface  | 
| 2986 | 
            -
                isNode:  | 
| 2987 | 
            -
                 | 
| 2988 | 
            -
                 | 
| 2989 | 
            -
             | 
| 2990 | 
            -
             | 
| 2991 | 
            -
             | 
| 2992 | 
            -
                isConstantNode?: boolean;
         | 
| 2993 | 
            -
                isFunctionAssignmentNode?: boolean;
         | 
| 2994 | 
            -
                isFunctionNode?: boolean;
         | 
| 2995 | 
            -
                isIndexNode?: boolean;
         | 
| 2996 | 
            -
                isObjectNode?: boolean;
         | 
| 2997 | 
            -
                isOperatorNode?: boolean;
         | 
| 2998 | 
            -
                isParenthesisNode?: boolean;
         | 
| 2999 | 
            -
                isRangeNode?: boolean;
         | 
| 3000 | 
            -
                isRelationalNode?: boolean;
         | 
| 3001 | 
            -
                isSymbolNode?: boolean;
         | 
| 3196 | 
            +
              interface MathNodeCommon {
         | 
| 3197 | 
            +
                isNode: true;
         | 
| 3198 | 
            +
                comment: string;
         | 
| 3199 | 
            +
                type: 'AccessorNode' | 'ArrayNode' | 'AssignmentNode' | 'BlockNode' | 'ConditionalNode' | 'ConstantNode' |
         | 
| 3200 | 
            +
                    'FunctionAssignmentNode' | 'FunctionNode' | 'IndexNode' | 'ObjectNode' | 'OperatorNode' | 'ParenthesisNode' |
         | 
| 3201 | 
            +
                    'RangeNode' | 'RelationalNode' | 'SymbolNode';
         | 
| 3202 | 
            +
             | 
| 3002 3203 | 
             
                isUpdateNode?: boolean;
         | 
| 3003 | 
            -
                comment?: string;
         | 
| 3004 | 
            -
                content?: MathNode;
         | 
| 3005 | 
            -
                op?: string;
         | 
| 3006 | 
            -
                fn?: string;
         | 
| 3007 | 
            -
                args?: MathNode[];
         | 
| 3008 | 
            -
                type: string;
         | 
| 3009 | 
            -
                name?: string;
         | 
| 3010 | 
            -
                value?: any;
         | 
| 3011 3204 |  | 
| 3012 3205 | 
             
                /**
         | 
| 3013 3206 | 
             
                 * Create a shallow clone of the node. The node itself is cloned, its
         | 
| @@ -3082,7 +3275,7 @@ declare namespace math { | |
| 3082 3275 | 
             
                /**
         | 
| 3083 3276 | 
             
                 * Get a HTML representation of the parsed expression.
         | 
| 3084 3277 | 
             
                 */
         | 
| 3085 | 
            -
                 | 
| 3278 | 
            +
                toHTML(options?: object): string;
         | 
| 3086 3279 |  | 
| 3087 3280 | 
             
                /**
         | 
| 3088 3281 | 
             
                 * Get a string representation of the parsed expression. This is not
         | 
| @@ -3155,7 +3348,7 @@ declare namespace math { | |
| 3155 3348 | 
             
              }
         | 
| 3156 3349 |  | 
| 3157 3350 | 
             
              interface Parser {
         | 
| 3158 | 
            -
                evaluate(expr: string): any;
         | 
| 3351 | 
            +
                evaluate(expr: string | string[]): any;
         | 
| 3159 3352 | 
             
                get(variable: string): any;
         | 
| 3160 3353 | 
             
                getAll(): { [key: string]: any };
         | 
| 3161 3354 | 
             
                set: (variable: string, value: any) => void;
         | 
| @@ -3445,7 +3638,7 @@ declare namespace math { | |
| 3445 3638 | 
             
                 * can be specified as an object, string, or function.
         | 
| 3446 3639 | 
             
                 * @param scope Scope to variables
         | 
| 3447 3640 | 
             
                 */
         | 
| 3448 | 
            -
                simplify(rules?:  | 
| 3641 | 
            +
                simplify(rules?: SimplifyRule[], scope?: object): MathJsChain;
         | 
| 3449 3642 |  | 
| 3450 3643 | 
             
                /**
         | 
| 3451 3644 | 
             
                 * Calculate the Sparse Matrix LU decomposition with full pivoting.
         | 
| @@ -3488,6 +3681,17 @@ declare namespace math { | |
| 3488 3681 | 
             
                 */
         | 
| 3489 3682 | 
             
                add(y: MathType): MathJsChain;
         | 
| 3490 3683 |  | 
| 3684 | 
            +
                /**
         | 
| 3685 | 
            +
                 * Apply a function that maps an array to a scalar along a given axis of the
         | 
| 3686 | 
            +
                 * matrix or array. Returns a new matrix or array with one less dimension
         | 
| 3687 | 
            +
                 * than the input.
         | 
| 3688 | 
            +
                 * @param dim The dimension along which the callback is applied
         | 
| 3689 | 
            +
                 * @param callback The callback function that is applied. This Function should take an
         | 
| 3690 | 
            +
                 * array or 1-d matrix as an input and return a number.
         | 
| 3691 | 
            +
                 * @returns The residual matrix with the function applied over some dimension.
         | 
| 3692 | 
            +
                 */
         | 
| 3693 | 
            +
                apply(dim: number, callback: (array: Array<MathType> | Matrix) => number): MathJsChain;
         | 
| 3694 | 
            +
             | 
| 3491 3695 | 
             
                /**
         | 
| 3492 3696 | 
             
                 * Calculate the cubic root of a value. For matrices, the function is
         | 
| 3493 3697 | 
             
                 * evaluated element wise.
         | 
| @@ -4303,8 +4507,8 @@ declare namespace math { | |
| 4303 4507 |  | 
| 4304 4508 | 
             
                /**
         | 
| 4305 4509 | 
             
                 * Create the cartesian product of two (multi)sets. Multi-dimension
         | 
| 4306 | 
            -
                 * arrays will be converted to single-dimension arrays  | 
| 4307 | 
            -
                 * operation.
         | 
| 4510 | 
            +
                 * arrays will be converted to single-dimension arrays and the values
         | 
| 4511 | 
            +
                 * will be sorted in ascending order before the operation.
         | 
| 4308 4512 | 
             
                 * @param a2 A (multi)set
         | 
| 4309 4513 | 
             
                 */
         | 
| 4310 4514 | 
             
                setCartesian(a2: MathArray | Matrix): MathJsChain;
         |