FSF GCC merge 02/23/03
[official-gcc.git] / libstdc++-v3 / libmath / stubs.c
blob586fd6db80e579f26e6c0e9ccf5c970dd25ab37c
1 /* Stub definitions for libmath subpart of libstdc++. */
3 /* Copyright (C) 2001, 2002 Free Software Foundation, Inc.
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 2, 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 You should have received a copy of the GNU General Public License along
17 with this library; see the file COPYING. If not, write to the Free
18 Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
19 USA.
21 As a special exception, you may use this file as part of a free software
22 library without restriction. Specifically, if other files instantiate
23 templates or use macros or inline functions from this file, or you compile
24 this file and link it with other files to produce an executable, this
25 file does not by itself cause the resulting executable to be covered by
26 the GNU General Public License. This exception does not however
27 invalidate any other reasons why the executable file might be covered by
28 the GNU General Public License. */
30 #include <math.h>
31 #include "config.h"
33 /* For targets which do not have support for long double versions,
34 we use the crude approximation. We'll do better later. */
37 #ifndef HAVE_ATAN2F
38 float
39 atan2f(float x, float y)
41 return (float) atan2(x, y);
43 #endif
45 #ifndef HAVE_ATAN2L
46 long double
47 atan2l(long double x, long double y)
49 return atan2((double) x, (double) y);
51 #endif
54 #ifndef HAVE_COSF
55 float
56 cosf(float x)
58 return (float) cos(x);
60 #endif
62 #ifndef HAVE_COSL
63 long double
64 cosl(long double x)
66 return cos((double) x);
68 #endif
71 #ifndef HAVE_COSHF
72 float
73 coshf(float x)
75 return (float) cosh(x);
77 #endif
79 #ifndef HAVE_COSHL
80 long double
81 coshl(long double x)
83 return cosh((double) x);
85 #endif
88 #ifndef HAVE_EXPF
89 float
90 expf(float x)
92 return (float) exp(x);
94 #endif
96 #ifndef HAVE_EXPL
97 long double
98 expl(long double x)
100 return exp((double) x);
102 #endif
105 /* Compute the hypothenuse of a right triangle with side x and y. */
106 #ifndef HAVE_HYPOTF
107 float
108 hypotf(float x, float y)
110 float s = fabsf(x) + fabsf(y);
111 x /= s; y /= s;
112 return s * sqrtf(x * x + y * y);
114 #endif
116 #ifndef HAVE_HYPOT
117 double
118 hypot(double x, double y)
120 double s = fabs(x) + fabs(y);
121 x /= s; y /= s;
122 return s * sqrt(x * x + y * y);
124 #endif
126 #ifndef HAVE_HYPOTL
127 long double
128 hypotl(long double x, long double y)
130 long double s = fabsl(x) + fabsl(y);
131 x /= s; y /= s;
132 return s * sqrtl(x * x + y * y);
134 #endif
138 #ifndef HAVE_LOGF
139 float
140 logf(float x)
142 return (float) log(x);
144 #endif
146 #ifndef HAVE_LOGL
147 long double
148 logl(long double x)
150 return log((double) x);
152 #endif
155 #ifndef HAVE_LOG10F
156 float
157 log10f(float x)
159 return (float) log10(x);
161 #endif
163 #ifndef HAVE_LOG10L
164 long double
165 log10l(long double x)
167 return log10((double) x);
169 #endif
172 #ifndef HAVE_POWF
173 float
174 powf(float x, float y)
176 return (float) pow(x, y);
178 #endif
180 #ifndef HAVE_POWL
181 long double
182 powl(long double x, long double y)
184 return pow((double) x, (double) y);
186 #endif
189 #ifndef HAVE_SINF
190 float
191 sinf(float x)
193 return (float) sin(x);
195 #endif
197 #ifndef HAVE_SINL
198 long double
199 sinl(long double x)
201 return sin((double) x);
203 #endif
206 #ifndef HAVE_SINHF
207 float
208 sinhf(float x)
210 return (float) sinh(x);
212 #endif
214 #ifndef HAVE_SINHL
215 long double
216 sinhl(long double x)
218 return sinh((double) x);
220 #endif
223 #ifndef HAVE_SQRTF
224 float
225 sqrtf(float x)
227 return (float) sqrt(x);
229 #endif
231 #ifndef HAVE_SQRTL
232 long double
233 sqrtl(long double x)
235 return sqrt((double) x);
237 #endif
240 #ifndef HAVE_TANF
241 float
242 tanf(float x)
244 return (float) tan(x);
246 #endif
248 #ifndef HAVE_TANL
249 long double
250 tanl(long double x)
252 return tan((double) x);
254 #endif
257 #ifndef HAVE_TANHF
258 float
259 tanhf(float x)
261 return (float) tanh(x);
263 #endif
265 #ifndef HAVE_TANHL
266 long double
267 tanhl(long double x)
269 return tanh((double) x);
271 #endif