Extend the Float trait by some constants and supertraits
This commit is contained in:
parent
2c1d7dccc1
commit
8313cec597
@ -1,4 +1,5 @@
|
|||||||
use core::mem;
|
use core::mem;
|
||||||
|
use core::ops;
|
||||||
|
|
||||||
use super::int::Int;
|
use super::int::Int;
|
||||||
|
|
||||||
@ -8,10 +9,23 @@ pub mod pow;
|
|||||||
pub mod sub;
|
pub mod sub;
|
||||||
|
|
||||||
/// Trait for some basic operations on floats
|
/// Trait for some basic operations on floats
|
||||||
pub trait Float: Sized + Copy {
|
pub trait Float:
|
||||||
|
Copy +
|
||||||
|
PartialEq +
|
||||||
|
PartialOrd +
|
||||||
|
ops::AddAssign +
|
||||||
|
ops::MulAssign +
|
||||||
|
ops::Add<Output = Self> +
|
||||||
|
ops::Sub<Output = Self> +
|
||||||
|
ops::Div<Output = Self> +
|
||||||
|
ops::Rem<Output = Self> +
|
||||||
|
{
|
||||||
/// A uint of the same with as the float
|
/// A uint of the same with as the float
|
||||||
type Int: Int;
|
type Int: Int;
|
||||||
|
|
||||||
|
const ZERO: Self;
|
||||||
|
const ONE: Self;
|
||||||
|
|
||||||
/// The bitwidth of the float type
|
/// The bitwidth of the float type
|
||||||
const BITS: u32;
|
const BITS: u32;
|
||||||
|
|
||||||
@ -64,6 +78,9 @@ macro_rules! float_impl {
|
|||||||
($ty:ident, $ity:ident, $bits:expr, $significand_bits:expr) => {
|
($ty:ident, $ity:ident, $bits:expr, $significand_bits:expr) => {
|
||||||
impl Float for $ty {
|
impl Float for $ty {
|
||||||
type Int = $ity;
|
type Int = $ity;
|
||||||
|
const ZERO: Self = 0.0;
|
||||||
|
const ONE: Self = 1.0;
|
||||||
|
|
||||||
const BITS: u32 = $bits;
|
const BITS: u32 = $bits;
|
||||||
const SIGNIFICAND_BITS: u32 = $significand_bits;
|
const SIGNIFICAND_BITS: u32 = $significand_bits;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user