Blame view

node_modules/math-expression-evaluator/src/math_function.js 2.33 KB
2a09d1a4   liuqimichale   添加宜春 天水 宣化
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
  	var Mexp=function(parsed){
  		this.value=parsed;
  
  	};
  
  	Mexp.math={
  		isDegree:true, //mode of calculator
  		acos:function(x){
  			return (Mexp.math.isDegree?180/Math.PI*Math.acos(x):Math.acos(x));
  		},
  		add:function(a,b){
  			return a+b;
  		},
  		asin:function(x){
  			return (Mexp.math.isDegree?180/Math.PI*Math.asin(x):Math.asin(x));
  		},
  		atan:function(x){
  			return (Mexp.math.isDegree?180/Math.PI*Math.atan(x):Math.atan(x));
  		},
  		acosh:function(x){
  			return Math.log(x+Math.sqrt(x*x-1));
  		},
  		asinh:function(x){
  			return Math.log(x+Math.sqrt(x*x+1));
  		},
  		atanh:function(x){
  			return Math.log((1+x)/(1-x));
  		},
  		C:function(n,r){
  			var pro=1,other=n-r,choice=r;
  			if(choice<other){
  			choice=other;
  			other=r;
  			}
  			for(var i=choice+1;i<=n;i++)
  				pro*=i;
  			return pro/Mexp.math.fact(other);
  		},
  		changeSign:function(x){
  			return -x;
  		},
  		cos:function(x){
  			if(Mexp.math.isDegree)x=Mexp.math.toRadian(x);
  			return Math.cos(x);
  		},
  		cosh:function(x){
  			return (Math.pow(Math.E,x)+Math.pow(Math.E,-1*x))/2;
  		},
  		div:function(a,b){
  		return a/b;
  		},
  		fact:function(n) {
  		if(n%1!==0)return "NAN";
  			var pro=1;
  			for(var i=2;i<=n;i++)
  				pro*=i;
  			return pro;
  		},
  		inverse:function(x){
  			return 1/x;
  		},
  		log:function(i){
  			return Math.log(i)/Math.log(10);
  		},
  		mod:function(a,b){
  		return a%b;
  		},
  		mul:function(a,b){
  		return a*b;
  		},
  		P:function(n,r){var pro=1;
  			 for(var i=Math.floor(n)-Math.floor(r)+1;i<=Math.floor(n);i++)
  					pro*=i;
  					return pro;
  
  		},
  		Pi:function(low,high,ex){
  			var pro=1;
  			for(var i=low;i<=high;i++){
  				pro*=Number(ex.postfixEval({n:i}));
  			}
  			return pro;
  		},
  		pow10x:function(e){
  			var x=1;
  			while(e--){x*=10;}
  			return x;
  		},
  		sigma:function(low,high,ex){
  			var sum=0;
  			for(var i=low;i<=high;i++){
  				sum+=Number(ex.postfixEval({n:i}));
  			}
  			return sum;
  		},
  		sin:function(x){
  			if(Mexp.math.isDegree)x=Mexp.math.toRadian(x);
  			return Math.sin(x);
  		},
  		sinh:function(x){
  			return (Math.pow(Math.E,x)-Math.pow(Math.E,-1*x))/2;
  		},
  		sub:function(a,b){
  		return a-b;
  		},
  		tan:function(x){
  			if(Mexp.math.isDegree)x=Mexp.math.toRadian(x);
  			return Math.tan(x);
  		},
  		tanh:function(x){
  			return Mexp.sinha(x)/Mexp.cosha(x);
  		},
  		toRadian:function(x){
  			return x*Math.PI/180;
  		}
  	};
  	Mexp.exception=function(message){
  		this.message=message;
  	};
      module.exports=Mexp;