use std::cmp::Ordering; pub fn cmp_f32(a: f32, b: f32) -> Ordering { let mut a: u32 = a.to_bits(); let mut b: u32 = b.to_bits(); if a & 0x8000_0000 != 0 { a ^= 0x7fff_ffff; } if b & 0x8000_0000 != 0 { b ^= 0x7fff_ffff; } (a as i32).cmp(&(b as i32)) } pub fn eq_f32(a: f32, b: f32) -> bool { a.to_bits() == b.to_bits() } pub fn cmp_f64(a: f64, b: f64) -> Ordering { let mut a: u64 = a.to_bits(); let mut b: u64 = b.to_bits(); if a & 0x8000_0000_0000_0000 != 0 { a ^= 0x7fff_ffff_ffff_ffff; } if b & 0x8000_0000_0000_0000 != 0 { b ^= 0x7fff_ffff_ffff_ffff; } (a as i64).cmp(&(b as i64)) } pub fn eq_f64(a: f64, b: f64) -> bool { a.to_bits() == b.to_bits() }