unsafe extern "C" fn decode_half(mut half: libc::c_ushort) -> libc::c_double {
    let mut exp: libc::c_int = half as libc::c_int >> 10i32 & 0x1fi32;
    let mut mant: libc::c_int = half as libc::c_int & 0x3ffi32;
    let mut val: libc::c_double = 0.;
    if exp == 0i32 {
        val = ldexp(mant as libc::c_double, -24i32)
    } else if exp != 31i32 {
        val = ldexp((mant + 1024i32) as libc::c_double, exp - 25i32)
    } else {
        val = (if mant == 0i32 {
            ::std::f32::INFINITY
        } else {
            ::std::f32::NAN
        }) as libc::c_double
    }
    return if 0 != half as libc::c_int & 0x8000i32 {
        -val
    } else {
        val
    };
}
/* this function was copied & adapted from RFC 7049 Appendix D */
this function was copied & adapted from RFC 7049 Appendix D
this function was copied & adapted from RFC 7049 Appendix D
unsafe extern "C" fn decode_half(mut half: libc::c_ushort) -> libc::c_double {
    let mut exp: libc::c_int = half as libc::c_int >> 10i32 & 0x1fi32;
    let mut mant: libc::c_int = half as libc::c_int & 0x3ffi32;
    let mut val: libc::c_double = 0.;
    if exp == 0i32 {
        val = ldexp(mant as libc::c_double, -24i32)
    } else if exp != 31i32 {
        val = ldexp((mant + 1024i32) as libc::c_double, exp - 25i32)
    } else {
        val = (if mant == 0i32 {
            ::std::f32::INFINITY
        } else {
            ::std::f32::NAN
        }) as libc::c_double
    }
    return if 0 != half as libc::c_int & 0x8000i32 {
        -val
    } else {
        val
    };
}
unsafe extern " " fn decode_half ( mut half : libc :: c_ushort ) -> libc :: c_double { let mut exp : libc :: c_int = half as libc :: c_int >> 10i32 & 0x1fi32 ; let mut mant : libc :: c_int = half as libc :: c_int & 0x3ffi32 ; let mut val : libc :: c_double = 0. ; if exp == 0i32 { val = ldexp ( mant as libc :: c_double , - 24i32 ) } else if exp != 31i32 { val = ldexp ( ( mant + 1024i32 ) as libc :: c_double , exp - 25i32 ) } else { val = ( if mant == 0i32 { :: std :: f32 :: INFINITY } else { :: std :: f32 :: NAN } ) as libc :: c_double } return if 0 != half as libc :: c_int & 0x8000i32 { - val } else { val } ; }
this function was copied & adapted from RFC 7049 Appendix D
this function was copied & adapted from RFC 7049 Appendix D
half
libc::c_ushort