| var _curry2 = |
| /*#__PURE__*/ |
| require("./internal/_curry2"); |
| |
| var _isInteger = |
| /*#__PURE__*/ |
| require("./internal/_isInteger"); |
| /** |
| * `mathMod` behaves like the modulo operator should mathematically, unlike the |
| * `%` operator (and by extension, [`R.modulo`](#modulo)). So while |
| * `-17 % 5` is `-2`, `mathMod(-17, 5)` is `3`. `mathMod` requires Integer |
| * arguments, and returns NaN when the modulus is zero or negative. |
| * |
| * @func |
| * @memberOf R |
| * @since v0.3.0 |
| * @category Math |
| * @sig Number -> Number -> Number |
| * @param {Number} m The dividend. |
| * @param {Number} p the modulus. |
| * @return {Number} The result of `b mod a`. |
| * @see R.modulo |
| * @example |
| * |
| * R.mathMod(-17, 5); //=> 3 |
| * R.mathMod(17, 5); //=> 2 |
| * R.mathMod(17, -5); //=> NaN |
| * R.mathMod(17, 0); //=> NaN |
| * R.mathMod(17.2, 5); //=> NaN |
| * R.mathMod(17, 5.3); //=> NaN |
| * |
| * const clock = R.mathMod(R.__, 12); |
| * clock(15); //=> 3 |
| * clock(24); //=> 0 |
| * |
| * const seventeenMod = R.mathMod(17); |
| * seventeenMod(3); //=> 2 |
| * seventeenMod(4); //=> 1 |
| * seventeenMod(10); //=> 7 |
| */ |
| |
| |
| var mathMod = |
| /*#__PURE__*/ |
| _curry2(function mathMod(m, p) { |
| if (!_isInteger(m)) { |
| return NaN; |
| } |
| |
| if (!_isInteger(p) || p < 1) { |
| return NaN; |
| } |
| |
| return (m % p + p) % p; |
| }); |
| |
| module.exports = mathMod; |