source: mainline/uspace/lib/math/arch/riscv64/include/libarch/math.h@ c20cccb

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since c20cccb was 8b6aa39, checked in by Martin Decky <martin@…>, 9 years ago

dummy/fake support for RISC-V (RV64G)
it compiles and the boot loader extracts the system components, but otherwise the source serves only as a placeholder for future working implementation

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