Skip to main content

mpdec_sys/
bindings.rs

1/* automatically generated by rust-bindgen 0.72.0 */
2
3#[repr(C)]
4#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
5pub struct __BindgenBitfieldUnit<Storage> {
6    storage: Storage,
7}
8impl<Storage> __BindgenBitfieldUnit<Storage> {
9    #[inline]
10    pub const fn new(storage: Storage) -> Self {
11        Self { storage }
12    }
13}
14impl<Storage> __BindgenBitfieldUnit<Storage>
15where
16    Storage: AsRef<[u8]> + AsMut<[u8]>,
17{
18    #[inline]
19    fn extract_bit(byte: u8, index: usize) -> bool {
20        let bit_index = if cfg!(target_endian = "big") {
21            7 - (index % 8)
22        } else {
23            index % 8
24        };
25        let mask = 1 << bit_index;
26        byte & mask == mask
27    }
28    #[inline]
29    pub fn get_bit(&self, index: usize) -> bool {
30        debug_assert!(index / 8 < self.storage.as_ref().len());
31        let byte_index = index / 8;
32        let byte = self.storage.as_ref()[byte_index];
33        Self::extract_bit(byte, index)
34    }
35    #[inline]
36    pub unsafe fn raw_get_bit(this: *const Self, index: usize) -> bool {
37        debug_assert!(index / 8 < core::mem::size_of::<Storage>());
38        let byte_index = index / 8;
39        let byte = unsafe {
40            *(core::ptr::addr_of!((*this).storage) as *const u8).offset(byte_index as isize)
41        };
42        Self::extract_bit(byte, index)
43    }
44    #[inline]
45    fn change_bit(byte: u8, index: usize, val: bool) -> u8 {
46        let bit_index = if cfg!(target_endian = "big") {
47            7 - (index % 8)
48        } else {
49            index % 8
50        };
51        let mask = 1 << bit_index;
52        if val { byte | mask } else { byte & !mask }
53    }
54    #[inline]
55    pub fn set_bit(&mut self, index: usize, val: bool) {
56        debug_assert!(index / 8 < self.storage.as_ref().len());
57        let byte_index = index / 8;
58        let byte = &mut self.storage.as_mut()[byte_index];
59        *byte = Self::change_bit(*byte, index, val);
60    }
61    #[inline]
62    pub unsafe fn raw_set_bit(this: *mut Self, index: usize, val: bool) {
63        debug_assert!(index / 8 < core::mem::size_of::<Storage>());
64        let byte_index = index / 8;
65        let byte = unsafe {
66            (core::ptr::addr_of_mut!((*this).storage) as *mut u8).offset(byte_index as isize)
67        };
68        unsafe { *byte = Self::change_bit(*byte, index, val) };
69    }
70    #[inline]
71    pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 {
72        debug_assert!(bit_width <= 64);
73        debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
74        debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
75        let mut val = 0;
76        for i in 0..(bit_width as usize) {
77            if self.get_bit(i + bit_offset) {
78                let index = if cfg!(target_endian = "big") {
79                    bit_width as usize - 1 - i
80                } else {
81                    i
82                };
83                val |= 1 << index;
84            }
85        }
86        val
87    }
88    #[inline]
89    pub unsafe fn raw_get(this: *const Self, bit_offset: usize, bit_width: u8) -> u64 {
90        debug_assert!(bit_width <= 64);
91        debug_assert!(bit_offset / 8 < core::mem::size_of::<Storage>());
92        debug_assert!((bit_offset + (bit_width as usize)) / 8 <= core::mem::size_of::<Storage>());
93        let mut val = 0;
94        for i in 0..(bit_width as usize) {
95            if unsafe { Self::raw_get_bit(this, i + bit_offset) } {
96                let index = if cfg!(target_endian = "big") {
97                    bit_width as usize - 1 - i
98                } else {
99                    i
100                };
101                val |= 1 << index;
102            }
103        }
104        val
105    }
106    #[inline]
107    pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) {
108        debug_assert!(bit_width <= 64);
109        debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
110        debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
111        for i in 0..(bit_width as usize) {
112            let mask = 1 << i;
113            let val_bit_is_set = val & mask == mask;
114            let index = if cfg!(target_endian = "big") {
115                bit_width as usize - 1 - i
116            } else {
117                i
118            };
119            self.set_bit(index + bit_offset, val_bit_is_set);
120        }
121    }
122    #[inline]
123    pub unsafe fn raw_set(this: *mut Self, bit_offset: usize, bit_width: u8, val: u64) {
124        debug_assert!(bit_width <= 64);
125        debug_assert!(bit_offset / 8 < core::mem::size_of::<Storage>());
126        debug_assert!((bit_offset + (bit_width as usize)) / 8 <= core::mem::size_of::<Storage>());
127        for i in 0..(bit_width as usize) {
128            let mask = 1 << i;
129            let val_bit_is_set = val & mask == mask;
130            let index = if cfg!(target_endian = "big") {
131                bit_width as usize - 1 - i
132            } else {
133                i
134            };
135            unsafe { Self::raw_set_bit(this, index + bit_offset, val_bit_is_set) };
136        }
137    }
138}
139pub const MPD_HIDE_SYMBOLS_START: &[u8; 28] = b"GCC visibility push(hidden)\0";
140pub const MPD_HIDE_SYMBOLS_END: &[u8; 19] = b"GCC visibility pop\0";
141pub const MPD_MAJOR_VERSION: u32 = 4;
142pub const MPD_MINOR_VERSION: u32 = 0;
143pub const MPD_MICRO_VERSION: u32 = 1;
144pub const MPD_VERSION: &[u8; 6] = b"4.0.1\0";
145pub const MPD_VERSION_HEX: u32 = 67109120;
146pub const MPD_CONFIG_64: u32 = 1;
147pub const MPD_BITS_PER_UINT: u32 = 64;
148pub const MPD_SIZE_MAX: i32 = -1;
149pub const MPD_RADIX: i64 = -8446744073709551616;
150pub const MPD_RDIGITS: u32 = 19;
151pub const MPD_MAX_POW10: u32 = 19;
152pub const MPD_EXPDIGITS: u32 = 19;
153pub const MPD_MAXTRANSFORM_2N: u64 = 4294967296;
154pub const MPD_MAX_PREC: u64 = 999999999999999999;
155pub const MPD_MAX_PREC_LOG2: u32 = 64;
156pub const MPD_ELIMIT: u64 = 1000000000000000000;
157pub const MPD_MAX_EMAX: u64 = 999999999999999999;
158pub const MPD_MIN_EMIN: i64 = -999999999999999999;
159pub const MPD_MIN_ETINY: i64 = -1999999999999999997;
160pub const MPD_EXP_INF: u64 = 2000000000000000001;
161pub const MPD_EXP_CLAMP: i64 = -4000000000000000001;
162pub const MPD_MAXIMPORT: u64 = 105263157894736842;
163pub const MPD_IEEE_CONTEXT_MAX_BITS: u32 = 512;
164pub const MPD_Clamped: u32 = 1;
165pub const MPD_Conversion_syntax: u32 = 2;
166pub const MPD_Division_by_zero: u32 = 4;
167pub const MPD_Division_impossible: u32 = 8;
168pub const MPD_Division_undefined: u32 = 16;
169pub const MPD_Fpu_error: u32 = 32;
170pub const MPD_Inexact: u32 = 64;
171pub const MPD_Invalid_context: u32 = 128;
172pub const MPD_Invalid_operation: u32 = 256;
173pub const MPD_Malloc_error: u32 = 512;
174pub const MPD_Not_implemented: u32 = 1024;
175pub const MPD_Overflow: u32 = 2048;
176pub const MPD_Rounded: u32 = 4096;
177pub const MPD_Subnormal: u32 = 8192;
178pub const MPD_Underflow: u32 = 16384;
179pub const MPD_Max_status: u32 = 32767;
180pub const MPD_IEEE_Invalid_operation: u32 = 954;
181pub const MPD_Errors: u32 = 958;
182pub const MPD_Traps: u32 = 19390;
183pub const MPD_Insufficient_storage: u32 = 512;
184pub const MPD_DECIMAL32: u32 = 32;
185pub const MPD_DECIMAL64: u32 = 64;
186pub const MPD_DECIMAL128: u32 = 128;
187pub const MPD_MINALLOC_MIN: u32 = 2;
188pub const MPD_MINALLOC_MAX: u32 = 64;
189pub const MPD_NUM_FLAGS: u32 = 15;
190pub const MPD_MAX_FLAG_STRING: u32 = 208;
191pub const MPD_MAX_FLAG_LIST: u32 = 226;
192pub const MPD_MAX_SIGNAL_LIST: u32 = 121;
193pub type __off_t = ::std::os::raw::c_long;
194pub type __off64_t = ::std::os::raw::c_long;
195pub type FILE = _IO_FILE;
196#[repr(C)]
197#[derive(Debug, Copy, Clone)]
198pub struct _IO_marker {
199    _unused: [u8; 0],
200}
201#[repr(C)]
202#[derive(Debug, Copy, Clone)]
203pub struct _IO_codecvt {
204    _unused: [u8; 0],
205}
206#[repr(C)]
207#[derive(Debug, Copy, Clone)]
208pub struct _IO_wide_data {
209    _unused: [u8; 0],
210}
211pub type _IO_lock_t = ::std::os::raw::c_void;
212#[repr(C)]
213#[derive(Debug, Copy, Clone)]
214pub struct _IO_FILE {
215    pub _flags: ::std::os::raw::c_int,
216    pub _IO_read_ptr: *mut ::std::os::raw::c_char,
217    pub _IO_read_end: *mut ::std::os::raw::c_char,
218    pub _IO_read_base: *mut ::std::os::raw::c_char,
219    pub _IO_write_base: *mut ::std::os::raw::c_char,
220    pub _IO_write_ptr: *mut ::std::os::raw::c_char,
221    pub _IO_write_end: *mut ::std::os::raw::c_char,
222    pub _IO_buf_base: *mut ::std::os::raw::c_char,
223    pub _IO_buf_end: *mut ::std::os::raw::c_char,
224    pub _IO_save_base: *mut ::std::os::raw::c_char,
225    pub _IO_backup_base: *mut ::std::os::raw::c_char,
226    pub _IO_save_end: *mut ::std::os::raw::c_char,
227    pub _markers: *mut _IO_marker,
228    pub _chain: *mut _IO_FILE,
229    pub _fileno: ::std::os::raw::c_int,
230    pub _bitfield_align_1: [u32; 0],
231    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 3usize]>,
232    pub _short_backupbuf: [::std::os::raw::c_char; 1usize],
233    pub _old_offset: __off_t,
234    pub _cur_column: ::std::os::raw::c_ushort,
235    pub _vtable_offset: ::std::os::raw::c_schar,
236    pub _shortbuf: [::std::os::raw::c_char; 1usize],
237    pub _lock: *mut _IO_lock_t,
238    pub _offset: __off64_t,
239    pub _codecvt: *mut _IO_codecvt,
240    pub _wide_data: *mut _IO_wide_data,
241    pub _freeres_list: *mut _IO_FILE,
242    pub _freeres_buf: *mut ::std::os::raw::c_void,
243    pub _prevchain: *mut *mut _IO_FILE,
244    pub _mode: ::std::os::raw::c_int,
245    pub _unused2: [::std::os::raw::c_char; 20usize],
246}
247#[allow(clippy::unnecessary_operation, clippy::identity_op)]
248const _: () = {
249    ["Size of _IO_FILE"][::std::mem::size_of::<_IO_FILE>() - 216usize];
250    ["Alignment of _IO_FILE"][::std::mem::align_of::<_IO_FILE>() - 8usize];
251    ["Offset of field: _IO_FILE::_flags"][::std::mem::offset_of!(_IO_FILE, _flags) - 0usize];
252    ["Offset of field: _IO_FILE::_IO_read_ptr"]
253        [::std::mem::offset_of!(_IO_FILE, _IO_read_ptr) - 8usize];
254    ["Offset of field: _IO_FILE::_IO_read_end"]
255        [::std::mem::offset_of!(_IO_FILE, _IO_read_end) - 16usize];
256    ["Offset of field: _IO_FILE::_IO_read_base"]
257        [::std::mem::offset_of!(_IO_FILE, _IO_read_base) - 24usize];
258    ["Offset of field: _IO_FILE::_IO_write_base"]
259        [::std::mem::offset_of!(_IO_FILE, _IO_write_base) - 32usize];
260    ["Offset of field: _IO_FILE::_IO_write_ptr"]
261        [::std::mem::offset_of!(_IO_FILE, _IO_write_ptr) - 40usize];
262    ["Offset of field: _IO_FILE::_IO_write_end"]
263        [::std::mem::offset_of!(_IO_FILE, _IO_write_end) - 48usize];
264    ["Offset of field: _IO_FILE::_IO_buf_base"]
265        [::std::mem::offset_of!(_IO_FILE, _IO_buf_base) - 56usize];
266    ["Offset of field: _IO_FILE::_IO_buf_end"]
267        [::std::mem::offset_of!(_IO_FILE, _IO_buf_end) - 64usize];
268    ["Offset of field: _IO_FILE::_IO_save_base"]
269        [::std::mem::offset_of!(_IO_FILE, _IO_save_base) - 72usize];
270    ["Offset of field: _IO_FILE::_IO_backup_base"]
271        [::std::mem::offset_of!(_IO_FILE, _IO_backup_base) - 80usize];
272    ["Offset of field: _IO_FILE::_IO_save_end"]
273        [::std::mem::offset_of!(_IO_FILE, _IO_save_end) - 88usize];
274    ["Offset of field: _IO_FILE::_markers"][::std::mem::offset_of!(_IO_FILE, _markers) - 96usize];
275    ["Offset of field: _IO_FILE::_chain"][::std::mem::offset_of!(_IO_FILE, _chain) - 104usize];
276    ["Offset of field: _IO_FILE::_fileno"][::std::mem::offset_of!(_IO_FILE, _fileno) - 112usize];
277    ["Offset of field: _IO_FILE::_short_backupbuf"]
278        [::std::mem::offset_of!(_IO_FILE, _short_backupbuf) - 119usize];
279    ["Offset of field: _IO_FILE::_old_offset"]
280        [::std::mem::offset_of!(_IO_FILE, _old_offset) - 120usize];
281    ["Offset of field: _IO_FILE::_cur_column"]
282        [::std::mem::offset_of!(_IO_FILE, _cur_column) - 128usize];
283    ["Offset of field: _IO_FILE::_vtable_offset"]
284        [::std::mem::offset_of!(_IO_FILE, _vtable_offset) - 130usize];
285    ["Offset of field: _IO_FILE::_shortbuf"]
286        [::std::mem::offset_of!(_IO_FILE, _shortbuf) - 131usize];
287    ["Offset of field: _IO_FILE::_lock"][::std::mem::offset_of!(_IO_FILE, _lock) - 136usize];
288    ["Offset of field: _IO_FILE::_offset"][::std::mem::offset_of!(_IO_FILE, _offset) - 144usize];
289    ["Offset of field: _IO_FILE::_codecvt"][::std::mem::offset_of!(_IO_FILE, _codecvt) - 152usize];
290    ["Offset of field: _IO_FILE::_wide_data"]
291        [::std::mem::offset_of!(_IO_FILE, _wide_data) - 160usize];
292    ["Offset of field: _IO_FILE::_freeres_list"]
293        [::std::mem::offset_of!(_IO_FILE, _freeres_list) - 168usize];
294    ["Offset of field: _IO_FILE::_freeres_buf"]
295        [::std::mem::offset_of!(_IO_FILE, _freeres_buf) - 176usize];
296    ["Offset of field: _IO_FILE::_prevchain"]
297        [::std::mem::offset_of!(_IO_FILE, _prevchain) - 184usize];
298    ["Offset of field: _IO_FILE::_mode"][::std::mem::offset_of!(_IO_FILE, _mode) - 192usize];
299    ["Offset of field: _IO_FILE::_unused2"][::std::mem::offset_of!(_IO_FILE, _unused2) - 196usize];
300};
301impl _IO_FILE {
302    #[inline]
303    pub fn _flags2(&self) -> ::std::os::raw::c_int {
304        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 24u8) as u32) }
305    }
306    #[inline]
307    pub fn set__flags2(&mut self, val: ::std::os::raw::c_int) {
308        unsafe {
309            let val: u32 = ::std::mem::transmute(val);
310            self._bitfield_1.set(0usize, 24u8, val as u64)
311        }
312    }
313    #[inline]
314    pub unsafe fn _flags2_raw(this: *const Self) -> ::std::os::raw::c_int {
315        unsafe {
316            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 3usize]>>::raw_get(
317                ::std::ptr::addr_of!((*this)._bitfield_1),
318                0usize,
319                24u8,
320            ) as u32)
321        }
322    }
323    #[inline]
324    pub unsafe fn set__flags2_raw(this: *mut Self, val: ::std::os::raw::c_int) {
325        unsafe {
326            let val: u32 = ::std::mem::transmute(val);
327            <__BindgenBitfieldUnit<[u8; 3usize]>>::raw_set(
328                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
329                0usize,
330                24u8,
331                val as u64,
332            )
333        }
334    }
335    #[inline]
336    pub fn new_bitfield_1(_flags2: ::std::os::raw::c_int) -> __BindgenBitfieldUnit<[u8; 3usize]> {
337        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 3usize]> = Default::default();
338        __bindgen_bitfield_unit.set(0usize, 24u8, {
339            let _flags2: u32 = unsafe { ::std::mem::transmute(_flags2) };
340            _flags2 as u64
341        });
342        __bindgen_bitfield_unit
343    }
344}
345pub type mpd_uint_t = u64;
346pub type mpd_size_t = usize;
347pub type mpd_ssize_t = i64;
348pub const MPD_ROUND_UP: _bindgen_ty_1 = 0;
349pub const MPD_ROUND_DOWN: _bindgen_ty_1 = 1;
350pub const MPD_ROUND_CEILING: _bindgen_ty_1 = 2;
351pub const MPD_ROUND_FLOOR: _bindgen_ty_1 = 3;
352pub const MPD_ROUND_HALF_UP: _bindgen_ty_1 = 4;
353pub const MPD_ROUND_HALF_DOWN: _bindgen_ty_1 = 5;
354pub const MPD_ROUND_HALF_EVEN: _bindgen_ty_1 = 6;
355pub const MPD_ROUND_05UP: _bindgen_ty_1 = 7;
356pub const MPD_ROUND_TRUNC: _bindgen_ty_1 = 8;
357pub const MPD_ROUND_GUARD: _bindgen_ty_1 = 9;
358pub type _bindgen_ty_1 = ::std::os::raw::c_uint;
359pub const MPD_CLAMP_DEFAULT: _bindgen_ty_2 = 0;
360pub const MPD_CLAMP_IEEE_754: _bindgen_ty_2 = 1;
361pub const MPD_CLAMP_GUARD: _bindgen_ty_2 = 2;
362pub type _bindgen_ty_2 = ::std::os::raw::c_uint;
363#[repr(C)]
364#[derive(Debug, Copy, Clone)]
365pub struct mpd_context_t {
366    pub prec: mpd_ssize_t,
367    pub emax: mpd_ssize_t,
368    pub emin: mpd_ssize_t,
369    pub traps: u32,
370    pub status: u32,
371    pub newtrap: u32,
372    pub round: ::std::os::raw::c_int,
373    pub clamp: ::std::os::raw::c_int,
374    pub allcr: ::std::os::raw::c_int,
375}
376#[allow(clippy::unnecessary_operation, clippy::identity_op)]
377const _: () = {
378    ["Size of mpd_context_t"][::std::mem::size_of::<mpd_context_t>() - 48usize];
379    ["Alignment of mpd_context_t"][::std::mem::align_of::<mpd_context_t>() - 8usize];
380    ["Offset of field: mpd_context_t::prec"][::std::mem::offset_of!(mpd_context_t, prec) - 0usize];
381    ["Offset of field: mpd_context_t::emax"][::std::mem::offset_of!(mpd_context_t, emax) - 8usize];
382    ["Offset of field: mpd_context_t::emin"][::std::mem::offset_of!(mpd_context_t, emin) - 16usize];
383    ["Offset of field: mpd_context_t::traps"]
384        [::std::mem::offset_of!(mpd_context_t, traps) - 24usize];
385    ["Offset of field: mpd_context_t::status"]
386        [::std::mem::offset_of!(mpd_context_t, status) - 28usize];
387    ["Offset of field: mpd_context_t::newtrap"]
388        [::std::mem::offset_of!(mpd_context_t, newtrap) - 32usize];
389    ["Offset of field: mpd_context_t::round"]
390        [::std::mem::offset_of!(mpd_context_t, round) - 36usize];
391    ["Offset of field: mpd_context_t::clamp"]
392        [::std::mem::offset_of!(mpd_context_t, clamp) - 40usize];
393    ["Offset of field: mpd_context_t::allcr"]
394        [::std::mem::offset_of!(mpd_context_t, allcr) - 44usize];
395};
396#[repr(C)]
397#[derive(Debug, Copy, Clone)]
398pub struct mpd_t {
399    pub flags: u8,
400    pub exp: mpd_ssize_t,
401    pub digits: mpd_ssize_t,
402    pub len: mpd_ssize_t,
403    pub alloc: mpd_ssize_t,
404    pub data: *mut mpd_uint_t,
405}
406#[allow(clippy::unnecessary_operation, clippy::identity_op)]
407const _: () = {
408    ["Size of mpd_t"][::std::mem::size_of::<mpd_t>() - 48usize];
409    ["Alignment of mpd_t"][::std::mem::align_of::<mpd_t>() - 8usize];
410    ["Offset of field: mpd_t::flags"][::std::mem::offset_of!(mpd_t, flags) - 0usize];
411    ["Offset of field: mpd_t::exp"][::std::mem::offset_of!(mpd_t, exp) - 8usize];
412    ["Offset of field: mpd_t::digits"][::std::mem::offset_of!(mpd_t, digits) - 16usize];
413    ["Offset of field: mpd_t::len"][::std::mem::offset_of!(mpd_t, len) - 24usize];
414    ["Offset of field: mpd_t::alloc"][::std::mem::offset_of!(mpd_t, alloc) - 32usize];
415    ["Offset of field: mpd_t::data"][::std::mem::offset_of!(mpd_t, data) - 40usize];
416};
417pub const mpd_triple_class_MPD_TRIPLE_NORMAL: mpd_triple_class = 0;
418pub const mpd_triple_class_MPD_TRIPLE_INF: mpd_triple_class = 1;
419pub const mpd_triple_class_MPD_TRIPLE_QNAN: mpd_triple_class = 2;
420pub const mpd_triple_class_MPD_TRIPLE_SNAN: mpd_triple_class = 3;
421pub const mpd_triple_class_MPD_TRIPLE_ERROR: mpd_triple_class = 4;
422pub type mpd_triple_class = ::std::os::raw::c_uint;
423#[repr(C)]
424#[derive(Debug, Copy, Clone)]
425pub struct mpd_uint128_triple_t {
426    pub tag: mpd_triple_class,
427    pub sign: u8,
428    pub hi: u64,
429    pub lo: u64,
430    pub exp: i64,
431}
432#[allow(clippy::unnecessary_operation, clippy::identity_op)]
433const _: () = {
434    ["Size of mpd_uint128_triple_t"][::std::mem::size_of::<mpd_uint128_triple_t>() - 32usize];
435    ["Alignment of mpd_uint128_triple_t"][::std::mem::align_of::<mpd_uint128_triple_t>() - 8usize];
436    ["Offset of field: mpd_uint128_triple_t::tag"]
437        [::std::mem::offset_of!(mpd_uint128_triple_t, tag) - 0usize];
438    ["Offset of field: mpd_uint128_triple_t::sign"]
439        [::std::mem::offset_of!(mpd_uint128_triple_t, sign) - 4usize];
440    ["Offset of field: mpd_uint128_triple_t::hi"]
441        [::std::mem::offset_of!(mpd_uint128_triple_t, hi) - 8usize];
442    ["Offset of field: mpd_uint128_triple_t::lo"]
443        [::std::mem::offset_of!(mpd_uint128_triple_t, lo) - 16usize];
444    ["Offset of field: mpd_uint128_triple_t::exp"]
445        [::std::mem::offset_of!(mpd_uint128_triple_t, exp) - 24usize];
446};
447#[repr(C)]
448#[derive(Debug, Copy, Clone)]
449pub struct mpd_spec_t {
450    pub min_width: mpd_ssize_t,
451    pub prec: mpd_ssize_t,
452    pub type_: ::std::os::raw::c_char,
453    pub align: ::std::os::raw::c_char,
454    pub sign: ::std::os::raw::c_char,
455    pub sign_coerce: ::std::os::raw::c_char,
456    pub fill: [::std::os::raw::c_char; 5usize],
457    pub dot: *const ::std::os::raw::c_char,
458    pub sep: *const ::std::os::raw::c_char,
459    pub grouping: *const ::std::os::raw::c_char,
460}
461#[allow(clippy::unnecessary_operation, clippy::identity_op)]
462const _: () = {
463    ["Size of mpd_spec_t"][::std::mem::size_of::<mpd_spec_t>() - 56usize];
464    ["Alignment of mpd_spec_t"][::std::mem::align_of::<mpd_spec_t>() - 8usize];
465    ["Offset of field: mpd_spec_t::min_width"]
466        [::std::mem::offset_of!(mpd_spec_t, min_width) - 0usize];
467    ["Offset of field: mpd_spec_t::prec"][::std::mem::offset_of!(mpd_spec_t, prec) - 8usize];
468    ["Offset of field: mpd_spec_t::type_"][::std::mem::offset_of!(mpd_spec_t, type_) - 16usize];
469    ["Offset of field: mpd_spec_t::align"][::std::mem::offset_of!(mpd_spec_t, align) - 17usize];
470    ["Offset of field: mpd_spec_t::sign"][::std::mem::offset_of!(mpd_spec_t, sign) - 18usize];
471    ["Offset of field: mpd_spec_t::sign_coerce"]
472        [::std::mem::offset_of!(mpd_spec_t, sign_coerce) - 19usize];
473    ["Offset of field: mpd_spec_t::fill"][::std::mem::offset_of!(mpd_spec_t, fill) - 20usize];
474    ["Offset of field: mpd_spec_t::dot"][::std::mem::offset_of!(mpd_spec_t, dot) - 32usize];
475    ["Offset of field: mpd_spec_t::sep"][::std::mem::offset_of!(mpd_spec_t, sep) - 40usize];
476    ["Offset of field: mpd_spec_t::grouping"]
477        [::std::mem::offset_of!(mpd_spec_t, grouping) - 48usize];
478};
479unsafe extern "C" {
480    pub fn mpd_version() -> *const ::std::os::raw::c_char;
481    pub static mut MPD_MINALLOC: mpd_ssize_t;
482    pub fn mpd_dflt_traphandler(arg1: *mut mpd_context_t);
483    pub fn mpd_setminalloc(n: mpd_ssize_t);
484    pub fn mpd_init(ctx: *mut mpd_context_t, prec: mpd_ssize_t);
485    pub fn mpd_maxcontext(ctx: *mut mpd_context_t);
486    pub fn mpd_defaultcontext(ctx: *mut mpd_context_t);
487    pub fn mpd_basiccontext(ctx: *mut mpd_context_t);
488    pub fn mpd_ieee_context(
489        ctx: *mut mpd_context_t,
490        bits: ::std::os::raw::c_int,
491    ) -> ::std::os::raw::c_int;
492    pub fn mpd_getprec(ctx: *const mpd_context_t) -> mpd_ssize_t;
493    pub fn mpd_getemax(ctx: *const mpd_context_t) -> mpd_ssize_t;
494    pub fn mpd_getemin(ctx: *const mpd_context_t) -> mpd_ssize_t;
495    pub fn mpd_getround(ctx: *const mpd_context_t) -> ::std::os::raw::c_int;
496    pub fn mpd_gettraps(ctx: *const mpd_context_t) -> u32;
497    pub fn mpd_getstatus(ctx: *const mpd_context_t) -> u32;
498    pub fn mpd_getclamp(ctx: *const mpd_context_t) -> ::std::os::raw::c_int;
499    pub fn mpd_getcr(ctx: *const mpd_context_t) -> ::std::os::raw::c_int;
500    pub fn mpd_qsetprec(ctx: *mut mpd_context_t, prec: mpd_ssize_t) -> ::std::os::raw::c_int;
501    pub fn mpd_qsetemax(ctx: *mut mpd_context_t, emax: mpd_ssize_t) -> ::std::os::raw::c_int;
502    pub fn mpd_qsetemin(ctx: *mut mpd_context_t, emin: mpd_ssize_t) -> ::std::os::raw::c_int;
503    pub fn mpd_qsetround(
504        ctx: *mut mpd_context_t,
505        newround: ::std::os::raw::c_int,
506    ) -> ::std::os::raw::c_int;
507    pub fn mpd_qsettraps(ctx: *mut mpd_context_t, flags: u32) -> ::std::os::raw::c_int;
508    pub fn mpd_qsetstatus(ctx: *mut mpd_context_t, flags: u32) -> ::std::os::raw::c_int;
509    pub fn mpd_qsetclamp(
510        ctx: *mut mpd_context_t,
511        c: ::std::os::raw::c_int,
512    ) -> ::std::os::raw::c_int;
513    pub fn mpd_qsetcr(ctx: *mut mpd_context_t, c: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
514    pub fn mpd_addstatus_raise(ctx: *mut mpd_context_t, flags: u32);
515    pub fn mpd_from_uint128_triple(
516        result: *mut mpd_t,
517        triple: *const mpd_uint128_triple_t,
518        status: *mut u32,
519    ) -> ::std::os::raw::c_int;
520    pub fn mpd_as_uint128_triple(a: *const mpd_t) -> mpd_uint128_triple_t;
521    pub fn mpd_to_sci(dec: *const mpd_t, fmt: ::std::os::raw::c_int)
522    -> *mut ::std::os::raw::c_char;
523    pub fn mpd_to_eng(dec: *const mpd_t, fmt: ::std::os::raw::c_int)
524    -> *mut ::std::os::raw::c_char;
525    pub fn mpd_to_sci_size(
526        res: *mut *mut ::std::os::raw::c_char,
527        dec: *const mpd_t,
528        fmt: ::std::os::raw::c_int,
529    ) -> mpd_ssize_t;
530    pub fn mpd_to_eng_size(
531        res: *mut *mut ::std::os::raw::c_char,
532        dec: *const mpd_t,
533        fmt: ::std::os::raw::c_int,
534    ) -> mpd_ssize_t;
535    pub fn mpd_validate_lconv(spec: *mut mpd_spec_t) -> ::std::os::raw::c_int;
536    pub fn mpd_parse_fmt_str(
537        spec: *mut mpd_spec_t,
538        fmt: *const ::std::os::raw::c_char,
539        caps: ::std::os::raw::c_int,
540    ) -> ::std::os::raw::c_int;
541    pub fn mpd_qformat_spec(
542        dec: *const mpd_t,
543        spec: *const mpd_spec_t,
544        ctx: *const mpd_context_t,
545        status: *mut u32,
546    ) -> *mut ::std::os::raw::c_char;
547    pub fn mpd_qformat(
548        dec: *const mpd_t,
549        fmt: *const ::std::os::raw::c_char,
550        ctx: *const mpd_context_t,
551        status: *mut u32,
552    ) -> *mut ::std::os::raw::c_char;
553    pub fn mpd_snprint_flags(
554        dest: *mut ::std::os::raw::c_char,
555        nmemb: ::std::os::raw::c_int,
556        flags: u32,
557    ) -> ::std::os::raw::c_int;
558    pub fn mpd_lsnprint_flags(
559        dest: *mut ::std::os::raw::c_char,
560        nmemb: ::std::os::raw::c_int,
561        flags: u32,
562        flag_string: *mut *const ::std::os::raw::c_char,
563    ) -> ::std::os::raw::c_int;
564    pub fn mpd_lsnprint_signals(
565        dest: *mut ::std::os::raw::c_char,
566        nmemb: ::std::os::raw::c_int,
567        flags: u32,
568        signal_string: *mut *const ::std::os::raw::c_char,
569    ) -> ::std::os::raw::c_int;
570    pub fn mpd_fprint(file: *mut FILE, dec: *const mpd_t);
571    pub fn mpd_print(dec: *const mpd_t);
572    pub fn mpd_qset_string(
573        dec: *mut mpd_t,
574        s: *const ::std::os::raw::c_char,
575        ctx: *const mpd_context_t,
576        status: *mut u32,
577    );
578    pub fn mpd_qset_string_exact(
579        dec: *mut mpd_t,
580        s: *const ::std::os::raw::c_char,
581        status: *mut u32,
582    );
583    pub fn mpd_seterror(result: *mut mpd_t, flags: u32, status: *mut u32);
584    pub fn mpd_setspecial(result: *mut mpd_t, sign: u8, type_: u8);
585    pub fn mpd_zerocoeff(result: *mut mpd_t);
586    pub fn mpd_qmaxcoeff(result: *mut mpd_t, ctx: *const mpd_context_t, status: *mut u32);
587    pub fn mpd_qset_ssize(
588        result: *mut mpd_t,
589        a: mpd_ssize_t,
590        ctx: *const mpd_context_t,
591        status: *mut u32,
592    );
593    pub fn mpd_qset_i32(result: *mut mpd_t, a: i32, ctx: *const mpd_context_t, status: *mut u32);
594    pub fn mpd_qset_uint(
595        result: *mut mpd_t,
596        a: mpd_uint_t,
597        ctx: *const mpd_context_t,
598        status: *mut u32,
599    );
600    pub fn mpd_qset_u32(result: *mut mpd_t, a: u32, ctx: *const mpd_context_t, status: *mut u32);
601    pub fn mpd_qset_i64(result: *mut mpd_t, a: i64, ctx: *const mpd_context_t, status: *mut u32);
602    pub fn mpd_qset_u64(result: *mut mpd_t, a: u64, ctx: *const mpd_context_t, status: *mut u32);
603    pub fn mpd_qset_i64_exact(result: *mut mpd_t, a: i64, status: *mut u32);
604    pub fn mpd_qset_u64_exact(result: *mut mpd_t, a: u64, status: *mut u32);
605    pub fn mpd_qsset_ssize(
606        result: *mut mpd_t,
607        a: mpd_ssize_t,
608        ctx: *const mpd_context_t,
609        status: *mut u32,
610    );
611    pub fn mpd_qsset_i32(result: *mut mpd_t, a: i32, ctx: *const mpd_context_t, status: *mut u32);
612    pub fn mpd_qsset_uint(
613        result: *mut mpd_t,
614        a: mpd_uint_t,
615        ctx: *const mpd_context_t,
616        status: *mut u32,
617    );
618    pub fn mpd_qsset_u32(result: *mut mpd_t, a: u32, ctx: *const mpd_context_t, status: *mut u32);
619    pub fn mpd_qget_ssize(dec: *const mpd_t, status: *mut u32) -> mpd_ssize_t;
620    pub fn mpd_qget_uint(dec: *const mpd_t, status: *mut u32) -> mpd_uint_t;
621    pub fn mpd_qabs_uint(dec: *const mpd_t, status: *mut u32) -> mpd_uint_t;
622    pub fn mpd_qget_i32(dec: *const mpd_t, status: *mut u32) -> i32;
623    pub fn mpd_qget_u32(dec: *const mpd_t, status: *mut u32) -> u32;
624    pub fn mpd_qget_i64(dec: *const mpd_t, status: *mut u32) -> i64;
625    pub fn mpd_qget_u64(dec: *const mpd_t, status: *mut u32) -> u64;
626    pub fn mpd_qcheck_nan(
627        nanresult: *mut mpd_t,
628        a: *const mpd_t,
629        ctx: *const mpd_context_t,
630        status: *mut u32,
631    ) -> ::std::os::raw::c_int;
632    pub fn mpd_qcheck_nans(
633        nanresult: *mut mpd_t,
634        a: *const mpd_t,
635        b: *const mpd_t,
636        ctx: *const mpd_context_t,
637        status: *mut u32,
638    ) -> ::std::os::raw::c_int;
639    pub fn mpd_qfinalize(result: *mut mpd_t, ctx: *const mpd_context_t, status: *mut u32);
640    pub fn mpd_class(a: *const mpd_t, ctx: *const mpd_context_t) -> *const ::std::os::raw::c_char;
641    pub fn mpd_qcopy(
642        result: *mut mpd_t,
643        a: *const mpd_t,
644        status: *mut u32,
645    ) -> ::std::os::raw::c_int;
646    pub fn mpd_qcopy_cxx(result: *mut mpd_t, a: *const mpd_t) -> ::std::os::raw::c_int;
647    pub fn mpd_qncopy(a: *const mpd_t) -> *mut mpd_t;
648    pub fn mpd_qcopy_abs(
649        result: *mut mpd_t,
650        a: *const mpd_t,
651        status: *mut u32,
652    ) -> ::std::os::raw::c_int;
653    pub fn mpd_qcopy_negate(
654        result: *mut mpd_t,
655        a: *const mpd_t,
656        status: *mut u32,
657    ) -> ::std::os::raw::c_int;
658    pub fn mpd_qcopy_sign(
659        result: *mut mpd_t,
660        a: *const mpd_t,
661        b: *const mpd_t,
662        status: *mut u32,
663    ) -> ::std::os::raw::c_int;
664    pub fn mpd_qand(
665        result: *mut mpd_t,
666        a: *const mpd_t,
667        b: *const mpd_t,
668        ctx: *const mpd_context_t,
669        status: *mut u32,
670    );
671    pub fn mpd_qinvert(
672        result: *mut mpd_t,
673        a: *const mpd_t,
674        ctx: *const mpd_context_t,
675        status: *mut u32,
676    );
677    pub fn mpd_qlogb(
678        result: *mut mpd_t,
679        a: *const mpd_t,
680        ctx: *const mpd_context_t,
681        status: *mut u32,
682    );
683    pub fn mpd_qor(
684        result: *mut mpd_t,
685        a: *const mpd_t,
686        b: *const mpd_t,
687        ctx: *const mpd_context_t,
688        status: *mut u32,
689    );
690    pub fn mpd_qscaleb(
691        result: *mut mpd_t,
692        a: *const mpd_t,
693        b: *const mpd_t,
694        ctx: *const mpd_context_t,
695        status: *mut u32,
696    );
697    pub fn mpd_qxor(
698        result: *mut mpd_t,
699        a: *const mpd_t,
700        b: *const mpd_t,
701        ctx: *const mpd_context_t,
702        status: *mut u32,
703    );
704    pub fn mpd_same_quantum(a: *const mpd_t, b: *const mpd_t) -> ::std::os::raw::c_int;
705    pub fn mpd_qrotate(
706        result: *mut mpd_t,
707        a: *const mpd_t,
708        b: *const mpd_t,
709        ctx: *const mpd_context_t,
710        status: *mut u32,
711    );
712    pub fn mpd_qshiftl(
713        result: *mut mpd_t,
714        a: *const mpd_t,
715        n: mpd_ssize_t,
716        status: *mut u32,
717    ) -> ::std::os::raw::c_int;
718    pub fn mpd_qshiftr(
719        result: *mut mpd_t,
720        a: *const mpd_t,
721        n: mpd_ssize_t,
722        status: *mut u32,
723    ) -> mpd_uint_t;
724    pub fn mpd_qshiftr_inplace(result: *mut mpd_t, n: mpd_ssize_t) -> mpd_uint_t;
725    pub fn mpd_qshift(
726        result: *mut mpd_t,
727        a: *const mpd_t,
728        b: *const mpd_t,
729        ctx: *const mpd_context_t,
730        status: *mut u32,
731    );
732    pub fn mpd_qshiftn(
733        result: *mut mpd_t,
734        a: *const mpd_t,
735        n: mpd_ssize_t,
736        ctx: *const mpd_context_t,
737        status: *mut u32,
738    );
739    pub fn mpd_qcmp(a: *const mpd_t, b: *const mpd_t, status: *mut u32) -> ::std::os::raw::c_int;
740    pub fn mpd_qcompare(
741        result: *mut mpd_t,
742        a: *const mpd_t,
743        b: *const mpd_t,
744        ctx: *const mpd_context_t,
745        status: *mut u32,
746    ) -> ::std::os::raw::c_int;
747    pub fn mpd_qcompare_signal(
748        result: *mut mpd_t,
749        a: *const mpd_t,
750        b: *const mpd_t,
751        ctx: *const mpd_context_t,
752        status: *mut u32,
753    ) -> ::std::os::raw::c_int;
754    pub fn mpd_cmp_total(a: *const mpd_t, b: *const mpd_t) -> ::std::os::raw::c_int;
755    pub fn mpd_cmp_total_mag(a: *const mpd_t, b: *const mpd_t) -> ::std::os::raw::c_int;
756    pub fn mpd_compare_total(
757        result: *mut mpd_t,
758        a: *const mpd_t,
759        b: *const mpd_t,
760    ) -> ::std::os::raw::c_int;
761    pub fn mpd_compare_total_mag(
762        result: *mut mpd_t,
763        a: *const mpd_t,
764        b: *const mpd_t,
765    ) -> ::std::os::raw::c_int;
766    pub fn mpd_qround_to_intx(
767        result: *mut mpd_t,
768        a: *const mpd_t,
769        ctx: *const mpd_context_t,
770        status: *mut u32,
771    );
772    pub fn mpd_qround_to_int(
773        result: *mut mpd_t,
774        a: *const mpd_t,
775        ctx: *const mpd_context_t,
776        status: *mut u32,
777    );
778    pub fn mpd_qtrunc(
779        result: *mut mpd_t,
780        a: *const mpd_t,
781        ctx: *const mpd_context_t,
782        status: *mut u32,
783    );
784    pub fn mpd_qfloor(
785        result: *mut mpd_t,
786        a: *const mpd_t,
787        ctx: *const mpd_context_t,
788        status: *mut u32,
789    );
790    pub fn mpd_qceil(
791        result: *mut mpd_t,
792        a: *const mpd_t,
793        ctx: *const mpd_context_t,
794        status: *mut u32,
795    );
796    pub fn mpd_qabs(
797        result: *mut mpd_t,
798        a: *const mpd_t,
799        ctx: *const mpd_context_t,
800        status: *mut u32,
801    );
802    pub fn mpd_qmax(
803        result: *mut mpd_t,
804        a: *const mpd_t,
805        b: *const mpd_t,
806        ctx: *const mpd_context_t,
807        status: *mut u32,
808    );
809    pub fn mpd_qmax_mag(
810        result: *mut mpd_t,
811        a: *const mpd_t,
812        b: *const mpd_t,
813        ctx: *const mpd_context_t,
814        status: *mut u32,
815    );
816    pub fn mpd_qmin(
817        result: *mut mpd_t,
818        a: *const mpd_t,
819        b: *const mpd_t,
820        ctx: *const mpd_context_t,
821        status: *mut u32,
822    );
823    pub fn mpd_qmin_mag(
824        result: *mut mpd_t,
825        a: *const mpd_t,
826        b: *const mpd_t,
827        ctx: *const mpd_context_t,
828        status: *mut u32,
829    );
830    pub fn mpd_qminus(
831        result: *mut mpd_t,
832        a: *const mpd_t,
833        ctx: *const mpd_context_t,
834        status: *mut u32,
835    );
836    pub fn mpd_qplus(
837        result: *mut mpd_t,
838        a: *const mpd_t,
839        ctx: *const mpd_context_t,
840        status: *mut u32,
841    );
842    pub fn mpd_qnext_minus(
843        result: *mut mpd_t,
844        a: *const mpd_t,
845        ctx: *const mpd_context_t,
846        status: *mut u32,
847    );
848    pub fn mpd_qnext_plus(
849        result: *mut mpd_t,
850        a: *const mpd_t,
851        ctx: *const mpd_context_t,
852        status: *mut u32,
853    );
854    pub fn mpd_qnext_toward(
855        result: *mut mpd_t,
856        a: *const mpd_t,
857        b: *const mpd_t,
858        ctx: *const mpd_context_t,
859        status: *mut u32,
860    );
861    pub fn mpd_qquantize(
862        result: *mut mpd_t,
863        a: *const mpd_t,
864        b: *const mpd_t,
865        ctx: *const mpd_context_t,
866        status: *mut u32,
867    );
868    pub fn mpd_qrescale(
869        result: *mut mpd_t,
870        a: *const mpd_t,
871        exp: mpd_ssize_t,
872        ctx: *const mpd_context_t,
873        status: *mut u32,
874    );
875    pub fn mpd_qrescale_fmt(
876        result: *mut mpd_t,
877        a: *const mpd_t,
878        exp: mpd_ssize_t,
879        ctx: *const mpd_context_t,
880        status: *mut u32,
881    );
882    pub fn mpd_qreduce(
883        result: *mut mpd_t,
884        a: *const mpd_t,
885        ctx: *const mpd_context_t,
886        status: *mut u32,
887    );
888    pub fn mpd_qadd(
889        result: *mut mpd_t,
890        a: *const mpd_t,
891        b: *const mpd_t,
892        ctx: *const mpd_context_t,
893        status: *mut u32,
894    );
895    pub fn mpd_qadd_ssize(
896        result: *mut mpd_t,
897        a: *const mpd_t,
898        b: mpd_ssize_t,
899        ctx: *const mpd_context_t,
900        status: *mut u32,
901    );
902    pub fn mpd_qadd_i32(
903        result: *mut mpd_t,
904        a: *const mpd_t,
905        b: i32,
906        ctx: *const mpd_context_t,
907        status: *mut u32,
908    );
909    pub fn mpd_qadd_uint(
910        result: *mut mpd_t,
911        a: *const mpd_t,
912        b: mpd_uint_t,
913        ctx: *const mpd_context_t,
914        status: *mut u32,
915    );
916    pub fn mpd_qadd_u32(
917        result: *mut mpd_t,
918        a: *const mpd_t,
919        b: u32,
920        ctx: *const mpd_context_t,
921        status: *mut u32,
922    );
923    pub fn mpd_qsub(
924        result: *mut mpd_t,
925        a: *const mpd_t,
926        b: *const mpd_t,
927        ctx: *const mpd_context_t,
928        status: *mut u32,
929    );
930    pub fn mpd_qsub_ssize(
931        result: *mut mpd_t,
932        a: *const mpd_t,
933        b: mpd_ssize_t,
934        ctx: *const mpd_context_t,
935        status: *mut u32,
936    );
937    pub fn mpd_qsub_i32(
938        result: *mut mpd_t,
939        a: *const mpd_t,
940        b: i32,
941        ctx: *const mpd_context_t,
942        status: *mut u32,
943    );
944    pub fn mpd_qsub_uint(
945        result: *mut mpd_t,
946        a: *const mpd_t,
947        b: mpd_uint_t,
948        ctx: *const mpd_context_t,
949        status: *mut u32,
950    );
951    pub fn mpd_qsub_u32(
952        result: *mut mpd_t,
953        a: *const mpd_t,
954        b: u32,
955        ctx: *const mpd_context_t,
956        status: *mut u32,
957    );
958    pub fn mpd_qmul(
959        result: *mut mpd_t,
960        a: *const mpd_t,
961        b: *const mpd_t,
962        ctx: *const mpd_context_t,
963        status: *mut u32,
964    );
965    pub fn mpd_qmul_ssize(
966        result: *mut mpd_t,
967        a: *const mpd_t,
968        b: mpd_ssize_t,
969        ctx: *const mpd_context_t,
970        status: *mut u32,
971    );
972    pub fn mpd_qmul_i32(
973        result: *mut mpd_t,
974        a: *const mpd_t,
975        b: i32,
976        ctx: *const mpd_context_t,
977        status: *mut u32,
978    );
979    pub fn mpd_qmul_uint(
980        result: *mut mpd_t,
981        a: *const mpd_t,
982        b: mpd_uint_t,
983        ctx: *const mpd_context_t,
984        status: *mut u32,
985    );
986    pub fn mpd_qmul_u32(
987        result: *mut mpd_t,
988        a: *const mpd_t,
989        b: u32,
990        ctx: *const mpd_context_t,
991        status: *mut u32,
992    );
993    pub fn mpd_qfma(
994        result: *mut mpd_t,
995        a: *const mpd_t,
996        b: *const mpd_t,
997        c: *const mpd_t,
998        ctx: *const mpd_context_t,
999        status: *mut u32,
1000    );
1001    pub fn mpd_qdiv(
1002        q: *mut mpd_t,
1003        a: *const mpd_t,
1004        b: *const mpd_t,
1005        ctx: *const mpd_context_t,
1006        status: *mut u32,
1007    );
1008    pub fn mpd_qdiv_ssize(
1009        result: *mut mpd_t,
1010        a: *const mpd_t,
1011        b: mpd_ssize_t,
1012        ctx: *const mpd_context_t,
1013        status: *mut u32,
1014    );
1015    pub fn mpd_qdiv_i32(
1016        result: *mut mpd_t,
1017        a: *const mpd_t,
1018        b: i32,
1019        ctx: *const mpd_context_t,
1020        status: *mut u32,
1021    );
1022    pub fn mpd_qdiv_uint(
1023        result: *mut mpd_t,
1024        a: *const mpd_t,
1025        b: mpd_uint_t,
1026        ctx: *const mpd_context_t,
1027        status: *mut u32,
1028    );
1029    pub fn mpd_qdiv_u32(
1030        result: *mut mpd_t,
1031        a: *const mpd_t,
1032        b: u32,
1033        ctx: *const mpd_context_t,
1034        status: *mut u32,
1035    );
1036    pub fn mpd_qdivint(
1037        q: *mut mpd_t,
1038        a: *const mpd_t,
1039        b: *const mpd_t,
1040        ctx: *const mpd_context_t,
1041        status: *mut u32,
1042    );
1043    pub fn mpd_qrem(
1044        r: *mut mpd_t,
1045        a: *const mpd_t,
1046        b: *const mpd_t,
1047        ctx: *const mpd_context_t,
1048        status: *mut u32,
1049    );
1050    pub fn mpd_qrem_near(
1051        r: *mut mpd_t,
1052        a: *const mpd_t,
1053        b: *const mpd_t,
1054        ctx: *const mpd_context_t,
1055        status: *mut u32,
1056    );
1057    pub fn mpd_qdivmod(
1058        q: *mut mpd_t,
1059        r: *mut mpd_t,
1060        a: *const mpd_t,
1061        b: *const mpd_t,
1062        ctx: *const mpd_context_t,
1063        status: *mut u32,
1064    );
1065    pub fn mpd_qpow(
1066        result: *mut mpd_t,
1067        base: *const mpd_t,
1068        exp: *const mpd_t,
1069        ctx: *const mpd_context_t,
1070        status: *mut u32,
1071    );
1072    pub fn mpd_qpowmod(
1073        result: *mut mpd_t,
1074        base: *const mpd_t,
1075        exp: *const mpd_t,
1076        mod_: *const mpd_t,
1077        ctx: *const mpd_context_t,
1078        status: *mut u32,
1079    );
1080    pub fn mpd_qexp(
1081        result: *mut mpd_t,
1082        a: *const mpd_t,
1083        ctx: *const mpd_context_t,
1084        status: *mut u32,
1085    );
1086    pub fn mpd_qln10(result: *mut mpd_t, prec: mpd_ssize_t, status: *mut u32);
1087    pub fn mpd_qln(
1088        result: *mut mpd_t,
1089        a: *const mpd_t,
1090        ctx: *const mpd_context_t,
1091        status: *mut u32,
1092    );
1093    pub fn mpd_qlog10(
1094        result: *mut mpd_t,
1095        a: *const mpd_t,
1096        ctx: *const mpd_context_t,
1097        status: *mut u32,
1098    );
1099    pub fn mpd_qsqrt(
1100        result: *mut mpd_t,
1101        a: *const mpd_t,
1102        ctx: *const mpd_context_t,
1103        status: *mut u32,
1104    );
1105    pub fn mpd_qinvroot(
1106        result: *mut mpd_t,
1107        a: *const mpd_t,
1108        ctx: *const mpd_context_t,
1109        status: *mut u32,
1110    );
1111    pub fn mpd_qadd_i64(
1112        result: *mut mpd_t,
1113        a: *const mpd_t,
1114        b: i64,
1115        ctx: *const mpd_context_t,
1116        status: *mut u32,
1117    );
1118    pub fn mpd_qadd_u64(
1119        result: *mut mpd_t,
1120        a: *const mpd_t,
1121        b: u64,
1122        ctx: *const mpd_context_t,
1123        status: *mut u32,
1124    );
1125    pub fn mpd_qsub_i64(
1126        result: *mut mpd_t,
1127        a: *const mpd_t,
1128        b: i64,
1129        ctx: *const mpd_context_t,
1130        status: *mut u32,
1131    );
1132    pub fn mpd_qsub_u64(
1133        result: *mut mpd_t,
1134        a: *const mpd_t,
1135        b: u64,
1136        ctx: *const mpd_context_t,
1137        status: *mut u32,
1138    );
1139    pub fn mpd_qmul_i64(
1140        result: *mut mpd_t,
1141        a: *const mpd_t,
1142        b: i64,
1143        ctx: *const mpd_context_t,
1144        status: *mut u32,
1145    );
1146    pub fn mpd_qmul_u64(
1147        result: *mut mpd_t,
1148        a: *const mpd_t,
1149        b: u64,
1150        ctx: *const mpd_context_t,
1151        status: *mut u32,
1152    );
1153    pub fn mpd_qdiv_i64(
1154        result: *mut mpd_t,
1155        a: *const mpd_t,
1156        b: i64,
1157        ctx: *const mpd_context_t,
1158        status: *mut u32,
1159    );
1160    pub fn mpd_qdiv_u64(
1161        result: *mut mpd_t,
1162        a: *const mpd_t,
1163        b: u64,
1164        ctx: *const mpd_context_t,
1165        status: *mut u32,
1166    );
1167    pub fn mpd_sizeinbase(a: *const mpd_t, base: u32) -> usize;
1168    pub fn mpd_qimport_u16(
1169        result: *mut mpd_t,
1170        srcdata: *const u16,
1171        srclen: usize,
1172        srcsign: u8,
1173        srcbase: u32,
1174        ctx: *const mpd_context_t,
1175        status: *mut u32,
1176    );
1177    pub fn mpd_qimport_u32(
1178        result: *mut mpd_t,
1179        srcdata: *const u32,
1180        srclen: usize,
1181        srcsign: u8,
1182        srcbase: u32,
1183        ctx: *const mpd_context_t,
1184        status: *mut u32,
1185    );
1186    pub fn mpd_qexport_u16(
1187        rdata: *mut *mut u16,
1188        rlen: usize,
1189        base: u32,
1190        src: *const mpd_t,
1191        status: *mut u32,
1192    ) -> usize;
1193    pub fn mpd_qexport_u32(
1194        rdata: *mut *mut u32,
1195        rlen: usize,
1196        base: u32,
1197        src: *const mpd_t,
1198        status: *mut u32,
1199    ) -> usize;
1200    pub fn mpd_format(
1201        dec: *const mpd_t,
1202        fmt: *const ::std::os::raw::c_char,
1203        ctx: *mut mpd_context_t,
1204    ) -> *mut ::std::os::raw::c_char;
1205    pub fn mpd_import_u16(
1206        result: *mut mpd_t,
1207        srcdata: *const u16,
1208        srclen: usize,
1209        srcsign: u8,
1210        base: u32,
1211        ctx: *mut mpd_context_t,
1212    );
1213    pub fn mpd_import_u32(
1214        result: *mut mpd_t,
1215        srcdata: *const u32,
1216        srclen: usize,
1217        srcsign: u8,
1218        base: u32,
1219        ctx: *mut mpd_context_t,
1220    );
1221    pub fn mpd_export_u16(
1222        rdata: *mut *mut u16,
1223        rlen: usize,
1224        base: u32,
1225        src: *const mpd_t,
1226        ctx: *mut mpd_context_t,
1227    ) -> usize;
1228    pub fn mpd_export_u32(
1229        rdata: *mut *mut u32,
1230        rlen: usize,
1231        base: u32,
1232        src: *const mpd_t,
1233        ctx: *mut mpd_context_t,
1234    ) -> usize;
1235    pub fn mpd_finalize(result: *mut mpd_t, ctx: *mut mpd_context_t);
1236    pub fn mpd_check_nan(
1237        result: *mut mpd_t,
1238        a: *const mpd_t,
1239        ctx: *mut mpd_context_t,
1240    ) -> ::std::os::raw::c_int;
1241    pub fn mpd_check_nans(
1242        result: *mut mpd_t,
1243        a: *const mpd_t,
1244        b: *const mpd_t,
1245        ctx: *mut mpd_context_t,
1246    ) -> ::std::os::raw::c_int;
1247    pub fn mpd_set_string(
1248        result: *mut mpd_t,
1249        s: *const ::std::os::raw::c_char,
1250        ctx: *mut mpd_context_t,
1251    );
1252    pub fn mpd_maxcoeff(result: *mut mpd_t, ctx: *mut mpd_context_t);
1253    pub fn mpd_sset_ssize(result: *mut mpd_t, a: mpd_ssize_t, ctx: *mut mpd_context_t);
1254    pub fn mpd_sset_i32(result: *mut mpd_t, a: i32, ctx: *mut mpd_context_t);
1255    pub fn mpd_sset_uint(result: *mut mpd_t, a: mpd_uint_t, ctx: *mut mpd_context_t);
1256    pub fn mpd_sset_u32(result: *mut mpd_t, a: u32, ctx: *mut mpd_context_t);
1257    pub fn mpd_set_ssize(result: *mut mpd_t, a: mpd_ssize_t, ctx: *mut mpd_context_t);
1258    pub fn mpd_set_i32(result: *mut mpd_t, a: i32, ctx: *mut mpd_context_t);
1259    pub fn mpd_set_uint(result: *mut mpd_t, a: mpd_uint_t, ctx: *mut mpd_context_t);
1260    pub fn mpd_set_u32(result: *mut mpd_t, a: u32, ctx: *mut mpd_context_t);
1261    pub fn mpd_set_i64(result: *mut mpd_t, a: i64, ctx: *mut mpd_context_t);
1262    pub fn mpd_set_u64(result: *mut mpd_t, a: u64, ctx: *mut mpd_context_t);
1263    pub fn mpd_get_ssize(a: *const mpd_t, ctx: *mut mpd_context_t) -> mpd_ssize_t;
1264    pub fn mpd_get_uint(a: *const mpd_t, ctx: *mut mpd_context_t) -> mpd_uint_t;
1265    pub fn mpd_abs_uint(a: *const mpd_t, ctx: *mut mpd_context_t) -> mpd_uint_t;
1266    pub fn mpd_get_i32(a: *const mpd_t, ctx: *mut mpd_context_t) -> i32;
1267    pub fn mpd_get_u32(a: *const mpd_t, ctx: *mut mpd_context_t) -> u32;
1268    pub fn mpd_get_i64(a: *const mpd_t, ctx: *mut mpd_context_t) -> i64;
1269    pub fn mpd_get_u64(a: *const mpd_t, ctx: *mut mpd_context_t) -> u64;
1270    pub fn mpd_and(result: *mut mpd_t, a: *const mpd_t, b: *const mpd_t, ctx: *mut mpd_context_t);
1271    pub fn mpd_copy(result: *mut mpd_t, a: *const mpd_t, ctx: *mut mpd_context_t);
1272    pub fn mpd_canonical(result: *mut mpd_t, a: *const mpd_t, ctx: *mut mpd_context_t);
1273    pub fn mpd_copy_abs(result: *mut mpd_t, a: *const mpd_t, ctx: *mut mpd_context_t);
1274    pub fn mpd_copy_negate(result: *mut mpd_t, a: *const mpd_t, ctx: *mut mpd_context_t);
1275    pub fn mpd_copy_sign(
1276        result: *mut mpd_t,
1277        a: *const mpd_t,
1278        b: *const mpd_t,
1279        ctx: *mut mpd_context_t,
1280    );
1281    pub fn mpd_invert(result: *mut mpd_t, a: *const mpd_t, ctx: *mut mpd_context_t);
1282    pub fn mpd_logb(result: *mut mpd_t, a: *const mpd_t, ctx: *mut mpd_context_t);
1283    pub fn mpd_or(result: *mut mpd_t, a: *const mpd_t, b: *const mpd_t, ctx: *mut mpd_context_t);
1284    pub fn mpd_rotate(
1285        result: *mut mpd_t,
1286        a: *const mpd_t,
1287        b: *const mpd_t,
1288        ctx: *mut mpd_context_t,
1289    );
1290    pub fn mpd_scaleb(
1291        result: *mut mpd_t,
1292        a: *const mpd_t,
1293        b: *const mpd_t,
1294        ctx: *mut mpd_context_t,
1295    );
1296    pub fn mpd_shiftl(result: *mut mpd_t, a: *const mpd_t, n: mpd_ssize_t, ctx: *mut mpd_context_t);
1297    pub fn mpd_shiftr(
1298        result: *mut mpd_t,
1299        a: *const mpd_t,
1300        n: mpd_ssize_t,
1301        ctx: *mut mpd_context_t,
1302    ) -> mpd_uint_t;
1303    pub fn mpd_shiftn(result: *mut mpd_t, a: *const mpd_t, n: mpd_ssize_t, ctx: *mut mpd_context_t);
1304    pub fn mpd_shift(result: *mut mpd_t, a: *const mpd_t, b: *const mpd_t, ctx: *mut mpd_context_t);
1305    pub fn mpd_xor(result: *mut mpd_t, a: *const mpd_t, b: *const mpd_t, ctx: *mut mpd_context_t);
1306    pub fn mpd_abs(result: *mut mpd_t, a: *const mpd_t, ctx: *mut mpd_context_t);
1307    pub fn mpd_cmp(
1308        a: *const mpd_t,
1309        b: *const mpd_t,
1310        ctx: *mut mpd_context_t,
1311    ) -> ::std::os::raw::c_int;
1312    pub fn mpd_compare(
1313        result: *mut mpd_t,
1314        a: *const mpd_t,
1315        b: *const mpd_t,
1316        ctx: *mut mpd_context_t,
1317    ) -> ::std::os::raw::c_int;
1318    pub fn mpd_compare_signal(
1319        result: *mut mpd_t,
1320        a: *const mpd_t,
1321        b: *const mpd_t,
1322        ctx: *mut mpd_context_t,
1323    ) -> ::std::os::raw::c_int;
1324    pub fn mpd_add(result: *mut mpd_t, a: *const mpd_t, b: *const mpd_t, ctx: *mut mpd_context_t);
1325    pub fn mpd_add_ssize(
1326        result: *mut mpd_t,
1327        a: *const mpd_t,
1328        b: mpd_ssize_t,
1329        ctx: *mut mpd_context_t,
1330    );
1331    pub fn mpd_add_i32(result: *mut mpd_t, a: *const mpd_t, b: i32, ctx: *mut mpd_context_t);
1332    pub fn mpd_add_uint(
1333        result: *mut mpd_t,
1334        a: *const mpd_t,
1335        b: mpd_uint_t,
1336        ctx: *mut mpd_context_t,
1337    );
1338    pub fn mpd_add_u32(result: *mut mpd_t, a: *const mpd_t, b: u32, ctx: *mut mpd_context_t);
1339    pub fn mpd_sub(result: *mut mpd_t, a: *const mpd_t, b: *const mpd_t, ctx: *mut mpd_context_t);
1340    pub fn mpd_sub_ssize(
1341        result: *mut mpd_t,
1342        a: *const mpd_t,
1343        b: mpd_ssize_t,
1344        ctx: *mut mpd_context_t,
1345    );
1346    pub fn mpd_sub_i32(result: *mut mpd_t, a: *const mpd_t, b: i32, ctx: *mut mpd_context_t);
1347    pub fn mpd_sub_uint(
1348        result: *mut mpd_t,
1349        a: *const mpd_t,
1350        b: mpd_uint_t,
1351        ctx: *mut mpd_context_t,
1352    );
1353    pub fn mpd_sub_u32(result: *mut mpd_t, a: *const mpd_t, b: u32, ctx: *mut mpd_context_t);
1354    pub fn mpd_div(q: *mut mpd_t, a: *const mpd_t, b: *const mpd_t, ctx: *mut mpd_context_t);
1355    pub fn mpd_div_ssize(
1356        result: *mut mpd_t,
1357        a: *const mpd_t,
1358        b: mpd_ssize_t,
1359        ctx: *mut mpd_context_t,
1360    );
1361    pub fn mpd_div_i32(result: *mut mpd_t, a: *const mpd_t, b: i32, ctx: *mut mpd_context_t);
1362    pub fn mpd_div_uint(
1363        result: *mut mpd_t,
1364        a: *const mpd_t,
1365        b: mpd_uint_t,
1366        ctx: *mut mpd_context_t,
1367    );
1368    pub fn mpd_div_u32(result: *mut mpd_t, a: *const mpd_t, b: u32, ctx: *mut mpd_context_t);
1369    pub fn mpd_divmod(
1370        q: *mut mpd_t,
1371        r: *mut mpd_t,
1372        a: *const mpd_t,
1373        b: *const mpd_t,
1374        ctx: *mut mpd_context_t,
1375    );
1376    pub fn mpd_divint(q: *mut mpd_t, a: *const mpd_t, b: *const mpd_t, ctx: *mut mpd_context_t);
1377    pub fn mpd_exp(result: *mut mpd_t, a: *const mpd_t, ctx: *mut mpd_context_t);
1378    pub fn mpd_fma(
1379        result: *mut mpd_t,
1380        a: *const mpd_t,
1381        b: *const mpd_t,
1382        c: *const mpd_t,
1383        ctx: *mut mpd_context_t,
1384    );
1385    pub fn mpd_ln(result: *mut mpd_t, a: *const mpd_t, ctx: *mut mpd_context_t);
1386    pub fn mpd_log10(result: *mut mpd_t, a: *const mpd_t, ctx: *mut mpd_context_t);
1387    pub fn mpd_max(result: *mut mpd_t, a: *const mpd_t, b: *const mpd_t, ctx: *mut mpd_context_t);
1388    pub fn mpd_max_mag(
1389        result: *mut mpd_t,
1390        a: *const mpd_t,
1391        b: *const mpd_t,
1392        ctx: *mut mpd_context_t,
1393    );
1394    pub fn mpd_min(result: *mut mpd_t, a: *const mpd_t, b: *const mpd_t, ctx: *mut mpd_context_t);
1395    pub fn mpd_min_mag(
1396        result: *mut mpd_t,
1397        a: *const mpd_t,
1398        b: *const mpd_t,
1399        ctx: *mut mpd_context_t,
1400    );
1401    pub fn mpd_minus(result: *mut mpd_t, a: *const mpd_t, ctx: *mut mpd_context_t);
1402    pub fn mpd_mul(result: *mut mpd_t, a: *const mpd_t, b: *const mpd_t, ctx: *mut mpd_context_t);
1403    pub fn mpd_mul_ssize(
1404        result: *mut mpd_t,
1405        a: *const mpd_t,
1406        b: mpd_ssize_t,
1407        ctx: *mut mpd_context_t,
1408    );
1409    pub fn mpd_mul_i32(result: *mut mpd_t, a: *const mpd_t, b: i32, ctx: *mut mpd_context_t);
1410    pub fn mpd_mul_uint(
1411        result: *mut mpd_t,
1412        a: *const mpd_t,
1413        b: mpd_uint_t,
1414        ctx: *mut mpd_context_t,
1415    );
1416    pub fn mpd_mul_u32(result: *mut mpd_t, a: *const mpd_t, b: u32, ctx: *mut mpd_context_t);
1417    pub fn mpd_next_minus(result: *mut mpd_t, a: *const mpd_t, ctx: *mut mpd_context_t);
1418    pub fn mpd_next_plus(result: *mut mpd_t, a: *const mpd_t, ctx: *mut mpd_context_t);
1419    pub fn mpd_next_toward(
1420        result: *mut mpd_t,
1421        a: *const mpd_t,
1422        b: *const mpd_t,
1423        ctx: *mut mpd_context_t,
1424    );
1425    pub fn mpd_plus(result: *mut mpd_t, a: *const mpd_t, ctx: *mut mpd_context_t);
1426    pub fn mpd_pow(
1427        result: *mut mpd_t,
1428        base: *const mpd_t,
1429        exp: *const mpd_t,
1430        ctx: *mut mpd_context_t,
1431    );
1432    pub fn mpd_powmod(
1433        result: *mut mpd_t,
1434        base: *const mpd_t,
1435        exp: *const mpd_t,
1436        mod_: *const mpd_t,
1437        ctx: *mut mpd_context_t,
1438    );
1439    pub fn mpd_quantize(
1440        result: *mut mpd_t,
1441        a: *const mpd_t,
1442        b: *const mpd_t,
1443        ctx: *mut mpd_context_t,
1444    );
1445    pub fn mpd_rescale(
1446        result: *mut mpd_t,
1447        a: *const mpd_t,
1448        exp: mpd_ssize_t,
1449        ctx: *mut mpd_context_t,
1450    );
1451    pub fn mpd_reduce(result: *mut mpd_t, a: *const mpd_t, ctx: *mut mpd_context_t);
1452    pub fn mpd_rem(r: *mut mpd_t, a: *const mpd_t, b: *const mpd_t, ctx: *mut mpd_context_t);
1453    pub fn mpd_rem_near(r: *mut mpd_t, a: *const mpd_t, b: *const mpd_t, ctx: *mut mpd_context_t);
1454    pub fn mpd_round_to_intx(result: *mut mpd_t, a: *const mpd_t, ctx: *mut mpd_context_t);
1455    pub fn mpd_round_to_int(result: *mut mpd_t, a: *const mpd_t, ctx: *mut mpd_context_t);
1456    pub fn mpd_trunc(result: *mut mpd_t, a: *const mpd_t, ctx: *mut mpd_context_t);
1457    pub fn mpd_floor(result: *mut mpd_t, a: *const mpd_t, ctx: *mut mpd_context_t);
1458    pub fn mpd_ceil(result: *mut mpd_t, a: *const mpd_t, ctx: *mut mpd_context_t);
1459    pub fn mpd_sqrt(result: *mut mpd_t, a: *const mpd_t, ctx: *mut mpd_context_t);
1460    pub fn mpd_invroot(result: *mut mpd_t, a: *const mpd_t, ctx: *mut mpd_context_t);
1461    pub fn mpd_add_i64(result: *mut mpd_t, a: *const mpd_t, b: i64, ctx: *mut mpd_context_t);
1462    pub fn mpd_add_u64(result: *mut mpd_t, a: *const mpd_t, b: u64, ctx: *mut mpd_context_t);
1463    pub fn mpd_sub_i64(result: *mut mpd_t, a: *const mpd_t, b: i64, ctx: *mut mpd_context_t);
1464    pub fn mpd_sub_u64(result: *mut mpd_t, a: *const mpd_t, b: u64, ctx: *mut mpd_context_t);
1465    pub fn mpd_div_i64(result: *mut mpd_t, a: *const mpd_t, b: i64, ctx: *mut mpd_context_t);
1466    pub fn mpd_div_u64(result: *mut mpd_t, a: *const mpd_t, b: u64, ctx: *mut mpd_context_t);
1467    pub fn mpd_mul_i64(result: *mut mpd_t, a: *const mpd_t, b: i64, ctx: *mut mpd_context_t);
1468    pub fn mpd_mul_u64(result: *mut mpd_t, a: *const mpd_t, b: u64, ctx: *mut mpd_context_t);
1469    pub fn mpd_qsset_i64(result: *mut mpd_t, a: i64, ctx: *const mpd_context_t, status: *mut u32);
1470    pub fn mpd_qsset_u64(result: *mut mpd_t, a: u64, ctx: *const mpd_context_t, status: *mut u32);
1471    pub fn mpd_sset_i64(result: *mut mpd_t, a: i64, ctx: *mut mpd_context_t);
1472    pub fn mpd_sset_u64(result: *mut mpd_t, a: u64, ctx: *mut mpd_context_t);
1473    pub fn mpd_adjexp(dec: *const mpd_t) -> mpd_ssize_t;
1474    pub fn mpd_etiny(ctx: *const mpd_context_t) -> mpd_ssize_t;
1475    pub fn mpd_etop(ctx: *const mpd_context_t) -> mpd_ssize_t;
1476    pub fn mpd_msword(dec: *const mpd_t) -> mpd_uint_t;
1477    pub fn mpd_word_digits(word: mpd_uint_t) -> ::std::os::raw::c_int;
1478    pub fn mpd_msd(word: mpd_uint_t) -> mpd_uint_t;
1479    pub fn mpd_lsd(word: mpd_uint_t) -> mpd_uint_t;
1480    pub fn mpd_digits_to_size(digits: mpd_ssize_t) -> mpd_ssize_t;
1481    pub fn mpd_exp_digits(exp: mpd_ssize_t) -> ::std::os::raw::c_int;
1482    pub fn mpd_iscanonical(dec: *const mpd_t) -> ::std::os::raw::c_int;
1483    pub fn mpd_isfinite(dec: *const mpd_t) -> ::std::os::raw::c_int;
1484    pub fn mpd_isinfinite(dec: *const mpd_t) -> ::std::os::raw::c_int;
1485    pub fn mpd_isinteger(dec: *const mpd_t) -> ::std::os::raw::c_int;
1486    pub fn mpd_isnan(dec: *const mpd_t) -> ::std::os::raw::c_int;
1487    pub fn mpd_isnegative(dec: *const mpd_t) -> ::std::os::raw::c_int;
1488    pub fn mpd_ispositive(dec: *const mpd_t) -> ::std::os::raw::c_int;
1489    pub fn mpd_isqnan(dec: *const mpd_t) -> ::std::os::raw::c_int;
1490    pub fn mpd_issigned(dec: *const mpd_t) -> ::std::os::raw::c_int;
1491    pub fn mpd_issnan(dec: *const mpd_t) -> ::std::os::raw::c_int;
1492    pub fn mpd_isspecial(dec: *const mpd_t) -> ::std::os::raw::c_int;
1493    pub fn mpd_iszero(dec: *const mpd_t) -> ::std::os::raw::c_int;
1494    pub fn mpd_iszerocoeff(dec: *const mpd_t) -> ::std::os::raw::c_int;
1495    pub fn mpd_isnormal(dec: *const mpd_t, ctx: *const mpd_context_t) -> ::std::os::raw::c_int;
1496    pub fn mpd_issubnormal(dec: *const mpd_t, ctx: *const mpd_context_t) -> ::std::os::raw::c_int;
1497    pub fn mpd_isoddword(word: mpd_uint_t) -> ::std::os::raw::c_int;
1498    pub fn mpd_isoddcoeff(dec: *const mpd_t) -> ::std::os::raw::c_int;
1499    pub fn mpd_isodd(dec: *const mpd_t) -> ::std::os::raw::c_int;
1500    pub fn mpd_iseven(dec: *const mpd_t) -> ::std::os::raw::c_int;
1501    pub fn mpd_sign(dec: *const mpd_t) -> u8;
1502    pub fn mpd_arith_sign(dec: *const mpd_t) -> ::std::os::raw::c_int;
1503    pub fn mpd_radix() -> ::std::os::raw::c_long;
1504    pub fn mpd_isdynamic(dec: *const mpd_t) -> ::std::os::raw::c_int;
1505    pub fn mpd_isstatic(dec: *const mpd_t) -> ::std::os::raw::c_int;
1506    pub fn mpd_isdynamic_data(dec: *const mpd_t) -> ::std::os::raw::c_int;
1507    pub fn mpd_isstatic_data(dec: *const mpd_t) -> ::std::os::raw::c_int;
1508    pub fn mpd_isshared_data(dec: *const mpd_t) -> ::std::os::raw::c_int;
1509    pub fn mpd_isconst_data(dec: *const mpd_t) -> ::std::os::raw::c_int;
1510    pub fn mpd_trail_zeros(dec: *const mpd_t) -> mpd_ssize_t;
1511    pub fn mpd_setdigits(result: *mut mpd_t);
1512    pub fn mpd_set_sign(result: *mut mpd_t, sign: u8);
1513    pub fn mpd_signcpy(result: *mut mpd_t, a: *const mpd_t);
1514    pub fn mpd_set_infinity(result: *mut mpd_t);
1515    pub fn mpd_set_qnan(result: *mut mpd_t);
1516    pub fn mpd_set_snan(result: *mut mpd_t);
1517    pub fn mpd_set_negative(result: *mut mpd_t);
1518    pub fn mpd_set_positive(result: *mut mpd_t);
1519    pub fn mpd_set_dynamic(result: *mut mpd_t);
1520    pub fn mpd_set_static(result: *mut mpd_t);
1521    pub fn mpd_set_dynamic_data(result: *mut mpd_t);
1522    pub fn mpd_set_static_data(result: *mut mpd_t);
1523    pub fn mpd_set_shared_data(result: *mut mpd_t);
1524    pub fn mpd_set_const_data(result: *mut mpd_t);
1525    pub fn mpd_clear_flags(result: *mut mpd_t);
1526    pub fn mpd_set_flags(result: *mut mpd_t, flags: u8);
1527    pub fn mpd_copy_flags(result: *mut mpd_t, a: *const mpd_t);
1528    pub fn mpd_callocfunc_em(nmemb: usize, size: usize) -> *mut ::std::os::raw::c_void;
1529    pub fn mpd_alloc(nmemb: mpd_size_t, size: mpd_size_t) -> *mut ::std::os::raw::c_void;
1530    pub fn mpd_calloc(nmemb: mpd_size_t, size: mpd_size_t) -> *mut ::std::os::raw::c_void;
1531    pub fn mpd_realloc(
1532        ptr: *mut ::std::os::raw::c_void,
1533        nmemb: mpd_size_t,
1534        size: mpd_size_t,
1535        err: *mut u8,
1536    ) -> *mut ::std::os::raw::c_void;
1537    pub fn mpd_sh_alloc(
1538        struct_size: mpd_size_t,
1539        nmemb: mpd_size_t,
1540        size: mpd_size_t,
1541    ) -> *mut ::std::os::raw::c_void;
1542    pub fn mpd_qnew() -> *mut mpd_t;
1543    pub fn mpd_new(ctx: *mut mpd_context_t) -> *mut mpd_t;
1544    pub fn mpd_qnew_size(nwords: mpd_ssize_t) -> *mut mpd_t;
1545    pub fn mpd_del(dec: *mut mpd_t);
1546    pub fn mpd_uint_zero(dest: *mut mpd_uint_t, len: mpd_size_t);
1547    pub fn mpd_qresize(
1548        result: *mut mpd_t,
1549        nwords: mpd_ssize_t,
1550        status: *mut u32,
1551    ) -> ::std::os::raw::c_int;
1552    pub fn mpd_qresize_zero(
1553        result: *mut mpd_t,
1554        nwords: mpd_ssize_t,
1555        status: *mut u32,
1556    ) -> ::std::os::raw::c_int;
1557    pub fn mpd_minalloc(result: *mut mpd_t);
1558    pub fn mpd_resize(
1559        result: *mut mpd_t,
1560        nwords: mpd_ssize_t,
1561        ctx: *mut mpd_context_t,
1562    ) -> ::std::os::raw::c_int;
1563    pub fn mpd_resize_zero(
1564        result: *mut mpd_t,
1565        nwords: mpd_ssize_t,
1566        ctx: *mut mpd_context_t,
1567    ) -> ::std::os::raw::c_int;
1568}