f128 0.2.0

Bindings to the gcc quadmath library
Documentation
use libc::c_int;
use libc::c_longlong;
use f128_t::f128;

#[link(name = "f128", kind = "static")]
extern "C" {
    pub fn f128_add(x: [u8; 16], y: [u8; 16]) -> [u8; 16];
    pub fn f128_sub(x: [u8; 16], y: [u8; 16]) -> [u8; 16];
    pub fn f128_div(x: [u8; 16], y: [u8; 16]) -> [u8; 16];
    pub fn f128_mul(x: [u8; 16], y: [u8; 16]) -> [u8; 16];
    pub fn f128_modulo(x: [u8; 16], y: [u8; 16]) -> [u8; 16];

    pub fn qtostr(s: *mut u8, size: usize, fmt: *const i8, arg: [u8; 16]) -> c_int;

    pub fn strtoflt128_f(c: *const i8) -> [u8; 16];

    pub fn usize_to_f128	(x: usize) -> [u8; 16];
    pub fn f128_to_usize	(x: [u8; 16]) -> usize;
    pub fn u8_to_f128	(x: u8) -> [u8; 16];
    pub fn f128_to_u8	(x: [u8; 16]) -> u8;
    pub fn u16_to_f128	(x: u16) -> [u8; 16];
    pub fn f128_to_u16	(x: [u8; 16]) -> u16;
    pub fn u32_to_f128	(x: u32) -> [u8; 16];
    pub fn f128_to_u32	(x: [u8; 16]) -> u32;
    pub fn u64_to_f128	(x: u64) -> [u8; 16];
    pub fn f128_to_u64	(x: [u8; 16]) -> u64;
    pub fn u128_to_f128	(x: [u8; 16]) -> [u8; 16];
    pub fn f128_to_u128	(x: [u8; 16]) -> [u8; 16];
    pub fn isize_to_f128	(x: isize) -> [u8; 16];
    pub fn f128_to_isize	(x: [u8; 16]) -> [u8; 16];
    pub fn i8_to_f128	(x: i8) -> [u8; 16];
    pub fn f128_to_i8	(x: [u8; 16]) -> i8;
    pub fn i16_to_f128	(x: i16) -> [u8; 16];
    pub fn f128_to_i16	(x: [u8; 16]) -> i16;
    pub fn i32_to_f128	(x: i32) -> [u8; 16];
    pub fn f128_to_i32	(x: [u8; 16]) -> i32;
    pub fn i64_to_f128	(x: i64) -> [u8; 16];
    pub fn f128_to_i64	(x: [u8; 16]) -> i64;
    pub fn i128_to_f128	(x: [u8; 16]) -> [u8; 16];
    pub fn f128_to_i128(x: [u8; 16]) -> [u8; 16];
    pub fn f32_to_f128	(x: f32) -> [u8; 16];
    pub fn f128_to_f32	(x: [u8; 16]) -> f32;
    pub fn f64_to_f128	(x: f64) -> [u8; 16];
    pub fn f128_to_f64	(x: [u8; 16]) -> f64;

    pub fn acosq_f(x: [u8; 16]) -> [u8; 16];
    pub fn acosn_f (a: [u8; 16]) -> [u8; 16];
    pub fn acoshq_f (a: [u8; 16]) -> [u8; 16];
    pub fn asinq_f (a: [u8; 16]) -> [u8; 16];
    pub fn asinhq_f (a: [u8; 16]) -> [u8; 16];
    pub fn atanq_f (a: [u8; 16]) -> [u8; 16];
    pub fn atanhq_f (a: [u8; 16]) -> [u8; 16];
    pub fn atan2q_f (a: [u8; 16], b: [u8; 16]) -> [u8; 16];
    pub fn cbrtq_f (a: [u8; 16]) -> [u8; 16];
    pub fn ceilq_f (a: [u8; 16]) -> [u8; 16];
    pub fn copysignq_f (a: [u8; 16], b: [u8; 16]) -> [u8; 16];
    pub fn coshq_f (a: [u8; 16]) -> [u8; 16];
    pub fn cosq_f (a: [u8; 16]) -> [u8; 16];
    pub fn erfq_f (a: [u8; 16]) -> [u8; 16];
    pub fn erfcq_f (a: [u8; 16]) -> [u8; 16];
    pub fn expq_f (a: [u8; 16]) -> [u8; 16];
    pub fn expm1q_f (a: [u8; 16]) -> [u8; 16];
    pub fn fabsq_f (a: [u8; 16]) -> [u8; 16];
    pub fn fdimq_f (a: [u8; 16], b: [u8; 16]) -> [u8; 16];
    pub fn finiteq_f (a: [u8; 16]) -> c_int;
    pub fn floorq_f (a: [u8; 16]) -> [u8; 16];
    pub fn fmaq_f (a: [u8; 16], b: [u8; 16], c: [u8; 16]) -> [u8; 16];
    pub fn fmaxq_f (a: [u8; 16], b: [u8; 16]) -> [u8; 16];
    pub fn fminq_f (a: [u8; 16], b: [u8; 16]) -> [u8; 16];
    pub fn fmodq_f (a: [u8; 16], b: [u8; 16]) -> [u8; 16];
    pub fn frexpq_f (a: [u8; 16], b: *mut c_int) -> [u8; 16];
    pub fn hypotq_f (a: [u8; 16], b: [u8; 16]) -> [u8; 16];
    pub fn isinfq_f (a: [u8; 16]) -> c_int;
    pub fn ilogbq_f (a: [u8; 16]) -> c_int;
    pub fn isnanq_f (a: [u8; 16]) -> c_int;
    pub fn j0q_f (a: [u8; 16]) -> [u8; 16];
    pub fn j1q_f (a: [u8; 16]) -> [u8; 16];
    pub fn jnq_f (a: c_int, b: [u8; 16]) -> [u8; 16];
    pub fn ldexpq_f (a: [u8; 16], b: c_int) -> [u8; 16];
    pub fn lgammaq_f (a: [u8; 16]) -> [u8; 16];
    pub fn llrintq_f (a: [u8; 16]) -> c_longlong;
    pub fn llroundq_f (a: [u8; 16]) -> c_longlong;
    pub fn logbq_f (a: [u8; 16]) -> [u8; 16];
    pub fn logq_f (a: [u8; 16]) -> [u8; 16];
    pub fn log10q_f (a: [u8; 16]) -> [u8; 16];
    pub fn log2q_f (a: [u8; 16]) -> [u8; 16];
    pub fn log1pq_f (a: [u8; 16]) -> [u8; 16];
    pub fn lrintq_f (a: [u8; 16]) -> c_longlong;
    pub fn lroundq_f (a: [u8; 16]) -> c_longlong;
    pub fn modfq_f (a: [u8; 16], b: *mut [u8; 16]) -> [u8; 16];
    pub fn nanq_f (a: *mut u8) -> [u8; 16];
    pub fn nearbyintq_f (a: [u8; 16]) -> [u8; 16];
    pub fn nextafterq_f (a: [u8; 16], b: [u8; 16]) -> [u8; 16];
    pub fn powq_f (a: [u8; 16], b: [u8; 16]) -> [u8; 16];
    pub fn remainderq_f (a: [u8; 16], b: [u8; 16]) -> [u8; 16];
    pub fn remquoq_f (a: [u8; 16], b: [u8; 16], c: *mut c_int) -> [u8; 16];
    pub fn rintq_f (a: [u8; 16]) -> [u8; 16];
    pub fn roundq_f (a: [u8; 16]) -> [u8; 16];
    pub fn scalblnq_f (a: [u8; 16], b: c_int) -> [u8; 16];
    pub fn scalbnq_f (a: [u8; 16], b: c_int) -> [u8; 16];
    pub fn signbitq_f (a: [u8; 16]) -> c_int;
    pub fn sincosq_f (a: [u8; 16], b: *mut [u8; 16], c: *mut [u8; 16]) -> [u8; 16];
    pub fn sinhq_f (a: [u8; 16]) -> [u8; 16];
    pub fn sinq_f (a: [u8; 16]) -> [u8; 16];
    pub fn sqrtq_f (a: [u8; 16]) -> [u8; 16];
    pub fn tanq_f (a: [u8; 16]) -> [u8; 16];
    pub fn tanhq_f (a: [u8; 16]) -> [u8; 16];
    pub fn tgammaq_f (a: [u8; 16]) -> [u8; 16];
    pub fn truncq_f (a: [u8; 16]) -> [u8; 16];
    pub fn y0q_f (a: [u8; 16]) -> [u8; 16];
    pub fn y1q_f (a: [u8; 16]) -> [u8; 16];
    pub fn ynq_f (a: c_int, b: [u8; 16]) -> [u8; 16];

    pub fn gtq(lhs: [u8; 16], rhs: [u8; 16]) -> u8;
    pub fn gteq(lhs: [u8; 16], rhs: [u8; 16]) -> u8;
    pub fn eqq(lhs: [u8; 16], rhs: [u8; 16]) -> u8;
    pub fn neqq(lhs: [u8; 16], rhs: [u8; 16]) -> u8;
    pub fn ltq(lhs: [u8; 16], rhs: [u8; 16]) -> u8;
    pub fn lteq(lhs: [u8; 16], rhs: [u8; 16]) -> u8;

}