Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

129 Zeilen
2.4 KiB

vor 4 Jahren
  1. // Generated by LiveScript 1.6.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. }