Improve c99 math and allow _matherr for internal functions.
git-svn-id: svn+ssh://svn.code.sf.net/p/mingw-w64/code/trunk@3076 4407c894-4637-0410-b4f5-ada5f102cad1
diff --git a/mingw-w64-crt/complex/complex_internal.h b/mingw-w64-crt/complex/complex_internal.h
index 5531430..ab4b78a 100644
--- a/mingw-w64-crt/complex/complex_internal.h
+++ b/mingw-w64-crt/complex/complex_internal.h
@@ -78,6 +78,7 @@
# define __FLT_MAXLOG 88.72283905206835F
# define __FLT_MINLOG -103.278929903431851103F
# define __FLT_LOGE2 0.693147180559945309F
+# define __FLT_REPORT(NAME) NAME "f"
#elif defined(_NEW_COMPLEX_DOUBLE)
# define __FLT_TYPE double
# define __FLT_ABI(N) N
@@ -92,6 +93,7 @@
# define __FLT_MAXLOG 7.09782712893383996843E2
# define __FLT_MINLOG -7.08396418532264106224E2
# define __FLT_LOGE2 6.93147180559945309417E-1
+# define __FLT_REPORT(NAME) NAME
#elif defined(_NEW_COMPLEX_LDOUBLE)
# define __FLT_TYPE long double
# define __FLT_ABI(N) N##l
@@ -106,6 +108,18 @@
# define __FLT_MAXLOG 1.1356523406294143949492E4L
# define __FLT_MINLOG -1.13994985314888605586758E4L
# define __FLT_LOGE2 6.9314718055994530941723E-1L
+# define __FLT_REPORT(NAME) NAME "l"
#else
# error "Unknown complex number type"
#endif
+
+#define __FLT_RPT_DOMAIN(NAME, ARG1, ARG2, RSLT) \
+ errno = EDOM, \
+ __mingw_raise_matherr (_DOMAIN, __FLT_REPORT(NAME), (double) (ARG1), \
+ (double) (ARG2), (double) (RSLT))
+#define __FLT_RPT_ERANGE(NAME, ARG1, ARG2, RSLT, OVL) \
+ errno = ERANGE, \
+ __mingw_raise_matherr (((OVL) ? _OVERFLOW : _UNDERFLOW), \
+ __FLT_REPORT(NAME), (double) (ARG1), \
+ (double) (ARG2), (double) (RSLT))
+