1use crate::EpDouble;
2use libc::{c_int, c_void};
3use std::os::raw::{c_char, c_double};
4
5unsafe extern "C" {
6 pub fn EpdAlloc() -> *mut EpDouble;
7 pub fn EpdCmp(key1: *const c_void, key2: *const c_void) -> c_int;
8 pub fn EpdFree(epd: *mut EpDouble) -> c_void;
9 pub fn EpdGetString(epd: *const EpDouble, str: *mut c_char) -> c_void;
10 pub fn EpdConvert(value: c_double, epd: *mut EpDouble) -> c_void;
11 pub fn EpdMultiply(epd1: *mut EpDouble, value: c_double) -> c_void;
12 pub fn EpdMultiply2(epd1: *mut EpDouble, epd2: *const EpDouble) -> c_void;
13 pub fn EpdMultiply2Decimal(epd1: *mut EpDouble, epd2: *const EpDouble) -> c_void;
14 pub fn EpdMultiply3(
15 epd1: *const EpDouble,
16 epd2: *const EpDouble,
17 epd3: *mut EpDouble,
18 ) -> c_void;
19 pub fn EpdMultiply3Decimal(
20 epd1: *const EpDouble,
21 epd2: *const EpDouble,
22 epd3: *mut EpDouble,
23 ) -> c_void;
24 pub fn EpdDivide(epd1: *mut EpDouble, value: c_double) -> c_void;
25 pub fn EpdDivide2(epd1: *mut EpDouble, epd2: *const EpDouble) -> c_void;
26 pub fn EpdDivide3(epd1: *const EpDouble, epd2: *const EpDouble, epd3: *mut EpDouble) -> c_void;
27 pub fn EpdAdd(epd1: *mut EpDouble, value: c_double) -> c_void;
28 pub fn EpdAdd2(epd1: *mut EpDouble, epd2: *const EpDouble) -> c_void;
29 pub fn EpdAdd3(epd1: *const EpDouble, epd2: *const EpDouble, epd3: *mut EpDouble) -> c_void;
30 pub fn EpdSubtract(epd1: *mut EpDouble, value: c_double) -> c_void;
31 pub fn EpdSubtract2(epd1: *mut EpDouble, epd2: *const EpDouble) -> c_void;
32 pub fn EpdSubtract3(
33 epd1: *const EpDouble,
34 epd2: *const EpDouble,
35 epd3: *mut EpDouble,
36 ) -> c_void;
37 pub fn EpdPow2(n: c_int, epd: *mut EpDouble) -> c_void;
38 pub fn EpdPow2Decimal(n: c_int, epd: *mut EpDouble) -> c_void;
39 pub fn EpdNormalize(epd: *mut EpDouble) -> c_void;
40 pub fn EpdNormalizeDecimal(epd: *mut EpDouble) -> c_void;
41 pub fn EpdGetValueAndDecimalExponent(
42 epd: *const EpDouble,
43 value: *mut c_double,
44 exponent: *mut c_int,
45 ) -> c_void;
46 pub fn EpdGetExponent(value: c_double) -> c_int;
47 pub fn EpdGetExponentDecimal(value: c_double) -> c_int;
48 pub fn EpdMakeInf(epd: *mut EpDouble, sign: c_int) -> c_void;
49 pub fn EpdMakeZero(epd: *mut EpDouble, sign: c_int) -> c_void;
50 pub fn EpdMakeNan(epd: *mut EpDouble) -> c_void;
51 pub fn EpdCopy(from: *const EpDouble, to: *mut EpDouble) -> c_void;
52 pub fn EpdIsInf(epd: *const EpDouble) -> c_int;
53 pub fn EpdIsZero(epd: *const EpDouble) -> c_int;
54 pub fn EpdIsNan(epd: *const EpDouble) -> c_int;
55 pub fn EpdIsNanOrInf(epd: *const EpDouble) -> c_int;
56 pub fn IsInfDouble(value: c_double) -> c_int;
57 pub fn IsNanDouble(value: c_double) -> c_int;
58 pub fn IsNanOrInfDouble(value: c_double) -> c_int;
59}