/**********************************************************\ * * * Created by Benjamin Joffe * * * * This is a function that takes a string such as: * * * * x^sin(x) * * * * And will turn it into a JavaScript evaluatable string: * * * * Math.pow(x, Math.sin(x)); * * * * * \***********************************************************/ Math.csc = function(x){ return 1 / Math.sin(x); }; Math.sec = function(x){ return 1 / Math.cos(x); }; Math.cot = function(x){ return 1 / Math.tan(x); }; Math.acsc = function(x){ return Math.asin(1/x); }; Math.asec = function(x){ return Math.acos(1/x); }; Math.acot = function(x){ return Math.atan(1/x); }; Math.sinh = function(x){ x = Math.exp(x); return (x - 1/x) / 2; }; Math.cosh = function(x){ x = Math.exp(x); return (x + 1/x) / 2; }; Math.tanh = function(x){ x = Math.exp(x); return (x*x - 1) / (x*x + 1); }; Math.asinh = function(x){ return Math.log(x + Math.sqrt(1+x*x)); }; Math.acosh = function(x){ return 2 * Math.log( Math.sqrt((x+1)/2) + Math.sqrt((x-1)/2) ); }; Math.atanh = function(x){ return (Math.log(1+x) - Math.log(1-x)) / 2; }; Math.csch = function(x){ x = Math.exp(x); return 2 / (x - 1/x); }; Math.sech = function(x){ x = Math.exp(x); return 2 / (x + 1/x); }; Math.coth = function(x){ x = Math.exp(x); return (x*x + 1) / (x*x - 1); }; Math.acsch = function(x){ x = 1/x; return Math.log(x + Math.sqrt(1+x*x)); }; Math.asech = function(x){ x = 1/x; return 2 * Math.log( Math.sqrt((x+1)/2) + Math.sqrt((x-1)/2) ); }; Math.acoth = function(x){ x = 1/x; return (Math.log(1+x) - Math.log(1-x)) / 2; }; // Enough Trig!!! Math.log10 = function(x){ return Math.log(x)/2.302585092994046; }; Math.sqr = function(x){ return x*x; }; Math.sign = function(x){ return x > 0 ? 1 : x < 0 ? -1 : x==0 ? 0 : undefined; }; function parseMath(a){ a = a.split(' ').join('').toLowerCase().split(''); if (a.length==0) return [false, 'Error 000. Nothing entered']; var c_alpha = "abcdefghijklmnopqrstuvwxyz"; var c_numero = "0.123456789"; var c_opera = ",+-*/%^"; var c_all = c_alpha + c_numero + c_opera + '()'; var i,j,k; var level=0; var word; var decimal; var level2; var mode = 'ready'; i=0, j; var functionList = '\ -sin-cos-tan-\ -asin-acos-atan-\ -csc-sec-cot-\ -acsc-asec-acot-\ -sinh-cosh-tanh-\ -asinh-acosh-atanh-\ -csch-sech-coth-\ -acsch-asech-acoth-\ '; functionList += '-sqrt-exp-abs-sign-sqr-log-'; while (i