private: No


{ lib ? (import <nixpkgs> {}).lib }:

let
  inherit (lib)
    assertMsg
    ;

  inherit (builtins)
    div
    ;

  abs = i:
    if i < 0
    then -1 * i
    else i;

  exp = base: pow:
    if pow > 0
    then base * (exp base (pow - 1))
    else if pow < 0
    then 1.0 / exp base (abs pow)
    else 1;

  bitShiftR = bit: count:
    div bit (exp 2 count);

in

{
  inherit
    abs
    exp
    bitShiftR
    ;
}