Merge trunk version 193672 into gupc branch.
[official-gcc.git] / libstdc++-v3 / src / c++98 / math_stubs_float.cc
bloba226ce46f2660e38b83570717cbdf1d905a36697
1 // Stub definitions for float math.
3 // Copyright (C) 2001, 2002, 2003, 2009 Free Software Foundation, Inc.
4 //
5 // This file is part of the GNU ISO C++ Library. This library is free
6 // software; you can redistribute it and/or modify it under the
7 // terms of the GNU General Public License as published by the
8 // Free Software Foundation; either version 3, or (at your option)
9 // any later version.
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
16 // Under Section 7 of GPL version 3, you are granted additional
17 // permissions described in the GCC Runtime Library Exception, version
18 // 3.1, as published by the Free Software Foundation.
20 // You should have received a copy of the GNU General Public License and
21 // a copy of the GCC Runtime Library Exception along with this program;
22 // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
23 // <http://www.gnu.org/licenses/>.
25 #include <cmath>
27 // For targets which do not have support for float versions,
28 // we use the following crude approximations. We keep saying that we'll do
29 // better later, but never do.
31 extern "C"
33 #ifndef _GLIBCXX_HAVE_FABSF
34 float
35 fabsf(float x)
37 return (float) fabs(x);
39 #endif
41 #ifndef _GLIBCXX_HAVE_ACOSF
42 float
43 acosf(float x)
45 return (float) acos(x);
47 #endif
49 #ifndef _GLIBCXX_HAVE_ASINF
50 float
51 asinf(float x)
53 return (float) asin(x);
55 #endif
57 #ifndef _GLIBCXX_HAVE_ATANF
58 float
59 atanf(float x)
61 return (float) atan(x);
63 #endif
65 #ifndef _GLIBCXX_HAVE_ATAN2F
66 float
67 atan2f(float x, float y)
69 return (float) atan2(x, y);
71 #endif
73 #ifndef _GLIBCXX_HAVE_CEILF
74 float
75 ceilf(float x)
77 return (float) ceil(x);
79 #endif
81 #ifndef _GLIBCXX_HAVE_COSF
82 float
83 cosf(float x)
85 return (float) cos(x);
87 #endif
89 #ifndef _GLIBCXX_HAVE_COSHF
90 float
91 coshf(float x)
93 return (float) cosh(x);
95 #endif
97 #ifndef _GLIBCXX_HAVE_EXPF
98 float
99 expf(float x)
101 return (float) exp(x);
103 #endif
105 #ifndef _GLIBCXX_HAVE_FLOORF
106 float
107 floorf(float x)
109 return (float) floor(x);
111 #endif
113 #ifndef _GLIBCXX_HAVE_FMODF
114 float
115 fmodf(float x, float y)
117 return (float) fmod(x, y);
119 #endif
121 #ifndef _GLIBCXX_HAVE_FREXPF
122 float
123 frexpf(float x, int *exp)
125 return (float) frexp(x, exp);
127 #endif
129 #ifndef _GLIBCXX_HAVE_SQRTF
130 float
131 sqrtf(float x)
133 return (float) sqrt(x);
135 #endif
137 #ifndef _GLIBCXX_HAVE_HYPOTF
138 float
139 hypotf(float x, float y)
141 float s = fabsf(x) + fabsf(y);
142 if (s == 0.0F)
143 return s;
144 x /= s; y /= s;
145 return s * sqrtf(x * x + y * y);
147 #endif
149 #ifndef _GLIBCXX_HAVE_LDEXPF
150 float
151 ldexpf(float x, int exp)
153 return (float) ldexp(x, exp);
155 #endif
157 #ifndef _GLIBCXX_HAVE_LOGF
158 float
159 logf(float x)
161 return (float) log(x);
163 #endif
165 #ifndef _GLIBCXX_HAVE_LOG10F
166 float
167 log10f(float x)
169 return (float) log10(x);
171 #endif
173 #ifndef _GLIBCXX_HAVE_MODFF
174 float
175 modff(float x, float *iptr)
177 double result, temp;
179 result = modf(x, &temp);
180 *iptr = (float) temp;
181 return (float) result;
183 #endif
185 #ifndef _GLIBCXX_HAVE_POWF
186 float
187 powf(float x, float y)
189 return (float) pow(x, y);
191 #endif
193 #ifndef _GLIBCXX_HAVE_SINF
194 float
195 sinf(float x)
197 return (float) sin(x);
199 #endif
201 #ifndef _GLIBCXX_HAVE_SINHF
202 float
203 sinhf(float x)
205 return (float) sinh(x);
207 #endif
209 #ifndef _GLIBCXX_HAVE_TANF
210 float
211 tanf(float x)
213 return (float) tan(x);
215 #endif
217 #ifndef _GLIBCXX_HAVE_TANHF
218 float
219 tanhf(float x)
221 return (float) tanh(x);
223 #endif
224 } // extern "C"