# Crate spinoso_math

Expand description

The Ruby Math module.

The Math module contains module functions for basic trigonometric and transcendental functions. See class `Float` for a list of constants that define Ruby’s floating point accuracy.

This crate defines math operations as free functions. These functions differ from those defined in Rust `core` by returning a `DomainError` when an input is outside the domain of the function and results in `NaN`.

`spinoso-math` assumes the Ruby VM uses double precision `f64` floats.

## Examples

Compute the hypotenuse:

``````use spinoso_math as math;
assert_eq!(math::hypot(3.0, 4.0), 5.0);``````

Compute log with respect to the base 10 and handle domain errors:

``````use spinoso_math as math;
assert_eq!(math::log10(1.0), Ok(0.0));
assert_eq!(math::log10(10.0), Ok(1.0));
assert_eq!(math::log10(1e100), Ok(100.0));

assert_eq!(math::log10(0.0), Ok(f64::NEG_INFINITY));
assert!(math::log10(-0.1).is_err());

// A NaN return value is distinct from a `DomainError`.
assert!(matches!(math::log10(f64::NAN), Ok(result) if result.is_nan()));``````

## Crate features

All features are enabled by default.

## Structs

Error that indicates a math function evaluated to an out of range value.
A handle to the `Math` module.
Error that indicates a `Math` module function is not implemented.

## Enums

Sum type of all errors possibly returned from `Math` functions.

## Constants

Euler’s number (e)
Archimedes’ constant (π)

## Functions

Computes the arccosine of the given value. Returns results in the range `(0..=PI)`.
Computes the inverse hyperbolic cosine of the given value.
Computes the arcsine of the given value. Returns results in the range `(-PI/2..=PI/2)`.
Computes the inverse hyperbolic sine of the given value.
Computes the arctangent of the given value. Returns results in the range `(-PI/2..=PI/2)`.
Computes the four quadrant arctangent of `value` (`y`) and `other` (`x`) in radians.
Computes the inverse hyperbolic tangent of the given value.
Returns the cube root of the given value.
Computes the cosine of the given value (expressed in radians). Returns values in the range `-1.0..=1.0`.
Computes the hyperbolic cosine of the given value (expressed in radians).
Calculates the error function of the given value.
Calculates the complementary error function of the given value.
Returns `e**x`.
Returns a tuple array containing the normalized fraction (a Float) and exponent (an Integer) of the given value.
Calculates the gamma function of the given value.
Returns `sqrt(x**2 + y**2)`, the hypotenuse of a right-angled triangle with sides x and y.
Returns the value of `fraction * (2**exponent)`.
Calculates the logarithmic gamma of value and the sign of gamma of value.
Returns the logarithm of the number with respect to an arbitrary base.
Returns the base 2 logarithm of the number.
Returns the base 10 logarithm of the number.
Computes the sine of the given value (expressed in radians). Returns a Float in the range `-1.0..=1.0`.
Computes the hyperbolic sine of the given value (expressed in radians).
Returns the non-negative square root of the given value.
Computes the tangent of the given value (expressed in radians).
Computes the hyperbolic tangent of the given value (expressed in radians).