UNPKG

kas-npm

Version:

A lightweight JavaScript CAS for comparing expressions and equations. Forked from @Khan to use in NPM.

95 lines (73 loc) 2.04 kB
KAS === A lightweight JavaScript CAS for comparing expressions and equations. It is used throughout [Khan Academy](https://khanacademy.org)'s interactive exercises. What can it do? --------------- It can parse plain text math, LaTeX, or a mix of both: ```js var expr = KAS.parse("3x \\frac{42}{42} sin^2y").expr; expr.print(); // "3*x*42/42*sin(y)^(2)" ``` It can evaluate expressions: ```js var expr = KAS.parse("(x^2+y^2)^.5").expr; expr.eval({x: 3, y: 4}); // 5 ``` It can compare expressions and equations: ```js var expr1 = KAS.parse("(1-x)(-1-6x)").expr; var expr2 = KAS.parse("(6x+1)(x-1)").expr; KAS.compare(expr1, expr2).equal; // true var eq1 = KAS.parse("2w+50/w=25").expr; var eq2 = KAS.parse("w(12.5-w)=25").expr; KAS.compare(eq1, eq2).equal; // true ``` It can perform basic transforms that always simplify an expression: ```js var expr = KAS.parse("1+1+x+x+x+y").expr; expr.collect().print(); // "2+3*x+y" var expr = KAS.parse("b^(2*y*log_b x)").expr; expr.collect().print(); // "x^(2*y)" ``` It can perform non-simplifying transforms on an expression: ```js var expr = KAS.parse("ab(c+d)e^f").expr; expr.print(); // "a*b*(c+d)*e^(f)" expr.expand().print(); // "a*b*e^(f)*c+a*b*e^(f)*d" expr.expand().factor().print(); // "a*b*e^(f)*(c+d)" ``` It can combine the above abilities to perform powerful simplification: ```js var expr = KAS.parse("((nx^5)^5)/(n^-2x^2)^-3").expr; expr.print(); // "(n*x^(5))^(5)*(n^(-2)*x^(2))^(-1*-3)" expr.simplify().print(); // "n^(-1)*x^(31)" var expr = KAS.parse("(15np-25mp)/(15p^2-5p)+(20mp+10p^2)/(15p^2-5p)").expr; expr.print(); // "(15*n*p+-25*m*p)*(15*p^(2)+-5*p)^(-1)+(20*m*p+10*p^(2))*(15*p^(2)+-5*p)^(-1)" expr.simplify().print(); // "(-1+3*p)^(-1)*(3*n+-1*m+2*p)" ``` How to build the library ------------------------ npm install npm run build How to build the parser ----------------------- First, make any changes in `src/parser-generator.js` npm install npm run build:parser License ------- [MIT License](http://opensource.org/licenses/MIT)