Trait GoFloatMath

Source
pub trait GoFloatMath: BaseFloat {
    // Required methods
    fn remainder(self, y: Self) -> Self;
    fn modulo(self, y: Self) -> Self;
}
Expand description

Trait to be implemented by f64 and f32.

Required Methods§

Source

fn remainder(self, y: Self) -> Self

Remainder function.

Source

fn modulo(self, y: Self) -> Self

Modulo function/

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl GoFloatMath for f64

Source§

fn remainder(self, y: f64) -> f64

The original C code and the comment below are from FreeBSD’s /usr/src/lib/msun/src/e_remainder.c and came with this notice. The go code is a simplified version of the original C.

====================================================

Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.

Developed at SunPro, a Sun Microsystems, Inc. business. Permission to use, copy, modify, and distribute this software is freely granted, provided that this notice is preserved.

====================================================

__ieee754_remainder(x,y)

Return : returns x REM y = x - [x/y]*y as if in infinite precision arithmetic, where [x/y] is the (infinite bit) integer nearest x/y (in half way cases, choose the even one).

Method : Based on Mod() returning x - [x/y]chopped * y exactly.

Remainder returns the IEEE 754 floating-point remainder of x/y.

Special cases are:

Remainder(±Inf, y) = NaN

Remainder(NaN, y) = NaN

Remainder(x, 0) = NaN

Remainder(x, ±Inf) = x

Remainder(x, NaN) = NaN

Source§

fn modulo(self, y: f64) -> f64

Floating-point mod function.

Modulo returns the floating-point remainder of x/y. The magnitude of the result is less than y and its sign agrees with that of x.

Special cases are:

Mod(±Inf, y) = NaN

Mod(NaN, y) = NaN

Mod(x, 0) = NaN

Mod(x, ±Inf) = x

Mod(x, NaN) = NaN

Implementors§