nerdamer 1.1.13 → 2.0.0-rc.1
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/LICENSE.md +184 -0
- package/README.md +293 -312
- package/dist/bundle.js +2 -0
- package/dist/bundle.js.LICENSE.txt +7 -0
- package/dist/parser.js +2 -0
- package/dist/parser.js.LICENSE.txt +7 -0
- package/docs-data/parser-functions.json +1960 -0
- package/index.d.ts +10 -426
- package/output/algebra/adapters.d.ts +33 -0
- package/output/algebra/adapters.js +109 -0
- package/output/algebra/algorithms/arith.d.ts +84 -0
- package/output/algebra/algorithms/arith.js +323 -0
- package/output/algebra/algorithms/factor.d.ts +3 -0
- package/output/algebra/algorithms/factor.js +5 -0
- package/output/algebra/algorithms/factorMultivariate.d.ts +23 -0
- package/output/algebra/algorithms/factorMultivariate.js +2393 -0
- package/output/algebra/algorithms/factorUnivariate.d.ts +72 -0
- package/output/algebra/algorithms/factorUnivariate.js +1072 -0
- package/output/algebra/algorithms/gcd.d.ts +22 -0
- package/output/algebra/algorithms/gcd.js +690 -0
- package/output/algebra/algorithms/groebnerBase.d.ts +157 -0
- package/output/algebra/algorithms/groebnerBase.js +1166 -0
- package/output/algebra/algorithms/multiPoly/MultiPoly.d.ts +137 -0
- package/output/algebra/algorithms/multiPoly/MultiPoly.js +346 -0
- package/output/algebra/algorithms/poly.d.ts +228 -0
- package/output/algebra/algorithms/poly.js +1299 -0
- package/output/algebra/algorithms/rational.d.ts +17 -0
- package/output/algebra/algorithms/rational.js +115 -0
- package/output/algebra/factor/factor.d.ts +62 -0
- package/output/algebra/factor/factor.js +158 -0
- package/output/algebra/gcd/gcd.d.ts +29 -0
- package/output/algebra/gcd/gcd.js +141 -0
- package/output/algebra/groebner.d.ts +21 -0
- package/output/algebra/groebner.js +42 -0
- package/output/algebra/partfrac.d.ts +19 -0
- package/output/algebra/partfrac.js +398 -0
- package/output/algebra/polynomialize.d.ts +20 -0
- package/output/algebra/polynomialize.js +24 -0
- package/output/algebra/simplify/complexsimp.d.ts +7 -0
- package/output/algebra/simplify/complexsimp.js +24 -0
- package/output/algebra/simplify/factorCommon.d.ts +13 -0
- package/output/algebra/simplify/factorCommon.js +136 -0
- package/output/algebra/simplify/funcsimp.d.ts +26 -0
- package/output/algebra/simplify/funcsimp.js +633 -0
- package/output/algebra/simplify/invtrigrewrite.d.ts +10 -0
- package/output/algebra/simplify/invtrigrewrite.js +96 -0
- package/output/algebra/simplify/ratsimp.d.ts +21 -0
- package/output/algebra/simplify/ratsimp.js +140 -0
- package/output/algebra/simplify/simplify.d.ts +25 -0
- package/output/algebra/simplify/simplify.js +228 -0
- package/output/algebra/simplify/trigreduce.d.ts +38 -0
- package/output/algebra/simplify/trigreduce.js +424 -0
- package/output/algebra/simplify/trigrewrite.d.ts +17 -0
- package/output/algebra/simplify/trigrewrite.js +156 -0
- package/output/algebra/simplify/trigsimp.d.ts +11 -0
- package/output/algebra/simplify/trigsimp.js +369 -0
- package/output/algebra/simplify/utils.d.ts +32 -0
- package/output/algebra/simplify/utils.js +56 -0
- package/output/algebra/utils.d.ts +32 -0
- package/output/algebra/utils.js +48 -0
- package/output/api/advanced.d.ts +7 -0
- package/output/api/advanced.js +18 -0
- package/output/api/algebra.d.ts +17 -0
- package/output/api/algebra.js +32 -0
- package/output/api/assumptions.d.ts +4 -0
- package/output/api/assumptions.js +11 -0
- package/output/api/calculus.d.ts +9 -0
- package/output/api/calculus.js +21 -0
- package/output/api/core.d.ts +17 -0
- package/output/api/core.js +41 -0
- package/output/api/debug.d.ts +16 -0
- package/output/api/debug.js +23 -0
- package/output/api/parser.d.ts +85 -0
- package/output/api/parser.js +16 -0
- package/output/api/solve.d.ts +10 -0
- package/output/api/solve.js +16 -0
- package/output/api/structures.d.ts +10 -0
- package/output/api/structures.js +22 -0
- package/output/calculus/derivative/diff.d.ts +30 -0
- package/output/calculus/derivative/diff.js +238 -0
- package/output/calculus/fresnel.d.ts +16 -0
- package/output/calculus/fresnel.js +39 -0
- package/output/calculus/integrate/byParts.d.ts +18 -0
- package/output/calculus/integrate/byParts.js +339 -0
- package/output/calculus/integrate/bySubstitution.d.ts +135 -0
- package/output/calculus/integrate/bySubstitution.js +411 -0
- package/output/calculus/integrate/integrate.d.ts +38 -0
- package/output/calculus/integrate/integrate.js +652 -0
- package/output/calculus/integrate/integrationTable.d.ts +2 -0
- package/output/calculus/integrate/integrationTable.js +914 -0
- package/output/calculus/integrate/utils.d.ts +28 -0
- package/output/calculus/integrate/utils.js +96 -0
- package/output/calculus/laplace/ilaplace.d.ts +31 -0
- package/output/calculus/laplace/ilaplace.js +192 -0
- package/output/calculus/laplace/ilaplaceTable.d.ts +2 -0
- package/output/calculus/laplace/ilaplaceTable.js +200 -0
- package/output/calculus/laplace/laplace.d.ts +22 -0
- package/output/calculus/laplace/laplace.js +109 -0
- package/output/calculus/laplace/laplaceTable.d.ts +2 -0
- package/output/calculus/laplace/laplaceTable.js +187 -0
- package/output/calculus/limit/limit.d.ts +35 -0
- package/output/calculus/limit/limit.js +1183 -0
- package/output/calculus/limit/limitsTable.d.ts +2 -0
- package/output/calculus/limit/limitsTable.js +7 -0
- package/output/core/Settings.d.ts +32 -0
- package/output/core/Settings.js +68 -0
- package/output/core/adapters.d.ts +18 -0
- package/output/core/adapters.js +40 -0
- package/output/core/classes/assumption/Assumption.d.ts +218 -0
- package/output/core/classes/assumption/Assumption.js +605 -0
- package/output/core/classes/assumption/assertiveFunctions.d.ts +6 -0
- package/output/core/classes/assumption/assertiveFunctions.js +64 -0
- package/output/core/classes/assumption/assume.d.ts +90 -0
- package/output/core/classes/assumption/assume.js +145 -0
- package/output/core/classes/collection/Collection.d.ts +107 -0
- package/output/core/classes/collection/Collection.js +231 -0
- package/output/core/classes/complex/Complex.d.ts +99 -0
- package/output/core/classes/complex/Complex.js +135 -0
- package/output/core/classes/decimalSet/DecimalSet.d.ts +226 -0
- package/output/core/classes/decimalSet/DecimalSet.js +453 -0
- package/output/core/classes/dictionary/Dictionary.d.ts +102 -0
- package/output/core/classes/dictionary/Dictionary.js +213 -0
- package/output/core/classes/equation/Equation.d.ts +256 -0
- package/output/core/classes/equation/Equation.js +350 -0
- package/output/core/classes/expression/CoeffObject.d.ts +100 -0
- package/output/core/classes/expression/CoeffObject.js +198 -0
- package/output/core/classes/expression/Expression.d.ts +1674 -0
- package/output/core/classes/expression/Expression.js +2332 -0
- package/output/core/classes/expression/analysis.d.ts +25 -0
- package/output/core/classes/expression/analysis.js +218 -0
- package/output/core/classes/expression/collect.d.ts +9 -0
- package/output/core/classes/expression/collect.js +49 -0
- package/output/core/classes/expression/format.d.ts +45 -0
- package/output/core/classes/expression/format.js +217 -0
- package/output/core/classes/expression/products.d.ts +23 -0
- package/output/core/classes/expression/products.js +115 -0
- package/output/core/classes/expression/shortcuts.d.ts +35 -0
- package/output/core/classes/expression/shortcuts.js +129 -0
- package/output/core/classes/expression/traversal.d.ts +31 -0
- package/output/core/classes/expression/traversal.js +216 -0
- package/output/core/classes/expression/trig.d.ts +25 -0
- package/output/core/classes/expression/trig.js +40 -0
- package/output/core/classes/expression/utils.d.ts +52 -0
- package/output/core/classes/expression/utils.js +189 -0
- package/output/core/classes/lookupTable/LookupTable.d.ts +12 -0
- package/output/core/classes/lookupTable/LookupTable.js +55 -0
- package/output/core/classes/matrix/Matrix.d.ts +227 -0
- package/output/core/classes/matrix/Matrix.js +889 -0
- package/output/core/classes/matrix/Sylvester.d.ts +11 -0
- package/output/core/classes/matrix/Sylvester.js +54 -0
- package/output/core/classes/matrix/functions.d.ts +26 -0
- package/output/core/classes/matrix/functions.js +52 -0
- package/output/core/classes/matrix/utils.d.ts +9 -0
- package/output/core/classes/matrix/utils.js +22 -0
- package/output/core/classes/parser/Parser.d.ts +480 -0
- package/output/core/classes/parser/Parser.js +1812 -0
- package/output/core/classes/parser/Token.d.ts +58 -0
- package/output/core/classes/parser/Token.js +137 -0
- package/output/core/classes/parser/constants.d.ts +160 -0
- package/output/core/classes/parser/constants.js +227 -0
- package/output/core/classes/parser/helpers.d.ts +21 -0
- package/output/core/classes/parser/helpers.js +42 -0
- package/output/core/classes/parser/operations/add.d.ts +15 -0
- package/output/core/classes/parser/operations/add.js +238 -0
- package/output/core/classes/parser/operations/comma.d.ts +7 -0
- package/output/core/classes/parser/operations/comma.js +11 -0
- package/output/core/classes/parser/operations/compare.d.ts +21 -0
- package/output/core/classes/parser/operations/compare.js +461 -0
- package/output/core/classes/parser/operations/divide.d.ts +2 -0
- package/output/core/classes/parser/operations/divide.js +72 -0
- package/output/core/classes/parser/operations/functions.d.ts +46 -0
- package/output/core/classes/parser/operations/functions.js +430 -0
- package/output/core/classes/parser/operations/multiply.d.ts +11 -0
- package/output/core/classes/parser/operations/multiply.js +321 -0
- package/output/core/classes/parser/operations/power.d.ts +48 -0
- package/output/core/classes/parser/operations/power.js +673 -0
- package/output/core/classes/parser/operations/subtract.d.ts +3 -0
- package/output/core/classes/parser/operations/subtract.js +35 -0
- package/output/core/classes/parser/preprocess.d.ts +14 -0
- package/output/core/classes/parser/preprocess.js +259 -0
- package/output/core/classes/parser/scripting/controlFlow.d.ts +121 -0
- package/output/core/classes/parser/scripting/controlFlow.js +355 -0
- package/output/core/classes/parser/scripting/evaluate.d.ts +10 -0
- package/output/core/classes/parser/scripting/evaluate.js +112 -0
- package/output/core/classes/parser/scripting/functions.d.ts +14 -0
- package/output/core/classes/parser/scripting/functions.js +59 -0
- package/output/core/classes/parser/scripting/scope.d.ts +35 -0
- package/output/core/classes/parser/scripting/scope.js +155 -0
- package/output/core/classes/parser/types.d.ts +125 -0
- package/output/core/classes/parser/types.js +2 -0
- package/output/core/classes/parser/wrappers/IndexedReference.d.ts +31 -0
- package/output/core/classes/parser/wrappers/IndexedReference.js +68 -0
- package/output/core/classes/parser/wrappers/KeyValuePair.d.ts +24 -0
- package/output/core/classes/parser/wrappers/KeyValuePair.js +51 -0
- package/output/core/classes/polynomial/Polynomial.d.ts +500 -0
- package/output/core/classes/polynomial/Polynomial.js +1149 -0
- package/output/core/classes/polynomial/Term.d.ts +222 -0
- package/output/core/classes/polynomial/Term.js +430 -0
- package/output/core/classes/polynomial/functions.d.ts +69 -0
- package/output/core/classes/polynomial/functions.js +126 -0
- package/output/core/classes/polynomial/utils.d.ts +62 -0
- package/output/core/classes/polynomial/utils.js +206 -0
- package/output/core/classes/rational/Rational.d.ts +504 -0
- package/output/core/classes/rational/Rational.js +779 -0
- package/output/core/classes/seq/SEQ.d.ts +13 -0
- package/output/core/classes/seq/SEQ.js +137 -0
- package/output/core/classes/valuesSet/ValuesSet.d.ts +179 -0
- package/output/core/classes/valuesSet/ValuesSet.js +381 -0
- package/output/core/classes/vector/Vector.d.ts +222 -0
- package/output/core/classes/vector/Vector.js +497 -0
- package/output/core/classes/vector/functions.d.ts +28 -0
- package/output/core/classes/vector/functions.js +47 -0
- package/output/core/common/classes/MathematicalAggregate.d.ts +53 -0
- package/output/core/common/classes/MathematicalAggregate.js +140 -0
- package/output/core/common/classes/Scope.d.ts +62 -0
- package/output/core/common/classes/Scope.js +122 -0
- package/output/core/common/classes/StructuredEntity.d.ts +55 -0
- package/output/core/common/classes/StructuredEntity.js +151 -0
- package/output/core/common/common.d.ts +63 -0
- package/output/core/common/common.js +279 -0
- package/output/core/common/functions/functions.d.ts +14 -0
- package/output/core/common/functions/functions.js +33 -0
- package/output/core/common/functions/structuredEntityUtils.d.ts +27 -0
- package/output/core/common/functions/structuredEntityUtils.js +40 -0
- package/output/core/converters/BaseConverter.d.ts +97 -0
- package/output/core/converters/BaseConverter.js +405 -0
- package/output/core/converters/Converter.d.ts +111 -0
- package/output/core/converters/Converter.js +802 -0
- package/output/core/converters/Pattern.d.ts +71 -0
- package/output/core/converters/Pattern.js +302 -0
- package/output/core/dispatch.d.ts +34 -0
- package/output/core/dispatch.js +304 -0
- package/output/core/errors.d.ts +531 -0
- package/output/core/errors.js +621 -0
- package/output/core/functions/bigint/bigint.d.ts +121 -0
- package/output/core/functions/bigint/bigint.js +392 -0
- package/output/core/functions/bigint/primeFactor.d.ts +49 -0
- package/output/core/functions/bigint/primeFactor.js +267 -0
- package/output/core/functions/bigint/primes.d.ts +1 -0
- package/output/core/functions/bigint/primes.js +11 -0
- package/output/core/functions/build/definitions.d.ts +12 -0
- package/output/core/functions/build/definitions.js +133 -0
- package/output/core/functions/build/index.d.ts +32 -0
- package/output/core/functions/build/index.js +136 -0
- package/output/core/functions/complex.d.ts +90 -0
- package/output/core/functions/complex.js +482 -0
- package/output/core/functions/decimal.d.ts +24 -0
- package/output/core/functions/decimal.js +664 -0
- package/output/core/functions/expand/expand.d.ts +42 -0
- package/output/core/functions/expand/expand.js +376 -0
- package/output/core/functions/fresnelNumeric.d.ts +12 -0
- package/output/core/functions/fresnelNumeric.js +123 -0
- package/output/core/functions/numeric.d.ts +140 -0
- package/output/core/functions/numeric.js +790 -0
- package/output/core/functions/rationalNormalization.d.ts +11 -0
- package/output/core/functions/rationalNormalization.js +117 -0
- package/output/core/functions/setFunction.d.ts +19 -0
- package/output/core/functions/setFunction.js +75 -0
- package/output/core/functions/string.d.ts +26 -0
- package/output/core/functions/string.js +101 -0
- package/output/core/functions/subst.d.ts +90 -0
- package/output/core/functions/subst.js +498 -0
- package/output/core/functions/utils.d.ts +24 -0
- package/output/core/functions/utils.js +51 -0
- package/output/core/types.d.ts +48 -0
- package/output/core/types.js +2 -0
- package/output/index.d.ts +339 -0
- package/output/index.js +715 -0
- package/output/math/defint/defintDecimal.d.ts +37 -0
- package/output/math/defint/defintDecimal.js +320 -0
- package/output/math/defint/defintNative.d.ts +57 -0
- package/output/math/defint/defintNative.js +292 -0
- package/output/math/geometry.d.ts +8 -0
- package/output/math/geometry.js +32 -0
- package/output/math/math.d.ts +655 -0
- package/output/math/math.js +1811 -0
- package/output/math/trig.d.ts +518 -0
- package/output/math/trig.js +1444 -0
- package/output/math/trunc.d.ts +19 -0
- package/output/math/trunc.js +36 -0
- package/output/math/utils.d.ts +60 -0
- package/output/math/utils.js +180 -0
- package/output/solve/classes/DecimalMatrix.d.ts +17 -0
- package/output/solve/classes/DecimalMatrix.js +86 -0
- package/output/solve/classes/FunctionSolver.d.ts +135 -0
- package/output/solve/classes/FunctionSolver.js +433 -0
- package/output/solve/classes/MultivariateSolver.d.ts +84 -0
- package/output/solve/classes/MultivariateSolver.js +240 -0
- package/output/solve/classes/PolynomialSolver.d.ts +85 -0
- package/output/solve/classes/PolynomialSolver.js +292 -0
- package/output/solve/classes/SolutionSet.d.ts +153 -0
- package/output/solve/classes/SolutionSet.js +357 -0
- package/output/solve/classes/Solver.d.ts +17 -0
- package/output/solve/classes/Solver.js +132 -0
- package/output/solve/classes/SymbolicSolver.d.ts +74 -0
- package/output/solve/classes/SymbolicSolver.js +601 -0
- package/output/solve/linsolve.d.ts +51 -0
- package/output/solve/linsolve.js +225 -0
- package/output/solve/solve.d.ts +34 -0
- package/output/solve/solve.js +260 -0
- package/output/solve/solveSystem.d.ts +31 -0
- package/output/solve/solveSystem.js +290 -0
- package/output/solve/utils.d.ts +9 -0
- package/output/solve/utils.js +62 -0
- package/output/utils/array.d.ts +42 -0
- package/output/utils/array.js +98 -0
- package/output/utils/debug.d.ts +131 -0
- package/output/utils/debug.js +295 -0
- package/output/utils/decimal.d.ts +3 -0
- package/output/utils/decimal.js +16 -0
- package/output/utils/numeric.d.ts +14 -0
- package/output/utils/numeric.js +51 -0
- package/output/utils/object.d.ts +26 -0
- package/output/utils/object.js +56 -0
- package/package.json +213 -57
- package/.travis.yml +0 -3
- package/Algebra.js +0 -4568
- package/BREAKING_CHANGES.md +0 -5
- package/CODE_OF_CONDUCT.md +0 -46
- package/CONTRIBUTING.md +0 -14
- package/Calculus.js +0 -2675
- package/Extra.js +0 -622
- package/Solve.js +0 -1783
- package/all.js +0 -16
- package/all.min.js +0 -1
- package/gulpfile.js +0 -16
- package/index.html +0 -158
- package/license.txt +0 -19
- package/nerdamer.core.js +0 -12510
- package/spec/LaTeX.spec.js +0 -302
- package/spec/TeXConvert.spec.js +0 -8
- package/spec/algebra.spec.js +0 -287
- package/spec/basic_parser.spec.js +0 -134
- package/spec/build.spec.js +0 -131
- package/spec/calculus.spec.js +0 -183
- package/spec/core.spec.js +0 -2970
- package/spec/extra.spec.js +0 -54
- package/spec/solve.spec.js +0 -126
- package/spec/support/jasmine.json +0 -11
- package/spec/support/utils.js +0 -42
- package/spec/text.spec.js +0 -132
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
/* global expect */
|
|
2
|
-
|
|
3
|
-
'use strict';
|
|
4
|
-
|
|
5
|
-
var utils = require('./support/utils');
|
|
6
|
-
var parse = utils.parse;
|
|
7
|
-
var _$ = utils.toFixed;
|
|
8
|
-
|
|
9
|
-
describe('Basic operations', function() {
|
|
10
|
-
it('should add correctly', function(){expect(parse('1+1')).toEqual(2);});
|
|
11
|
-
it('should subtract correctly', function(){expect(parse('3-1')).toEqual(2);});
|
|
12
|
-
it('should divide correctly', function(){expect(parse('6/3')).toEqual(2);});
|
|
13
|
-
it('should multiply correctly', function(){expect(parse('2*6')).toEqual(12);});
|
|
14
|
-
it('should raise to power correctly', function(){expect(parse('2^3')).toEqual(8);});
|
|
15
|
-
it('should parse scientific notation correctly', function(){expect(parse('1.234e+1')).toEqual(12.34);});
|
|
16
|
-
it('should parse non-normalized scientific notation correctly', function(){expect(parse('12.3e-1')).toEqual(1.23);});
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
describe('Order of precedence', function() {
|
|
20
|
-
it('should recognize * > +', function(){expect(parse('3*5+3')).toEqual(18);});
|
|
21
|
-
it('should recognize + = -', function(){expect(parse('4+5-11')).toEqual(-2);});
|
|
22
|
-
it('should recognize ^ = +', function(){expect(parse('2^3-3')).toEqual(5);});
|
|
23
|
-
it('should recognize ^ > *', function(){expect(parse('2^3*3')).toEqual(24);});
|
|
24
|
-
it('should recognize / = *', function(){expect(parse('6/3*5')).toEqual(10);});
|
|
25
|
-
it('should recognize / = +', function(){expect(_$(parse('2/3+2/3'))).toEqual(_$(1.3333333333333333));});
|
|
26
|
-
it('should recognize ^ is right associative', function(){expect(parse('2^3^2')).toEqual(512);});
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
describe('Percentages', function() {
|
|
30
|
-
it('should calculate percentages', function(){expect(parse('5%')).toEqual(0.05);});
|
|
31
|
-
it('should add percentages', function(){expect(parse('5%+5%')).toEqual(0.1);});
|
|
32
|
-
it('should multiply percentages', function(){expect(parseFloat(parse('10%*10%').toFixed(2))).toEqual(0.01);});
|
|
33
|
-
it('should multiply percentages by numbers', function(){expect(parse('100*10%')).toEqual(10);});
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
describe('Functions', function() {
|
|
37
|
-
it('should calculate functions', function(){expect(_$(parse('sin(1)'))).toEqual(_$(0.8414709848078965));});
|
|
38
|
-
it('should calculate functions', function(){expect(_$(parse('sin(sin(2))'))).toEqual(_$(0.7890723435728884));});
|
|
39
|
-
it('should add with functions', function(){expect(_$(parse('sin(sin(2))+4'))).toEqual(_$(4.789072343572888));});
|
|
40
|
-
it('should handle function with arguments', function(){expect(parse('max(4,6,3)')).toEqual(6);});
|
|
41
|
-
it('should handle function with arguments with operations', function(){expect(parse('max(4,5+7,3)')).toEqual(12);});
|
|
42
|
-
it('should handle function with arguments with operations and subsequent operations',
|
|
43
|
-
function(){expect(parse('max(4,5+7,3)+11')).toEqual(23);}
|
|
44
|
-
);
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
describe('Modulus', function() {
|
|
48
|
-
it('should calculate modulus', function(){expect(parse('10%4')).toEqual(2);});
|
|
49
|
-
it('should add with modulus', function(){expect(parse('10%4+6')).toEqual(8);});
|
|
50
|
-
it('should multiply with modulus', function(){expect(parse('10%4*8')).toEqual(16);});
|
|
51
|
-
it('should add and multiply with modulus', function(){expect(parse('2+10%4*8')).toEqual(18);});
|
|
52
|
-
it('should respect modulus in functions', function(){expect(parse('max(3,2+10%4*8,5)')).toEqual(18);});
|
|
53
|
-
it('should respect modulus with percentages', function(){expect(parse('8000%%8')).toEqual(0);});
|
|
54
|
-
it('should correctly handle modulus left assoc', function(){expect(parse('3*3%9')).toEqual(0);});
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
describe('Brackets', function() {
|
|
58
|
-
it('should respect parentheses', function(){expect(parse('4*(2+1)')).toEqual(12);});
|
|
59
|
-
it('should respect parentheses within parentheses', function(){expect(parse('3*(4+(2+1))')).toEqual(21);});
|
|
60
|
-
it('should recognize vectors', function(){expect(parse('[1,2,[3,4]]').toString()).toEqual('[1,2,[3,4]]');});
|
|
61
|
-
it('should handle multiple levels of brackets', function() {expect(parse('((((((((9))))))))+1')).toEqual(10);});
|
|
62
|
-
it('should handle multiple levels of brackets', function() {expect(parse('((((((1+1))+4)))+3)')).toEqual(9);});
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
describe('Prefixes', function() {
|
|
66
|
-
it('should correctly parse prefixes', function(){
|
|
67
|
-
expect(parse('-(-3*-(4))')).toEqual(-12);
|
|
68
|
-
expect(_$(parse('3^-1^-1'))).toEqual(_$(0.333333333333333));
|
|
69
|
-
expect(parse('-(-1-+1)^2')).toEqual(-4);
|
|
70
|
-
expect(parse('-(-1-1+1)')).toEqual(1);
|
|
71
|
-
expect(parse('-(1)--(1-1--1)')).toEqual(0);
|
|
72
|
-
expect(parse('-(-(1))-(--1)')).toEqual(0);
|
|
73
|
-
expect(_$(parse('5^-2^-4'))).toEqual(_$(0.9043038394024115));
|
|
74
|
-
expect(parse('5^---3')).toEqual(0.008);
|
|
75
|
-
expect(parse('5^-(++1+--+2)')).toEqual(0.008);
|
|
76
|
-
expect(parse('(5^-(++1+--+2))^-2')).toEqual(15625);
|
|
77
|
-
expect(parse('(5^-3^2)')).toEqual(5.12e-7);
|
|
78
|
-
expect(parse('-(--5*--7)')).toEqual(-35);
|
|
79
|
-
});
|
|
80
|
-
});
|
|
81
|
-
|
|
82
|
-
/*
|
|
83
|
-
//Future TODO. The skeleton is there but currently too many specs fail
|
|
84
|
-
describe('Spaces', function() {
|
|
85
|
-
it('should respect spaces when parsing', function(){
|
|
86
|
-
expect(parse('sin 9')).toEqual(0.4121184852417566);
|
|
87
|
-
});
|
|
88
|
-
it('should ingore other spaces when parsing', function(){
|
|
89
|
-
expect(parse('sin 9 + 11')).toEqual(11.4121184852417566);
|
|
90
|
-
expect(parse('sin 9+ 11')).toEqual(11.4121184852417566);
|
|
91
|
-
expect(parse('sin 9+11')).toEqual(11.4121184852417566);
|
|
92
|
-
expect(parse('2* sin 9+11')).toEqual(11.824236970483513);
|
|
93
|
-
expect(parse('2 * sin 9+11')).toEqual(11.824236970483513);
|
|
94
|
-
expect(parse(' 2 * sin 9+11 ')).toEqual(11.824236970483513);
|
|
95
|
-
});
|
|
96
|
-
it('should correctly identify spaces with arguments', function(){
|
|
97
|
-
expect(parse(' max( 5 , 2 , 17 ) ')).toEqual(17);
|
|
98
|
-
});
|
|
99
|
-
it('should correctly identify matrices with spaces', function(){
|
|
100
|
-
expect(parse('[ 1, [ 3, 5, 7 ] , [1 , [2, [ 1, 2] ]] ]').toString()).toEqual('[1,[3,5,7],[1,[2,[1,2]]]]');
|
|
101
|
-
});
|
|
102
|
-
});
|
|
103
|
-
*/
|
|
104
|
-
|
|
105
|
-
describe('Accessing vectors', function(){
|
|
106
|
-
it('should correctly access vectors', function(){
|
|
107
|
-
expect(parse('[1,[3,5,7],[1,[2,[1,2]]]][2]').toString()).toEqual('[1,[2,[1,2]]]');
|
|
108
|
-
expect(parse('[1,[3,5,7],[1,[2,[1,2]]]][2][1]').toString()).toEqual('[2,[1,2]]');
|
|
109
|
-
expect(parse('[1,[3,5,7],[1,[2,[1,2]]]][2][1][1]').toString()).toEqual('[1,2]');
|
|
110
|
-
expect(parse('[1,[3,5,7],[1,[2,[1,2]]]][2][1][1][0]').toString()).toEqual('1');
|
|
111
|
-
expect(parse('5*[1,[3,5,7],[1,[2,[1,2]]]][2][1][1][0]').toString()).toEqual('5');
|
|
112
|
-
expect(parse('5*[1,[3,5,7],[1,[2,[1,2]]]][2][1][1][0]+8').toString()).toEqual('13');
|
|
113
|
-
});
|
|
114
|
-
it('should access ranges', function(){
|
|
115
|
-
expect(parse('[1,2,3,4,5][1:4]').toString()).toEqual('[2,3,4]');
|
|
116
|
-
});
|
|
117
|
-
it('should access using negative indices', function(){
|
|
118
|
-
expect(parse('[1,2,3,4,5][-2]').toString()).toEqual('4');
|
|
119
|
-
});
|
|
120
|
-
it('should not confuse vector wit accessor', function(){
|
|
121
|
-
expect(parse('[[1,2],[3,4],[5,6]]').toString()).toEqual('[[1,2],[3,4],[5,6]]');
|
|
122
|
-
});
|
|
123
|
-
});
|
|
124
|
-
|
|
125
|
-
describe('Setting vector values', function() {
|
|
126
|
-
it('should set values of vectors with the assign operator', function() {
|
|
127
|
-
expect(parse('[1,2][1]:x').toString()).toEqual('[1,x]');
|
|
128
|
-
});
|
|
129
|
-
});
|
|
130
|
-
|
|
131
|
-
describe('Substitutions', function(){
|
|
132
|
-
it('should substitute x', function() {expect(parse('x+1', {x: 4})).toEqual(5);});
|
|
133
|
-
it('should substitute x', function() {expect(parse('2*x+1', {x: 4})).toEqual(9);});
|
|
134
|
-
});
|
package/spec/build.spec.js
DELETED
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
/* global expect */
|
|
2
|
-
|
|
3
|
-
'use strict';
|
|
4
|
-
|
|
5
|
-
var nerdamer = require('../nerdamer.core.js');
|
|
6
|
-
|
|
7
|
-
describe('build', function () {
|
|
8
|
-
|
|
9
|
-
var values = [
|
|
10
|
-
2.1, 3.3, 1
|
|
11
|
-
];
|
|
12
|
-
|
|
13
|
-
it('should honor argument order', function () {
|
|
14
|
-
// given
|
|
15
|
-
var testCases = [
|
|
16
|
-
{
|
|
17
|
-
given: '-x^2+1',
|
|
18
|
-
params: ['x'],
|
|
19
|
-
one_expected: -3.41,
|
|
20
|
-
two_expected: -3.41
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
given: '-x^2+y',
|
|
24
|
-
params: ['y', 'x'],
|
|
25
|
-
one_expected: -1.1100000000000003,
|
|
26
|
-
two_expected: -8.79
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
given: '5*(cos(x^2)+y)',
|
|
30
|
-
params: ['y', 'x'],
|
|
31
|
-
one_expected: 15.010991793381834,
|
|
32
|
-
two_expected: 9.973108618869924
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
given: 'sec(z)+5*(cos(x^2)+y)',
|
|
36
|
-
params: ['z', 'y', 'x'],
|
|
37
|
-
one_expected: 16.86180751106276,
|
|
38
|
-
two_expected: 17.220709873373476
|
|
39
|
-
},
|
|
40
|
-
{
|
|
41
|
-
given: '(sec(z)+5*(cos(x^2)+y))^2-x',
|
|
42
|
-
params: ['z', 'y', 'x'],
|
|
43
|
-
one_expected: 282.22055254013253,
|
|
44
|
-
two_expected: 295.5528485429027
|
|
45
|
-
},
|
|
46
|
-
{
|
|
47
|
-
given: '(x+1)+(y+2)+(z+3)',
|
|
48
|
-
params: ['z', 'y', 'x'],
|
|
49
|
-
one_expected: 12.399999999999999,
|
|
50
|
-
two_expected: 12.4
|
|
51
|
-
},
|
|
52
|
-
{
|
|
53
|
-
given: '(((x+1)+(y+2))^2+(z+3))^x',
|
|
54
|
-
params: ['z', 'y', 'x'],
|
|
55
|
-
one_expected: 8555.83476461652,
|
|
56
|
-
two_expected: 58.39
|
|
57
|
-
},
|
|
58
|
-
{
|
|
59
|
-
given: 'sqrt(x)*sqrt(5)',
|
|
60
|
-
params: ['x'],
|
|
61
|
-
one_expected: 3.2403703492039306,
|
|
62
|
-
two_expected: 3.2403703492039306
|
|
63
|
-
},
|
|
64
|
-
{
|
|
65
|
-
given: 'abs(-x)-x',
|
|
66
|
-
params: ['x'],
|
|
67
|
-
one_expected: 0,
|
|
68
|
-
two_expected: 0
|
|
69
|
-
},
|
|
70
|
-
{
|
|
71
|
-
given: 'sec(x)+tan(z)^2+ceil(y)',
|
|
72
|
-
params: ['z', 'x', 'y'],
|
|
73
|
-
one_expected: 4.444717164847537,
|
|
74
|
-
two_expected: 2.910896226522566
|
|
75
|
-
},
|
|
76
|
-
{
|
|
77
|
-
given: 'mod(y,2)',
|
|
78
|
-
params: ['y'],
|
|
79
|
-
one_expected: 0.10000000000000009,
|
|
80
|
-
two_expected: 0.10000000000000009
|
|
81
|
-
},
|
|
82
|
-
{
|
|
83
|
-
given: 'fact(6)*min(x, y)*z',
|
|
84
|
-
params: ['x','z','y'],
|
|
85
|
-
one_expected: 1512,
|
|
86
|
-
two_expected: 2376
|
|
87
|
-
},
|
|
88
|
-
{
|
|
89
|
-
given: '((x+y)^2+(y+2)+(z+3))^(x+y)',
|
|
90
|
-
params: ['x', 'z', 'y'],
|
|
91
|
-
one_expected: 362284798.5739877,
|
|
92
|
-
two_expected: 9072.850179772464
|
|
93
|
-
},
|
|
94
|
-
{
|
|
95
|
-
given: 'asin(0.2)+atan(0.1)+acosh(y)',
|
|
96
|
-
params: ['y'],
|
|
97
|
-
one_expected: 1.6738857175240727,
|
|
98
|
-
two_expected: 1.6738857175240727
|
|
99
|
-
},
|
|
100
|
-
{
|
|
101
|
-
given: '(sin(z)*cos(y))^(tan(2)+1)',
|
|
102
|
-
params: ['y', 'z'],
|
|
103
|
-
one_expected: 20.054910364061293,
|
|
104
|
-
two_expected: 20.054910364061293
|
|
105
|
-
},
|
|
106
|
-
{
|
|
107
|
-
given: 'cos(x+tan(x+sin(x)))^2',
|
|
108
|
-
params: ['x'],
|
|
109
|
-
one_expected: 0.1168736998021759,
|
|
110
|
-
two_expected: 0.1168736998021759
|
|
111
|
-
},
|
|
112
|
-
{
|
|
113
|
-
given: '4*(s^2+t^2)*s',
|
|
114
|
-
params: ['s', 't'],
|
|
115
|
-
one_expected: 128.52,
|
|
116
|
-
two_expected: 128.52
|
|
117
|
-
}
|
|
118
|
-
];
|
|
119
|
-
|
|
120
|
-
for (var i = 0; i < testCases.length; ++i) {
|
|
121
|
-
// when
|
|
122
|
-
var parsed = nerdamer(testCases[i].given);
|
|
123
|
-
var f1 = parsed.buildFunction();
|
|
124
|
-
var f2 = parsed.buildFunction(testCases[i].params);
|
|
125
|
-
|
|
126
|
-
// then
|
|
127
|
-
expect(f1.apply(null, values)).toEqual(testCases[i].one_expected);
|
|
128
|
-
expect(f2.apply(null, values)).toEqual(testCases[i].two_expected);
|
|
129
|
-
}
|
|
130
|
-
});
|
|
131
|
-
});
|
package/spec/calculus.spec.js
DELETED
|
@@ -1,183 +0,0 @@
|
|
|
1
|
-
/* global expect */
|
|
2
|
-
|
|
3
|
-
'use strict';
|
|
4
|
-
|
|
5
|
-
var nerdamer = require('../nerdamer.core.js');
|
|
6
|
-
var round = nerdamer.getCore().Utils.round;
|
|
7
|
-
|
|
8
|
-
describe('calculus', function () {
|
|
9
|
-
|
|
10
|
-
it('should differentiate correctly', function () {
|
|
11
|
-
expect(nerdamer('diff(cos(x),x)').toString()).toEqual('-sin(x)');
|
|
12
|
-
expect(nerdamer('diff(log(x),x)').toString()).toEqual('x^(-1)');
|
|
13
|
-
expect(nerdamer('diff(tan(x),x)').toString()).toEqual('sec(x)^2');
|
|
14
|
-
expect(nerdamer('diff(4*tan(x)*sec(x),x)').toString()).toEqual('4*(sec(x)*tan(x)^2+sec(x)^3)');
|
|
15
|
-
expect(nerdamer('diff(sqrt(7),x)').toString()).toEqual('0');
|
|
16
|
-
expect(nerdamer('diff(4,x)').toString()).toEqual('0');
|
|
17
|
-
expect(nerdamer('diff(x^2,x)').toString()).toEqual('2*x');
|
|
18
|
-
expect(nerdamer('diff(2*x^2+4,x)').toString()).toEqual('4*x');
|
|
19
|
-
expect(nerdamer('diff(sqrt(x)*x,x)').toString()).toEqual('(3/2)*x^(1/2)');
|
|
20
|
-
expect(nerdamer('diff(sqrt(x)-1/sqrt(x),x)').toString()).toEqual('(1/2)*x^(-1/2)+(1/2)*x^(-3/2)');
|
|
21
|
-
expect(nerdamer('diff(x^2/3-3/x^2,x)').toString()).toEqual('(2/3)*x+6*x^(-3)');
|
|
22
|
-
expect(nerdamer('diff(sqrt(x)*(x^2+1),x)').toString()).toEqual('(1/2)*(1+x^2)*x^(-1/2)+2*x^(3/2)');
|
|
23
|
-
expect(nerdamer('diff(e^x/(e^x-1),x)').toString()).toEqual('(-1+e^x)^(-1)*e^x-(-1+e^x)^(-2)*e^(2*x)');
|
|
24
|
-
expect(nerdamer('diff(e^x,x)').toString()).toEqual('e^x');
|
|
25
|
-
expect(nerdamer('diff(e^x/x,x)').toString()).toEqual('-e^x*x^(-2)+e^x*x^(-1)');
|
|
26
|
-
expect(nerdamer('diff(tan(x)*log(1/cos(x)),x)').toString()).toEqual('-(-cos(x)^(-1)*sin(x)*tan(x)+log(cos(x))*sec(x)^2)');
|
|
27
|
-
expect(nerdamer('diff((2*x)^(e),x)').toString()).toEqual('2^e*e*x^(-1+e)');
|
|
28
|
-
expect(nerdamer('diff(2*cos(x)*log(x),x)').toString()).toEqual('2*(-log(x)*sin(x)+cos(x)*x^(-1))');
|
|
29
|
-
expect(nerdamer('diff(cos(5*x)*log(sec(sqrt(cos(x^(4/5))^2))/y^2)*y,x)').toString()).toEqual('(-4/5)*abs(cos(x^(4/5)))^(-1)*cos(x^(4/5))*sec(abs(cos(x^(4/5))))*sin(x^(4/5))*tan(abs(cos(x^(4/5))))*x^(-1/5)*y^(-2)*cos(5*x)*sec(abs(cos(x^(4/5))))^(-1)*y^3-5*log(sec(abs(cos(x^(4/5))))*y^(-2))*sin(5*x)*y');
|
|
30
|
-
expect(nerdamer('diff(x*cos(x)^log(x),x)').toString()).toEqual('(-cos(x)^(-1)*log(x)*sin(x)+log(cos(x))*x^(-1))*cos(x)^log(x)*x+cos(x)^log(x)');
|
|
31
|
-
expect(nerdamer('diff(cos(2*x),x)').toString()).toEqual('-2*sin(2*x)');
|
|
32
|
-
expect(nerdamer('diff(cos(x)*tan(x),x)').toString()).toEqual('-sin(x)*tan(x)+cos(x)*sec(x)^2');
|
|
33
|
-
expect(nerdamer('diff(sec(sqrt(cos(x^(4/5))^2)),x)').toString()).toEqual('(-4/5)*abs(cos(x^(4/5)))^(-1)*cos(x^(4/5))*sec(abs(cos(x^(4/5))))*sin(x^(4/5))*tan(abs(cos(x^(4/5))))*x^(-1/5)');
|
|
34
|
-
expect(nerdamer('diff(log(log(log(cos(t*t)^z))),t)').toString()).toEqual('-2*cos(t^2)^(-1)*sin(t^2)*t*z*log(cos(t^2))^(-1)*log(log(cos(t^2))*z)^(-1)*z^(-1)');
|
|
35
|
-
expect(nerdamer('diff(6*log(x)^(3*log(x^2)),x)').toString()).toEqual('36*(log(log(x))*x^(-1)+x^(-1))*log(x)^(6*log(x))');
|
|
36
|
-
expect(nerdamer('diff(sinh(x^2)^cos(x),x)').toString()).toEqual('(-log(sinh(x^2))*sin(x)+2*cos(x)*cosh(x^2)*sinh(x^2)^(-1)*x)*sinh(x^2)^cos(x)');
|
|
37
|
-
expect(nerdamer('diff(tan(x)*tanh(x),x)').toString()).toEqual('sec(x)^2*tanh(x)+sech(x)^2*tan(x)');
|
|
38
|
-
expect(nerdamer('diff(4*x*tan(x)*7*tanh(x),x)').toString()).toEqual('28*(sec(x)^2*tanh(x)*x+sech(x)^2*tan(x)*x+tan(x)*tanh(x))');
|
|
39
|
-
expect(nerdamer('diff(y*tan(y)*7*tanh(y),x)').toString()).toEqual('0');
|
|
40
|
-
expect(nerdamer('diff(yx*tan(y)*7*tanh(y),x)').toString()).toEqual('0');
|
|
41
|
-
expect(nerdamer('diff(y,x)').toString()).toEqual('0');
|
|
42
|
-
expect(nerdamer('diff(x*y,x)').toString()).toEqual('y');
|
|
43
|
-
expect(nerdamer('diff([sin(x), x^2, x],x)').toString()).toEqual('[cos(x),2*x,1]');
|
|
44
|
-
expect(nerdamer('diff(sinc(a*x^3+b),x)').toString()).toEqual('3*((a*x^3+b)*cos(a*x^3+b)-sin(a*x^3+b))*(a*x^3+b)^(-2)*a*x^2');
|
|
45
|
-
expect(nerdamer('diff(sqrt(e^x + a),x)').toString()).toEqual('(1/2)*(a+e^x)^(-1/2)*e^x');
|
|
46
|
-
});
|
|
47
|
-
|
|
48
|
-
it('should calculate sums correctly', function () {
|
|
49
|
-
expect(nerdamer('sum(x+y, x, 0, 3)').evaluate().toString()).toEqual('4*y+6');
|
|
50
|
-
expect(nerdamer('sum(x^2+x, x, 0, 10)').evaluate().toString()).toEqual('440');
|
|
51
|
-
expect(nerdamer('sum(x^2*z^2+x*y-z+1, x, 0, 10)').evaluate().toString()).toEqual('-11*z+385*z^2+11+55*y');
|
|
52
|
-
expect(nerdamer('sum(x^2*z^2+x*y-z+1, z, 0, 10)').evaluate().toString()).toEqual('-44+11*x*y+385*x^2');
|
|
53
|
-
expect(nerdamer('sum(sqrt(x)*sin(x), x, 0, 10)').evaluate().toString()).toEqual('775334583/372372283');
|
|
54
|
-
expect(nerdamer('sum(e^(-x^2*π/9),x,1,100)').evaluate().toString()).toEqual('633863423979/633863423978');
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
it('should calculate the definite integral correctly', function () {
|
|
58
|
-
expect(round(nerdamer('defint(cos(x),1,2,x)').evaluate(), 14)).toEqual(round(0.067826442018, 14));
|
|
59
|
-
expect(round(nerdamer('defint(cos(x)^3*x^2-1,-1,9)').evaluate(), 14)).toEqual(round(8.543016466395, 14));
|
|
60
|
-
expect(round(nerdamer('defint(cos(x^x),1,2,x)').evaluate(), 14)).toEqual(round(-0.27113666621, 14));
|
|
61
|
-
expect(round(nerdamer('defint(cos(x^log(sin(x))),2,3,x)').evaluate(), 14)).toEqual(round(0.805604089074, 14));
|
|
62
|
-
expect(round(nerdamer('defint(log(2*cos(x/2)),-π,π,x)').evaluate(), 14)).toEqual(round(-0, 14));
|
|
63
|
-
expect(round(nerdamer('defint(log(cos(x/2)),-π,π,x)').evaluate(), 14)).toEqual(round(-4.355172180607, 14));
|
|
64
|
-
expect(round(nerdamer('defint(log(x+1), -1, 1, x)').evaluate(), 14)).toEqual(round(-0.6137056388801095, 14));
|
|
65
|
-
expect(round(nerdamer('defint(log(x), 0, 1, x)').evaluate(), 14)).toEqual(round(-1, 14));
|
|
66
|
-
expect(round(nerdamer('defint((x^2-3)/(-x^3+9x+1), 1, 3, x)').evaluate(), 14)).toEqual(round(0.732408192445406585, 14));
|
|
67
|
-
expect(round(nerdamer('defint(x*(x-5)^(1/2),5,8)').evaluate(), 14)).toEqual(round(23.555890982936999348, 14));
|
|
68
|
-
expect(round(nerdamer('defint(sqrt(4(x^2)+4), 0, 3)').evaluate(), 14)).toEqual(round(11.305279439735999908, 14));
|
|
69
|
-
});
|
|
70
|
-
|
|
71
|
-
it('should calculate limits correctly', function () {
|
|
72
|
-
expect(nerdamer('limit((2-2*x^2)/(x-1), x, 1)').toString()).toEqual('-4');
|
|
73
|
-
expect(nerdamer('limit(1/2*(x^2 - 1)/(x^2 + 1), x, 3)').toString()).toEqual('2/5');
|
|
74
|
-
expect(nerdamer('limit(tan(3*x)/tan(x), x, pi/2)').toString()).toEqual('1/3');
|
|
75
|
-
expect(nerdamer('limit(x/(3*abs(4*x)),x, 0)').toString()).toEqual('[-1/12,1/12]');
|
|
76
|
-
expect(nerdamer('limit((4x^2-x)/(3x^2+x),x,∞)').toString()).toEqual('4/3');
|
|
77
|
-
expect(nerdamer('limit((x^(1/2)+x^(-1/2))/(x^(1/2)-x^(-1/2)),x,Infinity)').toString()).toEqual('1');
|
|
78
|
-
expect(nerdamer('limit((2*x+log(x))/(x*log(x)),x,Infinity)').toString()).toEqual('0');
|
|
79
|
-
expect(nerdamer('limit(e^(-x)+2,x,Infinity)').toString()).toEqual('2');
|
|
80
|
-
expect(nerdamer('limit((x+1)^(1+1/x)-x^(1+x),x, Infinity)').toString()).toEqual('-Infinity');
|
|
81
|
-
expect(nerdamer('limit(x/(x+1)^2, x, -1)').toString()).toEqual('-Infinity');
|
|
82
|
-
|
|
83
|
-
// Revisit.
|
|
84
|
-
/*
|
|
85
|
-
expect(nerdamer('limit(cos(sin(x)+2), x, Infinity)').toString()).toEqual('[cos(1),cos(3)]');
|
|
86
|
-
expect(nerdamer('limit((2sin(x)-sin(2x))/(x-sin(x)),x,0)').toString()).toEqual('6');
|
|
87
|
-
expect(nerdamer('limit((3*sin(x)-sin(2*x))/(x-sin(x)),x,0)').toString()).toEqual('Infinity');
|
|
88
|
-
expect(nerdamer('limit(log(x),x, 0)').toString()).toEqual('Infinity');
|
|
89
|
-
*/
|
|
90
|
-
});
|
|
91
|
-
|
|
92
|
-
it('should integrate properly', function () {
|
|
93
|
-
expect(nerdamer('integrate(sin(x), x)').toString()).toEqual('-cos(x)');
|
|
94
|
-
expect(nerdamer('integrate((22/7)^x,x)').toString()).toEqual('(log(1/7)+log(22))^(-1)*22^x*7^(-x)');
|
|
95
|
-
expect(nerdamer('integrate(cos(x), x)').toString()).toEqual('sin(x)');
|
|
96
|
-
expect(nerdamer('integrate(2*x^2+x, x)').toString()).toEqual('(1/2)*x^2+(2/3)*x^3');
|
|
97
|
-
expect(nerdamer('integrate(log(x), x)').toString()).toEqual('-x+log(x)*x');
|
|
98
|
-
expect(nerdamer('integrate(sqrt(x), x)').toString()).toEqual('(2/3)*x^(3/2)');
|
|
99
|
-
expect(nerdamer('integrate(asin(a*x), x)').toString()).toEqual('a^(-1)*sqrt(-a^2*x^2+1)+asin(a*x)*x');
|
|
100
|
-
expect(nerdamer('integrate(a/x, x)').toString()).toEqual('a*log(x)');
|
|
101
|
-
expect(nerdamer('integrate(x*e^x, x)').toString()).toEqual('-e^x+e^x*x');
|
|
102
|
-
expect(nerdamer('integrate(x^3*log(x), x)').toString()).toEqual('(-1/16)*x^4+(1/4)*log(x)*x^4');
|
|
103
|
-
expect(nerdamer('integrate(x^2*sin(x), x)').toString()).toEqual('-cos(x)*x^2+2*cos(x)+2*sin(x)*x');
|
|
104
|
-
expect(nerdamer('integrate(sin(x)*log(cos(x)), x)').toString()).toEqual('-cos(x)*log(cos(x))+cos(x)');
|
|
105
|
-
expect(nerdamer('integrate(x*asin(x), x)').toString()).toEqual('(-1/4)*asin(x)+(1/2)*asin(x)*x^2+(1/4)*cos(asin(x))*sin(asin(x))');
|
|
106
|
-
expect(nerdamer('integrate(q/((2-3*x^2)^(1/2)), x)').toString()).toEqual('asin(3*sqrt(6)^(-1)*x)*q*sqrt(3)^(-1)');
|
|
107
|
-
expect(nerdamer('integrate(1/(a^2+x^2), x)').toString()).toEqual('a^(-1)*atan(a^(-1)*x)');
|
|
108
|
-
expect(nerdamer('integrate(11/(a+5*r*x)^2,x)').toString()).toEqual('(-11/5)*(5*r*x+a)^(-1)*r^(-1)');
|
|
109
|
-
expect(nerdamer('integrate(cos(x)*sin(x), x)').toString()).toEqual('(-1/2)*cos(x)^2');
|
|
110
|
-
expect(nerdamer('integrate(x*cos(x)*sin(x), x)').toString()).toEqual('(-1/2)*cos(x)^2*x+(1/4)*cos(x)*sin(x)+(1/4)*x');
|
|
111
|
-
expect(nerdamer('integrate(t/(a*x+b), x)').toString()).toEqual('a^(-1)*log(a*x+b)*t');
|
|
112
|
-
expect(nerdamer('integrate(x*(x+a)^3, x)').toString()).toEqual('(1/2)*a^3*x^2+(1/5)*x^5+(3/4)*a*x^4+a^2*x^3');
|
|
113
|
-
expect(nerdamer('integrate(4*x/(x^2+a^2), x)').toString()).toEqual('2*log(a^2+x^2)');
|
|
114
|
-
expect(nerdamer('integrate(1/(x^2+3*a^2), x)').toString()).toEqual('a^(-1)*atan(a^(-1)*sqrt(3)^(-1)*x)*sqrt(3)^(-1)');
|
|
115
|
-
expect(nerdamer('integrate(8*x^3/(6*x^2+3*a^2), x)').toString()).toEqual('8*((-1/24)*a^2*log(2*x^2+a^2)+(1/12)*x^2)');
|
|
116
|
-
expect(nerdamer('integrate(10*q/(4*x^2+24*x+20), x)').toString()).toEqual('10*((-1/16)*log(5+x)+(1/16)*log(1+x))*q');
|
|
117
|
-
expect(nerdamer('integrate(x/(x+a)^2, x)').toString()).toEqual('(a+x)^(-1)*a+log(a+x)');
|
|
118
|
-
expect(nerdamer('integrate(sqrt(x-a), x)').toString()).toEqual('(2/3)*(-a+x)^(3/2)');
|
|
119
|
-
expect(nerdamer('integrate(x^n*log(x), x)').toString()).toEqual('(1+n)^(-1)*log(x)*x^(1+n)-(1+n)^(-2)*x^(1+n)');
|
|
120
|
-
expect(nerdamer('integrate(3*a*sec(x)^2, x)').toString()).toEqual('3*a*tan(x)');
|
|
121
|
-
expect(nerdamer('integrate(a/(x^2+b*x+a*x+a*b),x)').toString()).toEqual('(((-a^(-1)*b+1)^(-1)*a^(-1)*b+1)*a^(-1)*log(b+x)-(-a^(-1)*b+1)^(-1)*a^(-1)*log(a+x))*a');
|
|
122
|
-
expect(nerdamer('integrate(log(a*x+b),x)').toString()).toEqual('((a*x+b)*log(a*x+b)-a*x-b)*a');
|
|
123
|
-
expect(nerdamer('integrate(x*log(x),x)').toString()).toEqual('(-1/4)*x^2+(1/2)*log(x)*x^2');
|
|
124
|
-
expect(nerdamer('integrate(log(a*x)/x,x)').toString()).toEqual('(1/2)*log(a*x)^2');
|
|
125
|
-
expect(nerdamer('integrate(log(x)^2,x)').toString()).toEqual('-2*log(x)*x+2*x+log(x)^2*x');
|
|
126
|
-
expect(nerdamer('integrate(t*log(x)^3,x)').toString()).toEqual('(-3*log(x)^2*x-6*x+6*log(x)*x+log(x)^3*x)*t');
|
|
127
|
-
expect(nerdamer('integrate(e^x*sin(x),x)').toString()).toEqual('(1/2)*(-cos(x)*e^x+e^x*sin(x))');
|
|
128
|
-
expect(nerdamer('integrate(e^x*sin(x),x)').toString()).toEqual('(1/2)*(-cos(x)*e^x+e^x*sin(x))');
|
|
129
|
-
expect(nerdamer('integrate(e^(2*x)*sin(x),x)').toString()).toEqual('(4/5)*((-1/4)*cos(x)*e^(2*x)+(1/2)*e^(2*x)*sin(x))');
|
|
130
|
-
expect(nerdamer('integrate(e^(2*x)*sin(x)*x,x)').toString()).toEqual('(-3/25)*e^(2*x)*sin(x)+(4/25)*cos(x)*e^(2*x)+(4/5)*((-1/4)*cos(x)*e^(2*x)+(1/2)*e^(2*x)*sin(x))*x');
|
|
131
|
-
expect(nerdamer('integrate(x*log(x)^2,x)').toString()).toEqual('(-1/2)*log(x)*x^2+(1/2)*log(x)^2*x^2+(1/4)*x^2');
|
|
132
|
-
expect(nerdamer('integrate(x^2*log(x)^2,x)').toString()).toEqual('(-2/9)*log(x)*x^3+(1/3)*log(x)^2*x^3+(2/27)*x^3');
|
|
133
|
-
expect(nerdamer('integrate(x^2*e^(a*x),x)').toString()).toEqual('-2*(-a^(-2)*e^(a*x)+a^(-1)*e^(a*x)*x)*a^(-1)+a^(-1)*e^(a*x)*x^2');
|
|
134
|
-
expect(nerdamer('integrate(8*e^(a*x^2),x)').toString()).toEqual('4*erf(sqrt(-a)*x)*sqrt(-a)^(-1)*sqrt(pi)');
|
|
135
|
-
expect(nerdamer('integrate(5*x*e^(-8*a*x^2),x)').toString()).toEqual('(-5/16)*a^(-1)*e^(-8*a*x^2)');
|
|
136
|
-
expect(nerdamer('integrate(x^2*sin(x),x)').toString()).toEqual('-cos(x)*x^2+2*cos(x)+2*sin(x)*x');
|
|
137
|
-
expect(nerdamer('integrate(8*tan(b*x)^2,x)').toString()).toEqual('8*(-x+b^(-1)*tan(b*x))');
|
|
138
|
-
expect(nerdamer('integrate(sec(a*x)^3,x)').toString()).toEqual('(1/2)*a^(-1)*log(sec(a*x)+tan(a*x))+(1/2)*a^(-1)*sec(a*x)*tan(a*x)');
|
|
139
|
-
expect(nerdamer('integrate(sec(a*x)*tan(a*x),x)').toString()).toEqual('a^(-1)*sec(a*x)');
|
|
140
|
-
expect(nerdamer('integrate(3*a*cot(a*x)^4, x)').toString()).toEqual('3*((-1/3)*a^(-1)*cot(a*x)^3+a^(-1)*cot(a*x)+x)*a');
|
|
141
|
-
expect(nerdamer('integrate(3*a*csc(a*x)^4, x)').toString()).toEqual('3*((-1/3)*a^(-1)*cot(a*x)*csc(a*x)^2+(-2/3)*a^(-1)*cot(a*x))*a');
|
|
142
|
-
expect(nerdamer('integrate(1/8*a*2/(x^3+13*x^2+47*x+35),x)').toString()).toEqual('(1/4)*((-1/8)*log(5+x)+(1/12)*log(7+x)+(1/24)*log(1+x))*a');
|
|
143
|
-
expect(nerdamer('integrate(a*2/(x^2+x),x)').toString()).toEqual('2*(-log(1+x)+log(x))*a');
|
|
144
|
-
expect(nerdamer('integrate((x+7)/(x+1)^3,x)').toString()).toEqual('(-1/2)*(1+x)^(-1)+(-7/2)*(1+x)^(-2)+(-1/2)*(1+x)^(-2)*x');
|
|
145
|
-
expect(nerdamer('integrate((3*x+2)/(x^2+x),x)').toString()).toEqual('2*log(x)+log(1+x)');
|
|
146
|
-
expect(nerdamer('integrate([sin(x), x^2, x],x)').toString()).toEqual('[-cos(x),(1/3)*x^3,(1/2)*x^2]');
|
|
147
|
-
expect(nerdamer('integrate(sinh(x),x)').toString()).toEqual('cosh(x)');
|
|
148
|
-
expect(nerdamer('integrate(cosh(x),x)').toString()).toEqual('sinh(x)');
|
|
149
|
-
expect(nerdamer('integrate(tanh(x),x)').toString()).toEqual('log(cosh(x))');
|
|
150
|
-
expect(nerdamer('integrate(sinh(x)*x,x)').toString()).toEqual('-sinh(x)+cosh(x)*x');
|
|
151
|
-
expect(nerdamer('integrate((x^6+x^2-7)/(x^2+11), x)').toString()).toEqual('(-11/3)*x^3+(1/5)*x^5+122*x-1349*atan(sqrt(11)^(-1)*x)*sqrt(11)^(-1)');
|
|
152
|
-
expect(nerdamer('integrate(x^6/(x^2+11), x)').toString()).toEqual('(-11/3)*x^3+(1/5)*x^5+121*x-1331*atan(sqrt(11)^(-1)*x)*sqrt(11)^(-1)');
|
|
153
|
-
expect(nerdamer('integrate(x^2/(x^2+11))').toString()).toEqual('-11*atan(sqrt(11)^(-1)*x)*sqrt(11)^(-1)+x');
|
|
154
|
-
expect(nerdamer('integrate(tan(x)*csc(x), x)').toString()).toEqual('log(sec(x)+tan(x))');
|
|
155
|
-
expect(nerdamer('integrate(sinh(x)*e^x, x)').toString()).toEqual('(-1/2)*x+(1/4)*e^(2*x)');
|
|
156
|
-
expect(nerdamer('integrate(sinh(x)*cos(x), x)').toString()).toEqual('(-1/4)*e^(-x)*sin(x)+(1/4)*cos(x)*e^(-x)+(1/4)*cos(x)*e^x+(1/4)*e^x*sin(x)');
|
|
157
|
-
expect(nerdamer('integrate(cos(x^2), x)').toString()).toEqual('integrate(cos(x^2),x)');
|
|
158
|
-
expect(nerdamer('integrate(sqrt(a-x^2)*x^2, x)').toString()).toEqual('((-1/16)*cos(2*asin(sqrt(a)^(-1)*x))*sin(2*asin(sqrt(a)^(-1)*x))+(1/8)*asin(sqrt(a)^(-1)*x))*a^2');
|
|
159
|
-
expect(nerdamer('integrate((1-x^2)^(3/2), x)').toString()).toEqual('(-3/16)*cos(2*asin(x))*sin(2*asin(x))+(-x^2+1)^(3/2)*x+(3/8)*asin(x)');
|
|
160
|
-
expect(nerdamer('integrate((1-x^2)^(3/2)*x^2, x)').toString()).toEqual('(-1/32)*cos(2*asin(x))*sin(2*asin(x))+(-1/48)*cos(2*asin(x))^2*sin(2*asin(x))+(1/16)*asin(x)+(1/48)*sin(2*asin(x))');
|
|
161
|
-
expect(nerdamer('integrate(cos(x)^2*sin(x)^4, x)').toString()).toEqual('(-1/32)*cos(2*x)*sin(2*x)+(-1/48)*sin(2*x)+(1/16)*x+(1/48)*cos(2*x)^2*sin(2*x)');
|
|
162
|
-
expect(nerdamer('integrate(log(a*x+1)/x^2, x)').toString()).toEqual('(-log(1+a*x)+log(x))*a-log(1+a*x)*x^(-1)');
|
|
163
|
-
expect(nerdamer('integrate(x^2*(1-x^2)^(5/2), x)').toString()).toEqual('(-1/128)*cos(2*asin(x))^3*sin(2*asin(x))+(-1/48)*cos(2*asin(x))^2*sin(2*asin(x))+(-3/256)*cos(2*asin(x))*sin(2*asin(x))+(1/48)*sin(2*asin(x))+(5/128)*asin(x)');
|
|
164
|
-
expect(nerdamer('integrate(1/tan(a*x)^n, x)').toString()).toEqual('integrate(tan(a*x)^(-n),x)');
|
|
165
|
-
expect(nerdamer('integrate(sin(x)^2*cos(x)*tan(x), x)').toString()).toEqual('(-3/4)*cos(x)+(1/12)*cos(3*x)');
|
|
166
|
-
expect(nerdamer('integrate(cos(x)^2/sin(x),x)').toString()).toEqual('-log(cot(x)+csc(x))+cos(x)');
|
|
167
|
-
expect(nerdamer('integrate(cos(x)/x,x)').toString()).toEqual('Ci(x)');
|
|
168
|
-
expect(nerdamer('integrate(sin(x)/x,x)').toString()).toEqual('Si(x)');
|
|
169
|
-
expect(nerdamer('integrate(log(x)^3/x,x)').toString()).toEqual('(1/4)*log(x)^4');
|
|
170
|
-
expect(nerdamer('integrate(tan(x)^2*sec(x), x)').toString()).toEqual('(-1/2)*log(sec(x)+tan(x))+(1/2)*sec(x)*tan(x)');
|
|
171
|
-
expect(nerdamer('integrate(tan(x)/cos(x),x)').toString()).toEqual('cos(x)^(-1)');
|
|
172
|
-
expect(nerdamer('integrate(sin(x)^3/x,x)').toString()).toEqual('(-1/4)*Si(3*x)+(3/4)*Si(x)');
|
|
173
|
-
expect(nerdamer('integrate(tan(x)/sec(x)*sin(x)/tan(x),x)').toString()).toEqual('(-1/2)*cos(x)^2');
|
|
174
|
-
expect(nerdamer('integrate(log(x)^n/x,x)').toString()).toEqual('(1+n)^(-1)*log(x)^(1+n)');
|
|
175
|
-
expect(nerdamer('integrate(1/(x^2+9)^3,x)').toString()).toEqual('(1/729)*((1/4)*cos(atan((1/3)*x))^3*sin(atan((1/3)*x))+(3/8)*atan((1/3)*x)+(3/8)*cos(atan((1/3)*x))*sin(atan((1/3)*x)))');
|
|
176
|
-
expect(nerdamer('integrate(asin(x)/sqrt(2-2x^2),x)').toString()).toEqual('(1/2)*asin(x)^2*sqrt(2)^(-1)');
|
|
177
|
-
expect(nerdamer('integrate(atan(x)/(2+2*x^2),x)').toString()).toEqual('(1/4)*atan(x)^2');
|
|
178
|
-
expect(nerdamer('integrate(1/(sqrt(1-1/x^2)*x^2), x)').toString()).toEqual('asin(sqrt(-x^(-2)+1))');
|
|
179
|
-
expect(nerdamer('integrate(1/(sqrt(1-1/x^2)*x), x)').toString()).toEqual('(-1/2)*log(1+sqrt(-x^(-2)+1))+(1/2)*log(-1+sqrt(-x^(-2)+1))');
|
|
180
|
-
expect(nerdamer('integrate(exp(2*log(x)),x)').toString()).toEqual('(1/3)*x^3');
|
|
181
|
-
});
|
|
182
|
-
|
|
183
|
-
});
|