aboutsummaryrefslogtreecommitdiff
path: root/libgfortran/ieee
diff options
context:
space:
mode:
Diffstat (limited to 'libgfortran/ieee')
-rw-r--r--libgfortran/ieee/ieee_arithmetic.F90126
1 files changed, 126 insertions, 0 deletions
diff --git a/libgfortran/ieee/ieee_arithmetic.F90 b/libgfortran/ieee/ieee_arithmetic.F90
index 9c0b9f3..d34ece6 100644
--- a/libgfortran/ieee/ieee_arithmetic.F90
+++ b/libgfortran/ieee/ieee_arithmetic.F90
@@ -223,6 +223,132 @@ module IEEE_ARITHMETIC
end interface
public :: IEEE_IS_NORMAL
+ ! IEEE_MIN_NUM, IEEE_MAX_NUM, IEEE_MIN_NUM_MAG, IEEE_MAX_NUM_MAG
+
+ interface
+ elemental real(kind=4) function _gfortran_ieee_max_num_4(X, Y)
+ real(kind=4), intent(in) :: X, Y
+ end function
+ elemental real(kind=8) function _gfortran_ieee_max_num_8(X, Y)
+ real(kind=8), intent(in) :: X, Y
+ end function
+#ifdef HAVE_GFC_REAL_10
+ elemental real(kind=10) function _gfortran_ieee_max_num_10(X, Y)
+ real(kind=10), intent(in) :: X, Y
+ end function
+#endif
+#ifdef HAVE_GFC_REAL_16
+ elemental real(kind=16) function _gfortran_ieee_max_num_16(X, Y)
+ real(kind=16), intent(in) :: X, Y
+ end function
+#endif
+ end interface
+
+ interface IEEE_MAX_NUM
+ procedure &
+#ifdef HAVE_GFC_REAL_16
+ _gfortran_ieee_max_num_16, &
+#endif
+#ifdef HAVE_GFC_REAL_10
+ _gfortran_ieee_max_num_10, &
+#endif
+ _gfortran_ieee_max_num_8, _gfortran_ieee_max_num_4
+ end interface
+ public :: IEEE_MAX_NUM
+
+ interface
+ elemental real(kind=4) function _gfortran_ieee_max_num_mag_4(X, Y)
+ real(kind=4), intent(in) :: X, Y
+ end function
+ elemental real(kind=8) function _gfortran_ieee_max_num_mag_8(X, Y)
+ real(kind=8), intent(in) :: X, Y
+ end function
+#ifdef HAVE_GFC_REAL_10
+ elemental real(kind=10) function _gfortran_ieee_max_num_mag_10(X, Y)
+ real(kind=10), intent(in) :: X, Y
+ end function
+#endif
+#ifdef HAVE_GFC_REAL_16
+ elemental real(kind=16) function _gfortran_ieee_max_num_mag_16(X, Y)
+ real(kind=16), intent(in) :: X, Y
+ end function
+#endif
+ end interface
+
+ interface IEEE_MAX_NUM_MAG
+ procedure &
+#ifdef HAVE_GFC_REAL_16
+ _gfortran_ieee_max_num_mag_16, &
+#endif
+#ifdef HAVE_GFC_REAL_10
+ _gfortran_ieee_max_num_mag_10, &
+#endif
+ _gfortran_ieee_max_num_mag_8, _gfortran_ieee_max_num_mag_4
+ end interface
+ public :: IEEE_MAX_NUM_MAG
+
+ interface
+ elemental real(kind=4) function _gfortran_ieee_min_num_4(X, Y)
+ real(kind=4), intent(in) :: X, Y
+ end function
+ elemental real(kind=8) function _gfortran_ieee_min_num_8(X, Y)
+ real(kind=8), intent(in) :: X, Y
+ end function
+#ifdef HAVE_GFC_REAL_10
+ elemental real(kind=10) function _gfortran_ieee_min_num_10(X, Y)
+ real(kind=10), intent(in) :: X, Y
+ end function
+#endif
+#ifdef HAVE_GFC_REAL_16
+ elemental real(kind=16) function _gfortran_ieee_min_num_16(X, Y)
+ real(kind=16), intent(in) :: X, Y
+ end function
+#endif
+ end interface
+
+ interface IEEE_MIN_NUM
+ procedure &
+#ifdef HAVE_GFC_REAL_16
+ _gfortran_ieee_min_num_16, &
+#endif
+#ifdef HAVE_GFC_REAL_10
+ _gfortran_ieee_min_num_10, &
+#endif
+ _gfortran_ieee_min_num_8, _gfortran_ieee_min_num_4
+ end interface
+ public :: IEEE_MIN_NUM
+
+ interface
+ elemental real(kind=4) function _gfortran_ieee_min_num_mag_4(X, Y)
+ real(kind=4), intent(in) :: X, Y
+ end function
+ elemental real(kind=8) function _gfortran_ieee_min_num_mag_8(X, Y)
+ real(kind=8), intent(in) :: X, Y
+ end function
+#ifdef HAVE_GFC_REAL_10
+ elemental real(kind=10) function _gfortran_ieee_min_num_mag_10(X, Y)
+ real(kind=10), intent(in) :: X, Y
+ end function
+#endif
+#ifdef HAVE_GFC_REAL_16
+ elemental real(kind=16) function _gfortran_ieee_min_num_mag_16(X, Y)
+ real(kind=16), intent(in) :: X, Y
+ end function
+#endif
+ end interface
+
+ interface IEEE_MIN_NUM_MAG
+ procedure &
+#ifdef HAVE_GFC_REAL_16
+ _gfortran_ieee_min_num_mag_16, &
+#endif
+#ifdef HAVE_GFC_REAL_10
+ _gfortran_ieee_min_num_mag_10, &
+#endif
+ _gfortran_ieee_min_num_mag_8, _gfortran_ieee_min_num_mag_4
+ end interface
+ public :: IEEE_MIN_NUM_MAG
+
! IEEE_COPY_SIGN
#define COPYSIGN_MACRO(A,B) \