core_math/
lib.rs

1#![doc = include_str!("../README.md")]
2#![cfg_attr(not(test), no_std)]
3
4use core_math_sys as sys;
5
6/////// `f32` functions ///////
7
8#[must_use]
9#[inline]
10pub fn acosf(x: f32) -> f32 {
11    unsafe { sys::cr_acosf(x) }
12}
13
14#[must_use]
15#[inline]
16pub fn acoshf(x: f32) -> f32 {
17    unsafe { sys::cr_acoshf(x) }
18}
19
20#[must_use]
21#[inline]
22pub fn acospif(x: f32) -> f32 {
23    unsafe { sys::cr_acospif(x) }
24}
25
26#[must_use]
27#[inline]
28pub fn asinf(x: f32) -> f32 {
29    unsafe { sys::cr_asinf(x) }
30}
31
32#[must_use]
33#[inline]
34pub fn asinhf(x: f32) -> f32 {
35    unsafe { sys::cr_asinhf(x) }
36}
37
38#[must_use]
39#[inline]
40pub fn asinpif(x: f32) -> f32 {
41    unsafe { sys::cr_asinpif(x) }
42}
43
44#[must_use]
45#[inline]
46pub fn atanf(x: f32) -> f32 {
47    unsafe { sys::cr_atanf(x) }
48}
49
50#[must_use]
51#[inline]
52pub fn atan2f(y: f32, x: f32) -> f32 {
53    unsafe { sys::cr_atan2f(y, x) }
54}
55
56#[must_use]
57#[inline]
58pub fn atan2pif(y: f32, x: f32) -> f32 {
59    unsafe { sys::cr_atan2pif(y, x) }
60}
61
62#[must_use]
63#[inline]
64pub fn atanhf(x: f32) -> f32 {
65    unsafe { sys::cr_atanhf(x) }
66}
67
68#[must_use]
69#[inline]
70pub fn atanpif(x: f32) -> f32 {
71    unsafe { sys::cr_atanpif(x) }
72}
73
74#[must_use]
75#[inline]
76pub fn cbrtf(x: f32) -> f32 {
77    unsafe { sys::cr_cbrtf(x) }
78}
79
80#[must_use]
81#[inline]
82pub fn cosf(x: f32) -> f32 {
83    unsafe { sys::cr_cosf(x) }
84}
85
86#[must_use]
87#[inline]
88pub fn coshf(x: f32) -> f32 {
89    unsafe { sys::cr_coshf(x) }
90}
91
92#[must_use]
93#[inline]
94pub fn cospif(x: f32) -> f32 {
95    unsafe { sys::cr_cospif(x) }
96}
97
98#[must_use]
99#[inline]
100pub fn erff(x: f32) -> f32 {
101    unsafe { sys::cr_erff(x) }
102}
103
104#[must_use]
105#[inline]
106pub fn erfcf(x: f32) -> f32 {
107    unsafe { sys::cr_erfcf(x) }
108}
109
110#[must_use]
111#[inline]
112pub fn expf(x: f32) -> f32 {
113    unsafe { sys::cr_expf(x) }
114}
115
116#[must_use]
117#[inline]
118pub fn exp10f(x: f32) -> f32 {
119    unsafe { sys::cr_exp10f(x) }
120}
121
122#[must_use]
123#[inline]
124pub fn exp10m1f(x: f32) -> f32 {
125    unsafe { sys::cr_exp10m1f(x) }
126}
127
128#[must_use]
129#[inline]
130pub fn exp2f(x: f32) -> f32 {
131    unsafe { sys::cr_exp2f(x) }
132}
133
134#[must_use]
135#[inline]
136pub fn exp2m1f(x: f32) -> f32 {
137    unsafe { sys::cr_exp2m1f(x) }
138}
139
140#[must_use]
141#[inline]
142pub fn expm1f(x: f32) -> f32 {
143    unsafe { sys::cr_expm1f(x) }
144}
145
146#[must_use]
147#[inline]
148pub fn hypotf(x: f32, y: f32) -> f32 {
149    unsafe { sys::cr_hypotf(x, y) }
150}
151
152#[must_use]
153#[inline]
154pub fn lgammaf(x: f32) -> f32 {
155    unsafe { sys::cr_lgammaf(x) }
156}
157
158#[must_use]
159#[inline]
160pub fn logf(x: f32) -> f32 {
161    unsafe { sys::cr_logf(x) }
162}
163
164#[must_use]
165#[inline]
166pub fn log10f(x: f32) -> f32 {
167    unsafe { sys::cr_log10f(x) }
168}
169
170#[must_use]
171#[inline]
172pub fn log10p1f(x: f32) -> f32 {
173    unsafe { sys::cr_log10p1f(x) }
174}
175
176#[must_use]
177#[inline]
178pub fn log1pf(x: f32) -> f32 {
179    unsafe { sys::cr_log1pf(x) }
180}
181
182#[must_use]
183#[inline]
184pub fn log2f(x: f32) -> f32 {
185    unsafe { sys::cr_log2f(x) }
186}
187
188#[must_use]
189#[inline]
190pub fn log2p1f(x: f32) -> f32 {
191    unsafe { sys::cr_log2p1f(x) }
192}
193
194#[must_use]
195#[inline]
196pub fn powf(x: f32, y: f32) -> f32 {
197    unsafe { sys::cr_powf(x, y) }
198}
199
200#[must_use]
201#[inline]
202pub fn rsqrtf(x: f32) -> f32 {
203    unsafe { sys::cr_rsqrtf(x) }
204}
205
206#[must_use]
207#[inline]
208pub fn sinf(x: f32) -> f32 {
209    unsafe { sys::cr_sinf(x) }
210}
211
212#[must_use]
213#[inline]
214pub fn sincosf(x: f32) -> (f32, f32) {
215    use core::mem::MaybeUninit;
216    let mut s = MaybeUninit::uninit();
217    let mut c = MaybeUninit::uninit();
218
219    unsafe {
220        sys::cr_sincosf(x, s.as_mut_ptr(), c.as_mut_ptr());
221        (s.assume_init(), c.assume_init())
222    }
223}
224
225#[must_use]
226#[inline]
227pub fn sinhf(x: f32) -> f32 {
228    unsafe { sys::cr_sinhf(x) }
229}
230
231#[must_use]
232#[inline]
233pub fn sinpif(x: f32) -> f32 {
234    unsafe { sys::cr_sinpif(x) }
235}
236
237#[must_use]
238#[inline]
239pub fn tanf(x: f32) -> f32 {
240    unsafe { sys::cr_tanf(x) }
241}
242
243#[must_use]
244#[inline]
245pub fn tanhf(x: f32) -> f32 {
246    unsafe { sys::cr_tanhf(x) }
247}
248
249#[must_use]
250#[inline]
251pub fn tanpif(x: f32) -> f32 {
252    unsafe { sys::cr_tanpif(x) }
253}
254
255#[must_use]
256#[inline]
257pub fn tgammaf(x: f32) -> f32 {
258    unsafe { sys::cr_tgammaf(x) }
259}
260
261/////// `f64` functions ///////
262
263#[must_use]
264#[inline]
265pub fn acos(x: f64) -> f64 {
266    unsafe { sys::cr_acos(x) }
267}
268
269#[must_use]
270#[inline]
271pub fn acosh(x: f64) -> f64 {
272    unsafe { sys::cr_acosh(x) }
273}
274
275#[must_use]
276#[inline]
277pub fn acospi(x: f64) -> f64 {
278    unsafe { sys::cr_acospi(x) }
279}
280
281#[must_use]
282#[inline]
283pub fn asin(x: f64) -> f64 {
284    unsafe { sys::cr_asin(x) }
285}
286
287#[must_use]
288#[inline]
289pub fn asinh(x: f64) -> f64 {
290    unsafe { sys::cr_asinh(x) }
291}
292
293#[must_use]
294#[inline]
295pub fn asinpi(x: f64) -> f64 {
296    unsafe { sys::cr_asinpi(x) }
297}
298
299#[must_use]
300#[inline]
301pub fn atan(x: f64) -> f64 {
302    unsafe { sys::cr_atan(x) }
303}
304
305#[must_use]
306#[inline]
307pub fn atan2(y: f64, x: f64) -> f64 {
308    unsafe { sys::cr_atan2(y, x) }
309}
310
311#[must_use]
312#[inline]
313pub fn atan2pi(y: f64, x: f64) -> f64 {
314    unsafe { sys::cr_atan2pi(y, x) }
315}
316
317#[must_use]
318#[inline]
319pub fn atanh(x: f64) -> f64 {
320    unsafe { sys::cr_atanh(x) }
321}
322
323#[must_use]
324#[inline]
325pub fn atanpi(x: f64) -> f64 {
326    unsafe { sys::cr_atanpi(x) }
327}
328
329#[must_use]
330#[inline]
331pub fn cbrt(x: f64) -> f64 {
332    unsafe { sys::cr_cbrt(x) }
333}
334
335#[must_use]
336#[inline]
337pub fn cos(x: f64) -> f64 {
338    unsafe { sys::cr_cos(x) }
339}
340
341#[must_use]
342#[inline]
343pub fn cosh(x: f64) -> f64 {
344    unsafe { sys::cr_cosh(x) }
345}
346
347#[must_use]
348#[inline]
349pub fn cospi(x: f64) -> f64 {
350    unsafe { sys::cr_cospi(x) }
351}
352
353#[must_use]
354#[inline]
355pub fn erf(x: f64) -> f64 {
356    unsafe { sys::cr_erf(x) }
357}
358
359#[must_use]
360#[inline]
361pub fn erfc(x: f64) -> f64 {
362    unsafe { sys::cr_erfc(x) }
363}
364
365#[must_use]
366#[inline]
367pub fn exp(x: f64) -> f64 {
368    unsafe { sys::cr_exp(x) }
369}
370
371#[must_use]
372#[inline]
373pub fn exp10(x: f64) -> f64 {
374    unsafe { sys::cr_exp10(x) }
375}
376
377#[must_use]
378#[inline]
379pub fn exp10m1(x: f64) -> f64 {
380    unsafe { sys::cr_exp10m1(x) }
381}
382
383#[must_use]
384#[inline]
385pub fn exp2(x: f64) -> f64 {
386    unsafe { sys::cr_exp2(x) }
387}
388
389#[must_use]
390#[inline]
391pub fn exp2m1(x: f64) -> f64 {
392    unsafe { sys::cr_exp2m1(x) }
393}
394
395#[must_use]
396#[inline]
397pub fn expm1(x: f64) -> f64 {
398    unsafe { sys::cr_expm1(x) }
399}
400
401#[must_use]
402#[inline]
403pub fn hypot(x: f64, y: f64) -> f64 {
404    unsafe { sys::cr_hypot(x, y) }
405}
406
407#[must_use]
408#[inline]
409pub fn log(x: f64) -> f64 {
410    unsafe { sys::cr_log(x) }
411}
412
413#[must_use]
414#[inline]
415pub fn log10(x: f64) -> f64 {
416    unsafe { sys::cr_log10(x) }
417}
418
419#[must_use]
420#[inline]
421pub fn log10p1(x: f64) -> f64 {
422    unsafe { sys::cr_log10p1(x) }
423}
424
425#[must_use]
426#[inline]
427pub fn log1p(x: f64) -> f64 {
428    unsafe { sys::cr_log1p(x) }
429}
430
431#[must_use]
432#[inline]
433pub fn log2(x: f64) -> f64 {
434    unsafe { sys::cr_log2(x) }
435}
436
437#[must_use]
438#[inline]
439pub fn log2p1(x: f64) -> f64 {
440    unsafe { sys::cr_log2p1(x) }
441}
442
443#[must_use]
444#[inline]
445pub fn pow(x: f64, y: f64) -> f64 {
446    unsafe { sys::cr_pow(x, y) }
447}
448
449#[must_use]
450#[inline]
451pub fn rsqrt(x: f64) -> f64 {
452    unsafe { sys::cr_rsqrt(x) }
453}
454
455#[must_use]
456#[inline]
457pub fn sin(x: f64) -> f64 {
458    unsafe { sys::cr_sin(x) }
459}
460
461#[must_use]
462#[inline]
463pub fn sinh(x: f64) -> f64 {
464    unsafe { sys::cr_sinh(x) }
465}
466
467#[must_use]
468#[inline]
469pub fn sinpi(x: f64) -> f64 {
470    unsafe { sys::cr_sinpi(x) }
471}
472
473#[must_use]
474#[inline]
475pub fn tan(x: f64) -> f64 {
476    unsafe { sys::cr_tan(x) }
477}
478
479#[must_use]
480#[inline]
481pub fn tanh(x: f64) -> f64 {
482    unsafe { sys::cr_tanh(x) }
483}
484
485#[must_use]
486#[inline]
487pub fn tanpi(x: f64) -> f64 {
488    unsafe { sys::cr_tanpi(x) }
489}