OSDN Git Service

- expand SUSv3_LEGACY
[uclinux-h8/uClibc.git] / libm / ldouble_wrappers.c
1 /* vi: set sw=4 ts=4: */
2 /*
3  * Wrapper functions implementing all the long double math functions
4  * defined by SuSv3 by actually calling the double version of
5  * each function and then casting the result back to a long double
6  * to return to the user.
7  *
8  * Copyright (C) 2005 by Erik Andersen <andersen@uclibc.org>
9  *
10  * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
11  */
12
13 #include <features.h>
14 /* Prevent math.h from defining colliding inlines */
15 #undef __USE_EXTERN_INLINES
16 #include "math.h"
17 #include <complex.h>
18
19
20 /* Implement the following, as defined by SuSv3 */
21 #if 0
22 long double acoshl(long double);
23 long double acosl(long double);
24 long double asinhl(long double);
25 long double asinl(long double);
26 long double atan2l(long double, long double);
27 long double atanhl(long double);
28 long double atanl(long double);
29 long double cargl(long double complex);
30 long double cbrtl(long double);
31 long double ceill(long double);
32 long double copysignl(long double, long double);
33 long double coshl(long double);
34 long double cosl(long double);
35 long double erfcl(long double);
36 long double erfl(long double);
37 long double exp2l(long double);
38 long double expl(long double);
39 long double expm1l(long double);
40 long double fabsl(long double);
41 long double fdiml(long double, long double);
42 long double floorl(long double);
43 long double fmal(long double, long double, long double);
44 long double fmaxl(long double, long double);
45 long double fminl(long double, long double);
46 long double fmodl(long double, long double);
47 long double frexpl(long double value, int *);
48 long double hypotl(long double, long double);
49 int         ilogbl(long double);
50 long double ldexpl(long double, int);
51 long double lgammal(long double);
52 long long   llrintl(long double);
53 long long   llroundl(long double);
54 long double log10l(long double);
55 long double log1pl(long double);
56 long double log2l(long double);
57 long double logbl(long double);
58 long double logl(long double);
59 long        lrintl(long double);
60 long        lroundl(long double);
61 long double modfl(long double, long double *);
62 long double nearbyintl(long double);
63 long double nextafterl(long double, long double);
64 long double nexttowardl(long double, long double);
65 long double powl(long double, long double);
66 long double remainderl(long double, long double);
67 long double remquol(long double, long double, int *);
68 long double rintl(long double);
69 long double roundl(long double);
70 long double scalblnl(long double, long);
71 long double scalbnl(long double, int);
72 long double sinhl(long double);
73 long double sinl(long double);
74 long double sqrtl(long double);
75 long double tanhl(long double);
76 long double tanl(long double);
77 long double tgammal(long double);
78 long double truncl(long double);
79 #endif
80
81 #ifdef L_acoshl
82 long double acoshl (long double x)
83 {
84         return (long double) acosh( (double)x );
85 }
86 #endif
87
88
89 #ifdef L_acosl
90 long double acosl (long double x)
91 {
92         return (long double) acos( (double)x );
93 }
94 #endif
95
96
97 #ifdef L_asinhl
98 long double asinhl (long double x)
99 {
100         return (long double) asinh( (double)x );
101 }
102 #endif
103
104
105 #ifdef L_asinl
106 long double asinl (long double x)
107 {
108         return (long double) asin( (double)x );
109 }
110 #endif
111
112
113 #ifdef L_atan2l
114 long double atan2l (long double x, long double y)
115 {
116         return (long double) atan2( (double)x, (double)y );
117 }
118 #endif
119
120
121 #ifdef L_atanhl
122 long double atanhl (long double x)
123 {
124         return (long double) atanh( (double)x );
125 }
126 #endif
127
128
129 #ifdef L_atanl
130 long double atanl (long double x)
131 {
132         return (long double) atan( (double)x );
133 }
134 #endif
135
136
137 #ifdef L_cargl
138 long double cargl (long double complex x)
139 {
140         return (long double) carg( (double complex)x );
141 }
142 #endif
143
144
145 #ifdef L_cbrtl
146 long double cbrtl (long double x)
147 {
148         return (long double) cbrt( (double)x );
149 }
150 #endif
151
152
153 #ifdef L_ceill
154 long double ceill (long double x)
155 {
156         return (long double) ceil( (double)x );
157 }
158 #endif
159
160
161 #ifdef L_copysignl
162 long double copysignl (long double x, long double y)
163 {
164         return (long double) copysign( (double)x, (double)y );
165 }
166 #endif
167
168
169 #ifdef L_coshl
170 long double coshl (long double x)
171 {
172         return (long double) cosh( (double)x );
173 }
174 #endif
175
176
177 #ifdef L_cosl
178 long double cosl (long double x)
179 {
180         return (long double) cos( (double)x );
181 }
182 #endif
183
184
185 #ifdef L_erfcl
186 long double erfcl (long double x)
187 {
188         return (long double) erfc( (double)x );
189 }
190 #endif
191
192
193 #ifdef L_erfl
194 long double erfl (long double x)
195 {
196         return (long double) erf( (double)x );
197 }
198 #endif
199
200
201 #ifdef L_exp2l
202 long double exp2l (long double x)
203 {
204         return (long double) exp2( (double)x );
205 }
206 #endif
207
208
209 #ifdef L_expl
210 long double expl (long double x)
211 {
212         return (long double) exp( (double)x );
213 }
214 #endif
215
216
217 #ifdef L_expm1l
218 long double expm1l (long double x)
219 {
220         return (long double) expm1( (double)x );
221 }
222 #endif
223
224
225 #ifdef L_fabsl
226 long double fabsl (long double x)
227 {
228         return (long double) fabs( (double)x );
229 }
230 #endif
231
232
233 #ifdef L_fdiml
234 long double fdiml (long double x, long double y)
235 {
236         return (long double) fdim( (double)x, (double)y );
237 }
238 #endif
239
240
241 #ifdef L_floorl
242 long double floorl (long double x)
243 {
244         return (long double) floor( (double)x );
245 }
246 #endif
247
248
249 #ifdef L_fmal
250 long double fmal (long double x, long double y, long double z)
251 {
252         return (long double) fma( (double)x, (double)y, (double)z );
253 }
254 #endif
255
256
257 #ifdef L_fmaxl
258 long double fmaxl (long double x, long double y)
259 {
260         return (long double) fmax( (double)x, (double)y );
261 }
262 #endif
263
264
265 #ifdef L_fminl
266 long double fminl (long double x, long double y)
267 {
268         return (long double) fmin( (double)x, (double)y );
269 }
270 #endif
271
272
273 #ifdef L_fmodl
274 long double fmodl (long double x, long double y)
275 {
276         return (long double) fmod( (double)x, (double)y );
277 }
278 #endif
279
280
281 #ifdef L_frexpl
282 long double frexpl (long double x, int *exp)
283 {
284         return (long double) frexp( (double)x, exp );
285 }
286 #endif
287
288
289 #ifdef L_hypotl
290 long double hypotl (long double x, long double y)
291 {
292         return (long double) hypot( (double)x, (double)y );
293 }
294 #endif
295
296
297 #ifdef L_ilogbl
298 int ilogbl (long double x)
299 {
300         return (long double) ilogb( (double)x );
301 }
302 #endif
303
304
305 #ifdef L_ldexpl
306 long double ldexpl (long double x, int exp)
307 {
308         return (long double) ldexp( (double)x, exp );
309 }
310 #endif
311
312
313 #ifdef L_lgammal
314 long double lgammal (long double x)
315 {
316         return (long double) lgamma( (double)x );
317 }
318 #endif
319
320
321 #ifdef L_llrintl
322 long long llrintl (long double x)
323 {
324         return (long double) llrint( (double)x );
325 }
326 #endif
327
328
329 #ifdef L_llroundl
330 long long llroundl (long double x)
331 {
332         return (long double) llround( (double)x );
333 }
334 #endif
335
336 #ifdef L_log10l
337 long double log10l (long double x)
338 {
339         return (long double) log10( (double)x );
340 }
341 #endif
342
343
344 #ifdef L_log1pl
345 long double log1pl (long double x)
346 {
347         return (long double) log1p( (double)x );
348 }
349 #endif
350
351
352 #ifdef L_log2l
353 long double log2l (long double x)
354 {
355         return (long double) log2( (double)x );
356 }
357 #endif
358
359
360 #ifdef L_logbl
361 long double logbl (long double x)
362 {
363         return (long double) logb( (double)x );
364 }
365 #endif
366
367
368 #ifdef L_logl
369 long double logl (long double x)
370 {
371         return (long double) log( (double)x );
372 }
373 #endif
374
375
376 #ifdef L_lrintl
377 long lrintl (long double x)
378 {
379         return (long double) lrint( (double)x );
380 }
381 #endif
382
383
384 #ifdef L_lroundl
385 long lroundl (long double x)
386 {
387         return (long double) lround( (double)x );
388 }
389 #endif
390
391
392 #ifdef L_modfl
393 long double modfl (long double x, long double *iptr)
394 {
395         double y, result;
396         result = modf ( x, &y );
397         *iptr = (long double)y;
398         return (long double) result;
399
400 }
401 #endif
402
403
404 #ifdef L_nearbyintl
405 long double nearbyintl (long double x)
406 {
407         return (long double) nearbyint( (double)x );
408 }
409 #endif
410
411
412 #ifdef L_nextafterl
413 long double nextafterl (long double x, long double y)
414 {
415         return (long double) nextafter( (double)x, (double)y );
416 }
417 #endif
418
419
420 #ifdef L_nexttowardl
421 long double nexttowardl (long double x, long double y)
422 {
423         return (long double) nexttoward( (double)x, (double)y );
424 }
425 #endif
426
427
428 #ifdef L_powl
429 long double powl (long double x, long double y)
430 {
431         return (long double) pow( (double)x, (double)y );
432 }
433 #endif
434
435
436 #ifdef L_remainderl
437 long double remainderl (long double x, long double y)
438 {
439         return (long double) remainder( (double)x, (double)y );
440 }
441 #endif
442
443
444 #ifdef L_remquol
445 long double remquol (long double x, long double y, int *quo)
446 {
447         return (long double) remquo( (double)x, (double)y, quo );
448 }
449 #endif
450
451
452 #ifdef L_rintl
453 long double rintl (long double x)
454 {
455         return (long double) rint( (double)x );
456 }
457 #endif
458
459
460 #ifdef L_roundl
461 long double roundl (long double x)
462 {
463         return (long double) round( (double)x );
464 }
465 #endif
466
467
468 #ifdef L_scalblnl
469 long double scalblnl (long double x, long exp)
470 {
471         return (long double) scalbln( (double)x, exp );
472 }
473 #endif
474
475
476 #ifdef L_scalbnl
477 long double scalbnl (long double x, int exp)
478 {
479         return (long double) scalbn( (double)x, exp );
480 }
481 #endif
482
483
484 #ifdef L_sinhl
485 long double sinhl (long double x)
486 {
487         return (long double) sinh( (double)x );
488 }
489 #endif
490
491
492 #ifdef L_sinl
493 long double sinl (long double x)
494 {
495         return (long double) sin( (double)x );
496 }
497 #endif
498
499
500 #ifdef L_sqrtl
501 long double sqrtl (long double x)
502 {
503         return (long double) sqrt( (double)x );
504 }
505 #endif
506
507
508 #ifdef L_tanhl
509 long double tanhl (long double x)
510 {
511         return (long double) tanh( (double)x );
512 }
513 #endif
514
515
516 #ifdef L_tanl
517 long double tanl (long double x)
518 {
519         return (long double) tan( (double)x );
520 }
521 #endif
522
523
524 #ifdef L_tgammal
525 long double tgammal (long double x)
526 {
527         return (long double) tgamma( (double)x );
528 }
529 #endif
530
531
532 #ifdef L_truncl
533 long double truncl (long double x)
534 {
535         return (long double) trunc( (double)x );
536 }
537 #endif
538
539
540 #ifdef __DO_C99_MATH__
541
542 #ifdef L_fpclassifyl
543 int __fpclassifyl (long double x)
544 {
545         return __fpclassify ( (double) x );
546 }
547 libm_hidden_def(__fpclassifyl)
548 #endif
549
550 #ifdef L_finitel
551 int __finitel (long double x)
552 {
553         return __finite ( (double)x );
554 }
555 libm_hidden_def(__finitel)
556 #endif
557
558 #ifdef L_signbitl
559 int __signbitl (long double x)
560 {
561         return __signbitl ( (double)x );
562 }
563 libm_hidden_def(__signbitl)
564 #endif
565
566 #ifdef L_isnanl
567 int __isnanl (long double x)
568 {
569         return __isnan ( (double)x );
570 }
571 libm_hidden_def(__isnanl)
572 #endif
573
574 #ifdef L_isinfl
575 int __isinfl (long double x)
576 {
577         return __isinf ( (double)x );
578 }
579 libm_hidden_def(__isinfl)
580 #endif
581
582 #endif