1use core::ffi::c_double;
4use core::ffi::c_float;
5
6#[unsafe(no_mangle)]
7pub extern "C" fn fabs(arg: c_double) -> c_double {
8 arg.abs()
9}
10
11#[unsafe(no_mangle)]
12pub extern "C" fn fabsf(arg: c_float) -> c_float {
13 arg.abs()
14}
15
16#[unsafe(no_mangle)]
17pub extern "C" fn fmin(x: c_double, y: c_double) -> c_double {
18 x.min(y)
19}
20
21#[unsafe(no_mangle)]
22pub extern "C" fn fminf(x: c_float, y: c_float) -> c_float {
23 x.min(y)
24}
25
26#[unsafe(no_mangle)]
27pub extern "C" fn fmax(x: c_double, y: c_double) -> c_double {
28 x.max(y)
29}
30
31#[unsafe(no_mangle)]
32pub extern "C" fn fmaxf(x: c_float, y: c_float) -> c_float {
33 x.max(y)
34}
35
36#[unsafe(no_mangle)]
37pub extern "C" fn ceil(x: c_double) -> c_double {
38 libm::ceil(x)
39}
40
41#[unsafe(no_mangle)]
42pub extern "C" fn ceilf(x: c_float) -> c_float {
43 libm::ceilf(x)
44}
45
46#[unsafe(no_mangle)]
47pub extern "C" fn floor(x: c_double) -> c_double {
48 libm::floor(x)
49}
50
51#[unsafe(no_mangle)]
52pub extern "C" fn floorf(x: c_float) -> c_float {
53 libm::floorf(x)
54}
55
56#[unsafe(no_mangle)]
57pub extern "C" fn trunc(x: c_double) -> c_double {
58 libm::trunc(x)
59}
60
61#[unsafe(no_mangle)]
62pub extern "C" fn truncf(x: c_float) -> c_float {
63 libm::truncf(x)
64}
65
66#[unsafe(no_mangle)]
67pub extern "C" fn rint(x: c_double) -> c_double {
68 libm::rint(x)
69}
70
71#[unsafe(no_mangle)]
72pub extern "C" fn rintf(x: c_float) -> c_float {
73 libm::rintf(x)
74}
75
76#[unsafe(no_mangle)]
77pub extern "C" fn isnan_f32(x: c_float) -> bool {
78 x.is_nan()
79}
80
81#[unsafe(no_mangle)]
82pub extern "C" fn isnan_f64(x: c_double) -> bool {
83 x.is_nan()
84}
85
86#[unsafe(no_mangle)]
87pub extern "C" fn signbit_f32(x: c_float) -> bool {
88 x.is_sign_negative()
89}
90
91#[unsafe(no_mangle)]
92pub extern "C" fn signbit_f64(x: c_double) -> bool {
93 x.is_sign_negative()
94}