Common role for numbers and types that can act as numbers.

Binary numeric operations return an object of the "wider" type:

```Int         narrowest
Rat
FatRat
Num
Complex     widest

```

So for example the product of a Rat and an Int is a Rat.

Unary operations that in pure math usually return an irrational number generally return Num in Raku.

# Methods§

## method Numeric§

The `:D` variant simply returns the invocant. The `:U` variant issues a warning about using an uninitialized value in numeric context and then returns `self.new`.

## method narrow§

Returns the number converted to the narrowest type that can hold it without loss of precision.

## method ACCEPTS§

Returns `True` if `\$other` can be coerced to Numeric and is numerically equal to the invocant (or both evaluate to `NaN`).

## routine log§

Calculates the logarithm to base `\$base`. Defaults to the natural logarithm. Throws an exception if `\$base` is `1`.

Returns `NaN` for negative arguments. As of 6.e language version (early implementation exists in Rakudo compiler 2023.02+), will return a Complex value for negative arguments.

## routine log10§

Calculates the logarithm to base 10. Returns `-Inf` for `0`.

Returns `NaN` for negative arguments. As of 6.e language version (early implementation exists in Rakudo compiler 2023.02+), will return a Complex value for negative arguments.

## routine log2§

Calculates the logarithm to base 2. Returns `-Inf` for `0`.

Returns `NaN` for negative arguments. As of 6.e language version (early implementation exists in Rakudo compiler 2023.02+), will return a Complex value for negative arguments.

## routine exp§

Returns `\$base` to the power of the number, or `e` to the power of the number if called without a second argument.

## method roots§

Returns a list of the `\$n` complex roots, which evaluate to the original number when raised to the `\$n`th power.

## routine abs§

Returns the absolute value of the number.

## routine sqrt§

Returns a square root of the number. For real numbers the positive square root is returned.

On negative real numbers, `sqrt` returns `NaN` rather than a complex number, in order to not confuse people who are not familiar with complex arithmetic. If you want to calculate complex square roots, coerce to `Complex` first, or use the `roots` method.

As of 6.e language version (early implementation exists in Rakudo compiler 2023.02+), will return a Complex value for negative arguments.

## method conj§

Returns the complex conjugate of the number. Returns the number itself for real numbers.

## method Bool§

Returns `False` if the number is equivalent to zero, and `True` otherwise.

## method succ§

Returns the number incremented by one (successor).

## method pred§

Returns the number decremented by one (predecessor).