# Math subset. { pkgs, lib, self }: rec { /* Returns the absolute value of the given number. Example: abs -4 => 4 abs (1 / 5) => 0.2 */ abs = number: if number < 0 then -(number) else number; /* Exponentiates the given base with the exponent. Example: pow 2 3 => 8 pow 6 4 => 1296 */ pow = base: exponent: # Just to be a contrarian, I'll just make this as a tail recursive function # instead lol. let absValue = abs exponent; iter = product: counter: maxCount: if counter > maxCount then product else iter (product * base) (counter + 1) maxCount; value = iter 1 1 absValue; in if exponent < 0 then (1 / value) else value; }