]> git.ipfire.org Git - thirdparty/gcc.git/blame - libstdc++-v3/src/c++98/math_stubs_float.cc
Update copyright years.
[thirdparty/gcc.git] / libstdc++-v3 / src / c++98 / math_stubs_float.cc
CommitLineData
7d4260a3
BK
1// Stub definitions for float math.
2
cbe34bb5 3// Copyright (C) 2001-2017 Free Software Foundation, Inc.
7d4260a3
BK
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
748086b7 8// Free Software Foundation; either version 3, or (at your option)
7d4260a3
BK
9// any later version.
10
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.
15
748086b7
JJ
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.
7d4260a3 19
748086b7
JJ
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/>.
7d4260a3
BK
24
25#include <cmath>
26
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.
30
f92ab29f 31extern "C"
7d4260a3
BK
32{
33#ifndef _GLIBCXX_HAVE_FABSF
34 float
35 fabsf(float x)
36 {
37 return (float) fabs(x);
38 }
39#endif
40
41#ifndef _GLIBCXX_HAVE_ACOSF
42 float
43 acosf(float x)
44 {
45 return (float) acos(x);
46 }
47#endif
48
49#ifndef _GLIBCXX_HAVE_ASINF
50 float
51 asinf(float x)
52 {
53 return (float) asin(x);
54 }
55#endif
56
57#ifndef _GLIBCXX_HAVE_ATANF
58 float
59 atanf(float x)
60 {
61 return (float) atan(x);
62 }
63#endif
64
65#ifndef _GLIBCXX_HAVE_ATAN2F
66 float
67 atan2f(float x, float y)
68 {
69 return (float) atan2(x, y);
70 }
71#endif
72
73#ifndef _GLIBCXX_HAVE_CEILF
74 float
75 ceilf(float x)
76 {
77 return (float) ceil(x);
78 }
79#endif
80
81#ifndef _GLIBCXX_HAVE_COSF
82 float
83 cosf(float x)
84 {
85 return (float) cos(x);
86 }
87#endif
88
89#ifndef _GLIBCXX_HAVE_COSHF
90 float
91 coshf(float x)
92 {
93 return (float) cosh(x);
94 }
95#endif
96
97#ifndef _GLIBCXX_HAVE_EXPF
98 float
99 expf(float x)
100 {
101 return (float) exp(x);
102 }
103#endif
104
105#ifndef _GLIBCXX_HAVE_FLOORF
106 float
107 floorf(float x)
108 {
109 return (float) floor(x);
110 }
111#endif
112
113#ifndef _GLIBCXX_HAVE_FMODF
114 float
115 fmodf(float x, float y)
116 {
117 return (float) fmod(x, y);
118 }
119#endif
120
121#ifndef _GLIBCXX_HAVE_FREXPF
122 float
123 frexpf(float x, int *exp)
124 {
125 return (float) frexp(x, exp);
126 }
127#endif
128
129#ifndef _GLIBCXX_HAVE_SQRTF
130 float
131 sqrtf(float x)
132 {
133 return (float) sqrt(x);
134 }
135#endif
136
137#ifndef _GLIBCXX_HAVE_HYPOTF
138 float
139 hypotf(float x, float y)
140 {
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);
146 }
147#endif
148
149#ifndef _GLIBCXX_HAVE_LDEXPF
150 float
151 ldexpf(float x, int exp)
152 {
153 return (float) ldexp(x, exp);
154 }
155#endif
156
157#ifndef _GLIBCXX_HAVE_LOGF
158 float
159 logf(float x)
160 {
161 return (float) log(x);
162 }
163#endif
164
165#ifndef _GLIBCXX_HAVE_LOG10F
166 float
167 log10f(float x)
168 {
169 return (float) log10(x);
170 }
171#endif
172
173#ifndef _GLIBCXX_HAVE_MODFF
174 float
175 modff(float x, float *iptr)
176 {
177 double result, temp;
178
179 result = modf(x, &temp);
180 *iptr = (float) temp;
181 return (float) result;
182 }
183#endif
184
185#ifndef _GLIBCXX_HAVE_POWF
186 float
187 powf(float x, float y)
188 {
189 return (float) pow(x, y);
190 }
191#endif
192
193#ifndef _GLIBCXX_HAVE_SINF
194 float
195 sinf(float x)
196 {
197 return (float) sin(x);
198 }
199#endif
200
201#ifndef _GLIBCXX_HAVE_SINHF
202 float
203 sinhf(float x)
204 {
205 return (float) sinh(x);
206 }
207#endif
208
209#ifndef _GLIBCXX_HAVE_TANF
210 float
211 tanf(float x)
212 {
213 return (float) tan(x);
214 }
215#endif
216
217#ifndef _GLIBCXX_HAVE_TANHF
218 float
219 tanhf(float x)
220 {
221 return (float) tanh(x);
222 }
223#endif
224} // extern "C"