114 lines
2.0 KiB
JavaScript
114 lines
2.0 KiB
JavaScript
|
'use strict';
|
||
|
|
||
|
Object.defineProperty(exports, '__esModule', {
|
||
|
value: true
|
||
|
});
|
||
|
/*
|
||
|
* Operators and Functions
|
||
|
* fn: function used to evaluate value
|
||
|
* format: the format using which arguments are parsed:
|
||
|
* 0 indicates an argument and 1 indicates the operator
|
||
|
* e.g: factorial is 01, add is 010, like 2!, 2+2
|
||
|
* precedence: determines which operators should be evaluated first
|
||
|
* the lower the value, the higher the precedence
|
||
|
*/
|
||
|
exports['default'] = {
|
||
|
'^': {
|
||
|
fn: function fn(a, b) {
|
||
|
return Math.pow(a, b);
|
||
|
},
|
||
|
format: '010',
|
||
|
precedence: 0
|
||
|
},
|
||
|
'*': {
|
||
|
fn: function fn(a, b) {
|
||
|
return a * b;
|
||
|
},
|
||
|
format: '010',
|
||
|
precedence: 1
|
||
|
},
|
||
|
'/': {
|
||
|
fn: function fn(a, b) {
|
||
|
return a / b;
|
||
|
},
|
||
|
format: '010',
|
||
|
precedence: 1
|
||
|
},
|
||
|
'%': {
|
||
|
fn: function fn(a, b) {
|
||
|
return a % b;
|
||
|
},
|
||
|
format: '010',
|
||
|
precedence: 1
|
||
|
},
|
||
|
'\\': {
|
||
|
fn: function fn(a, b) {
|
||
|
return Math.floor(a / b);
|
||
|
},
|
||
|
format: '010',
|
||
|
precedence: 1
|
||
|
},
|
||
|
'+': {
|
||
|
fn: function fn(a, b) {
|
||
|
return a + b;
|
||
|
},
|
||
|
format: '010',
|
||
|
precedence: 2
|
||
|
},
|
||
|
'-': {
|
||
|
fn: function fn(a, b) {
|
||
|
return a - b;
|
||
|
},
|
||
|
format: '010',
|
||
|
precedence: 2
|
||
|
},
|
||
|
'!': {
|
||
|
fn: function fn(a) {
|
||
|
var sum = 1;
|
||
|
for (var i = 0; i < a; ++i) {
|
||
|
sum *= i;
|
||
|
}
|
||
|
return sum;
|
||
|
},
|
||
|
format: '01',
|
||
|
precedence: 2
|
||
|
},
|
||
|
log: {
|
||
|
fn: Math.log,
|
||
|
format: '10',
|
||
|
precedence: -1
|
||
|
},
|
||
|
ln: {
|
||
|
fn: Math.log,
|
||
|
format: '10',
|
||
|
precedence: -1
|
||
|
},
|
||
|
lg: {
|
||
|
fn: function fn(a) {
|
||
|
return Math.log(a) / Math.log(2);
|
||
|
},
|
||
|
format: '10',
|
||
|
precedence: -1
|
||
|
},
|
||
|
sin: {
|
||
|
fn: Math.sin,
|
||
|
format: '10',
|
||
|
precedence: -1
|
||
|
},
|
||
|
cos: {
|
||
|
fn: Math.cos,
|
||
|
format: '10',
|
||
|
precedence: -1
|
||
|
},
|
||
|
tan: {
|
||
|
fn: Math.tan,
|
||
|
format: '10',
|
||
|
precedence: -1
|
||
|
},
|
||
|
cot: {
|
||
|
fn: Math.cot,
|
||
|
format: '10',
|
||
|
precedence: -1
|
||
|
}
|
||
|
};
|
||
|
module.exports = exports['default'];
|