anchor.diff:      X * X;
   pow(X, 3) ->
       X * X * X;
  +pow(X, Y) when (Y rem 2) =:= 0 ->
  +    Half = pow(X, Y div 2),
  +    Half * Half;
   pow(X, Y) ->
  -    case Y rem 2 of
  -        0 ->
  -            Half = pow(X, Y div 2),
  -            Half * Half;
  -        1 ->
  -            Half = pow(X, Y div 2),
  -            Half * Half * X
  -    end.
  +    Half = pow(X, Y div 2),
  +    Half * Half * X.
   
   %% @doc Logarithm of X to the base of Base.
   -spec log(X::number(), Base::number()) -> float().
  
positive.code: max(_, ?PLUS_INFINITY) -> ?PLUS_INFINITY;
  max(?MINUS_INFINITY, X) -> X;
  max(X, ?MINUS_INFINITY) -> X;
  max(A, B) ->
      case A > B of
          true -> A;
          false -> B
      end.
  
  %% @doc Variant of erlang:min/2 also taking ?PLUS_INFINITY_TYPE and
  %%      ?MINUS_INFINITY_TYPE into account, e.g. for comparing keys.
  
negative.code: min(_, ?MINUS_INFINITY) -> ?MINUS_INFINITY;
  min(?PLUS_INFINITY, X) -> X;
  min(X, ?PLUS_INFINITY) -> X;
  min(A, B) when A < B -> A;
  min(_A, B) -> B.
  
  -spec pow(integer(), non_neg_integer()) -> integer();
           (float(), non_neg_integer()) -> number().
  