xref: /dflybsd-src/contrib/gcc-8.0/libstdc++-v3/src/c++98/math_stubs_float.cc (revision 38fd149817dfbff97799f62fcb70be98c4e32523)
1*38fd1498Szrj // Stub definitions for float math.
2*38fd1498Szrj 
3*38fd1498Szrj // Copyright (C) 2001-2018 Free Software Foundation, Inc.
4*38fd1498Szrj //
5*38fd1498Szrj // This file is part of the GNU ISO C++ Library.  This library is free
6*38fd1498Szrj // software; you can redistribute it and/or modify it under the
7*38fd1498Szrj // terms of the GNU General Public License as published by the
8*38fd1498Szrj // Free Software Foundation; either version 3, or (at your option)
9*38fd1498Szrj // any later version.
10*38fd1498Szrj 
11*38fd1498Szrj // This library is distributed in the hope that it will be useful,
12*38fd1498Szrj // but WITHOUT ANY WARRANTY; without even the implied warranty of
13*38fd1498Szrj // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14*38fd1498Szrj // GNU General Public License for more details.
15*38fd1498Szrj 
16*38fd1498Szrj // Under Section 7 of GPL version 3, you are granted additional
17*38fd1498Szrj // permissions described in the GCC Runtime Library Exception, version
18*38fd1498Szrj // 3.1, as published by the Free Software Foundation.
19*38fd1498Szrj 
20*38fd1498Szrj // You should have received a copy of the GNU General Public License and
21*38fd1498Szrj // a copy of the GCC Runtime Library Exception along with this program;
22*38fd1498Szrj // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
23*38fd1498Szrj // <http://www.gnu.org/licenses/>.
24*38fd1498Szrj 
25*38fd1498Szrj #include <cmath>
26*38fd1498Szrj 
27*38fd1498Szrj // For targets which do not have support for float versions,
28*38fd1498Szrj // we use the following crude approximations. We keep saying that we'll do
29*38fd1498Szrj // better later, but never do.
30*38fd1498Szrj 
31*38fd1498Szrj extern "C"
32*38fd1498Szrj {
33*38fd1498Szrj #ifndef _GLIBCXX_HAVE_FABSF
34*38fd1498Szrj   float
fabsf(float x)35*38fd1498Szrj   fabsf(float x)
36*38fd1498Szrj   {
37*38fd1498Szrj     return (float) fabs(x);
38*38fd1498Szrj   }
39*38fd1498Szrj #endif
40*38fd1498Szrj 
41*38fd1498Szrj #ifndef _GLIBCXX_HAVE_ACOSF
42*38fd1498Szrj   float
acosf(float x)43*38fd1498Szrj   acosf(float x)
44*38fd1498Szrj   {
45*38fd1498Szrj     return (float) acos(x);
46*38fd1498Szrj   }
47*38fd1498Szrj #endif
48*38fd1498Szrj 
49*38fd1498Szrj #ifndef _GLIBCXX_HAVE_ASINF
50*38fd1498Szrj   float
asinf(float x)51*38fd1498Szrj   asinf(float x)
52*38fd1498Szrj   {
53*38fd1498Szrj     return (float) asin(x);
54*38fd1498Szrj   }
55*38fd1498Szrj #endif
56*38fd1498Szrj 
57*38fd1498Szrj #ifndef _GLIBCXX_HAVE_ATANF
58*38fd1498Szrj   float
atanf(float x)59*38fd1498Szrj   atanf(float x)
60*38fd1498Szrj   {
61*38fd1498Szrj     return (float) atan(x);
62*38fd1498Szrj   }
63*38fd1498Szrj #endif
64*38fd1498Szrj 
65*38fd1498Szrj #ifndef _GLIBCXX_HAVE_ATAN2F
66*38fd1498Szrj   float
atan2f(float x,float y)67*38fd1498Szrj   atan2f(float x, float y)
68*38fd1498Szrj   {
69*38fd1498Szrj     return (float) atan2(x, y);
70*38fd1498Szrj   }
71*38fd1498Szrj #endif
72*38fd1498Szrj 
73*38fd1498Szrj #ifndef _GLIBCXX_HAVE_CEILF
74*38fd1498Szrj   float
ceilf(float x)75*38fd1498Szrj   ceilf(float x)
76*38fd1498Szrj   {
77*38fd1498Szrj     return (float) ceil(x);
78*38fd1498Szrj   }
79*38fd1498Szrj #endif
80*38fd1498Szrj 
81*38fd1498Szrj #ifndef _GLIBCXX_HAVE_COSF
82*38fd1498Szrj   float
cosf(float x)83*38fd1498Szrj   cosf(float x)
84*38fd1498Szrj   {
85*38fd1498Szrj     return (float) cos(x);
86*38fd1498Szrj   }
87*38fd1498Szrj #endif
88*38fd1498Szrj 
89*38fd1498Szrj #ifndef _GLIBCXX_HAVE_COSHF
90*38fd1498Szrj   float
coshf(float x)91*38fd1498Szrj   coshf(float x)
92*38fd1498Szrj   {
93*38fd1498Szrj     return (float) cosh(x);
94*38fd1498Szrj   }
95*38fd1498Szrj #endif
96*38fd1498Szrj 
97*38fd1498Szrj #ifndef _GLIBCXX_HAVE_EXPF
98*38fd1498Szrj   float
expf(float x)99*38fd1498Szrj   expf(float x)
100*38fd1498Szrj   {
101*38fd1498Szrj     return (float) exp(x);
102*38fd1498Szrj   }
103*38fd1498Szrj #endif
104*38fd1498Szrj 
105*38fd1498Szrj #ifndef _GLIBCXX_HAVE_FLOORF
106*38fd1498Szrj   float
floorf(float x)107*38fd1498Szrj   floorf(float x)
108*38fd1498Szrj   {
109*38fd1498Szrj     return (float) floor(x);
110*38fd1498Szrj   }
111*38fd1498Szrj #endif
112*38fd1498Szrj 
113*38fd1498Szrj #ifndef _GLIBCXX_HAVE_FMODF
114*38fd1498Szrj   float
fmodf(float x,float y)115*38fd1498Szrj   fmodf(float x, float y)
116*38fd1498Szrj   {
117*38fd1498Szrj     return (float) fmod(x, y);
118*38fd1498Szrj   }
119*38fd1498Szrj #endif
120*38fd1498Szrj 
121*38fd1498Szrj #ifndef _GLIBCXX_HAVE_FREXPF
122*38fd1498Szrj   float
frexpf(float x,int * exp)123*38fd1498Szrj   frexpf(float x, int *exp)
124*38fd1498Szrj   {
125*38fd1498Szrj     return (float) frexp(x, exp);
126*38fd1498Szrj   }
127*38fd1498Szrj #endif
128*38fd1498Szrj 
129*38fd1498Szrj #ifndef _GLIBCXX_HAVE_SQRTF
130*38fd1498Szrj   float
sqrtf(float x)131*38fd1498Szrj   sqrtf(float x)
132*38fd1498Szrj   {
133*38fd1498Szrj     return (float) sqrt(x);
134*38fd1498Szrj   }
135*38fd1498Szrj #endif
136*38fd1498Szrj 
137*38fd1498Szrj #ifndef _GLIBCXX_HAVE_HYPOTF
138*38fd1498Szrj   float
hypotf(float x,float y)139*38fd1498Szrj   hypotf(float x, float y)
140*38fd1498Szrj   {
141*38fd1498Szrj     float s = fabsf(x) + fabsf(y);
142*38fd1498Szrj     if (s == 0.0F)
143*38fd1498Szrj       return s;
144*38fd1498Szrj     x /= s; y /= s;
145*38fd1498Szrj     return s * sqrtf(x * x + y * y);
146*38fd1498Szrj   }
147*38fd1498Szrj #endif
148*38fd1498Szrj 
149*38fd1498Szrj #ifndef _GLIBCXX_HAVE_LDEXPF
150*38fd1498Szrj   float
ldexpf(float x,int exp)151*38fd1498Szrj   ldexpf(float x, int exp)
152*38fd1498Szrj   {
153*38fd1498Szrj     return (float) ldexp(x, exp);
154*38fd1498Szrj   }
155*38fd1498Szrj #endif
156*38fd1498Szrj 
157*38fd1498Szrj #ifndef _GLIBCXX_HAVE_LOGF
158*38fd1498Szrj   float
logf(float x)159*38fd1498Szrj   logf(float x)
160*38fd1498Szrj   {
161*38fd1498Szrj     return (float) log(x);
162*38fd1498Szrj   }
163*38fd1498Szrj #endif
164*38fd1498Szrj 
165*38fd1498Szrj #ifndef _GLIBCXX_HAVE_LOG10F
166*38fd1498Szrj   float
log10f(float x)167*38fd1498Szrj   log10f(float x)
168*38fd1498Szrj   {
169*38fd1498Szrj     return (float) log10(x);
170*38fd1498Szrj   }
171*38fd1498Szrj #endif
172*38fd1498Szrj 
173*38fd1498Szrj #ifndef _GLIBCXX_HAVE_MODFF
174*38fd1498Szrj   float
modff(float x,float * iptr)175*38fd1498Szrj   modff(float x, float *iptr)
176*38fd1498Szrj   {
177*38fd1498Szrj     double result, temp;
178*38fd1498Szrj 
179*38fd1498Szrj     result = modf(x, &temp);
180*38fd1498Szrj     *iptr = (float) temp;
181*38fd1498Szrj     return (float) result;
182*38fd1498Szrj   }
183*38fd1498Szrj #endif
184*38fd1498Szrj 
185*38fd1498Szrj #ifndef _GLIBCXX_HAVE_POWF
186*38fd1498Szrj   float
powf(float x,float y)187*38fd1498Szrj   powf(float x, float y)
188*38fd1498Szrj   {
189*38fd1498Szrj     return (float) pow(x, y);
190*38fd1498Szrj   }
191*38fd1498Szrj #endif
192*38fd1498Szrj 
193*38fd1498Szrj #ifndef _GLIBCXX_HAVE_SINF
194*38fd1498Szrj   float
sinf(float x)195*38fd1498Szrj   sinf(float x)
196*38fd1498Szrj   {
197*38fd1498Szrj     return (float) sin(x);
198*38fd1498Szrj   }
199*38fd1498Szrj #endif
200*38fd1498Szrj 
201*38fd1498Szrj #ifndef _GLIBCXX_HAVE_SINHF
202*38fd1498Szrj   float
sinhf(float x)203*38fd1498Szrj   sinhf(float x)
204*38fd1498Szrj   {
205*38fd1498Szrj     return (float) sinh(x);
206*38fd1498Szrj   }
207*38fd1498Szrj #endif
208*38fd1498Szrj 
209*38fd1498Szrj #ifndef _GLIBCXX_HAVE_TANF
210*38fd1498Szrj   float
tanf(float x)211*38fd1498Szrj   tanf(float x)
212*38fd1498Szrj   {
213*38fd1498Szrj     return (float) tan(x);
214*38fd1498Szrj   }
215*38fd1498Szrj #endif
216*38fd1498Szrj 
217*38fd1498Szrj #ifndef _GLIBCXX_HAVE_TANHF
218*38fd1498Szrj   float
tanhf(float x)219*38fd1498Szrj   tanhf(float x)
220*38fd1498Szrj   {
221*38fd1498Szrj     return (float) tanh(x);
222*38fd1498Szrj   }
223*38fd1498Szrj #endif
224*38fd1498Szrj } // extern "C"
225