# [−][src]Trait micromath::F32Ext

```pub trait F32Ext: Sized {
fn abs(self) -> f32;
fn asin(self) -> f32;
fn acos(self) -> f32;
fn atan(self) -> f32;
fn atan_norm(self) -> f32;
fn atan2(self, other: f32) -> f32;
fn atan2_norm(self, other: f32) -> f32;
fn ceil(self) -> f32;
fn cos(self) -> f32;
fn floor(self) -> f32;
fn hypot(self, other: f32) -> f32;
fn inv(self) -> f32;
fn invsqrt(self) -> f32;
fn sin(self) -> f32;
fn sqrt(self) -> f32;
fn tan(self) -> f32;
fn trunc(self) -> f32;
fn round(self) -> f32;
fn fract(self) -> f32;
fn copysign(self, sign: f32) -> f32;
fn ln(self) -> f32;
fn exp(self) -> f32;
fn log(self, base: f32) -> f32;
fn log2(self) -> f32;
fn log10(self) -> f32;
fn powf(self, n: f32) -> f32;
}```

`f32` extension providing various arithmetic approximations and polyfills for `std` functionality.

## Required methods

### `fn abs(self) -> f32`

Compute absolute value with a constant-time, data-independent implementation.

### `fn asin(self) -> f32`

Approximate `asin(x)` in radians in the range `[-pi/2, pi/2]`.

### `fn acos(self) -> f32`

Approximate `acos(x)` in radians in the range `[0, pi]`

### `fn atan(self) -> f32`

Approximate `atan(x)` in radians with a maximum error of `0.002`.

### `fn atan_norm(self) -> f32`

Approximate `atan(x)` normalized to the `[−1,1]` range with a maximum error of `0.1620` degrees.

### `fn atan2(self, other: f32) -> f32`

Approximate the four quadrant arctangent `atan2(x)` in radians, with a maximum error of `0.002`.

### `fn atan2_norm(self, other: f32) -> f32`

Approximate the four quadrant arctangent. Normalized to the `[0,4)` range with a maximum error of `0.1620` degrees.

### `fn ceil(self) -> f32`

Approximate floating point ceiling.

### `fn cos(self) -> f32`

Approximate cosine in radians with a maximum error of `0.002`.

### `fn floor(self) -> f32`

Approximate floating point floor.

### `fn hypot(self, other: f32) -> f32`

Approximate the length of the hypotenuse of a right-angle triangle given legs of length `x` and `y`.

### `fn inv(self) -> f32`

Approximate `1/x` with an average deviation of ~8%.

### `fn invsqrt(self) -> f32`

Approximate inverse square root with an average deviation of ~5%.

### `fn sin(self) -> f32`

Approximate sine in radians with a maximum error of `0.002`.

### `fn sqrt(self) -> f32`

Approximate square root with an average deviation of ~5%.

### `fn tan(self) -> f32`

Approximate `tan(x)` in radians with a maximum error of `0.6`.

### `fn trunc(self) -> f32`

Retrieve whole number part of floating point with sign.

### `fn round(self) -> f32`

Round the number part of floating point with sign.

### `fn fract(self) -> f32`

Retrieve the fractional part of floating point with sign.

### `fn copysign(self, sign: f32) -> f32`

Copies the sign from one number to another and returns it.

### `fn ln(self) -> f32`

Approximate `ln(x)`.

### `fn exp(self) -> f32`

Approximate `e^x`.

### `fn log(self, base: f32) -> f32`

Approximate `log` with an arbitrary base.

### `fn log2(self) -> f32`

Approximate `log2`.

### `fn log10(self) -> f32`

Approximate `log10`.

### `fn powf(self, n: f32) -> f32`

Approximate `self^n`.