user32: msgbox: Make buttons an own control group.
[wine/multimedia.git] / dlls / msvcp90 / math.c
blob6c3a33a7e947d6ec533b1f31e84840cc96ba09d3
1 /*
2 * Copyright 2011 Alexandre Julliard
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 #include "config.h"
21 #include <stdarg.h>
22 #include <limits.h>
23 #include <float.h>
24 #define _USE_MATH_DEFINES
25 #include <math.h>
27 #include "msvcp90.h"
28 #include "windef.h"
29 #include "winbase.h"
31 typedef double LDOUBLE; /* long double is just a double */
33 typedef struct { } std_Num_base;
34 typedef struct { } std_Ctraits;
36 enum std_float_denorm_style
38 denorm_indeterminate = -1,
39 denorm_absent = 0,
40 denorm_present = 1
43 enum std_float_round_style
45 round_indeterminate = -1,
46 round_toward_zero = 0,
47 round_to_nearest = 1,
48 round_toward_infinity = 2,
49 round_toward_neg_infinity = 3
52 /* these are defined as integers but the bit patterns are then interpreted as floats/doubles */
53 const DWORD _FDenorm = 1;
54 const ULONGLONG _Denorm = 1;
55 const ULONGLONG _LDenorm = 1;
56 const DWORD _FInf = 0x7f800000;
57 const ULONGLONG _Inf = (ULONGLONG)0x7ff00000 << 32;
58 const ULONGLONG _LInf = (ULONGLONG)0x7ff00000 << 32;
59 const DWORD _FNan = 0x7fc00000;
60 const ULONGLONG _Nan = (ULONGLONG)0x7ff80000 << 32;
61 const ULONGLONG _LNan = (ULONGLONG)0x7ff80000 << 32;
62 const DWORD _FSnan = 0x7f800001;
63 const ULONGLONG _Snan = ((ULONGLONG)0x7ff00000 << 32) + 1;
64 const ULONGLONG _LSnan = ((ULONGLONG)0x7ff00000 << 32) + 1;
65 const ULONGLONG _LZero = 0;
66 const ULONGLONG _Hugeval = (ULONGLONG)0x7ff00000 << 32;
68 const float _FEps = FLT_EPSILON;
69 const double _Eps = DBL_EPSILON;
70 const LDOUBLE _LEps = LDBL_EPSILON;
72 /* ?digits10@?$numeric_limits@C@std@@2HB -> public: static int const std::numeric_limits<signed char>::digits10 */
73 const int std_numeric_limits_signed_char_digits10 = 2;
75 /* ?digits10@?$numeric_limits@D@std@@2HB -> public: static int const std::numeric_limits<char>::digits10 */
76 const int std_numeric_limits_char_digits10 = 2;
78 /* ?digits10@?$numeric_limits@E@std@@2HB -> public: static int const std::numeric_limits<unsigned char>::digits10 */
79 const int std_numeric_limits_unsigned_char_digits10 = 2;
81 /* ?digits10@?$numeric_limits@F@std@@2HB -> public: static int const std::numeric_limits<short>::digits10 */
82 const int std_numeric_limits_short_digits10 = 4;
84 /* ?digits10@?$numeric_limits@G@std@@2HB -> public: static int const std::numeric_limits<unsigned short>::digits10 */
85 const int std_numeric_limits_unsigned_short_digits10 = 4;
87 /* ?digits10@?$numeric_limits@H@std@@2HB -> public: static int const std::numeric_limits<int>::digits10 */
88 const int std_numeric_limits_int_digits10 = 9;
90 /* ?digits10@?$numeric_limits@I@std@@2HB -> public: static int const std::numeric_limits<unsigned int>::digits10 */
91 const int std_numeric_limits_unsigned_int_digits10 = 9;
93 /* ?digits10@?$numeric_limits@J@std@@2HB -> public: static int const std::numeric_limits<long>::digits10 */
94 const int std_numeric_limits_long_digits10 = 9;
96 /* ?digits10@?$numeric_limits@K@std@@2HB -> public: static int const std::numeric_limits<unsigned long>::digits10 */
97 const int std_numeric_limits_unsigned_long_digits10 = 9;
99 /* ?digits10@?$numeric_limits@M@std@@2HB -> public: static int const std::numeric_limits<float>::digits10 */
100 const int std_numeric_limits_float_digits10 = FLT_DIG;
102 /* ?digits10@?$numeric_limits@N@std@@2HB -> public: static int const std::numeric_limits<double>::digits10 */
103 const int std_numeric_limits_double_digits10 = DBL_DIG;
105 /* ?digits10@?$numeric_limits@O@std@@2HB -> public: static int const std::numeric_limits<long double>::digits10 */
106 const int std_numeric_limits_long_double_digits10 = LDBL_DIG;
108 /* ?digits10@?$numeric_limits@_J@std@@2HB -> public: static int const std::numeric_limits<__int64>::digits10 */
109 const int std_numeric_limits_int64_digits10 = 18;
111 /* ?digits10@?$numeric_limits@_K@std@@2HB -> public: static int const std::numeric_limits<unsigned __int64>::digits10 */
112 const int std_numeric_limits_unsigned_int64_digits10 = 18;
114 /* ?digits10@?$numeric_limits@_N@std@@2HB -> public: static int const std::numeric_limits<bool>::digits10 */
115 const int std_numeric_limits_bool_digits10 = 0;
117 /* ?digits10@?$numeric_limits@_W@std@@2HB -> public: static int const std::numeric_limits<wchar_t>::digits10 */
118 const int std_numeric_limits_wchar_t_digits10 = 4;
120 /* ?digits10@_Num_base@std@@2HB -> public: static int const std::_Num_base::digits10 */
121 const int std_Num_base_digits10 = 0;
123 /* ?digits@?$numeric_limits@C@std@@2HB -> public: static int const std::numeric_limits<signed char>::digits */
124 const int std_numeric_limits_signed_char_digits = 7;
126 /* ?digits@?$numeric_limits@D@std@@2HB -> public: static int const std::numeric_limits<char>::digits */
127 const int std_numeric_limits_char_digits = (CHAR_MIN < 0) ? 7 : 8;
129 /* ?digits@?$numeric_limits@E@std@@2HB -> public: static int const std::numeric_limits<unsigned char>::digits */
130 const int std_numeric_limits_unsigned_char_digits = 8;
132 /* ?digits@?$numeric_limits@F@std@@2HB -> public: static int const std::numeric_limits<short>::digits */
133 const int std_numeric_limits_short_digits = 15;
135 /* ?digits@?$numeric_limits@G@std@@2HB -> public: static int const std::numeric_limits<unsigned short>::digits */
136 const int std_numeric_limits_unsigned_short_digits = 16;
138 /* ?digits@?$numeric_limits@H@std@@2HB -> public: static int const std::numeric_limits<int>::digits */
139 const int std_numeric_limits_int_digits = 31;
141 /* ?digits@?$numeric_limits@I@std@@2HB -> public: static int const std::numeric_limits<unsigned int>::digits */
142 const int std_numeric_limits_unsigned_int_digits = 32;
144 /* ?digits@?$numeric_limits@J@std@@2HB -> public: static int const std::numeric_limits<long>::digits */
145 const int std_numeric_limits_long_digits = 31;
147 /* ?digits@?$numeric_limits@K@std@@2HB -> public: static int const std::numeric_limits<unsigned long>::digits */
148 const int std_numeric_limits_unsigned_long_digits = 32;
150 /* ?digits@?$numeric_limits@M@std@@2HB -> public: static int const std::numeric_limits<float>::digits */
151 const int std_numeric_limits_float_digits = FLT_MANT_DIG;
153 /* ?digits@?$numeric_limits@N@std@@2HB -> public: static int const std::numeric_limits<double>::digits */
154 const int std_numeric_limits_double_digits = DBL_MANT_DIG;
156 /* ?digits@?$numeric_limits@O@std@@2HB -> public: static int const std::numeric_limits<long double>::digits */
157 const int std_numeric_limits_long_double_digits = LDBL_MANT_DIG;
159 /* ?digits@?$numeric_limits@_J@std@@2HB -> public: static int const std::numeric_limits<__int64>::digits */
160 const int std_numeric_limits_int64_digits = 63;
162 /* ?digits@?$numeric_limits@_K@std@@2HB -> public: static int const std::numeric_limits<unsigned __int64>::digits */
163 const int std_numeric_limits_unsigned_int64_digits = 64;
165 /* ?digits@?$numeric_limits@_N@std@@2HB -> public: static int const std::numeric_limits<bool>::digits */
166 const int std_numeric_limits_bool_digits = 1;
168 /* ?digits@?$numeric_limits@_W@std@@2HB -> public: static int const std::numeric_limits<wchar_t>::digits */
169 const int std_numeric_limits_wchar_t_digits = 16;
171 /* ?digits@_Num_base@std@@2HB -> public: static int const std::_Num_base::digits */
172 const int std_Num_base_digits = 0;
174 /* ?has_denorm@_Num_base@std@@2W4float_denorm_style@2@B -> public: static enum std::float_denorm_style const std::_Num_base::has_denorm */
175 const enum std_float_denorm_style std_Num_base_has_denorm = denorm_absent;
177 /* ?has_denorm@_Num_float_base@std@@2W4float_denorm_style@2@B -> public: static enum std::float_denorm_style const std::_Num_float_base::has_denorm */
178 const enum std_float_denorm_style std_Num_float_base_has_denorm = denorm_present;
180 /* ?has_denorm_loss@_Num_base@std@@2_NB -> public: static bool const std::_Num_base::has_denorm_loss */
181 const BOOLEAN std_Num_base_has_denorm_loss = FALSE;
183 /* ?has_denorm_loss@_Num_float_base@std@@2_NB -> public: static bool const std::_Num_float_base::has_denorm_loss */
184 const BOOLEAN std_Num_float_base_has_denorm_loss = TRUE;
186 /* ?has_infinity@_Num_base@std@@2_NB -> public: static bool const std::_Num_base::has_infinity */
187 const BOOLEAN std_Num_base_has_infinity = FALSE;
189 /* ?has_infinity@_Num_float_base@std@@2_NB -> public: static bool const std::_Num_float_base::has_infinity */
190 const BOOLEAN std_Num_float_base_has_infinity = TRUE;
192 /* ?has_quiet_NaN@_Num_base@std@@2_NB -> public: static bool const std::_Num_base::has_quiet_NaN */
193 const BOOLEAN std_Num_base_has_quiet_NaN = FALSE;
195 /* ?has_quiet_NaN@_Num_float_base@std@@2_NB -> public: static bool const std::_Num_float_base::has_quiet_NaN */
196 const BOOLEAN std_Num_float_base_has_quiet_NaN = TRUE;
198 /* ?has_signaling_NaN@_Num_base@std@@2_NB -> public: static bool const std::_Num_base::has_signaling_NaN */
199 const BOOLEAN std_Num_base_has_signaling_NaN = FALSE;
201 /* ?has_signaling_NaN@_Num_float_base@std@@2_NB -> public: static bool const std::_Num_float_base::has_signaling_NaN */
202 const BOOLEAN std_Num_float_base_has_signaling_NaN = TRUE;
204 /* ?is_bounded@_Num_base@std@@2_NB -> public: static bool const std::_Num_base::is_bounded */
205 const BOOLEAN std_Num_base_is_bounded = FALSE;
207 /* ?is_bounded@_Num_float_base@std@@2_NB -> public: static bool const std::_Num_float_base::is_bounded */
208 const BOOLEAN std_Num_float_base_is_bounded = TRUE;
210 /* ?is_bounded@_Num_int_base@std@@2_NB -> public: static bool const std::_Num_int_base::is_bounded */
211 const BOOLEAN std_Num_int_base_is_bounded = TRUE;
213 /* ?is_exact@_Num_base@std@@2_NB -> public: static bool const std::_Num_base::is_exact */
214 const BOOLEAN std_Num_base_is_exact = FALSE;
216 /* ?is_exact@_Num_float_base@std@@2_NB -> public: static bool const std::_Num_float_base::is_exact */
217 const BOOLEAN std_Num_float_base_is_exact = FALSE;
219 /* ?is_exact@_Num_int_base@std@@2_NB -> public: static bool const std::_Num_int_base::is_exact */
220 const BOOLEAN std_Num_int_base_is_exact = TRUE;
222 /* ?is_iec559@_Num_base@std@@2_NB -> public: static bool const std::_Num_base::is_iec559 */
223 const BOOLEAN std_Num_base_is_iec559 = FALSE;
225 /* ?is_iec559@_Num_float_base@std@@2_NB -> public: static bool const std::_Num_float_base::is_iec559 */
226 const BOOLEAN std_Num_float_base_is_iec559 = TRUE;
228 /* ?is_integer@_Num_base@std@@2_NB -> public: static bool const std::_Num_base::is_integer */
229 const BOOLEAN std_Num_base_is_integer = FALSE;
231 /* ?is_integer@_Num_float_base@std@@2_NB -> public: static bool const std::_Num_float_base::is_integer */
232 const BOOLEAN std_Num_float_base_is_integer = FALSE;
234 /* ?is_integer@_Num_int_base@std@@2_NB -> public: static bool const std::_Num_int_base::is_integer */
235 const BOOLEAN std_Num_int_base_is_integer = TRUE;
237 /* ?is_modulo@?$numeric_limits@_N@std@@2_NB -> public: static bool const std::numeric_limits<bool>::is_modulo */
238 const BOOLEAN std_numeric_limits_bool_is_modulo = FALSE;
240 /* ?is_modulo@_Num_base@std@@2_NB -> public: static bool const std::_Num_base::is_modulo */
241 const BOOLEAN std_Num_base_is_modulo = FALSE;
243 /* ?is_modulo@_Num_float_base@std@@2_NB -> public: static bool const std::_Num_float_base::is_modulo */
244 const BOOLEAN std_Num_float_base_is_modulo = FALSE;
246 /* ?is_modulo@_Num_int_base@std@@2_NB -> public: static bool const std::_Num_int_base::is_modulo */
247 const BOOLEAN std_Num_int_base_is_modulo = TRUE;
249 /* ?is_signed@?$numeric_limits@C@std@@2_NB -> public: static bool const std::numeric_limits<signed char>::is_signed */
250 const BOOLEAN std_numeric_limits_signed_char_is_signed = TRUE;
252 /* ?is_signed@?$numeric_limits@D@std@@2_NB -> public: static bool const std::numeric_limits<char>::is_signed */
253 const BOOLEAN std_numeric_limits_char_is_signed = (CHAR_MIN < 0);
255 /* ?is_signed@?$numeric_limits@E@std@@2_NB -> public: static bool const std::numeric_limits<unsigned char>::is_signed */
256 const BOOLEAN std_numeric_limits_unsigned_char_is_signed = FALSE;
258 /* ?is_signed@?$numeric_limits@F@std@@2_NB -> public: static bool const std::numeric_limits<short>::is_signed */
259 const BOOLEAN std_numeric_limits_short_is_signed = TRUE;
261 /* ?is_signed@?$numeric_limits@G@std@@2_NB -> public: static bool const std::numeric_limits<unsigned short>::is_signed */
262 const BOOLEAN std_numeric_limits_unsigned_short_is_signed = FALSE;
264 /* ?is_signed@?$numeric_limits@H@std@@2_NB -> public: static bool const std::numeric_limits<int>::is_signed */
265 const BOOLEAN std_numeric_limits_int_is_signed = TRUE;
267 /* ?is_signed@?$numeric_limits@I@std@@2_NB -> public: static bool const std::numeric_limits<unsigned int>::is_signed */
268 const BOOLEAN std_numeric_limits_unsigned_int_is_signed = FALSE;
270 /* ?is_signed@?$numeric_limits@J@std@@2_NB -> public: static bool const std::numeric_limits<long>::is_signed */
271 const BOOLEAN std_numeric_limits_long_is_signed = TRUE;
273 /* ?is_signed@?$numeric_limits@K@std@@2_NB -> public: static bool const std::numeric_limits<unsigned long>::is_signed */
274 const BOOLEAN std_numeric_limits_unsigned_long_is_signed = FALSE;
276 /* ?is_signed@?$numeric_limits@_J@std@@2_NB -> public: static bool const std::numeric_limits<__int64>::is_signed */
277 const BOOLEAN std_numeric_limits_int64_is_signed = TRUE;
279 /* ?is_signed@?$numeric_limits@_K@std@@2_NB -> public: static bool const std::numeric_limits<unsigned __int64>::is_signed */
280 const BOOLEAN std_numeric_limits_unsigned_int64_is_signed = FALSE;
282 /* ?is_signed@?$numeric_limits@_N@std@@2_NB -> public: static bool const std::numeric_limits<bool>::is_signed */
283 const BOOLEAN std_numeric_limits_bool_is_signed = FALSE;
285 /* ?is_signed@?$numeric_limits@_W@std@@2_NB -> public: static bool const std::numeric_limits<wchar_t>::is_signed */
286 const BOOLEAN std_numeric_limits_wchar_t_is_signed = FALSE;
288 /* ?is_signed@_Num_base@std@@2_NB -> public: static bool const std::_Num_base::is_signed */
289 const BOOLEAN std_Num_base_is_signed = FALSE;
291 /* ?is_signed@_Num_float_base@std@@2_NB -> public: static bool const std::_Num_float_base::is_signed */
292 const BOOLEAN std_Num_float_base_is_signed = TRUE;
294 /* ?is_specialized@_Num_base@std@@2_NB -> public: static bool const std::_Num_base::is_specialized */
295 const BOOLEAN std_Num_base_is_specialized = FALSE;
297 /* ?is_specialized@_Num_float_base@std@@2_NB -> public: static bool const std::_Num_float_base::is_specialized */
298 const BOOLEAN std_Num_float_base_is_specialized = TRUE;
300 /* ?is_specialized@_Num_int_base@std@@2_NB -> public: static bool const std::_Num_int_base::is_specialized */
301 const BOOLEAN std_Num_int_base_is_specialized = TRUE;
303 /* ?max_exponent10@?$numeric_limits@M@std@@2HB -> public: static int const std::numeric_limits<float>::max_exponent10 */
304 const int std_numeric_limits_float_max_exponent10 = FLT_MAX_10_EXP;
306 /* ?max_exponent10@?$numeric_limits@N@std@@2HB -> public: static int const std::numeric_limits<double>::max_exponent10 */
307 const int std_numeric_limits_double_max_exponent10 = DBL_MAX_10_EXP;
309 /* ?max_exponent10@?$numeric_limits@O@std@@2HB -> public: static int const std::numeric_limits<long double>::max_exponent10 */
310 const int std_numeric_limits_long_double_max_exponent10 = LDBL_MAX_10_EXP;
312 /* ?max_exponent10@_Num_base@std@@2HB -> public: static int const std::_Num_base::max_exponent10 */
313 const int std_Num_base_max_exponent10 = 0;
315 /* ?max_exponent@?$numeric_limits@M@std@@2HB -> public: static int const std::numeric_limits<float>::max_exponent */
316 const int std_numeric_limits_float_max_exponent = FLT_MAX_EXP;
318 /* ?max_exponent@?$numeric_limits@N@std@@2HB -> public: static int const std::numeric_limits<double>::max_exponent */
319 const int std_numeric_limits_double_max_exponent = DBL_MAX_EXP;
321 /* ?max_exponent@?$numeric_limits@O@std@@2HB -> public: static int const std::numeric_limits<long double>::max_exponent */
322 const int std_numeric_limits_long_double_max_exponent = LDBL_MAX_EXP;
324 /* ?max_exponent@_Num_base@std@@2HB -> public: static int const std::_Num_base::max_exponent */
325 const int std_Num_base_max_exponent = 0;
327 /* ?min_exponent10@?$numeric_limits@M@std@@2HB -> public: static int const std::numeric_limits<float>::min_exponent10 */
328 const int std_numeric_limits_float_min_exponent10 = FLT_MIN_10_EXP;
330 /* ?min_exponent10@?$numeric_limits@N@std@@2HB -> public: static int const std::numeric_limits<double>::min_exponent10 */
331 const int std_numeric_limits_double_min_exponent10 = DBL_MIN_10_EXP;
333 /* ?min_exponent10@?$numeric_limits@O@std@@2HB -> public: static int const std::numeric_limits<long double>::min_exponent10 */
334 const int std_numeric_limits_long_double_min_exponent10 = LDBL_MIN_10_EXP;
336 /* ?min_exponent10@_Num_base@std@@2HB -> public: static int const std::_Num_base::min_exponent10 */
337 const int std_Num_base_min_exponent10 = 0;
339 /* ?min_exponent@?$numeric_limits@M@std@@2HB -> public: static int const std::numeric_limits<float>::min_exponent */
340 const int std_numeric_limits_float_min_exponent = FLT_MIN_EXP;
342 /* ?min_exponent@?$numeric_limits@N@std@@2HB -> public: static int const std::numeric_limits<double>::min_exponent */
343 const int std_numeric_limits_double_min_exponent = DBL_MIN_EXP;
345 /* ?min_exponent@?$numeric_limits@O@std@@2HB -> public: static int const std::numeric_limits<long double>::min_exponent */
346 const int std_numeric_limits_long_double_min_exponent = LDBL_MIN_EXP;
348 /* ?min_exponent@_Num_base@std@@2HB -> public: static int const std::_Num_base::min_exponent */
349 const int std_Num_base_min_exponent = 0;
351 /* ?radix@_Num_base@std@@2HB -> public: static int const std::_Num_base::radix */
352 const int std_Num_base_radix = 0;
354 /* ?radix@_Num_float_base@std@@2HB -> public: static int const std::_Num_float_base::radix */
355 const int std_Num_float_base_radix = FLT_RADIX;
357 /* ?radix@_Num_int_base@std@@2HB -> public: static int const std::_Num_int_base::radix */
358 const int std_Num_int_base_radix = 2;
360 /* ?round_style@_Num_base@std@@2W4float_round_style@2@B -> public: static enum std::float_round_style const std::_Num_base::round_style */
361 const enum std_float_round_style std_Num_base_round_style = round_toward_zero;
363 /* ?round_style@_Num_float_base@std@@2W4float_round_style@2@B -> public: static enum std::float_round_style const std::_Num_float_base::round_style */
364 const enum std_float_round_style std_Num_float_base_round_style = round_to_nearest;
366 /* ?tinyness_before@_Num_base@std@@2_NB -> public: static bool const std::_Num_base::tinyness_before */
367 const BOOLEAN std_Num_base_tinyness_before = FALSE;
369 /* ?tinyness_before@_Num_float_base@std@@2_NB -> public: static bool const std::_Num_float_base::tinyness_before */
370 const BOOLEAN std_Num_float_base_tinyness_before = TRUE;
372 /* ?traps@_Num_base@std@@2_NB -> public: static bool const std::_Num_base::traps */
373 const BOOLEAN std_Num_base_traps = FALSE;
375 /* ?traps@_Num_float_base@std@@2_NB -> public: static bool const std::_Num_float_base::traps */
376 const BOOLEAN std_Num_float_base_traps = TRUE;
378 /* ??4?$numeric_limits@C@std@@QAEAAV01@ABV01@@Z -> public: class std::numeric_limits<signed char> & __thiscall std::numeric_limits<signed char>::operator=(class std::numeric_limits<signed char> const &) */
379 /* ??4?$numeric_limits@C@std@@QEAAAEAV01@AEBV01@@Z -> public: class std::numeric_limits<signed char> & __ptr64 __cdecl std::numeric_limits<signed char>::operator=(class std::numeric_limits<signed char> const & __ptr64) __ptr64 */
380 /* ??4?$numeric_limits@D@std@@QAEAAV01@ABV01@@Z -> public: class std::numeric_limits<char> & __thiscall std::numeric_limits<char>::operator=(class std::numeric_limits<char> const &) */
381 /* ??4?$numeric_limits@D@std@@QEAAAEAV01@AEBV01@@Z -> public: class std::numeric_limits<char> & __ptr64 __cdecl std::numeric_limits<char>::operator=(class std::numeric_limits<char> const & __ptr64) __ptr64 */
382 /* ??4?$numeric_limits@E@std@@QAEAAV01@ABV01@@Z -> public: class std::numeric_limits<unsigned char> & __thiscall std::numeric_limits<unsigned char>::operator=(class std::numeric_limits<unsigned char> const &) */
383 /* ??4?$numeric_limits@E@std@@QEAAAEAV01@AEBV01@@Z -> public: class std::numeric_limits<unsigned char> & __ptr64 __cdecl std::numeric_limits<unsigned char>::operator=(class std::numeric_limits<unsigned char> const & __ptr64) __ptr64 */
384 /* ??4?$numeric_limits@F@std@@QAEAAV01@ABV01@@Z -> public: class std::numeric_limits<short> & __thiscall std::numeric_limits<short>::operator=(class std::numeric_limits<short> const &) */
385 /* ??4?$numeric_limits@F@std@@QEAAAEAV01@AEBV01@@Z -> public: class std::numeric_limits<short> & __ptr64 __cdecl std::numeric_limits<short>::operator=(class std::numeric_limits<short> const & __ptr64) __ptr64 */
386 /* ??4?$numeric_limits@G@std@@QAEAAV01@ABV01@@Z -> public: class std::numeric_limits<unsigned short> & __thiscall std::numeric_limits<unsigned short>::operator=(class std::numeric_limits<unsigned short> const &) */
387 /* ??4?$numeric_limits@G@std@@QEAAAEAV01@AEBV01@@Z -> public: class std::numeric_limits<unsigned short> & __ptr64 __cdecl std::numeric_limits<unsigned short>::operator=(class std::numeric_limits<unsigned short> const & __ptr64) __ptr64 */
388 /* ??4?$numeric_limits@H@std@@QAEAAV01@ABV01@@Z -> public: class std::numeric_limits<int> & __thiscall std::numeric_limits<int>::operator=(class std::numeric_limits<int> const &) */
389 /* ??4?$numeric_limits@H@std@@QEAAAEAV01@AEBV01@@Z -> public: class std::numeric_limits<int> & __ptr64 __cdecl std::numeric_limits<int>::operator=(class std::numeric_limits<int> const & __ptr64) __ptr64 */
390 /* ??4?$numeric_limits@I@std@@QAEAAV01@ABV01@@Z -> public: class std::numeric_limits<unsigned int> & __thiscall std::numeric_limits<unsigned int>::operator=(class std::numeric_limits<unsigned int> const &) */
391 /* ??4?$numeric_limits@I@std@@QEAAAEAV01@AEBV01@@Z -> public: class std::numeric_limits<unsigned int> & __ptr64 __cdecl std::numeric_limits<unsigned int>::operator=(class std::numeric_limits<unsigned int> const & __ptr64) __ptr64 */
392 /* ??4?$numeric_limits@J@std@@QAEAAV01@ABV01@@Z -> public: class std::numeric_limits<long> & __thiscall std::numeric_limits<long>::operator=(class std::numeric_limits<long> const &) */
393 /* ??4?$numeric_limits@J@std@@QEAAAEAV01@AEBV01@@Z -> public: class std::numeric_limits<long> & __ptr64 __cdecl std::numeric_limits<long>::operator=(class std::numeric_limits<long> const & __ptr64) __ptr64 */
394 /* ??4?$numeric_limits@K@std@@QAEAAV01@ABV01@@Z -> public: class std::numeric_limits<unsigned long> & __thiscall std::numeric_limits<unsigned long>::operator=(class std::numeric_limits<unsigned long> const &) */
395 /* ??4?$numeric_limits@K@std@@QEAAAEAV01@AEBV01@@Z -> public: class std::numeric_limits<unsigned long> & __ptr64 __cdecl std::numeric_limits<unsigned long>::operator=(class std::numeric_limits<unsigned long> const & __ptr64) __ptr64 */
396 /* ??4?$numeric_limits@M@std@@QAEAAV01@ABV01@@Z -> public: class std::numeric_limits<float> & __thiscall std::numeric_limits<float>::operator=(class std::numeric_limits<float> const &) */
397 /* ??4?$numeric_limits@M@std@@QEAAAEAV01@AEBV01@@Z -> public: class std::numeric_limits<float> & __ptr64 __cdecl std::numeric_limits<float>::operator=(class std::numeric_limits<float> const & __ptr64) __ptr64 */
398 /* ??4?$numeric_limits@N@std@@QAEAAV01@ABV01@@Z -> public: class std::numeric_limits<double> & __thiscall std::numeric_limits<double>::operator=(class std::numeric_limits<double> const &) */
399 /* ??4?$numeric_limits@N@std@@QEAAAEAV01@AEBV01@@Z -> public: class std::numeric_limits<double> & __ptr64 __cdecl std::numeric_limits<double>::operator=(class std::numeric_limits<double> const & __ptr64) __ptr64 */
400 /* ??4?$numeric_limits@O@std@@QAEAAV01@ABV01@@Z -> public: class std::numeric_limits<long double> & __thiscall std::numeric_limits<long double>::operator=(class std::numeric_limits<long double> const &) */
401 /* ??4?$numeric_limits@O@std@@QEAAAEAV01@AEBV01@@Z -> public: class std::numeric_limits<long double> & __ptr64 __cdecl std::numeric_limits<long double>::operator=(class std::numeric_limits<long double> const & __ptr64) __ptr64 */
402 /* ??4?$numeric_limits@_J@std@@QAEAAV01@ABV01@@Z -> public: class std::numeric_limits<__int64> & __thiscall std::numeric_limits<__int64>::operator=(class std::numeric_limits<__int64> const &) */
403 /* ??4?$numeric_limits@_J@std@@QEAAAEAV01@AEBV01@@Z -> public: class std::numeric_limits<__int64> & __ptr64 __cdecl std::numeric_limits<__int64>::operator=(class std::numeric_limits<__int64> const & __ptr64) __ptr64 */
404 /* ??4?$numeric_limits@_K@std@@QAEAAV01@ABV01@@Z -> public: class std::numeric_limits<unsigned __int64> & __thiscall std::numeric_limits<unsigned __int64>::operator=(class std::numeric_limits<unsigned __int64> const &) */
405 /* ??4?$numeric_limits@_K@std@@QEAAAEAV01@AEBV01@@Z -> public: class std::numeric_limits<unsigned __int64> & __ptr64 __cdecl std::numeric_limits<unsigned __int64>::operator=(class std::numeric_limits<unsigned __int64> const & __ptr64) __ptr64 */
406 /* ??4?$numeric_limits@_N@std@@QAEAAV01@ABV01@@Z -> public: class std::numeric_limits<bool> & __thiscall std::numeric_limits<bool>::operator=(class std::numeric_limits<bool> const &) */
407 /* ??4?$numeric_limits@_N@std@@QEAAAEAV01@AEBV01@@Z -> public: class std::numeric_limits<bool> & __ptr64 __cdecl std::numeric_limits<bool>::operator=(class std::numeric_limits<bool> const & __ptr64) __ptr64 */
408 /* ??4?$numeric_limits@_W@std@@QAEAAV01@ABV01@@Z -> public: class std::numeric_limits<wchar_t> & __thiscall std::numeric_limits<wchar_t>::operator=(class std::numeric_limits<wchar_t> const &) */
409 /* ??4?$numeric_limits@_W@std@@QEAAAEAV01@AEBV01@@Z -> public: class std::numeric_limits<wchar_t> & __ptr64 __cdecl std::numeric_limits<wchar_t>::operator=(class std::numeric_limits<wchar_t> const & __ptr64) __ptr64 */
410 /* ??4_Num_base@std@@QAEAAU01@ABU01@@Z -> public: struct std::_Num_base & __thiscall std::_Num_base::operator=(struct std::_Num_base const &) */
411 /* ??4_Num_base@std@@QEAAAEAU01@AEBU01@@Z -> public: struct std::_Num_base & __ptr64 __cdecl std::_Num_base::operator=(struct std::_Num_base const & __ptr64) __ptr64 */
412 /* ??4_Num_float_base@std@@QAEAAU01@ABU01@@Z -> public: struct std::_Num_float_base & __thiscall std::_Num_float_base::operator=(struct std::_Num_float_base const &) */
413 /* ??4_Num_float_base@std@@QEAAAEAU01@AEBU01@@Z -> public: struct std::_Num_float_base & __ptr64 __cdecl std::_Num_float_base::operator=(struct std::_Num_float_base const & __ptr64) __ptr64 */
414 /* ??4_Num_int_base@std@@QAEAAU01@ABU01@@Z -> public: struct std::_Num_int_base & __thiscall std::_Num_int_base::operator=(struct std::_Num_int_base const &) */
415 /* ??4_Num_int_base@std@@QEAAAEAU01@AEBU01@@Z -> public: struct std::_Num_int_base & __ptr64 __cdecl std::_Num_int_base::operator=(struct std::_Num_int_base const & __ptr64) __ptr64 */
416 DEFINE_THISCALL_WRAPPER( std_Num_base_op_assign, 8 )
417 std_Num_base * __thiscall std_Num_base_op_assign( std_Num_base *this, std_Num_base *right )
419 return this;
422 /* ?denorm_min@?$numeric_limits@C@std@@SACXZ -> public: static signed char __cdecl std::numeric_limits<signed char>::denorm_min(void) */
423 signed char __cdecl std_numeric_limits_signed_char_denorm_min(void) { return 0; }
425 /* ?denorm_min@?$numeric_limits@D@std@@SADXZ -> public: static char __cdecl std::numeric_limits<char>::denorm_min(void) */
426 char __cdecl std_numeric_limits_char_denorm_min(void) { return 0; }
428 /* ?denorm_min@?$numeric_limits@E@std@@SAEXZ -> public: static unsigned char __cdecl std::numeric_limits<unsigned char>::denorm_min(void) */
429 unsigned char __cdecl std_numeric_limits_unsigned_char_denorm_min(void) { return 0; }
431 /* ?denorm_min@?$numeric_limits@F@std@@SAFXZ -> public: static short __cdecl std::numeric_limits<short>::denorm_min(void) */
432 short __cdecl std_numeric_limits_short_denorm_min(void) { return 0; }
434 /* ?denorm_min@?$numeric_limits@G@std@@SAGXZ -> public: static unsigned short __cdecl std::numeric_limits<unsigned short>::denorm_min(void) */
435 unsigned short __cdecl std_numeric_limits_unsigned_short_denorm_min(void) { return 0; }
437 /* ?denorm_min@?$numeric_limits@H@std@@SAHXZ -> public: static int __cdecl std::numeric_limits<int>::denorm_min(void) */
438 int __cdecl std_numeric_limits_int_denorm_min(void) { return 0; }
440 /* ?denorm_min@?$numeric_limits@I@std@@SAIXZ -> public: static unsigned int __cdecl std::numeric_limits<unsigned int>::denorm_min(void) */
441 unsigned int __cdecl std_numeric_limits_unsigned_int_denorm_min(void) { return 0; }
443 /* ?denorm_min@?$numeric_limits@J@std@@SAJXZ -> public: static long __cdecl std::numeric_limits<long>::denorm_min(void) */
444 LONG __cdecl std_numeric_limits_long_denorm_min(void) { return 0; }
446 /* ?denorm_min@?$numeric_limits@K@std@@SAKXZ -> public: static unsigned long __cdecl std::numeric_limits<unsigned long>::denorm_min(void) */
447 ULONG __cdecl std_numeric_limits_unsigned_long_denorm_min(void) { return 0; }
449 /* ?denorm_min@?$numeric_limits@M@std@@SAMXZ -> public: static float __cdecl std::numeric_limits<float>::denorm_min(void) */
450 float __cdecl std_numeric_limits_float_denorm_min(void) { return *(float *)&_FDenorm; }
452 /* ?denorm_min@?$numeric_limits@N@std@@SANXZ -> public: static double __cdecl std::numeric_limits<double>::denorm_min(void) */
453 double __cdecl std_numeric_limits_double_denorm_min(void) { return *(double *)&_Denorm; }
455 /* ?denorm_min@?$numeric_limits@O@std@@SAOXZ -> public: static long double __cdecl std::numeric_limits<long double>::denorm_min(void) */
456 LDOUBLE __cdecl std_numeric_limits_long_double_denorm_min(void) { return *(LDOUBLE *)&_LDenorm; }
458 /* ?denorm_min@?$numeric_limits@_J@std@@SA_JXZ -> public: static __int64 __cdecl std::numeric_limits<__int64>::denorm_min(void) */
459 __int64 __cdecl std_numeric_limits_int64_denorm_min(void) { return 0; }
461 /* ?denorm_min@?$numeric_limits@_K@std@@SA_KXZ -> public: static unsigned __int64 __cdecl std::numeric_limits<unsigned __int64>::denorm_min(void) */
462 unsigned __int64 __cdecl std_numeric_limits_unsigned_int64_denorm_min(void) { return 0; }
464 /* ?denorm_min@?$numeric_limits@_N@std@@SA_NXZ -> public: static bool __cdecl std::numeric_limits<bool>::denorm_min(void) */
465 BOOLEAN __cdecl std_numeric_limits_bool_denorm_min(void) { return FALSE; }
467 /* ?denorm_min@?$numeric_limits@_W@std@@SA_WXZ -> public: static wchar_t __cdecl std::numeric_limits<wchar_t>::denorm_min(void) */
468 WCHAR __cdecl std_numeric_limits_wchar_t_denorm_min(void) { return 0; }
470 /* ?epsilon@?$numeric_limits@C@std@@SACXZ -> public: static signed char __cdecl std::numeric_limits<signed char>::epsilon(void) */
471 signed char __cdecl std_numeric_limits_signed_char_epsilon(void) { return 0; }
473 /* ?epsilon@?$numeric_limits@D@std@@SADXZ -> public: static char __cdecl std::numeric_limits<char>::epsilon(void) */
474 char __cdecl std_numeric_limits_char_epsilon(void) { return 0; }
476 /* ?epsilon@?$numeric_limits@E@std@@SAEXZ -> public: static unsigned char __cdecl std::numeric_limits<unsigned char>::epsilon(void) */
477 unsigned char __cdecl std_numeric_limits_unsigned_char_epsilon(void) { return 0; }
479 /* ?epsilon@?$numeric_limits@F@std@@SAFXZ -> public: static short __cdecl std::numeric_limits<short>::epsilon(void) */
480 short __cdecl std_numeric_limits_short_epsilon(void) { return 0; }
482 /* ?epsilon@?$numeric_limits@G@std@@SAGXZ -> public: static unsigned short __cdecl std::numeric_limits<unsigned short>::epsilon(void) */
483 unsigned short __cdecl std_numeric_limits_unsigned_short_epsilon(void) { return 0; }
485 /* ?epsilon@?$numeric_limits@H@std@@SAHXZ -> public: static int __cdecl std::numeric_limits<int>::epsilon(void) */
486 int __cdecl std_numeric_limits_int_epsilon(void) { return 0; }
488 /* ?epsilon@?$numeric_limits@I@std@@SAIXZ -> public: static unsigned int __cdecl std::numeric_limits<unsigned int>::epsilon(void) */
489 unsigned int __cdecl std_numeric_limits_unsigned_int_epsilon(void) { return 0; }
491 /* ?epsilon@?$numeric_limits@J@std@@SAJXZ -> public: static long __cdecl std::numeric_limits<long>::epsilon(void) */
492 LONG __cdecl std_numeric_limits_long_epsilon(void) { return 0; }
494 /* ?epsilon@?$numeric_limits@K@std@@SAKXZ -> public: static unsigned long __cdecl std::numeric_limits<unsigned long>::epsilon(void) */
495 ULONG __cdecl std_numeric_limits_unsigned_long_epsilon(void) { return 0; }
497 /* ?epsilon@?$numeric_limits@M@std@@SAMXZ -> public: static float __cdecl std::numeric_limits<float>::epsilon(void) */
498 float __cdecl std_numeric_limits_float_epsilon(void) { return _FEps; }
500 /* ?epsilon@?$numeric_limits@N@std@@SANXZ -> public: static double __cdecl std::numeric_limits<double>::epsilon(void) */
501 double __cdecl std_numeric_limits_double_epsilon(void) { return _Eps; }
503 /* ?epsilon@?$numeric_limits@O@std@@SAOXZ -> public: static long double __cdecl std::numeric_limits<long double>::epsilon(void) */
504 LDOUBLE __cdecl std_numeric_limits_long_double_epsilon(void) { return _LEps; }
506 /* ?epsilon@?$numeric_limits@_J@std@@SA_JXZ -> public: static __int64 __cdecl std::numeric_limits<__int64>::epsilon(void) */
507 __int64 __cdecl std_numeric_limits_int64_epsilon(void) { return 0; }
509 /* ?epsilon@?$numeric_limits@_K@std@@SA_KXZ -> public: static unsigned __int64 __cdecl std::numeric_limits<unsigned __int64>::epsilon(void) */
510 unsigned __int64 __cdecl std_numeric_limits_unsigned_int64_epsilon(void) { return 0; }
512 /* ?epsilon@?$numeric_limits@_N@std@@SA_NXZ -> public: static bool __cdecl std::numeric_limits<bool>::epsilon(void) */
513 BOOLEAN __cdecl std_numeric_limits_bool_epsilon(void) { return FALSE; }
515 /* ?epsilon@?$numeric_limits@_W@std@@SA_WXZ -> public: static wchar_t __cdecl std::numeric_limits<wchar_t>::epsilon(void) */
516 WCHAR __cdecl std_numeric_limits_wchar_t_epsilon(void) { return 0; }
518 /* ?infinity@?$numeric_limits@C@std@@SACXZ -> public: static signed char __cdecl std::numeric_limits<signed char>::infinity(void) */
519 signed char __cdecl std_numeric_limits_signed_char_infinity(void) { return 0; }
521 /* ?infinity@?$numeric_limits@D@std@@SADXZ -> public: static char __cdecl std::numeric_limits<char>::infinity(void) */
522 char __cdecl std_numeric_limits_char_infinity(void) { return 0; }
524 /* ?infinity@?$numeric_limits@E@std@@SAEXZ -> public: static unsigned char __cdecl std::numeric_limits<unsigned char>::infinity(void) */
525 unsigned char __cdecl std_numeric_limits_unsigned_char_infinity(void) { return 0; }
527 /* ?infinity@?$numeric_limits@F@std@@SAFXZ -> public: static short __cdecl std::numeric_limits<short>::infinity(void) */
528 short __cdecl std_numeric_limits_short_infinity(void) { return 0; }
530 /* ?infinity@?$numeric_limits@G@std@@SAGXZ -> public: static unsigned short __cdecl std::numeric_limits<unsigned short>::infinity(void) */
531 unsigned short __cdecl std_numeric_limits_unsigned_short_infinity(void) { return 0; }
533 /* ?infinity@?$numeric_limits@H@std@@SAHXZ -> public: static int __cdecl std::numeric_limits<int>::infinity(void) */
534 int __cdecl std_numeric_limits_int_infinity(void) { return 0; }
536 /* ?infinity@?$numeric_limits@I@std@@SAIXZ -> public: static unsigned int __cdecl std::numeric_limits<unsigned int>::infinity(void) */
537 unsigned int __cdecl std_numeric_limits_unsigned_int_infinity(void) { return 0; }
539 /* ?infinity@?$numeric_limits@J@std@@SAJXZ -> public: static long __cdecl std::numeric_limits<long>::infinity(void) */
540 LONG __cdecl std_numeric_limits_long_infinity(void) { return 0; }
542 /* ?infinity@?$numeric_limits@K@std@@SAKXZ -> public: static unsigned long __cdecl std::numeric_limits<unsigned long>::infinity(void) */
543 ULONG __cdecl std_numeric_limits_unsigned_long_infinity(void) { return 0; }
545 /* ?infinity@?$numeric_limits@M@std@@SAMXZ -> public: static float __cdecl std::numeric_limits<float>::infinity(void) */
546 float __cdecl std_numeric_limits_float_infinity(void) { return *(float *)&_FInf; }
548 /* ?infinity@?$numeric_limits@N@std@@SANXZ -> public: static double __cdecl std::numeric_limits<double>::infinity(void) */
549 double __cdecl std_numeric_limits_double_infinity(void) { return *(double *)&_Inf; }
551 /* ?infinity@?$numeric_limits@O@std@@SAOXZ -> public: static long double __cdecl std::numeric_limits<long double>::infinity(void) */
552 LDOUBLE __cdecl std_numeric_limits_long_double_infinity(void) { return *(LDOUBLE *)&_LInf; }
554 /* ?infinity@?$numeric_limits@_J@std@@SA_JXZ -> public: static __int64 __cdecl std::numeric_limits<__int64>::infinity(void) */
555 __int64 __cdecl std_numeric_limits_int64_infinity(void) { return 0; }
557 /* ?infinity@?$numeric_limits@_K@std@@SA_KXZ -> public: static unsigned __int64 __cdecl std::numeric_limits<unsigned __int64>::infinity(void) */
558 unsigned __int64 __cdecl std_numeric_limits_unsigned_int64_infinity(void) { return 0; }
560 /* ?infinity@?$numeric_limits@_N@std@@SA_NXZ -> public: static bool __cdecl std::numeric_limits<bool>::infinity(void) */
561 BOOLEAN __cdecl std_numeric_limits_bool_infinity(void) { return FALSE; }
563 /* ?infinity@?$numeric_limits@_W@std@@SA_WXZ -> public: static wchar_t __cdecl std::numeric_limits<wchar_t>::infinity(void) */
564 WCHAR __cdecl std_numeric_limits_wchar_t_infinity(void) { return 0; }
566 /* ?max@?$numeric_limits@C@std@@SACXZ -> public: static signed char __cdecl std::numeric_limits<signed char>::max(void) */
567 signed char __cdecl std_numeric_limits_signed_char_max(void) { return SCHAR_MAX; }
569 /* ?max@?$numeric_limits@D@std@@SADXZ -> public: static char __cdecl std::numeric_limits<char>::max(void) */
570 char __cdecl std_numeric_limits_char_max(void) { return CHAR_MAX; }
572 /* ?max@?$numeric_limits@E@std@@SAEXZ -> public: static unsigned char __cdecl std::numeric_limits<unsigned char>::max(void) */
573 unsigned char __cdecl std_numeric_limits_unsigned_char_max(void) { return UCHAR_MAX; }
575 /* ?max@?$numeric_limits@F@std@@SAFXZ -> public: static short __cdecl std::numeric_limits<short>::max(void) */
576 short __cdecl std_numeric_limits_short_max(void) { return SHRT_MAX; }
578 /* ?max@?$numeric_limits@G@std@@SAGXZ -> public: static unsigned short __cdecl std::numeric_limits<unsigned short>::max(void) */
579 unsigned short __cdecl std_numeric_limits_unsigned_short_max(void) { return USHRT_MAX; }
581 /* ?max@?$numeric_limits@H@std@@SAHXZ -> public: static int __cdecl std::numeric_limits<int>::max(void) */
582 int __cdecl std_numeric_limits_int_max(void) { return INT_MAX; }
584 /* ?max@?$numeric_limits@I@std@@SAIXZ -> public: static unsigned int __cdecl std::numeric_limits<unsigned int>::max(void) */
585 unsigned int __cdecl std_numeric_limits_unsigned_int_max(void) { return UINT_MAX; }
587 /* ?max@?$numeric_limits@J@std@@SAJXZ -> public: static long __cdecl std::numeric_limits<long>::max(void) */
588 LONG __cdecl std_numeric_limits_long_max(void) { return LONG_MAX; }
590 /* ?max@?$numeric_limits@K@std@@SAKXZ -> public: static unsigned long __cdecl std::numeric_limits<unsigned long>::max(void) */
591 ULONG __cdecl std_numeric_limits_unsigned_long_max(void) { return ULONG_MAX; }
593 /* ?max@?$numeric_limits@M@std@@SAMXZ -> public: static float __cdecl std::numeric_limits<float>::max(void) */
594 float __cdecl std_numeric_limits_float_max(void) { return FLT_MAX; }
596 /* ?max@?$numeric_limits@N@std@@SANXZ -> public: static double __cdecl std::numeric_limits<double>::max(void) */
597 double __cdecl std_numeric_limits_double_max(void) { return DBL_MAX; }
599 /* ?max@?$numeric_limits@O@std@@SAOXZ -> public: static long double __cdecl std::numeric_limits<long double>::max(void) */
600 LDOUBLE __cdecl std_numeric_limits_long_double_max(void) { return LDBL_MAX; }
602 /* ?max@?$numeric_limits@_J@std@@SA_JXZ -> public: static __int64 __cdecl std::numeric_limits<__int64>::max(void) */
603 __int64 __cdecl std_numeric_limits_int64_max(void) { return I64_MAX; }
605 /* ?max@?$numeric_limits@_K@std@@SA_KXZ -> public: static unsigned __int64 __cdecl std::numeric_limits<unsigned __int64>::max(void) */
606 unsigned __int64 __cdecl std_numeric_limits_unsigned_int64_max(void) { return UI64_MAX; }
608 /* ?max@?$numeric_limits@_N@std@@SA_NXZ -> public: static bool __cdecl std::numeric_limits<bool>::max(void) */
609 BOOLEAN __cdecl std_numeric_limits_bool_max(void) { return TRUE; }
611 /* ?max@?$numeric_limits@_W@std@@SA_WXZ -> public: static wchar_t __cdecl std::numeric_limits<wchar_t>::max(void) */
612 WCHAR __cdecl std_numeric_limits_wchar_t_max(void) { return USHRT_MAX; }
614 /* ?min@?$numeric_limits@C@std@@SACXZ -> public: static signed char __cdecl std::numeric_limits<signed char>::min(void) */
615 signed char __cdecl std_numeric_limits_signed_char_min(void) { return SCHAR_MIN; }
617 /* ?min@?$numeric_limits@D@std@@SADXZ -> public: static char __cdecl std::numeric_limits<char>::min(void) */
618 char __cdecl std_numeric_limits_char_min(void) { return CHAR_MIN; }
620 /* ?min@?$numeric_limits@E@std@@SAEXZ -> public: static unsigned char __cdecl std::numeric_limits<unsigned char>::min(void) */
621 unsigned char __cdecl std_numeric_limits_unsigned_char_min(void) { return 0; }
623 /* ?min@?$numeric_limits@F@std@@SAFXZ -> public: static short __cdecl std::numeric_limits<short>::min(void) */
624 short __cdecl std_numeric_limits_short_min(void) { return SHRT_MIN; }
626 /* ?min@?$numeric_limits@G@std@@SAGXZ -> public: static unsigned short __cdecl std::numeric_limits<unsigned short>::min(void) */
627 unsigned short __cdecl std_numeric_limits_unsigned_short_min(void) { return 0; }
629 /* ?min@?$numeric_limits@H@std@@SAHXZ -> public: static int __cdecl std::numeric_limits<int>::min(void) */
630 int __cdecl std_numeric_limits_int_min(void) { return INT_MIN; }
632 /* ?min@?$numeric_limits@I@std@@SAIXZ -> public: static unsigned int __cdecl std::numeric_limits<unsigned int>::min(void) */
633 unsigned int __cdecl std_numeric_limits_unsigned_int_min(void) { return 0; }
635 /* ?min@?$numeric_limits@J@std@@SAJXZ -> public: static long __cdecl std::numeric_limits<long>::min(void) */
636 LONG __cdecl std_numeric_limits_long_min(void) { return LONG_MIN; }
638 /* ?min@?$numeric_limits@K@std@@SAKXZ -> public: static unsigned long __cdecl std::numeric_limits<unsigned long>::min(void) */
639 ULONG __cdecl std_numeric_limits_unsigned_long_min(void) { return 0; }
641 /* ?min@?$numeric_limits@M@std@@SAMXZ -> public: static float __cdecl std::numeric_limits<float>::min(void) */
642 float __cdecl std_numeric_limits_float_min(void) { return FLT_MIN; }
644 /* ?min@?$numeric_limits@N@std@@SANXZ -> public: static double __cdecl std::numeric_limits<double>::min(void) */
645 double __cdecl std_numeric_limits_double_min(void) { return DBL_MIN; }
647 /* ?min@?$numeric_limits@O@std@@SAOXZ -> public: static long double __cdecl std::numeric_limits<long double>::min(void) */
648 LDOUBLE __cdecl std_numeric_limits_long_double_min(void) { return LDBL_MIN; }
650 /* ?min@?$numeric_limits@_J@std@@SA_JXZ -> public: static __int64 __cdecl std::numeric_limits<__int64>::min(void) */
651 __int64 __cdecl std_numeric_limits_int64_min(void) { return I64_MIN; }
653 /* ?min@?$numeric_limits@_K@std@@SA_KXZ -> public: static unsigned __int64 __cdecl std::numeric_limits<unsigned __int64>::min(void) */
654 unsigned __int64 __cdecl std_numeric_limits_unsigned_int64_min(void) { return 0; }
656 /* ?min@?$numeric_limits@_N@std@@SA_NXZ -> public: static bool __cdecl std::numeric_limits<bool>::min(void) */
657 BOOLEAN __cdecl std_numeric_limits_bool_min(void) { return FALSE; }
659 /* ?min@?$numeric_limits@_W@std@@SA_WXZ -> public: static wchar_t __cdecl std::numeric_limits<wchar_t>::min(void) */
660 WCHAR __cdecl std_numeric_limits_wchar_t_min(void) { return 0; }
662 /* ?quiet_NaN@?$numeric_limits@C@std@@SACXZ -> public: static signed char __cdecl std::numeric_limits<signed char>::quiet_NaN(void) */
663 signed char __cdecl std_numeric_limits_signed_char_quiet_NaN(void) { return 0; }
665 /* ?quiet_NaN@?$numeric_limits@D@std@@SADXZ -> public: static char __cdecl std::numeric_limits<char>::quiet_NaN(void) */
666 char __cdecl std_numeric_limits_char_quiet_NaN(void) { return 0; }
668 /* ?quiet_NaN@?$numeric_limits@E@std@@SAEXZ -> public: static unsigned char __cdecl std::numeric_limits<unsigned char>::quiet_NaN(void) */
669 unsigned char __cdecl std_numeric_limits_unsigned_char_quiet_NaN(void) { return 0; }
671 /* ?quiet_NaN@?$numeric_limits@F@std@@SAFXZ -> public: static short __cdecl std::numeric_limits<short>::quiet_NaN(void) */
672 short __cdecl std_numeric_limits_short_quiet_NaN(void) { return 0; }
674 /* ?quiet_NaN@?$numeric_limits@G@std@@SAGXZ -> public: static unsigned short __cdecl std::numeric_limits<unsigned short>::quiet_NaN(void) */
675 unsigned short __cdecl std_numeric_limits_unsigned_short_quiet_NaN(void) { return 0; }
677 /* ?quiet_NaN@?$numeric_limits@H@std@@SAHXZ -> public: static int __cdecl std::numeric_limits<int>::quiet_NaN(void) */
678 int __cdecl std_numeric_limits_int_quiet_NaN(void) { return 0; }
680 /* ?quiet_NaN@?$numeric_limits@I@std@@SAIXZ -> public: static unsigned int __cdecl std::numeric_limits<unsigned int>::quiet_NaN(void) */
681 unsigned int __cdecl std_numeric_limits_unsigned_int_quiet_NaN(void) { return 0; }
683 /* ?quiet_NaN@?$numeric_limits@J@std@@SAJXZ -> public: static long __cdecl std::numeric_limits<long>::quiet_NaN(void) */
684 LONG __cdecl std_numeric_limits_long_quiet_NaN(void) { return 0; }
686 /* ?quiet_NaN@?$numeric_limits@K@std@@SAKXZ -> public: static unsigned long __cdecl std::numeric_limits<unsigned long>::quiet_NaN(void) */
687 ULONG __cdecl std_numeric_limits_unsigned_long_quiet_NaN(void) { return 0; }
689 /* ?quiet_NaN@?$numeric_limits@M@std@@SAMXZ -> public: static float __cdecl std::numeric_limits<float>::quiet_NaN(void) */
690 float __cdecl std_numeric_limits_float_quiet_NaN(void) { return *(float *)&_FNan; }
692 /* ?quiet_NaN@?$numeric_limits@N@std@@SANXZ -> public: static double __cdecl std::numeric_limits<double>::quiet_NaN(void) */
693 double __cdecl std_numeric_limits_double_quiet_NaN(void) { return *(double *)&_Nan; }
695 /* ?quiet_NaN@?$numeric_limits@O@std@@SAOXZ -> public: static long double __cdecl std::numeric_limits<long double>::quiet_NaN(void) */
696 LDOUBLE __cdecl std_numeric_limits_long_double_quiet_NaN(void) { return *(LDOUBLE *)&_LNan; }
698 /* ?quiet_NaN@?$numeric_limits@_J@std@@SA_JXZ -> public: static __int64 __cdecl std::numeric_limits<__int64>::quiet_NaN(void) */
699 __int64 __cdecl std_numeric_limits_int64_quiet_NaN(void) { return 0; }
701 /* ?quiet_NaN@?$numeric_limits@_K@std@@SA_KXZ -> public: static unsigned __int64 __cdecl std::numeric_limits<unsigned __int64>::quiet_NaN(void) */
702 unsigned __int64 __cdecl std_numeric_limits_unsigned_int64_quiet_NaN(void) { return 0; }
704 /* ?quiet_NaN@?$numeric_limits@_N@std@@SA_NXZ -> public: static bool __cdecl std::numeric_limits<bool>::quiet_NaN(void) */
705 BOOLEAN __cdecl std_numeric_limits_bool_quiet_NaN(void) { return FALSE; }
707 /* ?quiet_NaN@?$numeric_limits@_W@std@@SA_WXZ -> public: static wchar_t __cdecl std::numeric_limits<wchar_t>::quiet_NaN(void) */
708 WCHAR __cdecl std_numeric_limits_wchar_t_quiet_NaN(void) { return 0; }
710 /* ?round_error@?$numeric_limits@C@std@@SACXZ -> public: static signed char __cdecl std::numeric_limits<signed char>::round_error(void) */
711 signed char __cdecl std_numeric_limits_signed_char_round_error(void) { return 0; }
713 /* ?round_error@?$numeric_limits@D@std@@SADXZ -> public: static char __cdecl std::numeric_limits<char>::round_error(void) */
714 char __cdecl std_numeric_limits_char_round_error(void) { return 0; }
716 /* ?round_error@?$numeric_limits@E@std@@SAEXZ -> public: static unsigned char __cdecl std::numeric_limits<unsigned char>::round_error(void) */
717 unsigned char __cdecl std_numeric_limits_unsigned_char_round_error(void) { return 0; }
719 /* ?round_error@?$numeric_limits@F@std@@SAFXZ -> public: static short __cdecl std::numeric_limits<short>::round_error(void) */
720 short __cdecl std_numeric_limits_short_round_error(void) { return 0; }
722 /* ?round_error@?$numeric_limits@G@std@@SAGXZ -> public: static unsigned short __cdecl std::numeric_limits<unsigned short>::round_error(void) */
723 unsigned short __cdecl std_numeric_limits_unsigned_short_round_error(void) { return 0; }
725 /* ?round_error@?$numeric_limits@H@std@@SAHXZ -> public: static int __cdecl std::numeric_limits<int>::round_error(void) */
726 int __cdecl std_numeric_limits_int_round_error(void) { return 0; }
728 /* ?round_error@?$numeric_limits@I@std@@SAIXZ -> public: static unsigned int __cdecl std::numeric_limits<unsigned int>::round_error(void) */
729 unsigned int __cdecl std_numeric_limits_unsigned_int_round_error(void) { return 0; }
731 /* ?round_error@?$numeric_limits@J@std@@SAJXZ -> public: static long __cdecl std::numeric_limits<long>::round_error(void) */
732 LONG __cdecl std_numeric_limits_long_round_error(void) { return 0; }
734 /* ?round_error@?$numeric_limits@K@std@@SAKXZ -> public: static unsigned long __cdecl std::numeric_limits<unsigned long>::round_error(void) */
735 ULONG __cdecl std_numeric_limits_unsigned_long_round_error(void) { return 0; }
737 /* ?round_error@?$numeric_limits@M@std@@SAMXZ -> public: static float __cdecl std::numeric_limits<float>::round_error(void) */
738 float __cdecl std_numeric_limits_float_round_error(void) { return 0.5; }
740 /* ?round_error@?$numeric_limits@N@std@@SANXZ -> public: static double __cdecl std::numeric_limits<double>::round_error(void) */
741 double __cdecl std_numeric_limits_double_round_error(void) { return 0.5; }
743 /* ?round_error@?$numeric_limits@O@std@@SAOXZ -> public: static long double __cdecl std::numeric_limits<long double>::round_error(void) */
744 LDOUBLE __cdecl std_numeric_limits_long_double_round_error(void) { return 0.5; }
746 /* ?round_error@?$numeric_limits@_J@std@@SA_JXZ -> public: static __int64 __cdecl std::numeric_limits<__int64>::round_error(void) */
747 __int64 __cdecl std_numeric_limits_int64_round_error(void) { return 0; }
749 /* ?round_error@?$numeric_limits@_K@std@@SA_KXZ -> public: static unsigned __int64 __cdecl std::numeric_limits<unsigned __int64>::round_error(void) */
750 unsigned __int64 __cdecl std_numeric_limits_unsigned_int64_round_error(void) { return 0; }
752 /* ?round_error@?$numeric_limits@_N@std@@SA_NXZ -> public: static bool __cdecl std::numeric_limits<bool>::round_error(void) */
753 BOOLEAN __cdecl std_numeric_limits_bool_round_error(void) { return FALSE; }
755 /* ?round_error@?$numeric_limits@_W@std@@SA_WXZ -> public: static wchar_t __cdecl std::numeric_limits<wchar_t>::round_error(void) */
756 WCHAR __cdecl std_numeric_limits_wchar_t_round_error(void) { return 0; }
758 /* ?signaling_NaN@?$numeric_limits@C@std@@SACXZ -> public: static signed char __cdecl std::numeric_limits<signed char>::signaling_NaN(void) */
759 signed char __cdecl std_numeric_limits_signed_char_signaling_NaN(void) { return 0; }
761 /* ?signaling_NaN@?$numeric_limits@D@std@@SADXZ -> public: static char __cdecl std::numeric_limits<char>::signaling_NaN(void) */
762 char __cdecl std_numeric_limits_char_signaling_NaN(void) { return 0; }
764 /* ?signaling_NaN@?$numeric_limits@E@std@@SAEXZ -> public: static unsigned char __cdecl std::numeric_limits<unsigned char>::signaling_NaN(void) */
765 unsigned char __cdecl std_numeric_limits_unsigned_char_signaling_NaN(void) { return 0; }
767 /* ?signaling_NaN@?$numeric_limits@F@std@@SAFXZ -> public: static short __cdecl std::numeric_limits<short>::signaling_NaN(void) */
768 short __cdecl std_numeric_limits_short_signaling_NaN(void) { return 0; }
770 /* ?signaling_NaN@?$numeric_limits@G@std@@SAGXZ -> public: static unsigned short __cdecl std::numeric_limits<unsigned short>::signaling_NaN(void) */
771 unsigned short __cdecl std_numeric_limits_unsigned_short_signaling_NaN(void) { return 0; }
773 /* ?signaling_NaN@?$numeric_limits@H@std@@SAHXZ -> public: static int __cdecl std::numeric_limits<int>::signaling_NaN(void) */
774 int __cdecl std_numeric_limits_int_signaling_NaN(void) { return 0; }
776 /* ?signaling_NaN@?$numeric_limits@I@std@@SAIXZ -> public: static unsigned int __cdecl std::numeric_limits<unsigned int>::signaling_NaN(void) */
777 unsigned int __cdecl std_numeric_limits_unsigned_int_signaling_NaN(void) { return 0; }
779 /* ?signaling_NaN@?$numeric_limits@J@std@@SAJXZ -> public: static long __cdecl std::numeric_limits<long>::signaling_NaN(void) */
780 LONG __cdecl std_numeric_limits_long_signaling_NaN(void) { return 0; }
782 /* ?signaling_NaN@?$numeric_limits@K@std@@SAKXZ -> public: static unsigned long __cdecl std::numeric_limits<unsigned long>::signaling_NaN(void) */
783 ULONG __cdecl std_numeric_limits_unsigned_long_signaling_NaN(void) { return 0; }
785 /* ?signaling_NaN@?$numeric_limits@M@std@@SAMXZ -> public: static float __cdecl std::numeric_limits<float>::signaling_NaN(void) */
786 float __cdecl std_numeric_limits_float_signaling_NaN(void) { return *(float *)&_FSnan; }
788 /* ?signaling_NaN@?$numeric_limits@N@std@@SANXZ -> public: static double __cdecl std::numeric_limits<double>::signaling_NaN(void) */
789 double __cdecl std_numeric_limits_double_signaling_NaN(void) { return *(double *)&_Snan; }
791 /* ?signaling_NaN@?$numeric_limits@O@std@@SAOXZ -> public: static long double __cdecl std::numeric_limits<long double>::signaling_NaN(void) */
792 LDOUBLE __cdecl std_numeric_limits_long_double_signaling_NaN(void) { return *(LDOUBLE *)&_LSnan; }
794 /* ?signaling_NaN@?$numeric_limits@_J@std@@SA_JXZ -> public: static __int64 __cdecl std::numeric_limits<__int64>::signaling_NaN(void) */
795 __int64 __cdecl std_numeric_limits_int64_signaling_NaN(void) { return 0; }
797 /* ?signaling_NaN@?$numeric_limits@_K@std@@SA_KXZ -> public: static unsigned __int64 __cdecl std::numeric_limits<unsigned __int64>::signaling_NaN(void) */
798 unsigned __int64 __cdecl std_numeric_limits_unsigned_int64_signaling_NaN(void) { return 0; }
800 /* ?signaling_NaN@?$numeric_limits@_N@std@@SA_NXZ -> public: static bool __cdecl std::numeric_limits<bool>::signaling_NaN(void) */
801 BOOLEAN __cdecl std_numeric_limits_bool_signaling_NaN(void) { return FALSE; }
803 /* ?signaling_NaN@?$numeric_limits@_W@std@@SA_WXZ -> public: static wchar_t __cdecl std::numeric_limits<wchar_t>::signaling_NaN(void) */
804 WCHAR __cdecl std_numeric_limits_wchar_t_signaling_NaN(void) { return 0; }
806 /* ??4?$_Ctraits@M@std@@QAEAAV01@ABV01@@Z -> public: class std::_Ctraits<float> & __thiscall std::_Ctraits<float>::operator=(class std::_Ctraits<float> const &) */
807 /* ??4?$_Ctraits@M@std@@QEAAAEAV01@AEBV01@@Z -> public: class std::_Ctraits<float> & __ptr64 __cdecl std::_Ctraits<float>::operator=(class std::_Ctraits<float> const & __ptr64) __ptr64 */
808 /* ??4?$_Ctraits@N@std@@QAEAAV01@ABV01@@Z -> public: class std::_Ctraits<double> & __thiscall std::_Ctraits<double>::operator=(class std::_Ctraits<double> const &) */
809 /* ??4?$_Ctraits@N@std@@QEAAAEAV01@AEBV01@@Z -> public: class std::_Ctraits<double> & __ptr64 __cdecl std::_Ctraits<double>::operator=(class std::_Ctraits<double> const & __ptr64) __ptr64 */
810 /* ??4?$_Ctraits@O@std@@QAEAAV01@ABV01@@Z -> public: class std::_Ctraits<long double> & __thiscall std::_Ctraits<long double>::operator=(class std::_Ctraits<long double> const &) */
811 /* ??4?$_Ctraits@O@std@@QEAAAEAV01@AEBV01@@Z -> public: class std::_Ctraits<long double> & __ptr64 __cdecl std::_Ctraits<long double>::operator=(class std::_Ctraits<long double> const & __ptr64) __ptr64 */
812 DEFINE_THISCALL_WRAPPER( std_Ctraits_op_assign, 8 )
813 std_Ctraits * __thiscall std_Ctraits_op_assign( std_Ctraits *this, std_Ctraits *right )
815 return this;
818 /* ?_Isnan@?$_Ctraits@M@std@@SA_NM@Z -> public: static bool __cdecl std::_Ctraits<float>::_Isnan(float) */
819 BOOLEAN __cdecl std_Ctraits_float__Isnan( float x ) { return _isnan(x); }
821 /* ?_Isnan@?$_Ctraits@N@std@@SA_NN@Z -> public: static bool __cdecl std::_Ctraits<double>::_Isnan(double) */
822 BOOLEAN __cdecl std_Ctraits_double__Isnan( double x ) { return _isnan(x); }
824 /* ?_Isnan@?$_Ctraits@O@std@@SA_NO@Z -> public: static bool __cdecl std::_Ctraits<long double>::_Isnan(long double) */
825 BOOLEAN __cdecl std_Ctraits_long_double__Isnan( LDOUBLE x ) { return _isnan(x); }
827 /* ?atan2@?$_Ctraits@M@std@@SAMMM@Z -> public: static float __cdecl std::_Ctraits<float>::atan2(float,float) */
828 float __cdecl std_Ctraits_float_atan2( float y, float x ) { return atan2f( y, x ); }
830 /* ?atan2@?$_Ctraits@N@std@@SANNN@Z -> public: static double __cdecl std::_Ctraits<double>::atan2(double,double) */
831 double __cdecl std_Ctraits_double_atan2( double y, double x ) { return atan2( y, x ); }
833 /* ?atan2@?$_Ctraits@O@std@@SAOOO@Z -> public: static long double __cdecl std::_Ctraits<long double>::atan2(long double,long double) */
834 LDOUBLE __cdecl std_Ctraits_long_double_atan2( LDOUBLE y, LDOUBLE x ) { return atan2( y, x ); }
836 /* ?cos@?$_Ctraits@M@std@@SAMM@Z -> public: static float __cdecl std::_Ctraits<float>::cos(float) */
837 float __cdecl std_Ctraits_float_cos( float x ) { return cosf( x ); }
839 /* ?cos@?$_Ctraits@N@std@@SANN@Z -> public: static double __cdecl std::_Ctraits<double>::cos(double) */
840 double __cdecl std_Ctraits_double_cos( double x ) { return cos( x ); }
842 /* ?cos@?$_Ctraits@O@std@@SAOO@Z -> public: static long double __cdecl std::_Ctraits<long double>::cos(long double) */
843 LDOUBLE __cdecl std_Ctraits_long_double_cos( LDOUBLE x ) { return cos( x ); }
845 /* ?exp@?$_Ctraits@M@std@@SAMM@Z -> public: static float __cdecl std::_Ctraits<float>::exp(float) */
846 float __cdecl std_Ctraits_float_exp( float x ) { return expf( x ); }
848 /* ?exp@?$_Ctraits@N@std@@SANN@Z -> public: static double __cdecl std::_Ctraits<double>::exp(double) */
849 double __cdecl std_Ctraits_double_exp( double x ) { return exp( x ); }
851 /* ?exp@?$_Ctraits@O@std@@SAOO@Z -> public: static long double __cdecl std::_Ctraits<long double>::exp(long double) */
852 LDOUBLE __cdecl std_Ctraits_long_double_exp( LDOUBLE x ) { return exp( x ); }
854 /* ?ldexp@?$_Ctraits@M@std@@SAMMH@Z -> public: static float __cdecl std::_Ctraits<float>::ldexp(float,int) */
855 float __cdecl std_Ctraits_float_ldexp( float x, int y ) { return ldexpf( x, y ); }
857 /* ?ldexp@?$_Ctraits@N@std@@SANNH@Z -> public: static double __cdecl std::_Ctraits<double>::ldexp(double,int) */
858 double __cdecl std_Ctraits_double_ldexp( double x, int y ) { return ldexp( x, y ); }
860 /* ?ldexp@?$_Ctraits@O@std@@SAOOH@Z -> public: static long double __cdecl std::_Ctraits<long double>::ldexp(long double,int) */
861 LDOUBLE __cdecl std_Ctraits_long_double_ldexp( LDOUBLE x, int y ) { return ldexp( x, y ); }
863 /* ?log@?$_Ctraits@M@std@@SAMM@Z -> public: static float __cdecl std::_Ctraits<float>::log(float) */
864 float __cdecl std_Ctraits_float_log( float x ) { return logf( x ); }
866 /* ?log@?$_Ctraits@N@std@@SANN@Z -> public: static double __cdecl std::_Ctraits<double>::log(double) */
867 double __cdecl std_Ctraits_double_log( double x ) { return log( x ); }
869 /* ?log@?$_Ctraits@O@std@@SAOO@Z -> public: static long double __cdecl std::_Ctraits<long double>::log(long double) */
870 LDOUBLE __cdecl std_Ctraits_long_double_log( LDOUBLE x ) { return log( x ); }
872 /* ?pow@?$_Ctraits@M@std@@SAMMM@Z -> public: static float __cdecl std::_Ctraits<float>::pow(float,float) */
873 float __cdecl std_Ctraits_float_pow( float x, float y ) { return powf( x, y ); }
875 /* ?pow@?$_Ctraits@N@std@@SANNN@Z -> public: static double __cdecl std::_Ctraits<double>::pow(double,double) */
876 double __cdecl std_Ctraits_double_pow( double x, double y ) { return pow( x, y ); }
878 /* ?pow@?$_Ctraits@O@std@@SAOOO@Z -> public: static long double __cdecl std::_Ctraits<long double>::pow(long double,long double) */
879 LDOUBLE __cdecl std_Ctraits_long_double_pow( LDOUBLE x, LDOUBLE y ) { return pow( x, y ); }
881 /* ?sin@?$_Ctraits@M@std@@SAMM@Z -> public: static float __cdecl std::_Ctraits<float>::sin(float) */
882 float __cdecl std_Ctraits_float_sin( float x ) { return sinf( x ); }
884 /* ?sin@?$_Ctraits@N@std@@SANN@Z -> public: static double __cdecl std::_Ctraits<double>::sin(double) */
885 double __cdecl std_Ctraits_double_sin( double x ) { return sin( x ); }
887 /* ?sin@?$_Ctraits@O@std@@SAOO@Z -> public: static long double __cdecl std::_Ctraits<long double>::sin(long double) */
888 LDOUBLE __cdecl std_Ctraits_long_double_sin( LDOUBLE x ) { return sin( x ); }
890 /* ?sqrt@?$_Ctraits@M@std@@SAMM@Z -> public: static float __cdecl std::_Ctraits<float>::sqrt(float) */
891 float __cdecl std_Ctraits_float_sqrt( float x ) { return sqrtf( x ); }
893 /* ?sqrt@?$_Ctraits@N@std@@SANN@Z -> public: static double __cdecl std::_Ctraits<double>::sqrt(double) */
894 double __cdecl std_Ctraits_double_sqrt( double x ) { return sqrt( x ); }
896 /* ?sqrt@?$_Ctraits@O@std@@SAOO@Z -> public: static long double __cdecl std::_Ctraits<long double>::sqrt(long double) */
897 LDOUBLE __cdecl std_Ctraits_long_double_sqrt( LDOUBLE x ) { return sqrt( x ); }
899 /* ?tan@?$_Ctraits@M@std@@SAMM@Z -> public: static float __cdecl std::_Ctraits<float>::tan(float) */
900 float __cdecl std_Ctraits_float_tan( float x ) { return tanf( x ); }
902 /* ?tan@?$_Ctraits@N@std@@SANN@Z -> public: static double __cdecl std::_Ctraits<double>::tan(double) */
903 double __cdecl std_Ctraits_double_tan( double x ) { return tan( x ); }
905 /* ?tan@?$_Ctraits@O@std@@SAOO@Z -> public: static long double __cdecl std::_Ctraits<long double>::tan(long double) */
906 LDOUBLE __cdecl std_Ctraits_long_double_tan( LDOUBLE x ) { return tan( x ); }
908 /* ??0?$_Complex_base@MU_C_float_complex@@@std@@QAE@ABM0@Z */
909 /* ??0?$_Complex_base@MU_C_float_complex@@@std@@QEAA@AEBM0@Z */
910 /* ??0?$complex@M@std@@QAE@ABM0@Z */
911 /* ??0?$complex@M@std@@QEAA@AEBM0@Z */
912 DEFINE_THISCALL_WRAPPER(complex_float_ctor, 12)
913 complex_float* __thiscall complex_float_ctor(complex_float *this, const float *real, const float *imag)
915 this->real = *real;
916 this->imag = *imag;
917 return this;
920 /* ??0?$complex@M@std@@QAE@ABU_C_float_complex@@@Z */
921 /* ??0?$complex@M@std@@QEAA@AEBU_C_float_complex@@@Z */
922 DEFINE_THISCALL_WRAPPER(complex_float_ctor_float, 8)
923 complex_float* __thiscall complex_float_ctor_float(complex_float *this, const complex_float *c)
925 this->real = c->real;
926 this->imag = c->imag;
927 return this;
930 /* ??0?$complex@M@std@@QAE@ABU_C_double_complex@@@Z */
931 /* ??0?$complex@M@std@@QEAA@AEBU_C_double_complex@@@Z */
932 /* ??0?$complex@M@std@@QAE@ABU_C_ldouble_complex@@@Z */
933 /* ??0?$complex@M@std@@QEAA@AEBU_C_ldouble_complex@@@Z */
934 /* ??0?$complex@M@std@@QAE@ABV?$complex@N@1@@Z */
935 /* ??0?$complex@M@std@@QEAA@AEBV?$complex@N@1@@Z */
936 /* ??0?$complex@M@std@@QAE@ABV?$complex@O@1@@Z */
937 /* ??0?$complex@M@std@@QEAA@AEBV?$complex@O@1@@Z */
938 DEFINE_THISCALL_WRAPPER(complex_float_ctor_double, 8)
939 complex_float* __thiscall complex_float_ctor_double(complex_float *this, const complex_double *c)
941 this->real = c->real;
942 this->imag = c->imag;
943 return this;
946 /* ??_F?$complex@M@std@@QAEXXZ */
947 /* ??_F?$complex@M@std@@QEAAXXZ */
948 DEFINE_THISCALL_WRAPPER(complex_float_ctor_def, 4)
949 complex_float* __thiscall complex_float_ctor_def(complex_float *this)
951 this->real = this->imag = 0;
952 return this;
955 /* ??$?8M@std@@YA_NABMABV?$complex@M@0@@Z */
956 /* ??$?8M@std@@YA_NAEBMAEBV?$complex@M@0@@Z */
957 MSVCP_bool __cdecl complex_float_equal_fc(const float *l, const complex_float *r)
959 return *l==r->real && r->imag==0;
962 /* ??$?8M@std@@YA_NABV?$complex@M@0@0@Z */
963 /* ??$?8M@std@@YA_NAEBV?$complex@M@0@0@Z */
964 MSVCP_bool __cdecl complex_float_equal(const complex_float *l, const complex_float *r)
966 return l->real==r->real && l->imag==r->imag;
969 /* ??$?8M@std@@YA_NABV?$complex@M@0@ABM@Z */
970 /* ??$?8M@std@@YA_NAEBV?$complex@M@0@AEBM@Z */
971 MSVCP_bool __cdecl complex_float_equal_cf(const complex_float *l, const float *r)
973 return l->real==*r && l->imag==0;
976 /* ??$?9M@std@@YA_NABMABV?$complex@M@0@@Z */
977 /* ??$?9M@std@@YA_NAEBMAEBV?$complex@M@0@@Z */
978 MSVCP_bool __cdecl complex_float_not_equal_fc(const float *l, const complex_float *r)
980 return !complex_float_equal_fc(l, r);
983 /* ??$?9M@std@@YA_NABV?$complex@M@0@0@Z */
984 /* ??$?9M@std@@YA_NAEBV?$complex@M@0@0@Z */
985 MSVCP_bool __cdecl complex_float_not_equal(const complex_float *l, const complex_float *r)
987 return !complex_float_equal(l, r);
990 /* ??$?9M@std@@YA_NABV?$complex@M@0@ABM@Z */
991 /* ??$?9M@std@@YA_NAEBV?$complex@M@0@AEBM@Z */
992 MSVCP_bool __cdecl complex_float_not_equal_cf(const complex_float *l, const float *r)
994 return !complex_float_equal_cf(l, r);
997 /* ??$?DM@std@@YA?AV?$complex@M@0@ABMABV10@@Z */
998 /* ??$?DM@std@@YA?AV?$complex@M@0@AEBMAEBV10@@Z */
999 complex_float* __cdecl complex_float_mult_fc(complex_float *ret, const float *l, const complex_float *r)
1001 ret->real = *l * r->real;
1002 ret->imag = *l * r->imag;
1003 return ret;
1006 /* ??$?DM@std@@YA?AV?$complex@M@0@ABV10@0@Z */
1007 /* ??$?DM@std@@YA?AV?$complex@M@0@AEBV10@0@Z */
1008 complex_float* __cdecl complex_float_mult(complex_float *ret, const complex_float *l, const complex_float *r)
1010 ret->real = l->real*r->real - l->imag*r->imag;
1011 ret->imag = l->imag*r->real + l->real*r->imag;
1012 return ret;
1015 /* ??$?DM@std@@YA?AV?$complex@M@0@ABV10@ABM@Z */
1016 /* ??$?DM@std@@YA?AV?$complex@M@0@AEBV10@AEBM@Z */
1017 complex_float* __cdecl complex_float_mult_cf(complex_float *ret, const complex_float *l, const float *r)
1019 ret->real = l->real * *r;
1020 ret->imag = l->imag * *r;
1021 return ret;
1024 /* ??$?GM@std@@YA?AV?$complex@M@0@ABMABV10@@Z */
1025 /* ??$?GM@std@@YA?AV?$complex@M@0@AEBMAEBV10@@Z */
1026 complex_float* __cdecl complex_float_sub_fc(complex_float *ret, const float *l, const complex_float *r)
1028 ret->real = *l - r->real;
1029 ret->imag = -r->imag;
1030 return ret;
1033 /* ??$?GM@std@@YA?AV?$complex@M@0@ABV10@0@Z */
1034 /* ??$?GM@std@@YA?AV?$complex@M@0@AEBV10@0@Z */
1035 complex_float* __cdecl complex_float_sub(complex_float *ret, const complex_float *l, const complex_float *r)
1037 ret->real = l->real - r->real;
1038 ret->imag = l->imag - r->imag;
1039 return ret;
1042 /* ??$?GM@std@@YA?AV?$complex@M@0@ABV10@@Z */
1043 /* ??$?GM@std@@YA?AV?$complex@M@0@AEBV10@@Z */
1044 complex_float* __cdecl complex_float_neg(complex_float *ret, const complex_float *c)
1046 ret->real = -c->real;
1047 ret->imag = -c->imag;
1048 return ret;
1051 /* ??$?GM@std@@YA?AV?$complex@M@0@ABV10@ABM@Z */
1052 /* ??$?GM@std@@YA?AV?$complex@M@0@AEBV10@AEBM@Z */
1053 complex_float* __cdecl complex_float_sub_cf(complex_float *ret, const complex_float *l, const float *r)
1055 ret->real = l->real - *r;
1056 ret->imag = l->imag;
1057 return ret;
1060 /* ??$?HM@std@@YA?AV?$complex@M@0@ABMABV10@@Z */
1061 /* ??$?HM@std@@YA?AV?$complex@M@0@AEBMAEBV10@@Z */
1062 complex_float* __cdecl complex_float_add_fc(complex_float *ret, const float *l, const complex_float *r)
1064 ret->real = *l + r->real;
1065 ret->imag = r->imag;
1066 return ret;
1069 /* ??$?HM@std@@YA?AV?$complex@M@0@ABV10@0@Z */
1070 /* ??$?HM@std@@YA?AV?$complex@M@0@AEBV10@0@Z */
1071 complex_float* __cdecl complex_float_add(complex_float *ret, const complex_float *l, const complex_float *r)
1073 ret->real = l->real + r->real;
1074 ret->imag = l->imag + r->imag;
1075 return ret;
1078 /* ??$?HM@std@@YA?AV?$complex@M@0@ABV10@@Z */
1079 /* ??$?HM@std@@YA?AV?$complex@M@0@AEBV10@@Z */
1080 complex_float* __cdecl complex_float_plus(complex_float *ret, const complex_float *c)
1082 *ret = *c;
1083 return ret;
1086 /* ??$?HM@std@@YA?AV?$complex@M@0@ABV10@ABM@Z */
1087 /* ??$?HM@std@@YA?AV?$complex@M@0@AEBV10@AEBM@Z */
1088 complex_float* __cdecl complex_float_add_cf(complex_float *ret, const complex_float *l, const float *r)
1090 ret->real = l->real + *r;
1091 ret->imag = l->imag;
1092 return ret;
1095 /* ??$?KM@std@@YA?AV?$complex@M@0@ABV10@0@Z */
1096 /* ??$?KM@std@@YA?AV?$complex@M@0@AEBV10@0@Z */
1097 complex_float* __cdecl complex_float_div(complex_float *ret, const complex_float *l, const complex_float *r)
1099 float tmp, den;
1100 if((!r->real && !r->imag) || _isnan(l->real) || _isnan(l->imag)
1101 || _isnan(r->real) || _isnan(r->imag)) {
1102 ret->real = std_numeric_limits_float_quiet_NaN();
1103 ret->imag = ret->real;
1104 return ret;
1107 if (fabsf(r->real) >= fabsf(r->imag)) {
1108 tmp = r->imag / r->real;
1109 den = r->real + r->imag*tmp;
1110 ret->real = (l->real + l->imag*tmp) / den;
1111 ret->imag = (l->imag - l->real*tmp) / den;
1112 } else {
1113 tmp = r->real / r->imag;
1114 den = r->real*tmp + r->imag;
1115 ret->real = (l->real*tmp + l->imag) / den;
1116 ret->imag = (l->imag*tmp - l->real) / den;
1118 return ret;
1121 /* ??$?KM@std@@YA?AV?$complex@M@0@ABMABV10@@Z */
1122 /* ??$?KM@std@@YA?AV?$complex@M@0@AEBMAEBV10@@Z */
1123 complex_float* __cdecl complex_float_div_fc(complex_float *ret, const float *l, const complex_float *r)
1125 complex_float c = {*l, 0};
1126 return complex_float_div(ret, &c, r);
1129 /* ??$?KM@std@@YA?AV?$complex@M@0@ABV10@ABM@Z */
1130 /* ??$?KM@std@@YA?AV?$complex@M@0@AEBV10@AEBM@Z */
1131 complex_float* __cdecl complex_float_div_cf(complex_float *ret, const complex_float *l, const float *r)
1133 ret->real = l->real / *r;
1134 ret->imag = l->imag / *r;
1135 return ret;
1138 /* ??4?$_Complex_base@MU_C_float_complex@@@std@@QAEAAV01@ABV01@@Z */
1139 /* ??4?$_Complex_base@MU_C_float_complex@@@std@@QEAAAEAV01@AEBV01@@Z */
1140 /* ??4?$complex@M@std@@QAEAAV01@ABV01@@Z */
1141 /* ??4?$complex@M@std@@QEAAAEAV01@AEBV01@@Z */
1142 DEFINE_THISCALL_WRAPPER(complex_float_assign, 8)
1143 complex_float* __thiscall complex_float_assign(complex_float *this, const complex_float *r)
1145 *this = *r;
1146 return this;
1149 /* ??4?$complex@M@std@@QAEAAV01@ABM@Z */
1150 /* ??4?$complex@M@std@@QEAAAEAV01@AEBM@Z */
1151 DEFINE_THISCALL_WRAPPER(complex_float_assign_float, 8)
1152 complex_float* __thiscall complex_float_assign_float(complex_float *this, const float *r)
1154 this->real = *r;
1155 this->imag = 0;
1156 return this;
1159 /* ??X?$complex@M@std@@QAEAAV01@ABM@Z */
1160 /* ??X?$complex@M@std@@QEAAAEAV01@AEBM@Z */
1161 DEFINE_THISCALL_WRAPPER(complex_float_mult_assign_float, 8)
1162 complex_float* __thiscall complex_float_mult_assign_float(complex_float *this, const float *r)
1164 this->real *= *r;
1165 this->imag *= *r;
1166 return this;
1169 /* ??X?$complex@M@std@@QAEAAV01@ABV01@@Z */
1170 /* ??X?$complex@M@std@@QEAAAEAV01@AEBV01@@Z */
1171 DEFINE_THISCALL_WRAPPER(complex_float_mult_assign, 8)
1172 complex_float* __thiscall complex_float_mult_assign(complex_float *this, const complex_float *r)
1174 complex_float tmp;
1176 tmp.real = this->real*r->real - this->imag*r->imag;
1177 tmp.imag = this->real*r->imag + this->imag*r->real;
1178 *this = tmp;
1179 return this;
1182 /* ??Y?$complex@M@std@@QAEAAV01@ABM@Z */
1183 /* ??Y?$complex@M@std@@QEAAAEAV01@AEBM@Z */
1184 DEFINE_THISCALL_WRAPPER(complex_float_add_assign_float, 8)
1185 complex_float* __thiscall complex_float_add_assign_float(complex_float *this, const float *r)
1187 this->real += *r;
1188 return this;
1191 /* ??Y?$complex@M@std@@QAEAAV01@ABV01@@Z */
1192 /* ??Y?$complex@M@std@@QEAAAEAV01@AEBV01@@Z */
1193 DEFINE_THISCALL_WRAPPER(complex_float_add_assign, 8)
1194 complex_float* __thiscall complex_float_add_assign(complex_float *this, const complex_float *r)
1196 this->real += r->real;
1197 this->imag += r->imag;
1198 return this;
1201 /* ??Z?$complex@M@std@@QAEAAV01@ABM@Z */
1202 /* ??Z?$complex@M@std@@QEAAAEAV01@AEBM@Z */
1203 DEFINE_THISCALL_WRAPPER(complex_float_sub_assign_float, 8)
1204 complex_float* __thiscall complex_float_sub_assign_float(complex_float *this, const float *r)
1206 this->real -= *r;
1207 return this;
1210 /* ??Z?$complex@M@std@@QAEAAV01@ABV01@@Z */
1211 /* ??Z?$complex@M@std@@QEAAAEAV01@AEBV01@@Z */
1212 DEFINE_THISCALL_WRAPPER(complex_float_sub_assign, 8)
1213 complex_float* __thiscall complex_float_sub_assign(complex_float *this, const complex_float *r)
1215 this->real -= r->real;
1216 this->imag -= r->imag;
1217 return this;
1220 /* ??_0?$complex@M@std@@QAEAAV01@ABM@Z */
1221 /* ??_0?$complex@M@std@@QEAAAEAV01@AEBM@Z */
1222 DEFINE_THISCALL_WRAPPER(complex_float_div_assign_float, 8)
1223 complex_float* __thiscall complex_float_div_assign_float(complex_float *this, const float *r)
1225 this->real /= *r;
1226 this->imag /= *r;
1227 return this;
1230 /* ??_0?$complex@M@std@@QAEAAV01@ABV01@@Z */
1231 /* ??_0?$complex@M@std@@QEAAAEAV01@AEBV01@@Z */
1232 DEFINE_THISCALL_WRAPPER(complex_float_div_assign, 8)
1233 complex_float* __thiscall complex_float_div_assign(complex_float *this, const complex_float *r)
1235 complex_float tmp = *this;
1236 return complex_float_div(this, &tmp, r);
1239 /* ??$arg@M@std@@YAMABV?$complex@M@0@@Z */
1240 /* ??$arg@M@std@@YAMAEBV?$complex@M@0@@Z */
1241 float __cdecl complex_float_arg(const complex_float *c)
1243 return atan2(c->imag, c->real);
1246 /* ??$imag@M@std@@YAMABV?$complex@M@0@@Z */
1247 /* ??$imag@M@std@@YAMAEBV?$complex@M@0@@Z */
1248 float __cdecl complex_float_imag(const complex_float *c)
1250 return c->imag;
1253 /* ?imag@?$_Complex_base@MU_C_float_complex@@@std@@QAEMABM@Z */
1254 /* ?imag@?$_Complex_base@MU_C_float_complex@@@std@@QEAAMAEBM@Z */
1255 DEFINE_THISCALL_WRAPPER(complex_float_imag_set, 8)
1256 float __thiscall complex_float_imag_set(complex_float *this, const float *f)
1258 return (this->imag = *f);
1261 /* ?imag@?$_Complex_base@MU_C_float_complex@@@std@@QBEMXZ */
1262 /* ?imag@?$_Complex_base@MU_C_float_complex@@@std@@QEBAMXZ */
1263 DEFINE_THISCALL_WRAPPER(complex_float_imag_get, 4)
1264 float __thiscall complex_float_imag_get(const complex_float *this)
1266 return this->imag;
1269 /* ??$real@M@std@@YAMABV?$complex@M@0@@Z */
1270 /* ??$real@M@std@@YAMAEBV?$complex@M@0@@Z */
1271 float __cdecl complex_float_real(const complex_float *c)
1273 return c->real;
1276 /* ?real@?$_Complex_base@MU_C_float_complex@@@std@@QAEMABM@Z */
1277 /* ?real@?$_Complex_base@MU_C_float_complex@@@std@@QEAAMAEBM@Z */
1278 DEFINE_THISCALL_WRAPPER(complex_float_real_set, 8)
1279 float __thiscall complex_float_real_set(complex_float *this, const float *f)
1281 return (this->real = *f);
1284 /* ?real@?$_Complex_base@MU_C_float_complex@@@std@@QBEMXZ */
1285 /* ?real@?$_Complex_base@MU_C_float_complex@@@std@@QEBAMXZ */
1286 DEFINE_THISCALL_WRAPPER(complex_float_real_get, 4)
1287 float __thiscall complex_float_real_get(const complex_float *this)
1289 return this->real;
1292 /* ??$_Fabs@M@std@@YAMABV?$complex@M@0@PAH@Z */
1293 /* ??$_Fabs@M@std@@YAMAEBV?$complex@M@0@PEAH@Z */
1294 float __cdecl complex_float__Fabs(const complex_float *c, int *scale)
1296 float ret;
1298 ret = hypotf(c->real, c->imag);
1299 if(_isnan(ret) || ret==0) {
1300 *scale = 0;
1301 }else if(ret >= 1) {
1302 *scale = 2;
1303 ret /= 4;
1304 }else {
1305 *scale = -2;
1306 ret *= 4;
1309 return ret;
1312 /* ??$abs@M@std@@YAMABV?$complex@M@0@@Z */
1313 /* ??$abs@M@std@@YAMAEBV?$complex@M@0@@Z */
1314 float __cdecl complex_float_abs(const complex_float *c)
1316 return hypotf(c->real, c->imag);
1319 /* ??$conj@M@std@@YA?AV?$complex@M@0@ABV10@@Z */
1320 /* ??$conj@M@std@@YA?AV?$complex@M@0@AEBV10@@Z */
1321 complex_float* __cdecl complex_float_conj(complex_float *ret, const complex_float *c)
1323 ret->real = c->real;
1324 ret->imag = -c->imag;
1325 return ret;
1328 /* ??$cos@M@std@@YA?AV?$complex@M@0@ABV10@@Z */
1329 /* ??$cos@M@std@@YA?AV?$complex@M@0@AEBV10@@Z */
1330 complex_float* __cdecl complex_float_cos(complex_float *ret, const complex_float *c)
1332 ret->real = cos(c->real)*cosh(c->imag);
1333 ret->imag = -sin(c->real)*sinh(c->imag);
1334 return ret;
1337 /* ??$sin@M@std@@YA?AV?$complex@M@0@ABV10@@Z */
1338 /* ??$sin@M@std@@YA?AV?$complex@M@0@AEBV10@@Z */
1339 complex_float* __cdecl complex_float_sin(complex_float *ret, const complex_float *c)
1341 ret->real = sin(c->real)*cosh(c->imag);
1342 ret->imag = cos(c->real)*sinh(c->imag);
1343 return ret;
1346 /* ??$tan@M@std@@YA?AV?$complex@M@0@ABV10@@Z */
1347 /* ??$tan@M@std@@YA?AV?$complex@M@0@AEBV10@@Z */
1348 complex_float* __cdecl complex_float_tan(complex_float *ret, const complex_float *c)
1350 double denom = cos(2*c->real) + cosh(2*c->imag);
1351 ret->real = sin(2*c->real) / denom;
1352 ret->imag = sinh(2*c->imag) / denom;
1353 return ret;
1356 /* ??$cosh@M@std@@YA?AV?$complex@M@0@ABV10@@Z */
1357 /* ??$cosh@M@std@@YA?AV?$complex@M@0@AEBV10@@Z */
1358 complex_float* __cdecl complex_float_cosh(complex_float *ret, const complex_float *c)
1360 ret->real = cosh(c->real)*cos(c->imag);
1361 ret->imag = sinh(c->real)*sin(c->imag);
1362 return ret;
1365 /* ??$sinh@M@std@@YA?AV?$complex@M@0@ABV10@@Z */
1366 /* ??$sinh@M@std@@YA?AV?$complex@M@0@AEBV10@@Z */
1367 complex_float* __cdecl complex_float_sinh(complex_float *ret, const complex_float *c)
1369 ret->real = sinh(c->real)*cos(c->imag);
1370 ret->imag = cosh(c->real)*sin(c->imag);
1371 return ret;
1374 /* ??$tanh@M@std@@YA?AV?$complex@M@0@ABV10@@Z */
1375 /* ??$tanh@M@std@@YA?AV?$complex@M@0@AEBV10@@Z */
1376 complex_float* __cdecl complex_float_tanh(complex_float *ret, const complex_float *c)
1378 complex_float tmp;
1380 ret->real = -c->imag;
1381 ret->imag = c->real;
1382 complex_float_tan(&tmp, ret);
1383 ret->real = tmp.imag;
1384 ret->imag = -tmp.real;
1385 return ret;
1388 /* ??$exp@M@std@@YA?AV?$complex@M@0@ABV10@@Z */
1389 /* ??$exp@M@std@@YA?AV?$complex@M@0@AEBV10@@Z */
1390 complex_float* __cdecl complex_float_exp(complex_float *ret, const complex_float *c)
1392 ret->real = ret->imag = exp(c->real);
1393 ret->real *= cos(c->imag);
1394 ret->imag *= sin(c->imag);
1395 return ret;
1398 /* ??$log@M@std@@YA?AV?$complex@M@0@ABV10@@Z */
1399 /* ??$log@M@std@@YA?AV?$complex@M@0@AEBV10@@Z */
1400 complex_float* __cdecl complex_float_log(complex_float *ret, const complex_float *c)
1402 ret->real = log(complex_float_abs(c));
1403 ret->imag = complex_float_arg(c);
1404 return ret;
1407 /* ??$log10@M@std@@YA?AV?$complex@M@0@ABV10@@Z */
1408 /* ??$log10@M@std@@YA?AV?$complex@M@0@AEBV10@@Z */
1409 complex_float* __cdecl complex_float_log10(complex_float *ret, const complex_float *c)
1411 complex_float_log(ret, c);
1412 ret->real *= M_LOG10E;
1413 ret->imag *= M_LOG10E;
1414 return ret;
1417 /* ??$norm@M@std@@YAMABV?$complex@M@0@@Z */
1418 /* ??$norm@M@std@@YAMAEBV?$complex@M@0@@Z */
1419 float __cdecl complex_float_norm(const complex_float *c)
1421 return c->real*c->real + c->imag*c->imag;
1424 /* ??$polar@M@std@@YA?AV?$complex@M@0@ABM0@Z */
1425 /* ??$polar@M@std@@YA?AV?$complex@M@0@AEBM0@Z */
1426 complex_float* __cdecl complex_float_polar_theta(complex_float *ret, const float *mod, const float *theta)
1428 ret->real = *mod * cos(*theta);
1429 ret->imag = *mod * sin(*theta);
1430 return ret;
1433 /* ??$polar@M@std@@YA?AV?$complex@M@0@ABM@Z */
1434 /* ??$polar@M@std@@YA?AV?$complex@M@0@AEBM@Z */
1435 complex_float* __cdecl complex_float_polar(complex_float *ret, const float *mod)
1437 ret->real = *mod;
1438 ret->imag = 0;
1439 return ret;
1442 /* ??$pow@M@std@@YA?AV?$complex@M@0@ABV10@0@Z */
1443 /* ??$pow@M@std@@YA?AV?$complex@M@0@AEBV10@0@Z */
1444 complex_float* __cdecl complex_float_pow(complex_float *ret, const complex_float *l, const complex_float *r)
1446 float abs = complex_float_abs(l), arg = complex_float_arg(l);
1447 float rad = pow(abs, r->real), theta = r->real*arg;
1449 if(r->imag) {
1450 rad *= exp(-r->imag * arg);
1451 theta += r->imag * log(abs);
1454 ret->real = rad * cos(theta);
1455 ret->imag = rad * sin(theta);
1456 return ret;
1459 /* ??$pow@M@std@@YA?AV?$complex@M@0@ABMABV10@@Z */
1460 /* ??$pow@M@std@@YA?AV?$complex@M@0@AEBMAEBV10@@Z */
1461 complex_float* __cdecl complex_float_pow_fc(complex_float *ret, const float *l, const complex_float *r)
1463 complex_float c = { *l, 0 };
1464 return complex_float_pow(ret, &c, r);
1467 /* ??$pow@M@std@@YA?AV?$complex@M@0@ABV10@ABM@Z */
1468 /* ??$pow@M@std@@YA?AV?$complex@M@0@AEBV10@AEBM@Z */
1469 complex_float* __cdecl complex_float_pow_cf(complex_float *ret, const complex_float *l, const float *r)
1471 complex_float c = { *r, 0 };
1472 return complex_float_pow(ret, l, &c);
1475 /* ??$pow@M@std@@YA?AV?$complex@M@0@ABV10@H@Z */
1476 /* ??$pow@M@std@@YA?AV?$complex@M@0@AEBV10@H@Z */
1477 complex_float* __cdecl complex_float_pow_ci(complex_float *ret, const complex_float *l, int r)
1479 complex_float c = *l;
1480 complex_float unit_value = { 1.0, 0 };
1481 complex_float_assign(ret, &unit_value);
1483 if(r < 0) {
1484 r = -r;
1485 complex_float_div(&c, &unit_value, l);
1488 for(; r>0; r>>=1) {
1489 if(r & 1)
1490 complex_float_mult_assign(ret, &c);
1491 if(r != 1)
1492 complex_float_mult_assign(&c, &c);
1495 return ret;
1498 /* ??$sqrt@M@std@@YA?AV?$complex@M@0@ABV10@@Z */
1499 /* ??$sqrt@M@std@@YA?AV?$complex@M@0@AEBV10@@Z */
1500 complex_float* __cdecl complex_float_sqrt(complex_float *ret, const complex_float *l)
1502 complex_float c = { 0.5, 0 };
1503 return complex_float_pow(ret, l, &c);
1506 /* ??0?$_Complex_base@NU_C_double_complex@@@std@@QAE@ABN0@Z */
1507 /* ??0?$_Complex_base@NU_C_double_complex@@@std@@QEAA@AEBN0@Z */
1508 /* ??0?$_Complex_base@OU_C_ldouble_complex@@@std@@QAE@ABO0@Z */
1509 /* ??0?$_Complex_base@OU_C_ldouble_complex@@@std@@QEAA@AEBO0@Z */
1510 /* ??0?$complex@N@std@@QAE@ABN0@Z */
1511 /* ??0?$complex@N@std@@QEAA@AEBN0@Z */
1512 /* ??0?$complex@O@std@@QAE@ABO0@Z */
1513 /* ??0?$complex@O@std@@QEAA@AEBO0@Z */
1514 DEFINE_THISCALL_WRAPPER(complex_double_ctor, 12)
1515 complex_double* __thiscall complex_double_ctor(complex_double *this, const double *real, const double *imag)
1517 this->real = *real;
1518 this->imag = *imag;
1519 return this;
1522 /* ??0?$complex@N@std@@QAE@ABU_C_double_complex@@@Z */
1523 /* ??0?$complex@N@std@@QEAA@AEBU_C_double_complex@@@Z */
1524 /* ??0?$complex@N@std@@QAE@ABU_C_ldouble_complex@@@Z */
1525 /* ??0?$complex@N@std@@QEAA@AEBU_C_ldouble_complex@@@Z */
1526 /* ??0?$complex@N@std@@QAE@ABV?$complex@O@1@@Z */
1527 /* ??0?$complex@N@std@@QEAA@AEBV?$complex@O@1@@Z */
1528 /* ??0?$complex@O@std@@QAE@ABU_C_ldouble_complex@@@Z */
1529 /* ??0?$complex@O@std@@QEAA@AEBU_C_ldouble_complex@@@Z */
1530 /* ??0?$complex@O@std@@QAE@ABV?$complex@N@1@@Z */
1531 /* ??0?$complex@O@std@@QEAA@AEBV?$complex@N@1@@Z */
1532 DEFINE_THISCALL_WRAPPER(complex_double_ctor_double, 8)
1533 complex_double* __thiscall complex_double_ctor_double(complex_double *this, const complex_double *c)
1535 this->real = c->real;
1536 this->imag = c->imag;
1537 return this;
1540 /* ??0?$complex@N@std@@QAE@ABV?$complex@M@1@@Z */
1541 /* ??0?$complex@N@std@@QEAA@AEBV?$complex@M@1@@Z */
1542 /* ??0?$complex@O@std@@QAE@ABV?$complex@M@1@@Z */
1543 /* ??0?$complex@O@std@@QEAA@AEBV?$complex@M@1@@Z */
1544 DEFINE_THISCALL_WRAPPER(complex_double_ctor_float, 8)
1545 complex_double* __thiscall complex_double_ctor_float(complex_double *this, const complex_float *c)
1547 this->real = c->real;
1548 this->imag = c->imag;
1549 return this;
1552 /* ??_F?$complex@N@std@@QAEXXZ */
1553 /* ??_F?$complex@N@std@@QEAAXXZ */
1554 /* ??_F?$complex@O@std@@QAEXXZ */
1555 /* ??_F?$complex@O@std@@QEAAXXZ */
1556 DEFINE_THISCALL_WRAPPER(complex_double_ctor_def, 4)
1557 complex_double* __thiscall complex_double_ctor_def(complex_double *this)
1559 this->real = this->imag = 0;
1560 return this;
1563 /* ??$?8N@std@@YA_NABNABV?$complex@N@0@@Z */
1564 /* ??$?8N@std@@YA_NAEBNAEBV?$complex@N@0@@Z */
1565 /* ??$?8O@std@@YA_NABOABV?$complex@O@0@@Z */
1566 /* ??$?8O@std@@YA_NAEBOAEBV?$complex@O@0@@Z */
1567 MSVCP_bool __cdecl complex_double_equal_dc(const double *l, const complex_double *r)
1569 return *l==r->real && r->imag==0;
1572 /* ??$?8N@std@@YA_NABV?$complex@N@0@0@Z */
1573 /* ??$?8N@std@@YA_NAEBV?$complex@N@0@0@Z */
1574 /* ??$?8O@std@@YA_NABV?$complex@O@0@0@Z */
1575 /* ??$?8O@std@@YA_NAEBV?$complex@O@0@0@Z */
1576 MSVCP_bool __cdecl complex_double_equal(const complex_double *l, const complex_double *r)
1578 return l->real==r->real && l->imag==r->imag;
1581 /* ??$?8N@std@@YA_NABV?$complex@N@0@ABN@Z */
1582 /* ??$?8N@std@@YA_NAEBV?$complex@N@0@AEBN@Z */
1583 /* ??$?8O@std@@YA_NABV?$complex@O@0@ABO@Z */
1584 /* ??$?8O@std@@YA_NAEBV?$complex@O@0@AEBO@Z */
1585 MSVCP_bool __cdecl complex_double_equal_cd(const complex_double *l, double *r)
1587 return l->real==*r && l->imag==0;
1590 /* ??$?9N@std@@YA_NABNABV?$complex@N@0@@Z */
1591 /* ??$?9N@std@@YA_NAEBNAEBV?$complex@N@0@@Z */
1592 /* ??$?9O@std@@YA_NABOABV?$complex@O@0@@Z */
1593 /* ??$?9O@std@@YA_NAEBOAEBV?$complex@O@0@@Z */
1594 MSVCP_bool __cdecl complex_double_not_equal_dc(const double *l, const complex_double *r)
1596 return !complex_double_equal_dc(l, r);
1599 /* ??$?9N@std@@YA_NABV?$complex@N@0@0@Z */
1600 /* ??$?9N@std@@YA_NAEBV?$complex@N@0@0@Z */
1601 /* ??$?9O@std@@YA_NABV?$complex@O@0@0@Z */
1602 /* ??$?9O@std@@YA_NAEBV?$complex@O@0@0@Z */
1603 MSVCP_bool __cdecl complex_double_not_equal(const complex_double *l, const complex_double *r)
1605 return !complex_double_equal(l, r);
1608 /* ??$?9N@std@@YA_NABV?$complex@N@0@ABN@Z */
1609 /* ??$?9N@std@@YA_NAEBV?$complex@N@0@AEBN@Z */
1610 /* ??$?9O@std@@YA_NABV?$complex@O@0@ABO@Z */
1611 /* ??$?9O@std@@YA_NAEBV?$complex@O@0@AEBO@Z */
1612 MSVCP_bool __cdecl complex_double_not_equal_cd(const complex_double *l, double *r)
1614 return !complex_double_equal_cd(l, r);
1617 /* ??$?DN@std@@YA?AV?$complex@N@0@ABNABV10@@Z */
1618 /* ??$?DN@std@@YA?AV?$complex@N@0@AEBNAEBV10@@Z */
1619 /* ??$?DO@std@@YA?AV?$complex@O@0@ABOABV10@@Z */
1620 /* ??$?DO@std@@YA?AV?$complex@O@0@AEBOAEBV10@@Z */
1621 complex_double* __cdecl complex_double_mult_dc(complex_double *ret, const double *l, const complex_double *r)
1623 ret->real = *l * r->real;
1624 ret->imag = *l * r->imag;
1625 return ret;
1628 /* ??$?DN@std@@YA?AV?$complex@N@0@ABV10@0@Z */
1629 /* ??$?DN@std@@YA?AV?$complex@N@0@AEBV10@0@Z */
1630 /* ??$?DO@std@@YA?AV?$complex@O@0@ABV10@0@Z */
1631 /* ??$?DO@std@@YA?AV?$complex@O@0@AEBV10@0@Z */
1632 complex_double* __cdecl complex_double_mult(complex_double *ret, const complex_double *l, const complex_double *r)
1634 ret->real = l->real*r->real - l->imag*r->imag;
1635 ret->imag = l->imag*r->real + l->real*r->imag;
1636 return ret;
1639 /* ??$?DN@std@@YA?AV?$complex@N@0@ABV10@ABN@Z */
1640 /* ??$?DN@std@@YA?AV?$complex@N@0@AEBV10@AEBN@Z */
1641 /* ??$?DO@std@@YA?AV?$complex@O@0@ABV10@ABO@Z */
1642 /* ??$?DO@std@@YA?AV?$complex@O@0@AEBV10@AEBO@Z */
1643 complex_double* __cdecl complex_double_mult_cd(complex_double *ret, const complex_double *l, double *r)
1645 ret->real = l->real * *r;
1646 ret->imag = l->imag * *r;
1647 return ret;
1650 /* ??$?GN@std@@YA?AV?$complex@N@0@ABNABV10@@Z */
1651 /* ??$?GN@std@@YA?AV?$complex@N@0@AEBNAEBV10@@Z */
1652 /* ??$?GO@std@@YA?AV?$complex@O@0@ABOABV10@@Z */
1653 /* ??$?GO@std@@YA?AV?$complex@O@0@AEBOAEBV10@@Z */
1654 complex_double* __cdecl complex_double_sub_dc(complex_double *ret, const double *l, const complex_double *r)
1656 ret->real = *l - r->real;
1657 ret->imag = -r->imag;
1658 return ret;
1661 /* ??$?GN@std@@YA?AV?$complex@N@0@ABV10@0@Z */
1662 /* ??$?GN@std@@YA?AV?$complex@N@0@AEBV10@0@Z */
1663 /* ??$?GO@std@@YA?AV?$complex@O@0@ABV10@0@Z */
1664 /* ??$?GO@std@@YA?AV?$complex@O@0@AEBV10@0@Z */
1665 complex_double* __cdecl complex_double_sub(complex_double *ret, const complex_double *l, const complex_double *r)
1667 ret->real = l->real - r->real;
1668 ret->imag = l->imag - r->imag;
1669 return ret;
1672 /* ??$?GN@std@@YA?AV?$complex@N@0@ABV10@@Z */
1673 /* ??$?GN@std@@YA?AV?$complex@N@0@AEBV10@@Z */
1674 /* ??$?GO@std@@YA?AV?$complex@O@0@ABV10@@Z */
1675 /* ??$?GO@std@@YA?AV?$complex@O@0@AEBV10@@Z */
1676 complex_double* __cdecl complex_double_neg(complex_double *ret, const complex_double *c)
1678 ret->real = -c->real;
1679 ret->imag = -c->imag;
1680 return ret;
1683 /* ??$?GN@std@@YA?AV?$complex@N@0@ABV10@ABN@Z */
1684 /* ??$?GN@std@@YA?AV?$complex@N@0@AEBV10@AEBN@Z */
1685 /* ??$?GO@std@@YA?AV?$complex@O@0@ABV10@ABO@Z */
1686 /* ??$?GO@std@@YA?AV?$complex@O@0@AEBV10@AEBO@Z */
1687 complex_double* __cdecl complex_double_sub_cd(complex_double *ret, const complex_double *l, double *r)
1689 ret->real = l->real - *r;
1690 ret->imag = l->imag;
1691 return ret;
1694 /* ??$?HN@std@@YA?AV?$complex@N@0@ABNABV10@@Z */
1695 /* ??$?HN@std@@YA?AV?$complex@N@0@AEBNAEBV10@@Z */
1696 /* ??$?HO@std@@YA?AV?$complex@O@0@ABOABV10@@Z */
1697 /* ??$?HO@std@@YA?AV?$complex@O@0@AEBOAEBV10@@Z */
1698 complex_double* __cdecl complex_double_add_dc(complex_double *ret, const double *l, const complex_double *r)
1700 ret->real = *l + r->real;
1701 ret->imag = r->imag;
1702 return ret;
1705 /* ??$?HN@std@@YA?AV?$complex@N@0@ABV10@0@Z */
1706 /* ??$?HN@std@@YA?AV?$complex@N@0@AEBV10@0@Z */
1707 /* ??$?HO@std@@YA?AV?$complex@O@0@ABV10@0@Z */
1708 /* ??$?HO@std@@YA?AV?$complex@O@0@AEBV10@0@Z */
1709 complex_double* __cdecl complex_double_add(complex_double *ret, const complex_double *l, const complex_double *r)
1711 ret->real = l->real + r->real;
1712 ret->imag = l->imag + r->imag;
1713 return ret;
1716 /* ??$?HN@std@@YA?AV?$complex@N@0@ABV10@@Z */
1717 /* ??$?HN@std@@YA?AV?$complex@N@0@AEBV10@@Z */
1718 /* ??$?HO@std@@YA?AV?$complex@O@0@ABV10@@Z */
1719 /* ??$?HO@std@@YA?AV?$complex@O@0@AEBV10@@Z */
1720 complex_double* __cdecl complex_double_plus(complex_double *ret, const complex_double *c)
1722 *ret = *c;
1723 return ret;
1726 /* ??$?HN@std@@YA?AV?$complex@N@0@ABV10@ABN@Z */
1727 /* ??$?HN@std@@YA?AV?$complex@N@0@AEBV10@AEBN@Z */
1728 /* ??$?HO@std@@YA?AV?$complex@O@0@ABV10@ABO@Z */
1729 /* ??$?HO@std@@YA?AV?$complex@O@0@AEBV10@AEBO@Z */
1730 complex_double* __cdecl complex_double_add_cd(complex_double *ret, const complex_double *l, double *r)
1732 ret->real = l->real + *r;
1733 ret->imag = l->imag;
1734 return ret;
1737 /* ??$?KN@std@@YA?AV?$complex@N@0@ABV10@0@Z */
1738 /* ??$?KN@std@@YA?AV?$complex@N@0@AEBV10@0@Z */
1739 /* ??$?KO@std@@YA?AV?$complex@O@0@ABV10@0@Z */
1740 /* ??$?KO@std@@YA?AV?$complex@O@0@AEBV10@0@Z */
1741 complex_double* __cdecl complex_double_div(complex_double *ret, const complex_double *l, const complex_double *r)
1743 double tmp, den;
1744 if((!r->real && !r->imag) || _isnan(l->real) || _isnan(l->imag)
1745 || _isnan(r->real) || _isnan(r->imag)) {
1746 ret->real = std_numeric_limits_double_quiet_NaN();
1747 ret->imag = ret->real;
1748 return ret;
1751 if (fabs(r->real) >= fabs(r->imag)) {
1752 tmp = r->imag / r->real;
1753 den = r->real + r->imag*tmp;
1754 ret->real = (l->real + l->imag*tmp) / den;
1755 ret->imag = (l->imag - l->real*tmp) / den;
1756 } else {
1757 tmp = r->real / r->imag;
1758 den = r->real*tmp + r->imag;
1759 ret->real = (l->real*tmp + l->imag) / den;
1760 ret->imag = (l->imag*tmp - l->real) / den;
1762 return ret;
1765 /* ??$?KN@std@@YA?AV?$complex@N@0@ABNABV10@@Z */
1766 /* ??$?KN@std@@YA?AV?$complex@N@0@AEBNAEBV10@@Z */
1767 /* ??$?KO@std@@YA?AV?$complex@O@0@ABOABV10@@Z */
1768 /* ??$?KO@std@@YA?AV?$complex@O@0@AEBOAEBV10@@Z */
1769 complex_double* __cdecl complex_double_div_dc(complex_double *ret, const double *l, const complex_double *r)
1771 complex_double c = {*l, 0};
1772 return complex_double_div(ret, &c, r);
1775 /* ??$?KN@std@@YA?AV?$complex@N@0@ABV10@ABN@Z */
1776 /* ??$?KN@std@@YA?AV?$complex@N@0@AEBV10@AEBN@Z */
1777 /* ??$?KO@std@@YA?AV?$complex@O@0@ABV10@ABO@Z */
1778 /* ??$?KO@std@@YA?AV?$complex@O@0@AEBV10@AEBO@Z */
1779 complex_double* __cdecl complex_double_div_cd(complex_double *ret, const complex_double *l, double *r)
1781 ret->real = l->real / *r;
1782 ret->imag = l->imag / *r;
1783 return ret;
1786 /* ??4?$_Complex_base@NU_C_double_complex@@@std@@QAEAAV01@ABV01@@Z */
1787 /* ??4?$_Complex_base@NU_C_double_complex@@@std@@QEAAAEAV01@AEBV01@@Z */
1788 /* ??4?$_Complex_base@OU_C_ldouble_complex@@@std@@QAEAAV01@ABV01@@Z */
1789 /* ??4?$_Complex_base@OU_C_ldouble_complex@@@std@@QEAAAEAV01@AEBV01@@Z */
1790 /* ??4?$complex@N@std@@QAEAAV01@ABV01@@Z */
1791 /* ??4?$complex@N@std@@QEAAAEAV01@AEBV01@@Z */
1792 /* ??4?$complex@O@std@@QAEAAV01@ABV01@@Z */
1793 /* ??4?$complex@O@std@@QEAAAEAV01@AEBV01@@Z */
1794 DEFINE_THISCALL_WRAPPER(complex_double_assign, 8)
1795 complex_double* __thiscall complex_double_assign(complex_double *this, const complex_double *r)
1797 *this = *r;
1798 return this;
1801 /* ??4?$complex@N@std@@QAEAAV01@ABN@Z */
1802 /* ??4?$complex@N@std@@QEAAAEAV01@AEBN@Z */
1803 /* ??4?$complex@O@std@@QAEAAV01@ABO@Z */
1804 /* ??4?$complex@O@std@@QEAAAEAV01@AEBO@Z */
1805 DEFINE_THISCALL_WRAPPER(complex_double_assign_double, 8)
1806 complex_double* __thiscall complex_double_assign_double(complex_double *this, double *r)
1808 this->real = *r;
1809 this->imag = 0;
1810 return this;
1813 /* ??X?$complex@N@std@@QAEAAV01@ABN@Z */
1814 /* ??X?$complex@N@std@@QEAAAEAV01@AEBN@Z */
1815 /* ??X?$complex@O@std@@QAEAAV01@ABO@Z */
1816 /* ??X?$complex@O@std@@QEAAAEAV01@AEBO@Z */
1817 DEFINE_THISCALL_WRAPPER(complex_double_mult_assign_double, 8)
1818 complex_double* __thiscall complex_double_mult_assign_double(complex_double *this, const double *r)
1820 this->real *= *r;
1821 this->imag *= *r;
1822 return this;
1825 /* ??X?$complex@N@std@@QAEAAV01@ABV01@@Z */
1826 /* ??X?$complex@N@std@@QEAAAEAV01@AEBV01@@Z */
1827 /* ??X?$complex@O@std@@QAEAAV01@ABV01@@Z */
1828 /* ??X?$complex@O@std@@QEAAAEAV01@AEBV01@@Z */
1829 DEFINE_THISCALL_WRAPPER(complex_double_mult_assign, 8)
1830 complex_double* __thiscall complex_double_mult_assign(complex_double *this, const complex_double *r)
1832 complex_double tmp;
1834 tmp.real = this->real*r->real - this->imag*r->imag;
1835 tmp.imag = this->real*r->imag + this->imag*r->real;
1836 *this = tmp;
1837 return this;
1840 /* ??Y?$complex@N@std@@QAEAAV01@ABN@Z */
1841 /* ??Y?$complex@N@std@@QEAAAEAV01@AEBN@Z */
1842 /* ??Y?$complex@O@std@@QAEAAV01@ABO@Z */
1843 /* ??Y?$complex@O@std@@QEAAAEAV01@AEBO@Z */
1844 DEFINE_THISCALL_WRAPPER(complex_double_add_assign_double, 8)
1845 complex_double* __thiscall complex_double_add_assign_double(complex_double *this, const double *r)
1847 this->real += *r;
1848 return this;
1851 /* ??Y?$complex@N@std@@QAEAAV01@ABV01@@Z */
1852 /* ??Y?$complex@N@std@@QEAAAEAV01@AEBV01@@Z */
1853 /* ??Y?$complex@O@std@@QAEAAV01@ABV01@@Z */
1854 /* ??Y?$complex@O@std@@QEAAAEAV01@AEBV01@@Z */
1855 DEFINE_THISCALL_WRAPPER(complex_double_add_assign, 8)
1856 complex_double* __thiscall complex_double_add_assign(complex_double *this, const complex_double *r)
1858 this->real += r->real;
1859 this->imag += r->imag;
1860 return this;
1863 /* ??Z?$complex@N@std@@QAEAAV01@ABN@Z */
1864 /* ??Z?$complex@N@std@@QEAAAEAV01@AEBN@Z */
1865 /* ??Z?$complex@O@std@@QAEAAV01@ABO@Z */
1866 /* ??Z?$complex@O@std@@QEAAAEAV01@AEBO@Z */
1867 DEFINE_THISCALL_WRAPPER(complex_double_sub_assign_double, 8)
1868 complex_double* __thiscall complex_double_sub_assign_double(complex_double *this, const double *r)
1870 this->real -= *r;
1871 return this;
1874 /* ??Z?$complex@N@std@@QAEAAV01@ABV01@@Z */
1875 /* ??Z?$complex@N@std@@QEAAAEAV01@AEBV01@@Z */
1876 /* ??Z?$complex@O@std@@QAEAAV01@ABV01@@Z */
1877 /* ??Z?$complex@O@std@@QEAAAEAV01@AEBV01@@Z */
1878 DEFINE_THISCALL_WRAPPER(complex_double_sub_assign, 8)
1879 complex_double* __thiscall complex_double_sub_assign(complex_double *this, const complex_double *r)
1881 this->real -= r->real;
1882 this->imag -= r->imag;
1883 return this;
1886 /* ??_0?$complex@N@std@@QAEAAV01@ABN@Z */
1887 /* ??_0?$complex@N@std@@QEAAAEAV01@AEBN@Z */
1888 /* ??_0?$complex@O@std@@QAEAAV01@ABO@Z */
1889 /* ??_0?$complex@O@std@@QEAAAEAV01@AEBO@Z */
1890 DEFINE_THISCALL_WRAPPER(complex_double_div_assign_double, 8)
1891 complex_double* __thiscall complex_double_div_assign_double(complex_double *this, const double *r)
1893 this->real /= *r;
1894 this->imag /= *r;
1895 return this;
1898 /* ??_0?$complex@N@std@@QAEAAV01@ABV01@@Z */
1899 /* ??_0?$complex@N@std@@QEAAAEAV01@AEBV01@@Z */
1900 /* ??_0?$complex@O@std@@QAEAAV01@ABV01@@Z */
1901 /* ??_0?$complex@O@std@@QEAAAEAV01@AEBV01@@Z */
1902 DEFINE_THISCALL_WRAPPER(complex_double_div_assign, 8)
1903 complex_double* __thiscall complex_double_div_assign(complex_double *this, const complex_double *r)
1905 complex_double tmp = *this;
1906 return complex_double_div(this, &tmp, r);
1909 /* ??$arg@N@std@@YANABV?$complex@N@0@@Z */
1910 /* ??$arg@N@std@@YANAEBV?$complex@N@0@@Z */
1911 /* ??$arg@O@std@@YAOABV?$complex@O@0@@Z */
1912 /* ??$arg@O@std@@YAOAEBV?$complex@O@0@@Z */
1913 double __cdecl complex_double_arg(const complex_double *c)
1915 return atan2(c->imag, c->real);
1918 /* ??$imag@N@std@@YANABV?$complex@N@0@@Z */
1919 /* ??$imag@N@std@@YANAEBV?$complex@N@0@@Z */
1920 /* ??$imag@O@std@@YAOABV?$complex@O@0@@Z */
1921 /* ??$imag@O@std@@YAOAEBV?$complex@O@0@@Z */
1922 double __cdecl complex_double_imag(const complex_double *c)
1924 return c->imag;
1927 /* ?imag@?$_Complex_base@NU_C_double_complex@@@std@@QAENABN@Z */
1928 /* ?imag@?$_Complex_base@NU_C_double_complex@@@std@@QEAANAEBN@Z */
1929 /* ?imag@?$_Complex_base@OU_C_ldouble_complex@@@std@@QAEOABO@Z */
1930 /* ?imag@?$_Complex_base@OU_C_ldouble_complex@@@std@@QEAAOAEBO@Z */
1931 DEFINE_THISCALL_WRAPPER(complex_double_imag_set, 8)
1932 double __thiscall complex_double_imag_set(complex_double *this, const double *d)
1934 return (this->imag = *d);
1937 /* ?imag@?$_Complex_base@NU_C_double_complex@@@std@@QBENXZ */
1938 /* ?imag@?$_Complex_base@NU_C_double_complex@@@std@@QEBANXZ */
1939 /* ?imag@?$_Complex_base@OU_C_ldouble_complex@@@std@@QBEOXZ */
1940 /* ?imag@?$_Complex_base@OU_C_ldouble_complex@@@std@@QEBAOXZ */
1941 DEFINE_THISCALL_WRAPPER(complex_double_imag_get, 4)
1942 double __thiscall complex_double_imag_get(const complex_double *this)
1944 return this->imag;
1947 /* ??$real@N@std@@YANABV?$complex@N@0@@Z */
1948 /* ??$real@N@std@@YANAEBV?$complex@N@0@@Z */
1949 /* ??$real@O@std@@YAOABV?$complex@O@0@@Z */
1950 /* ??$real@O@std@@YAOAEBV?$complex@O@0@@Z */
1951 double __cdecl complex_double_real(const complex_double *c)
1953 return c->real;
1956 /* ?real@?$_Complex_base@NU_C_double_complex@@@std@@QAENABN@Z */
1957 /* ?real@?$_Complex_base@NU_C_double_complex@@@std@@QEAANAEBN@Z */
1958 /* ?real@?$_Complex_base@OU_C_ldouble_complex@@@std@@QAEOABO@Z */
1959 /* ?real@?$_Complex_base@OU_C_ldouble_complex@@@std@@QEAAOAEBO@Z */
1960 DEFINE_THISCALL_WRAPPER(complex_double_real_set, 8)
1961 double __thiscall complex_double_real_set(complex_double *this, const double *d)
1963 return (this->real = *d);
1966 /* ?real@?$_Complex_base@NU_C_double_complex@@@std@@QBENXZ */
1967 /* ?real@?$_Complex_base@NU_C_double_complex@@@std@@QEBANXZ */
1968 /* ?real@?$_Complex_base@OU_C_ldouble_complex@@@std@@QBEOXZ */
1969 /* ?real@?$_Complex_base@OU_C_ldouble_complex@@@std@@QEBAOXZ */
1970 DEFINE_THISCALL_WRAPPER(complex_double_real_get, 4)
1971 double __thiscall complex_double_real_get(const complex_double *this)
1973 return this->real;
1976 /* ??$_Fabs@N@std@@YANABV?$complex@N@0@PAH@Z */
1977 /* ??$_Fabs@N@std@@YANAEBV?$complex@N@0@PEAH@Z */
1978 /* ??$_Fabs@O@std@@YAOABV?$complex@O@0@PAH@Z */
1979 /* ??$_Fabs@O@std@@YAOAEBV?$complex@O@0@PEAH@Z */
1980 double __cdecl complex_double__Fabs(const complex_double *c, int *scale)
1982 double ret;
1984 ret = hypot(c->real, c->imag);
1985 if(_isnan(ret) || ret==0) {
1986 *scale = 0;
1987 }else if(ret >= 1) {
1988 *scale = 2;
1989 ret /= 4;
1990 }else {
1991 *scale = -2;
1992 ret *= 4;
1995 return ret;
1998 /* ??$abs@N@std@@YANABV?$complex@N@0@@Z */
1999 /* ??$abs@N@std@@YANAEBV?$complex@N@0@@Z */
2000 /* ??$abs@O@std@@YAOABV?$complex@O@0@@Z */
2001 /* ??$abs@O@std@@YAOAEBV?$complex@O@0@@Z */
2002 double __cdecl complex_double_abs(const complex_double *c)
2004 return hypot(c->real, c->imag);
2007 /* ??$conj@N@std@@YA?AV?$complex@N@0@ABV10@@Z */
2008 /* ??$conj@N@std@@YA?AV?$complex@N@0@AEBV10@@Z */
2009 /* ??$conj@O@std@@YA?AV?$complex@O@0@ABV10@@Z */
2010 /* ??$conj@O@std@@YA?AV?$complex@O@0@AEBV10@@Z */
2011 complex_double* __cdecl complex_double_conj(complex_double *ret, const complex_double *c)
2013 ret->real = c->real;
2014 ret->imag = -c->imag;
2015 return ret;
2018 /* ??$cos@N@std@@YA?AV?$complex@N@0@ABV10@@Z */
2019 /* ??$cos@N@std@@YA?AV?$complex@N@0@AEBV10@@Z */
2020 /* ??$cos@O@std@@YA?AV?$complex@O@0@ABV10@@Z */
2021 /* ??$cos@O@std@@YA?AV?$complex@O@0@AEBV10@@Z */
2022 complex_double* __cdecl complex_double_cos(complex_double *ret, const complex_double *c)
2024 ret->real = cos(c->real)*cosh(c->imag);
2025 ret->imag = -sin(c->real)*sinh(c->imag);
2026 return ret;
2029 /* ??$sin@N@std@@YA?AV?$complex@N@0@ABV10@@Z */
2030 /* ??$sin@N@std@@YA?AV?$complex@N@0@AEBV10@@Z */
2031 /* ??$sin@O@std@@YA?AV?$complex@O@0@ABV10@@Z */
2032 /* ??$sin@O@std@@YA?AV?$complex@O@0@AEBV10@@Z */
2033 complex_double* __cdecl complex_double_sin(complex_double *ret, const complex_double *c)
2035 ret->real = sin(c->real)*cosh(c->imag);
2036 ret->imag = cos(c->real)*sinh(c->imag);
2037 return ret;
2040 /* ??$tan@N@std@@YA?AV?$complex@N@0@ABV10@@Z */
2041 /* ??$tan@N@std@@YA?AV?$complex@N@0@AEBV10@@Z */
2042 /* ??$tan@O@std@@YA?AV?$complex@O@0@ABV10@@Z */
2043 /* ??$tan@O@std@@YA?AV?$complex@O@0@AEBV10@@Z */
2044 complex_double* __cdecl complex_double_tan(complex_double *ret, const complex_double *c)
2046 double denom = cos(2*c->real) + cosh(2*c->imag);
2047 ret->real = sin(2*c->real) / denom;
2048 ret->imag = sinh(2*c->imag) / denom;
2049 return ret;
2052 /* ??$cosh@N@std@@YA?AV?$complex@N@0@ABV10@@Z */
2053 /* ??$cosh@N@std@@YA?AV?$complex@N@0@AEBV10@@Z */
2054 /* ??$cosh@O@std@@YA?AV?$complex@O@0@ABV10@@Z */
2055 /* ??$cosh@O@std@@YA?AV?$complex@O@0@AEBV10@@Z */
2056 complex_double* __cdecl complex_double_cosh(complex_double *ret, const complex_double *c)
2058 ret->real = cosh(c->real)*cos(c->imag);
2059 ret->imag = sinh(c->real)*sin(c->imag);
2060 return ret;
2063 /* ??$sinh@N@std@@YA?AV?$complex@N@0@ABV10@@Z */
2064 /* ??$sinh@N@std@@YA?AV?$complex@N@0@AEBV10@@Z */
2065 /* ??$sinh@O@std@@YA?AV?$complex@O@0@ABV10@@Z */
2066 /* ??$sinh@O@std@@YA?AV?$complex@O@0@AEBV10@@Z */
2067 complex_double* __cdecl complex_double_sinh(complex_double *ret, const complex_double *c)
2069 ret->real = sinh(c->real)*cos(c->imag);
2070 ret->imag = cosh(c->real)*sin(c->imag);
2071 return ret;
2074 /* ??$tanh@N@std@@YA?AV?$complex@N@0@ABV10@@Z */
2075 /* ??$tanh@N@std@@YA?AV?$complex@N@0@AEBV10@@Z */
2076 /* ??$tanh@O@std@@YA?AV?$complex@O@0@ABV10@@Z */
2077 /* ??$tanh@O@std@@YA?AV?$complex@O@0@AEBV10@@Z */
2078 complex_double* __cdecl complex_double_tanh(complex_double *ret, const complex_double *c)
2080 complex_double tmp;
2082 ret->real = -c->imag;
2083 ret->imag = c->real;
2084 complex_double_tan(&tmp, ret);
2085 ret->real = tmp.imag;
2086 ret->imag = -tmp.real;
2087 return ret;
2090 /* ??$exp@N@std@@YA?AV?$complex@N@0@ABV10@@Z */
2091 /* ??$exp@N@std@@YA?AV?$complex@N@0@AEBV10@@Z */
2092 /* ??$exp@O@std@@YA?AV?$complex@O@0@ABV10@@Z */
2093 /* ??$exp@O@std@@YA?AV?$complex@O@0@AEBV10@@Z */
2094 complex_double* __cdecl complex_double_exp(complex_double *ret, const complex_double *c)
2096 ret->real = ret->imag = exp(c->real);
2097 ret->real *= cos(c->imag);
2098 ret->imag *= sin(c->imag);
2099 return ret;
2102 /* ??$log@N@std@@YA?AV?$complex@N@0@ABV10@@Z */
2103 /* ??$log@N@std@@YA?AV?$complex@N@0@AEBV10@@Z */
2104 /* ??$log@O@std@@YA?AV?$complex@O@0@ABV10@@Z */
2105 /* ??$log@O@std@@YA?AV?$complex@O@0@AEBV10@@Z */
2106 complex_double* __cdecl complex_double_log(complex_double *ret, const complex_double *c)
2108 ret->real = log(complex_double_abs(c));
2109 ret->imag = complex_double_arg(c);
2110 return ret;
2113 /* ??$log10@N@std@@YA?AV?$complex@N@0@ABV10@@Z */
2114 /* ??$log10@N@std@@YA?AV?$complex@N@0@AEBV10@@Z */
2115 /* ??$log10@O@std@@YA?AV?$complex@O@0@ABV10@@Z */
2116 /* ??$log10@O@std@@YA?AV?$complex@O@0@AEBV10@@Z */
2117 complex_double* __cdecl complex_double_log10(complex_double *ret, const complex_double *c)
2119 complex_double_log(ret, c);
2120 ret->real *= M_LOG10E;
2121 ret->imag *= M_LOG10E;
2122 return ret;
2125 /* ??$norm@N@std@@YANABV?$complex@N@0@@Z */
2126 /* ??$norm@N@std@@YANAEBV?$complex@N@0@@Z */
2127 /* ??$norm@O@std@@YAOABV?$complex@O@0@@Z */
2128 /* ??$norm@O@std@@YAOAEBV?$complex@O@0@@Z */
2129 double __cdecl complex_double_norm(const complex_double *c)
2131 return c->real*c->real + c->imag*c->imag;
2134 /* ??$polar@N@std@@YA?AV?$complex@N@0@ABN0@Z */
2135 /* ??$polar@N@std@@YA?AV?$complex@N@0@AEBN0@Z */
2136 /* ??$polar@O@std@@YA?AV?$complex@O@0@ABO0@Z */
2137 /* ??$polar@O@std@@YA?AV?$complex@O@0@AEBO0@Z */
2138 complex_double* __cdecl complex_double_polar_theta(complex_double *ret, const double *mod, const double *theta)
2140 ret->real = *mod * cos(*theta);
2141 ret->imag = *mod * sin(*theta);
2142 return ret;
2145 /* ??$polar@N@std@@YA?AV?$complex@N@0@ABN@Z */
2146 /* ??$polar@N@std@@YA?AV?$complex@N@0@AEBN@Z */
2147 /* ??$polar@O@std@@YA?AV?$complex@O@0@ABO@Z */
2148 /* ??$polar@O@std@@YA?AV?$complex@O@0@AEBO@Z */
2149 complex_double* __cdecl complex_double_polar(complex_double *ret, const double *mod)
2151 ret->real = *mod;
2152 ret->imag = 0;
2153 return ret;
2156 /* ??$pow@N@std@@YA?AV?$complex@N@0@ABV10@0@Z */
2157 /* ??$pow@N@std@@YA?AV?$complex@N@0@AEBV10@0@Z */
2158 /* ??$pow@O@std@@YA?AV?$complex@O@0@ABV10@0@Z */
2159 /* ??$pow@O@std@@YA?AV?$complex@O@0@AEBV10@0@Z */
2160 complex_double* __cdecl complex_double_pow(complex_double *ret, const complex_double *l, const complex_double *r)
2162 double abs = complex_double_abs(l), arg = complex_double_arg(l);
2163 double rad = pow(abs, r->real), theta = r->real*arg;
2165 if(r->imag) {
2166 rad *= exp(-r->imag * arg);
2167 theta += r->imag * log(abs);
2170 ret->real = rad * cos(theta);
2171 ret->imag = rad * sin(theta);
2172 return ret;
2175 /* ??$pow@N@std@@YA?AV?$complex@N@0@ABNABV10@@Z */
2176 /* ??$pow@N@std@@YA?AV?$complex@N@0@AEBNAEBV10@@Z */
2177 /* ??$pow@O@std@@YA?AV?$complex@O@0@ABOABV10@@Z */
2178 /* ??$pow@O@std@@YA?AV?$complex@O@0@AEBOAEBV10@@Z */
2179 complex_double* __cdecl complex_double_pow_dc(complex_double *ret, const double *l, const complex_double *r)
2181 complex_double c = { *l, 0 };
2182 return complex_double_pow(ret, &c, r);
2185 /* ??$pow@N@std@@YA?AV?$complex@N@0@ABV10@ABN@Z */
2186 /* ??$pow@N@std@@YA?AV?$complex@N@0@AEBV10@AEBN@Z */
2187 /* ??$pow@O@std@@YA?AV?$complex@O@0@ABV10@ABO@Z */
2188 /* ??$pow@O@std@@YA?AV?$complex@O@0@AEBV10@AEBO@Z */
2189 complex_double* __cdecl complex_double_pow_cd(complex_double *ret, const complex_double *l, const double *r)
2191 complex_double c = { *r, 0 };
2192 return complex_double_pow(ret, l, &c);
2195 /* ??$pow@N@std@@YA?AV?$complex@N@0@ABV10@H@Z */
2196 /* ??$pow@N@std@@YA?AV?$complex@N@0@AEBV10@H@Z */
2197 /* ??$pow@O@std@@YA?AV?$complex@O@0@ABV10@H@Z */
2198 /* ??$pow@O@std@@YA?AV?$complex@O@0@AEBV10@H@Z */
2199 complex_double* __cdecl complex_double_pow_ci(complex_double *ret, const complex_double *l, int r)
2201 complex_double c = *l;
2202 complex_double unit_value = { 1.0, 0 };
2203 complex_double_assign(ret, &unit_value);
2205 if(r < 0) {
2206 r = -r;
2207 complex_double_div(&c, &unit_value, l);
2210 for(; r>0; r>>=1) {
2211 if(r & 1)
2212 complex_double_mult_assign(ret, &c);
2213 if(r != 1)
2214 complex_double_mult_assign(&c, &c);
2217 return ret;
2220 /* ??$sqrt@N@std@@YA?AV?$complex@N@0@ABV10@@Z */
2221 /* ??$sqrt@N@std@@YA?AV?$complex@N@0@AEBV10@@Z */
2222 /* ??$sqrt@O@std@@YA?AV?$complex@O@0@ABV10@@Z */
2223 /* ??$sqrt@O@std@@YA?AV?$complex@O@0@AEBV10@@Z */
2224 complex_double* __cdecl complex_double_sqrt(complex_double *ret, const complex_double *l)
2226 complex_double c = { 0.5, 0 };
2227 return complex_double_pow(ret, l, &c);
2230 static short dclass(double x)
2232 switch(_fpclass(x)) {
2233 case _FPCLASS_SNAN:
2234 case _FPCLASS_QNAN:
2235 return FP_NAN;
2236 case _FPCLASS_NINF:
2237 case _FPCLASS_PINF:
2238 return FP_INFINITE;
2239 case _FPCLASS_ND:
2240 case _FPCLASS_PD:
2241 return FP_SUBNORMAL;
2242 case _FPCLASS_NN:
2243 case _FPCLASS_PN:
2244 default:
2245 return FP_NORMAL;
2246 case _FPCLASS_NZ:
2247 case _FPCLASS_PZ:
2248 return FP_ZERO;
2252 /* _Dtest */
2253 short __cdecl _Dtest(double *x)
2255 return dclass(*x);
2258 /* _FDtest */
2259 short __cdecl _FDtest(float *x)
2261 return dclass(*x);
2264 /* _Dscale */
2265 short __cdecl _Dscale(double *x, int exp)
2267 *x *= pow(2, exp);
2268 return dclass(*x);
2271 /* _FDscale */
2272 short __cdecl _FDscale(float *x, int exp)
2274 *x *= pow(2, exp);
2275 return dclass(*x);
2278 /* _Exp */
2279 /* computes y * e^(*x) * 2^scale */
2280 short __cdecl _Exp(double *x, double y, int scale)
2282 double ed;
2283 int e;
2285 if(y == 0) {
2286 *x = 0;
2287 return FP_ZERO;
2290 *x /= M_LN2;
2291 ed = floor(*x);
2292 *x -= ed;
2293 e = ed;
2295 if(ed!=e && ed>0)
2296 scale = INT_MAX;
2297 else if(ed!=e && ed<0)
2298 scale = INT_MIN;
2299 else if(scale>0 && e>0 && scale+e<=0)
2300 scale = INT_MAX;
2301 else if(scale<0 && e<0 && scale+e>=0)
2302 scale = INT_MIN;
2303 else
2304 scale += e;
2306 *x = y * pow(2.0, *x);
2307 return _Dscale(x, scale);
2310 /* _FExp */
2311 short __cdecl _FExp(float *x, float y, short scale)
2313 double d = *x;
2314 _Exp(&d, y, scale);
2315 *x = d;
2317 return dclass(*x);