You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
130 lines
2.4 KiB
130 lines
2.4 KiB
3 years ago
|
// Generated by LiveScript 1.6.0
|
||
|
var max, min, negate, abs, signum, quot, rem, div, mod, recip, pi, tau, exp, sqrt, ln, pow, sin, tan, cos, asin, acos, atan, atan2, truncate, round, ceiling, floor, isItNaN, even, odd, gcd, lcm;
|
||
|
max = curry$(function(x$, y$){
|
||
|
return x$ > y$ ? x$ : y$;
|
||
|
});
|
||
|
min = curry$(function(x$, y$){
|
||
|
return x$ < y$ ? x$ : y$;
|
||
|
});
|
||
|
negate = function(x){
|
||
|
return -x;
|
||
|
};
|
||
|
abs = Math.abs;
|
||
|
signum = function(x){
|
||
|
if (x < 0) {
|
||
|
return -1;
|
||
|
} else if (x > 0) {
|
||
|
return 1;
|
||
|
} else {
|
||
|
return 0;
|
||
|
}
|
||
|
};
|
||
|
quot = curry$(function(x, y){
|
||
|
return ~~(x / y);
|
||
|
});
|
||
|
rem = curry$(function(x$, y$){
|
||
|
return x$ % y$;
|
||
|
});
|
||
|
div = curry$(function(x, y){
|
||
|
return Math.floor(x / y);
|
||
|
});
|
||
|
mod = curry$(function(x$, y$){
|
||
|
var ref$;
|
||
|
return ((x$) % (ref$ = y$) + ref$) % ref$;
|
||
|
});
|
||
|
recip = (function(it){
|
||
|
return 1 / it;
|
||
|
});
|
||
|
pi = Math.PI;
|
||
|
tau = pi * 2;
|
||
|
exp = Math.exp;
|
||
|
sqrt = Math.sqrt;
|
||
|
ln = Math.log;
|
||
|
pow = curry$(function(x$, y$){
|
||
|
return Math.pow(x$, y$);
|
||
|
});
|
||
|
sin = Math.sin;
|
||
|
tan = Math.tan;
|
||
|
cos = Math.cos;
|
||
|
asin = Math.asin;
|
||
|
acos = Math.acos;
|
||
|
atan = Math.atan;
|
||
|
atan2 = curry$(function(x, y){
|
||
|
return Math.atan2(x, y);
|
||
|
});
|
||
|
truncate = function(x){
|
||
|
return ~~x;
|
||
|
};
|
||
|
round = Math.round;
|
||
|
ceiling = Math.ceil;
|
||
|
floor = Math.floor;
|
||
|
isItNaN = function(x){
|
||
|
return x !== x;
|
||
|
};
|
||
|
even = function(x){
|
||
|
return x % 2 === 0;
|
||
|
};
|
||
|
odd = function(x){
|
||
|
return x % 2 !== 0;
|
||
|
};
|
||
|
gcd = curry$(function(x, y){
|
||
|
var z;
|
||
|
x = Math.abs(x);
|
||
|
y = Math.abs(y);
|
||
|
while (y !== 0) {
|
||
|
z = x % y;
|
||
|
x = y;
|
||
|
y = z;
|
||
|
}
|
||
|
return x;
|
||
|
});
|
||
|
lcm = curry$(function(x, y){
|
||
|
return Math.abs(Math.floor(x / gcd(x, y) * y));
|
||
|
});
|
||
|
module.exports = {
|
||
|
max: max,
|
||
|
min: min,
|
||
|
negate: negate,
|
||
|
abs: abs,
|
||
|
signum: signum,
|
||
|
quot: quot,
|
||
|
rem: rem,
|
||
|
div: div,
|
||
|
mod: mod,
|
||
|
recip: recip,
|
||
|
pi: pi,
|
||
|
tau: tau,
|
||
|
exp: exp,
|
||
|
sqrt: sqrt,
|
||
|
ln: ln,
|
||
|
pow: pow,
|
||
|
sin: sin,
|
||
|
tan: tan,
|
||
|
cos: cos,
|
||
|
acos: acos,
|
||
|
asin: asin,
|
||
|
atan: atan,
|
||
|
atan2: atan2,
|
||
|
truncate: truncate,
|
||
|
round: round,
|
||
|
ceiling: ceiling,
|
||
|
floor: floor,
|
||
|
isItNaN: isItNaN,
|
||
|
even: even,
|
||
|
odd: odd,
|
||
|
gcd: gcd,
|
||
|
lcm: lcm
|
||
|
};
|
||
|
function curry$(f, bound){
|
||
|
var context,
|
||
|
_curry = function(args) {
|
||
|
return f.length > 1 ? function(){
|
||
|
var params = args ? args.concat() : [];
|
||
|
context = bound ? context || this : this;
|
||
|
return params.push.apply(params, arguments) <
|
||
|
f.length && arguments.length ?
|
||
|
_curry.call(context, params) : f.apply(context, params);
|
||
|
} : f;
|
||
|
};
|
||
|
return _curry();
|
||
|
}
|