cudd_sys/
epd.rs

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}