Num.js
  1  // Generated by LiveScript 1.4.0
  2  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;
  3  max = curry$(function(x$, y$){
  4    return x$ > y$ ? x$ : y$;
  5  });
  6  min = curry$(function(x$, y$){
  7    return x$ < y$ ? x$ : y$;
  8  });
  9  negate = function(x){
 10    return -x;
 11  };
 12  abs = Math.abs;
 13  signum = function(x){
 14    if (x < 0) {
 15      return -1;
 16    } else if (x > 0) {
 17      return 1;
 18    } else {
 19      return 0;
 20    }
 21  };
 22  quot = curry$(function(x, y){
 23    return ~~(x / y);
 24  });
 25  rem = curry$(function(x$, y$){
 26    return x$ % y$;
 27  });
 28  div = curry$(function(x, y){
 29    return Math.floor(x / y);
 30  });
 31  mod = curry$(function(x$, y$){
 32    var ref$;
 33    return (((x$) % (ref$ = y$) + ref$) % ref$);
 34  });
 35  recip = (function(it){
 36    return 1 / it;
 37  });
 38  pi = Math.PI;
 39  tau = pi * 2;
 40  exp = Math.exp;
 41  sqrt = Math.sqrt;
 42  ln = Math.log;
 43  pow = curry$(function(x$, y$){
 44    return Math.pow(x$, y$);
 45  });
 46  sin = Math.sin;
 47  tan = Math.tan;
 48  cos = Math.cos;
 49  asin = Math.asin;
 50  acos = Math.acos;
 51  atan = Math.atan;
 52  atan2 = curry$(function(x, y){
 53    return Math.atan2(x, y);
 54  });
 55  truncate = function(x){
 56    return ~~x;
 57  };
 58  round = Math.round;
 59  ceiling = Math.ceil;
 60  floor = Math.floor;
 61  isItNaN = function(x){
 62    return x !== x;
 63  };
 64  even = function(x){
 65    return x % 2 === 0;
 66  };
 67  odd = function(x){
 68    return x % 2 !== 0;
 69  };
 70  gcd = curry$(function(x, y){
 71    var z;
 72    x = Math.abs(x);
 73    y = Math.abs(y);
 74    while (y !== 0) {
 75      z = x % y;
 76      x = y;
 77      y = z;
 78    }
 79    return x;
 80  });
 81  lcm = curry$(function(x, y){
 82    return Math.abs(Math.floor(x / gcd(x, y) * y));
 83  });
 84  module.exports = {
 85    max: max,
 86    min: min,
 87    negate: negate,
 88    abs: abs,
 89    signum: signum,
 90    quot: quot,
 91    rem: rem,
 92    div: div,
 93    mod: mod,
 94    recip: recip,
 95    pi: pi,
 96    tau: tau,
 97    exp: exp,
 98    sqrt: sqrt,
 99    ln: ln,
100    pow: pow,
101    sin: sin,
102    tan: tan,
103    cos: cos,
104    acos: acos,
105    asin: asin,
106    atan: atan,
107    atan2: atan2,
108    truncate: truncate,
109    round: round,
110    ceiling: ceiling,
111    floor: floor,
112    isItNaN: isItNaN,
113    even: even,
114    odd: odd,
115    gcd: gcd,
116    lcm: lcm
117  };
118  function curry$(f, bound){
119    var context,
120    _curry = function(args) {
121      return f.length > 1 ? function(){
122        var params = args ? args.concat() : [];
123        context = bound ? context || this : this;
124        return params.push.apply(params, arguments) <
125            f.length && arguments.length ?
126          _curry.call(context, params) : f.apply(context, params);
127      } : f;
128    };
129    return _curry();
130  }