ibmfloat 0.1.0

IBM floating point number types, especially including conversion to IEEE-754 floats
Documentation
use super::*;

struct Testcase(u32, u64);
impl Testcase {
    fn verify(&self) {
        let actual = ibm32ieee64(self.0);
        assert_eq!(
            actual, self.1,
            "ibm64ieee32(0x{:08x}): got 0x{:016x}, expected 0x{:016x}",
            self.0, actual, self.1
        );
    }
}

#[test]
fn python_test_cases() {
    for testcase in vec![
        Testcase(0x00000000, 0x0000000000000000),
        Testcase(0x80000000, 0x8000000000000000),
        Testcase(0x00000001, 0x2e70000000000000),
        Testcase(0x80000001, 0xae70000000000000),
        Testcase(0x00ffffff, 0x2fefffffe0000000),
        Testcase(0x80ffffff, 0xafefffffe0000000),
        Testcase(0x41100000, 0x3ff0000000000000),
        Testcase(0xc1100000, 0xbff0000000000000),
        Testcase(0x7fffffff, 0x4fafffffe0000000),
        Testcase(0xffffffff, 0xcfafffffe0000000),
    ] {
        testcase.verify();
    }
}

#[test]
fn python_random_test_cases() {
    for testcase in include!("random_single_to_double.txt") {
        testcase.verify();
    }
}