Numbers.Protocols.Exponentiation protocol (numbers v5.2.5)

Copy Markdown

For supporting Numbers.pow/2.

Summary

Types

t()

All the types that implement this protocol.

Functions

Power function, x^n.

Types

t()

@type t() :: term()

All the types that implement this protocol.

Functions

pow(num, integer_power)

@spec pow(t(), non_neg_integer()) :: t()

Power function, x^n.

Unless a dedicated fast power algorithm exists for your data structure, you could use the 'Exponentiation by Squaring' algorithm, by calling Numbers.Helper.pow_by_sq(num, integer_power) in the implementation, which is a reasonably fast algorithm that uses log(n) multiplication steps.