Numbers

Abstraction of numeric types that may be raised to a power using the exponentiation operator `x ^ n` which accepts an instance of `Exponentiable` as its first operand, and an exponent as its second operand.

    function exp(Float x) => e^x;

The exponentiation operation should obey the usual index laws, including:

- `x^0 == 1`
- `x^1 == x`
- `x^(-1) == 1/x`
- `x^(m+n) == x^m * x^n`
- `x^(m-n) == x^m / x^n`
- `x^(m*n) == (x^m)^n`
- `(x*y)^n == x^n * y^n`

where `0` is the additive identity, and `1` is the multiplicative identity.

Note that in general, the type of the exponent may be different to the numeric type which is exponentiated. For example, a `Rational` number class might be a subtype of `Exponentiable<Rational,Integer>`, thus accepting only whole-number exponents.

See also `Integer`, `Float`

no type hierarchy

- `Exponentiable`
  - `Numeric`
    - `Invertible`
      - `Summable`

- `Exponentiable` of
  - `Float`
  - `Integer`

Inherited Attributes
Attributes inherited from: `Object` `hash`, `string`
Attributes inherited from: `Invertible<Other>` `negated`

Methods
`power` | Source Code `shared formal This power(Other other)` The result of raising this number to the given power.

Inherited Methods
Methods inherited from: `Object` `equals()`
Methods inherited from: `Invertible<Other>` `minus()`
Methods inherited from: `Numeric<Other>` `divided()`, `times()`
Methods inherited from: `Summable<Other>` `plus()`