diff --git a/win32/include/math.h b/win32/include/math.h index feb1f95b..279a69bd 100644 --- a/win32/include/math.h +++ b/win32/include/math.h @@ -205,8 +205,21 @@ extern "C" { __CRT_INLINE float frexpf(float _X,int *_Y) { return ((float)frexp((double)_X,_Y)); } #if !defined (__ia64__) - __CRT_INLINE float fabsf(float x) { return (float) fabs(x); } - __CRT_INLINE float ldexpf(float x, int expn) { return (float) ldexp(x, expn); } + __CRT_INLINE float __cdecl fabsf (float x) + { +#ifdef _WIN64 + *((int *) &x) &= 0x7fffffff; + return x; +#else + float res; + __asm__ ("fabs;" : "=t" (res) : "0" (x)); + return res; +#endif + } + + __CRT_INLINE float __cdecl ldexpf (float x, int expn) { return (float) ldexp (x, expn); } +#endif +#if defined (_WIN32) && !defined(_WIN64) __CRT_INLINE float acosf(float x) { return (float) acos(x); } __CRT_INLINE float asinf(float x) { return (float) asin(x); } __CRT_INLINE float atanf(float x) { return (float) atan(x); } @@ -377,6 +390,32 @@ extern "C" { extern double __cdecl logb (double); extern float __cdecl logbf (float); extern long double __cdecl logbl (long double); +#ifndef _WIN32 + __CRT_INLINE double __cdecl logb (double x) + { + double res; + __asm__ ("fxtract\n\t" + "fstp %%st" : "=t" (res) : "0" (x)); + return res; + } + + __CRT_INLINE float __cdecl logbf (float x) + { + float res; + __asm__ ("fxtract\n\t" + "fstp %%st" : "=t" (res) : "0" (x)); + return res; + } + + __CRT_INLINE long double __cdecl logbl (long double x) + { + long double res; + __asm__ ("fxtract\n\t" + "fstp %%st" : "=t" (res) : "0" (x)); + return res; + } +#endif + extern long double __cdecl modfl (long double, long double*); /* 7.12.6.13 */ diff --git a/win32/lib/msvcrt.def b/win32/lib/msvcrt.def index 742acb8b..e8f6ab91 100644 --- a/win32/lib/msvcrt.def +++ b/win32/lib/msvcrt.def @@ -1,80 +1,57 @@ LIBRARY msvcrt.dll EXPORTS -$I10_OUTPUT -??0__non_rtti_object@@QAE@ABV0@@Z -??0__non_rtti_object@@QAE@PBD@Z +??0__non_rtti_object@@QEAA@AEBV0@@Z +??0__non_rtti_object@@QEAA@PEBD@Z ??0bad_cast@@AAE@PBQBD@Z +??0bad_cast@@AEAA@PEBQEBD@Z ??0bad_cast@@QAE@ABQBD@Z -??0bad_cast@@QAE@ABV0@@Z -??0bad_cast@@QAE@PBD@Z -??0bad_typeid@@QAE@ABV0@@Z -??0bad_typeid@@QAE@PBD@Z -??0exception@@QAE@ABQBD@Z -??0exception@@QAE@ABQBDH@Z -??0exception@@QAE@ABV0@@Z -??0exception@@QAE@XZ -??1__non_rtti_object@@UAE@XZ -??1bad_cast@@UAE@XZ -??1bad_typeid@@UAE@XZ -??1exception@@UAE@XZ -??1type_info@@UAE@XZ -??2@YAPAXI@Z -??2@YAPAXIHPBDH@Z -??3@YAXPAX@Z -??4__non_rtti_object@@QAEAAV0@ABV0@@Z -??4bad_cast@@QAEAAV0@ABV0@@Z -??4bad_typeid@@QAEAAV0@ABV0@@Z -??4exception@@QAEAAV0@ABV0@@Z -??8type_info@@QBEHABV0@@Z -??9type_info@@QBEHABV0@@Z +??0bad_cast@@QEAA@AEBQEBD@Z +??0bad_cast@@QEAA@AEBV0@@Z +??0bad_cast@@QEAA@PEBD@Z +??0bad_typeid@@QEAA@AEBV0@@Z +??0bad_typeid@@QEAA@PEBD@Z +??0exception@@QEAA@AEBQEBD@Z +??0exception@@QEAA@AEBQEBDH@Z +??0exception@@QEAA@AEBV0@@Z +??0exception@@QEAA@XZ +??1__non_rtti_object@@UEAA@XZ +??1bad_cast@@UEAA@XZ +??1bad_typeid@@UEAA@XZ +??1exception@@UEAA@XZ +??1type_info@@UEAA@XZ +??2@YAPEAX_K@Z +??2@YAPEAX_KHPEBDH@Z +??3@YAXPEAX@Z +??4__non_rtti_object@@QEAAAEAV0@AEBV0@@Z +??4bad_cast@@QEAAAEAV0@AEBV0@@Z +??4bad_typeid@@QEAAAEAV0@AEBV0@@Z +??4exception@@QEAAAEAV0@AEBV0@@Z +??8type_info@@QEBAHAEBV0@@Z +??9type_info@@QEBAHAEBV0@@Z ??_7__non_rtti_object@@6B@ ??_7bad_cast@@6B@ ??_7bad_typeid@@6B@ ??_7exception@@6B@ -??_E__non_rtti_object@@UAEPAXI@Z -??_Ebad_cast@@UAEPAXI@Z -??_Ebad_typeid@@UAEPAXI@Z -??_Eexception@@UAEPAXI@Z -??_Fbad_cast@@QAEXXZ -??_Fbad_typeid@@QAEXXZ -??_G__non_rtti_object@@UAEPAXI@Z -??_Gbad_cast@@UAEPAXI@Z -??_Gbad_typeid@@UAEPAXI@Z -??_Gexception@@UAEPAXI@Z -??_U@YAPAXI@Z -??_U@YAPAXIHPBDH@Z -??_V@YAXPAX@Z -?_query_new_handler@@YAP6AHI@ZXZ +??_Fbad_cast@@QEAAXXZ +??_Fbad_typeid@@QEAAXXZ +??_U@YAPEAX_K@Z +??_U@YAPEAX_KHPEBDH@Z +??_V@YAXPEAX@Z +?_query_new_handler@@YAP6AH_K@ZXZ ?_query_new_mode@@YAHXZ -?_set_new_handler@@YAP6AHI@ZP6AHI@Z@Z +?_set_new_handler@@YAP6AH_K@ZP6AH0@Z@Z ?_set_new_mode@@YAHH@Z -?_set_se_translator@@YAP6AXIPAU_EXCEPTION_POINTERS@@@ZP6AXI0@Z@Z -?before@type_info@@QBEHABV1@@Z -?name@type_info@@QBEPBDXZ -?raw_name@type_info@@QBEPBDXZ +?_set_se_translator@@YAP6AXIPEAU_EXCEPTION_POINTERS@@@ZP6AXI0@Z@Z +?before@type_info@@QEBAHAEBV1@@Z +?name@type_info@@QEBAPEBDXZ +?raw_name@type_info@@QEBAPEBDXZ ?set_new_handler@@YAP6AXXZP6AXXZ@Z ?set_terminate@@YAP6AXXZP6AXXZ@Z ?set_unexpected@@YAP6AXXZP6AXXZ@Z ?terminate@@YAXXZ ?unexpected@@YAXXZ -?what@exception@@UBEPBDXZ -_CIacos -_CIasin -_CIatan -_CIatan2 -_CIcos -_CIcosh -_CIexp -_CIfmod -_CIlog -_CIlog10 -_CIpow -_CIsin -_CIsinh -_CIsqrt -_CItan -_CItanh +?what@exception@@UEBAPEBDXZ _CrtCheckMemory _CrtDbgBreak _CrtDbgReport @@ -101,27 +78,33 @@ _CrtSetReportHook _CrtSetReportHook2 _CrtSetReportMode _CxxThrowException -_EH_prolog _Getdays _Getmonths _Gettnames _HUGE _Strftime +_W_Getdays +_W_Getmonths +_W_Gettnames +_Wcsftime _XcptFilter +__AdjustPointer +__C_specific_handler __CppXcptFilter -__CxxCallUnwindDelDtor -__CxxCallUnwindDtor -__CxxCallUnwindVecDtor -__CxxDetectRethrow -__CxxExceptionFilter __CxxFrameHandler __CxxFrameHandler2 __CxxFrameHandler3 -__CxxLongjmpUnwind -__CxxQueryExceptionSize -__CxxRegisterExceptionObject -__CxxUnregisterExceptionObject __DestructExceptionObject +__ExceptionPtrAssign +__ExceptionPtrCompare +__ExceptionPtrCopy +__ExceptionPtrCopyException +__ExceptionPtrCreate +__ExceptionPtrCurrentException +__ExceptionPtrDestroy +__ExceptionPtrRethrow +__ExceptionPtrSwap +__ExceptionPtrToBool __RTCastToVoid __RTDynamicCast __RTtypeid @@ -156,57 +139,7 @@ __lc_codepage __lc_collate_cp __lc_handle __lconv_init -__libm_sse2_acos -__libm_sse2_acosf -__libm_sse2_asin -__libm_sse2_asinf -__libm_sse2_atan -__libm_sse2_atan2 -__libm_sse2_atanf -__libm_sse2_cos -__libm_sse2_cosf -__libm_sse2_exp -__libm_sse2_expf -__libm_sse2_log -__libm_sse2_log10 -__libm_sse2_log10f -__libm_sse2_logf -__libm_sse2_pow -__libm_sse2_powf -__libm_sse2_sin -__libm_sse2_sinf -__libm_sse2_tan -__libm_sse2_tanf __mb_cur_max -__p___argc -__p___argv -__p___initenv -__p___mb_cur_max -__p___wargv -__p___winitenv -__p__acmdln -__p__amblksiz -__p__commode -__p__daylight -__p__dstbias -__p__environ -__p__fileinfo -__p__fmode -__p__iob -__p__mbcasemap -__p__mbctype -__p__osver -__p__pctype -__p__pgmptr -__p__pwctype -__p__timezone -__p__tzname -__p__wcmdln -__p__wenviron -__p__winmajor -__p__winminor -__p__winver -__p__wpgmptr __pctype_func __pioinfo __pwctype_func @@ -228,25 +161,10 @@ __wcserror_s __wcsncnt __wgetmainargs __winitenv -_abnormal_termination _abs64 _access _access_s _acmdln -_adj_fdiv_m16i -_adj_fdiv_m32 -_adj_fdiv_m32i -_adj_fdiv_m64 -_adj_fdiv_r -_adj_fdivr_m16i -_adj_fdivr_m32 -_adj_fdivr_m32i -_adj_fdivr_m64 -_adj_fpatan -_adj_fprem -_adj_fprem1 -_adj_fptan -_adjust_fdiv _aexit_rtn _aligned_free _aligned_free_dbg @@ -285,7 +203,7 @@ _cgetws_s _chdir _chdrive _chgsign -_chkesp +_chgsignf _chmod _chsize _chsize_s @@ -299,6 +217,7 @@ _control87 _controlfp _controlfp_s _copysign +_copysignf _cprintf _cprintf_l _cprintf_p @@ -308,6 +227,7 @@ _cprintf_s_l _cputs _cputws _creat +_create_locale _crtAssertBusy _crtBreakAlloc _crtDbgFlag @@ -344,9 +264,6 @@ _endthreadex _environ _eof _errno -_except_handler2 -_except_handler3 -_except_handler4_common _execl _execle _execlp @@ -377,11 +294,12 @@ _findnext _findnext64 _findnexti64 _finite +_finitef _flsbuf _flushall _fmode _fpclass -_fpieee_flt +_fpclassf _fpreset _fprintf_l _fprintf_p @@ -390,6 +308,7 @@ _fprintf_s_l _fputchar _fputwchar _free_dbg +_free_locale _freea _freea_s _fscanf_l @@ -404,10 +323,6 @@ _ftime32 _ftime32_s _ftime64 _ftime64_s -_ftol -_ftol2 -_ftol2_sse -_ftol2_sse_excpt _fullpath _fullpath_dbg _futime @@ -421,6 +336,7 @@ _fwscanf_l _fwscanf_s_l _gcvt _gcvt_s +_get_current_locale _get_doserrno _get_environ _get_errno @@ -443,7 +359,6 @@ _getche _getcwd _getdcwd _getdiskfree -_getdllprocaddr _getdrive _getdrives _getmaxstdio @@ -454,27 +369,22 @@ _getw _getwch _getwche _getws -_global_unwind2 _gmtime32 _gmtime32_s _gmtime64 _gmtime64_s -_heapadd _heapchk _heapmin _heapset -_heapused _heapwalk _hypot +_hypotf _i64toa _i64toa_s _i64tow _i64tow_s _initterm _initterm_e -_inp -_inpd -_inpw _invalid_parameter _iob _isalnum_l @@ -546,6 +456,7 @@ _ismbslead_l _ismbstrail _ismbstrail_l _isnan +_isnanf _isprint_l _isspace_l _isupper_l @@ -572,9 +483,7 @@ _jn _kbhit _lfind _lfind_s -_loaddll -_local_unwind2 -_local_unwind4 +_local_unwind _localtime32 _localtime32_s _localtime64 @@ -582,7 +491,7 @@ _localtime64_s _lock _locking _logb -_longjmpex +_logbf _lrotl _lrotr _lsearch @@ -746,16 +655,14 @@ _mktemp_s _mktime32 _mktime64 _msize -_msize_debug +_msize_dbg _nextafter +_nextafterf _onexit _open _open_osfhandle _osplatform _osver -_outp -_outpd -_outpw _pclose _pctype _pgmptr @@ -782,11 +689,8 @@ _rotl _rotl64 _rotr _rotr64 -_safe_fdiv -_safe_fdivr -_safe_fprem -_safe_fprem1 _scalb +_scalbf _scanf_l _scanf_s_l _scprintf @@ -797,9 +701,6 @@ _scwprintf_l _scwprintf_p_l _searchenv _searchenv_s -_seh_longjmp_unwind -_seh_longjmp_unwind4 -_set_SSE2_enable _set_controlfp _set_doserrno _set_errno @@ -810,7 +711,7 @@ _set_output_format _set_sbh_threshold _seterrormode _setjmp -_setjmp3 +_setjmpex _setmaxstdio _setmbcp _setmode @@ -934,7 +835,6 @@ _umask_s _ungetch _ungetwch _unlink -_unloaddll _unlock _utime _utime32 @@ -1027,6 +927,7 @@ _wcsnset_s _wcsrev _wcsset _wcsset_s +_wcstod_l _wcstoi64 _wcstoi64_l _wcstol_l @@ -1146,11 +1047,15 @@ _yn abort abs acos +acosf asctime asctime_s asin +asinf atan atan2 +atan2f +atanf atexit atof atoi @@ -1160,16 +1065,20 @@ bsearch_s btowc calloc ceil +ceilf clearerr clearerr_s clock cos +cosf cosh +coshf ctime difftime div exit exp +expf fabs fclose feof @@ -1181,7 +1090,9 @@ fgets fgetwc fgetws floor +floorf fmod +fmodf fopen fopen_s fprintf @@ -1246,6 +1157,8 @@ localeconv localtime log log10 +log10f +logf longjmp malloc mblen @@ -1266,8 +1179,10 @@ memmove_s memset mktime modf +modff perror pow +powf printf printf_s putc @@ -1287,14 +1202,18 @@ rewind scanf scanf_s setbuf +setjmp setlocale setvbuf signal sin +sinf sinh +sinhf sprintf sprintf_s sqrt +sqrtf srand sscanf sscanf_s @@ -1332,7 +1251,9 @@ swscanf swscanf_s system tan +tanf tanh +tanhf time tmpfile tmpfile_s