source: mainline/uspace/lib/math/arch/amd64/include/libarch/math.h@ 802a8c8

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since 802a8c8 was 802a8c8, checked in by Jiri Svoboda <jiri@…>, 7 years ago

Add log2, log2f to math library.

  • Property mode set to 100644
File size: 9.6 KB
Line 
1/*
2 * Copyright (c) 2014 Martin Decky
3 * Copyright (c) 2015 Jiri Svoboda
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 *
10 * - Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * - Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
15 * - The name of the author may not be used to endorse or promote products
16 * derived from this software without specific prior written permission.
17 *
18 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
19 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
20 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
21 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
22 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
23 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 */
29
30/** @addtogroup libmathamd64
31 * @{
32 */
33/** @file
34 */
35
36#ifndef LIBMATH_amd64_MATH_H_
37#define LIBMATH_amd64_MATH_H_
38
39#include <acos.h>
40#include <asin.h>
41#include <atan.h>
42#include <atan2.h>
43#include <ceil.h>
44#include <cosh.h>
45#include <exp.h>
46#include <fabs.h>
47#include <floor.h>
48#include <fmod.h>
49#include <frexp.h>
50#include <ldexp.h>
51#include <log.h>
52#include <log10.h>
53#include <log2.h>
54#include <mathtypes.h>
55#include <modf.h>
56#include <pow.h>
57#include <sinh.h>
58#include <sqrt.h>
59#include <tan.h>
60#include <tanh.h>
61#include <trig.h>
62#include <trunc.h>
63
64#define HUGE_VAL FLOAT64_INF
65
66static inline float64_t acos_f64(float64_t val)
67{
68 return float64_acos(val);
69}
70
71static inline float32_t acos_f32(float32_t val)
72{
73 return float32_acos(val);
74}
75
76static inline float64_t asin_f64(float64_t val)
77{
78 return float64_asin(val);
79}
80
81static inline float32_t asin_f32(float32_t val)
82{
83 return float32_asin(val);
84}
85
86static inline float64_t atan_f64(float64_t val)
87{
88 return float64_atan(val);
89}
90
91static inline float32_t atan_f32(float32_t val)
92{
93 return float32_atan(val);
94}
95
96static inline float64_t atan2_f64(float64_t y, float64_t x)
97{
98 return float64_atan2(y, x);
99}
100
101static inline float32_t atan2_f32(float32_t y, float32_t x)
102{
103 return float32_atan2(y, x);
104}
105
106static inline float64_t ceil_f64(float64_t val)
107{
108 return float64_ceil(val);
109}
110
111static inline float32_t ceil_f32(float32_t val)
112{
113 return float32_ceil(val);
114}
115
116extern float64_t cos_f64(float64_t);
117
118static inline float32_t cos_f32(float32_t val)
119{
120 return (float32_t)cos_f64((float64_t)val);
121}
122
123static inline float64_t cosh_f64(float64_t val)
124{
125 return float64_cosh(val);
126}
127
128static inline float32_t cosh_f32(float32_t val)
129{
130 return float32_cosh(val);
131}
132
133static inline float64_t exp_f64(float64_t val)
134{
135 return float64_exp(val);
136}
137
138static inline float32_t exp_f32(float32_t val)
139{
140 return float32_exp(val);
141}
142
143static inline float64_t fabs_f64(float64_t val)
144{
145 return float64_fabs(val);
146}
147
148static inline float32_t fabs_f32(float32_t val)
149{
150 return float32_fabs(val);
151}
152
153static inline float64_t floor_f64(float64_t val)
154{
155 return float64_floor(val);
156}
157
158static inline float32_t floor_f32(float32_t val)
159{
160 return float32_floor(val);
161}
162static inline float64_t fmod_f64(float64_t dividend, float64_t divisor)
163{
164 return float64_fmod(dividend, divisor);
165}
166
167static inline float64_t fmod_f32(float32_t dividend, float32_t divisor)
168{
169 return float32_fmod(dividend, divisor);
170}
171
172static inline float64_t frexp_f64(float64_t x, int *exp)
173{
174 return float64_frexp(x, exp);
175}
176
177static inline float64_t frexp_f32(float32_t x, int *exp)
178{
179 return float32_frexp(x, exp);
180}
181
182static inline float64_t ldexp_f64(float64_t x, int exp)
183{
184 return float64_ldexp(x, exp);
185}
186
187static inline float64_t ldexp_f32(float32_t x, int exp)
188{
189 return float32_ldexp(x, exp);
190}
191
192static inline float64_t log_f64(float64_t val)
193{
194 return float64_log(val);
195}
196
197static inline float32_t log_f32(float32_t val)
198{
199 return float32_log(val);
200}
201
202static inline float64_t log10_f64(float64_t val)
203{
204 return float64_log10(val);
205}
206
207static inline float32_t log10_f32(float32_t val)
208{
209 return float32_log10(val);
210}
211
212static inline float32_t log2_f32(float32_t val)
213{
214 return float32_log2(val);
215}
216
217static inline float64_t log2_f64(float64_t val)
218{
219 return float64_log2(val);
220}
221
222static inline float64_t modf_f64(float64_t value, float64_t *iptr)
223{
224 return float64_modf(value, iptr);
225}
226
227static inline float64_t modf_f32(float32_t value, float32_t *iptr)
228{
229 return float32_modf(value, iptr);
230}
231
232static inline float64_t pow_f64(float64_t x, float64_t y)
233{
234 return float64_pow(x, y);
235}
236
237static inline float32_t pow_f32(float32_t x, float32_t y)
238{
239 return float32_pow(x, y);
240}
241
242extern float64_t sin_f64(float64_t);
243
244static inline float32_t sin_f32(float32_t val)
245{
246 return (float32_t)sin_f64((float64_t)val);
247}
248
249static inline float64_t sinh_f64(float64_t val)
250{
251 return float64_sinh(val);
252}
253
254static inline float32_t sinh_f32(float32_t val)
255{
256 return float32_sinh(val);
257}
258
259static inline float64_t sqrt_f64(float64_t val)
260{
261 return float64_sqrt(val);
262}
263
264static inline float32_t sqrt_f32(float32_t val)
265{
266 return float32_sqrt(val);
267}
268
269static inline float64_t tan_f64(float64_t val)
270{
271 return float64_tan(val);
272}
273
274static inline float32_t tan_f32(float32_t val)
275{
276 return float32_tan(val);
277}
278
279static inline float64_t tanh_f64(float64_t val)
280{
281 return float64_tanh(val);
282}
283
284static inline float32_t tanh_f32(float32_t val)
285{
286 return float32_tanh(val);
287}
288
289extern float64_t trunc_f64(float64_t);
290
291static inline float32_t trunc_f32(float32_t val)
292{
293 return (float32_t)trunc_f64((float64_t)val);
294}
295
296static inline float64_t acos(float64_t val)
297{
298 return acos_f64(val);
299}
300
301static inline float32_t acosf(float32_t val)
302{
303 return acos_f32(val);
304}
305
306static inline float64_t asin(float64_t val)
307{
308 return asin_f64(val);
309}
310
311static inline float32_t asinf(float32_t val)
312{
313 return asin_f32(val);
314}
315
316static inline float64_t atan(float64_t val)
317{
318 return atan_f64(val);
319}
320
321static inline float32_t atanf(float32_t val)
322{
323 return atan_f32(val);
324}
325
326static inline float64_t atan2(float64_t y, float64_t x)
327{
328 return atan2_f64(y, x);
329}
330
331static inline float32_t atan2f(float32_t y, float32_t x)
332{
333 return atan2_f32(y, x);
334}
335
336static inline float64_t ceil(float64_t val)
337{
338 return ceil_f64(val);
339}
340
341static inline float32_t ceilf(float32_t val)
342{
343 return ceil_f32(val);
344}
345
346static inline float64_t cos(float64_t val)
347{
348 return cos_f64(val);
349}
350
351static inline float32_t cosf(float32_t val)
352{
353 return cos_f32(val);
354}
355
356static inline float64_t cosh(float64_t val)
357{
358 return cosh_f64(val);
359}
360
361static inline float32_t coshf(float32_t val)
362{
363 return cosh_f32(val);
364}
365
366static inline float64_t exp(float64_t val)
367{
368 return exp_f64(val);
369}
370
371static inline float32_t expf(float32_t val)
372{
373 return exp_f32(val);
374}
375
376static inline float64_t fabs(float64_t val)
377{
378 return fabs_f64(val);
379}
380
381static inline float32_t fabsf(float32_t val)
382{
383 return fabs_f32(val);
384}
385
386static inline float64_t floor(float64_t val)
387{
388 return floor_f64(val);
389}
390
391static inline float32_t floorf(float32_t val)
392{
393 return floor_f32(val);
394}
395
396static inline float64_t fmod(float64_t dividend, float64_t divisor)
397{
398 return fmod_f64(dividend, divisor);
399}
400
401static inline float32_t fmodf(float32_t dividend, float32_t divisor)
402{
403 return fmod_f32(dividend, divisor);
404}
405
406static inline float64_t frexp(float64_t x, int *exp)
407{
408 return frexp_f64(x, exp);
409}
410
411static inline float32_t frexpf(float32_t x, int *exp)
412{
413 return frexp_f32(x, exp);
414}
415
416static inline float64_t ldexp(float64_t x, int exp)
417{
418 return ldexp_f64(x, exp);
419}
420
421static inline float32_t ldexpf(float32_t x, int exp)
422{
423 return ldexp_f32(x, exp);
424}
425
426static inline float64_t log(float64_t val)
427{
428 return log_f64(val);
429}
430
431static inline float32_t logf(float32_t val)
432{
433 return log_f32(val);
434}
435
436static inline float64_t log10(float64_t val)
437{
438 return log10_f64(val);
439}
440
441static inline float32_t log10f(float32_t val)
442{
443 return log10_f32(val);
444}
445
446static inline float64_t log2(float64_t val)
447{
448 return log2_f64(val);
449}
450
451static inline float32_t log2f(float32_t val)
452{
453 return log2_f32(val);
454}
455
456static inline float64_t modf(float64_t value, float64_t *iptr)
457{
458 return modf_f64(value, iptr);
459}
460
461static inline float32_t modff(float32_t value, float32_t *iptr)
462{
463 return modf_f32(value, iptr);
464}
465
466static inline float64_t pow(float64_t x, float64_t y)
467{
468 return pow_f64(x, y);
469}
470
471static inline float32_t powf(float32_t x, float32_t y)
472{
473 return pow_f32(x, y);
474}
475
476static inline float64_t sin(float64_t val)
477{
478 return sin_f64(val);
479}
480
481static inline float32_t sinf(float32_t val)
482{
483 return sin_f32(val);
484}
485
486static inline float64_t sinh(float64_t val)
487{
488 return sinh_f64(val);
489}
490
491static inline float32_t sinhf(float32_t val)
492{
493 return sinh_f32(val);
494}
495
496static inline float64_t sqrt(float64_t val)
497{
498 return sqrt_f64(val);
499}
500
501static inline float32_t sqrtf(float32_t val)
502{
503 return sqrt_f32(val);
504}
505
506static inline float64_t tan(float64_t val)
507{
508 return tan_f64(val);
509}
510
511static inline float32_t tanf(float32_t val)
512{
513 return tan_f32(val);
514}
515
516static inline float64_t tanh(float64_t val)
517{
518 return tanh_f64(val);
519}
520
521static inline float32_t tanhf(float32_t val)
522{
523 return tanh_f32(val);
524}
525
526static inline float64_t trunc(float64_t val)
527{
528 return trunc_f64(val);
529}
530
531static inline float32_t truncf(float32_t val)
532{
533 return trunc_f32(val);
534}
535
536#endif
537
538/** @}
539 */
Note: See TracBrowser for help on using the repository browser.