Skip to content

Commit

Permalink
Merge pull request #1 from msyksphinz-self/compare_functions
Browse files Browse the repository at this point in the history
Implement compare functions for each operations
  • Loading branch information
dalance committed Oct 1, 2020
2 parents 4a588e4 + 8d2ae1f commit 49fde4d
Show file tree
Hide file tree
Showing 5 changed files with 90 additions and 0 deletions.
20 changes: 20 additions & 0 deletions src/f128.rs
Expand Up @@ -77,6 +77,26 @@ impl Float for F128 {
Self(ret)
}

fn eq<T: Borrow<Self>>(&self, x: T) -> bool {
unsafe { softfloat_sys::f128_eq(self.0, x.borrow().0) }
}

fn lt<T: Borrow<Self>>(&self, x: T) -> bool {
unsafe { softfloat_sys::f128_lt(self.0, x.borrow().0) }
}

fn le<T: Borrow<Self>>(&self, x: T) -> bool {
unsafe { softfloat_sys::f128_le(self.0, x.borrow().0) }
}

fn lt_quiet<T: Borrow<Self>>(&self, x: T) -> bool {
unsafe { softfloat_sys::f128_lt_quiet(self.0, x.borrow().0) }
}

fn le_quiet<T: Borrow<Self>>(&self, x: T) -> bool {
unsafe { softfloat_sys::f128_le_quiet(self.0, x.borrow().0) }
}

fn compare<T: Borrow<Self>>(&self, x: T) -> Option<Ordering> {
let eq = unsafe { softfloat_sys::f128_eq(self.0, x.borrow().0) };
let lt = unsafe { softfloat_sys::f128_lt(self.0, x.borrow().0) };
Expand Down
20 changes: 20 additions & 0 deletions src/f16.rs
Expand Up @@ -72,6 +72,26 @@ impl Float for F16 {
Self(ret)
}

fn eq<T: Borrow<Self>>(&self, x: T) -> bool {
unsafe { softfloat_sys::f16_eq(self.0, x.borrow().0) }
}

fn lt<T: Borrow<Self>>(&self, x: T) -> bool {
unsafe { softfloat_sys::f16_lt(self.0, x.borrow().0) }
}

fn le<T: Borrow<Self>>(&self, x: T) -> bool {
unsafe { softfloat_sys::f16_le(self.0, x.borrow().0) }
}

fn lt_quiet<T: Borrow<Self>>(&self, x: T) -> bool {
unsafe { softfloat_sys::f16_lt_quiet(self.0, x.borrow().0) }
}

fn le_quiet<T: Borrow<Self>>(&self, x: T) -> bool {
unsafe { softfloat_sys::f16_le_quiet(self.0, x.borrow().0) }
}

fn compare<T: Borrow<Self>>(&self, x: T) -> Option<Ordering> {
let eq = unsafe { softfloat_sys::f16_eq(self.0, x.borrow().0) };
let lt = unsafe { softfloat_sys::f16_lt(self.0, x.borrow().0) };
Expand Down
20 changes: 20 additions & 0 deletions src/f32.rs
Expand Up @@ -72,6 +72,26 @@ impl Float for F32 {
Self(ret)
}

fn eq<T: Borrow<Self>>(&self, x: T) -> bool {
unsafe { softfloat_sys::f32_eq(self.0, x.borrow().0) }
}

fn lt<T: Borrow<Self>>(&self, x: T) -> bool {
unsafe { softfloat_sys::f32_lt(self.0, x.borrow().0) }
}

fn le<T: Borrow<Self>>(&self, x: T) -> bool {
unsafe { softfloat_sys::f32_le(self.0, x.borrow().0) }
}

fn lt_quiet<T: Borrow<Self>>(&self, x: T) -> bool {
unsafe { softfloat_sys::f32_lt_quiet(self.0, x.borrow().0) }
}

fn le_quiet<T: Borrow<Self>>(&self, x: T) -> bool {
unsafe { softfloat_sys::f32_le_quiet(self.0, x.borrow().0) }
}

fn compare<T: Borrow<Self>>(&self, x: T) -> Option<Ordering> {
let eq = unsafe { softfloat_sys::f32_eq(self.0, x.borrow().0) };
let lt = unsafe { softfloat_sys::f32_lt(self.0, x.borrow().0) };
Expand Down
20 changes: 20 additions & 0 deletions src/f64.rs
Expand Up @@ -72,6 +72,26 @@ impl Float for F64 {
Self(ret)
}

fn eq<T: Borrow<Self>>(&self, x: T) -> bool {
unsafe { softfloat_sys::f64_eq(self.0, x.borrow().0) }
}

fn lt<T: Borrow<Self>>(&self, x: T) -> bool {
unsafe { softfloat_sys::f64_lt(self.0, x.borrow().0) }
}

fn le<T: Borrow<Self>>(&self, x: T) -> bool {
unsafe { softfloat_sys::f64_le(self.0, x.borrow().0) }
}

fn lt_quiet<T: Borrow<Self>>(&self, x: T) -> bool {
unsafe { softfloat_sys::f64_lt_quiet(self.0, x.borrow().0) }
}

fn le_quiet<T: Borrow<Self>>(&self, x: T) -> bool {
unsafe { softfloat_sys::f64_le_quiet(self.0, x.borrow().0) }
}

fn compare<T: Borrow<Self>>(&self, x: T) -> Option<Ordering> {
let eq = unsafe { softfloat_sys::f64_eq(self.0, x.borrow().0) };
let lt = unsafe { softfloat_sys::f64_lt(self.0, x.borrow().0) };
Expand Down
10 changes: 10 additions & 0 deletions src/lib.rs
Expand Up @@ -186,6 +186,16 @@ pub trait Float {

fn sqrt(&self, rnd: RoundingMode) -> Self;

fn eq<T: Borrow<Self>>(&self, x: T) -> bool;

fn lt<T: Borrow<Self>>(&self, x: T) -> bool;

fn le<T: Borrow<Self>>(&self, x: T) -> bool;

fn lt_quiet<T: Borrow<Self>>(&self, x: T) -> bool;

fn le_quiet<T: Borrow<Self>>(&self, x: T) -> bool;

fn compare<T: Borrow<Self>>(&self, x: T) -> Option<Ordering>;

fn from_u32(x: u32, rnd: RoundingMode) -> Self;
Expand Down

0 comments on commit 49fde4d

Please sign in to comment.