anchor.diff:    public :: IEEE_LOGB
   
     ! IEEE_NEXT_AFTER
  -
  -#define NEXT_AFTER_MACRO(A,B) \
  -  elemental real(kind = A) function \
  -    gfortran_ieee_next_after_/**/A/**/_/**/B (X,Y) ; \
  -      real(kind = A), intent(in) :: X ; \
  -      real(kind = B), intent(in) :: Y ; \
  -  end function
  -
     interface
  -NEXT_AFTER_MACRO(4,4)
  -NEXT_AFTER_MACRO(4,8)
  -#ifdef HAVE_GFC_REAL_10
  -NEXT_AFTER_MACRO(4,10)
  -#endif
  -#ifdef HAVE_GFC_REAL_16
  -NEXT_AFTER_MACRO(4,16)
  -#endif
  -NEXT_AFTER_MACRO(8,4)
  -NEXT_AFTER_MACRO(8,8)
  -#ifdef HAVE_GFC_REAL_10
  -NEXT_AFTER_MACRO(8,10)
  -#endif
  -#ifdef HAVE_GFC_REAL_16
  -NEXT_AFTER_MACRO(8,16)
  -#endif
  -#ifdef HAVE_GFC_REAL_10
  -NEXT_AFTER_MACRO(10,4)
  -NEXT_AFTER_MACRO(10,8)
  -NEXT_AFTER_MACRO(10,10)
  -#ifdef HAVE_GFC_REAL_16
  -NEXT_AFTER_MACRO(10,16)
  -#endif
  -#endif
  -#ifdef HAVE_GFC_REAL_16
  -NEXT_AFTER_MACRO(16,4)
  -NEXT_AFTER_MACRO(16,8)
  -#ifdef HAVE_GFC_REAL_10
  -NEXT_AFTER_MACRO(16,10)
  -#endif
  -NEXT_AFTER_MACRO(16,16)
  +    elemental real(kind = 4) function gfortran_ieee_next_after_4_4 (X,Y)
  +      real(kind = 4), intent(in) :: X
  +      real(kind = 4), intent(in) :: Y
  +    end function
  +    elemental real(kind = 4) function gfortran_ieee_next_after_4_8 (X,Y)
  +      real(kind = 4), intent(in) :: X
  +      real(kind = 8), intent(in) :: Y
  +    end function
  +#ifdef HAVE_GFC_REAL_10
  +  elemental real(kind = 4) function gfortran_ieee_next_after_4_10 (X,Y)
  +    real(kind = 4), intent(in) :: X
  +    real(kind = 10), intent(in) :: Y
  +  end function
  +#endif
  +#ifdef HAVE_GFC_REAL_16
  +  elemental real(kind = 4) function gfortran_ieee_next_after_4_16 (X,Y)
  +    real(kind = 4), intent(in) :: X
  +    real(kind = 16), intent(in) :: Y
  +  end function
  +#endif
  +  elemental real(kind = 8) function gfortran_ieee_next_after_8_4 (X,Y)
  +    real(kind = 8), intent(in) :: X
  +    real(kind = 4), intent(in) :: Y
  +  end function
  +  elemental real(kind = 8) function gfortran_ieee_next_after_8_8 (X,Y)
  +    real(kind = 8), intent(in) :: X
  +    real(kind = 8), intent(in) :: Y
  +  end function
  +#ifdef HAVE_GFC_REAL_10
  +  elemental real(kind = 8) function gfortran_ieee_next_after_8_10 (X,Y)
  +    real(kind = 8), intent(in) :: X
  +    real(kind = 10), intent(in) :: Y
  +  end function
  +#endif
  +#ifdef HAVE_GFC_REAL_16
  +  elemental real(kind = 8) function gfortran_ieee_next_after_8_16 (X,Y)
  +    real(kind = 8), intent(in) :: X
  +    real(kind = 16), intent(in) :: Y
  +  end function
  +#endif
  +#ifdef HAVE_GFC_REAL_10
  +  elemental real(kind = 10) function gfortran_ieee_next_after_10_4 (X,Y)
  +    real(kind = 10), intent(in) :: X
  +    real(kind = 4), intent(in) :: Y
  +  end function
  +  elemental real(kind = 10) function gfortran_ieee_next_after_10_8 (X,Y)
  +    real(kind = 10), intent(in) :: X
  +    real(kind = 8), intent(in) :: Y
  +  end function
  +  elemental real(kind = 10) function gfortran_ieee_next_after_10_10 (X,Y)
  +    real(kind = 10), intent(in) :: X
  +    real(kind = 10), intent(in) :: Y
  +  end function
  +#ifdef HAVE_GFC_REAL_16
  +  elemental real(kind = 10) function gfortran_ieee_next_after_10_16 (X,Y)
  +    real(kind = 10), intent(in) :: X
  +    real(kind = 16), intent(in) :: Y
  +  end function
  +#endif
  +#endif
  +#ifdef HAVE_GFC_REAL_16
  +  elemental real(kind = 16) function gfortran_ieee_next_after_16_4 (X,Y)
  +    real(kind = 16), intent(in) :: X
  +    real(kind = 4), intent(in) :: Y
  +  end function
  +  elemental real(kind = 16) function gfortran_ieee_next_after_16_8 (X,Y)
  +    real(kind = 16), intent(in) :: X
  +    real(kind = 8), intent(in) :: Y
  +  end function
  +#ifdef HAVE_GFC_REAL_10
  +  elemental real(kind = 16) function gfortran_ieee_next_after_16_10 (X,Y)
  +    real(kind = 16), intent(in) :: X
  +    real(kind = 10), intent(in) :: Y
  +  end function
  +#endif
  +  elemental real(kind = 16) function gfortran_ieee_next_after_16_16 (X,Y)
  +    real(kind = 16), intent(in) :: X
  +    real(kind = 16), intent(in) :: Y
  +  end function
   #endif
     end interface
   
  
positive.code:   public :: IEEE_COPY_SIGN
  
    ! IEEE_UNORDERED
  
  #define UNORDERED_MACRO(A,B) \
    elemental logical function \
      gfortran_ieee_unordered_/**/A/**/_/**/B (X,Y) ; \
        real(kind = A), intent(in) :: X ; \
        real(kind = B), intent(in) :: Y ; \
    end function
  
    interface
  UNORDERED_MACRO(4,4)
  UNORDERED_MACRO(4,8)
  #ifdef HAVE_GFC_REAL_10
  UNORDERED_MACRO(4,10)
  #endif
  #ifdef HAVE_GFC_REAL_16
  UNORDERED_MACRO(4,16)
  #endif
  UNORDERED_MACRO(8,4)
  UNORDERED_MACRO(8,8)
  #ifdef HAVE_GFC_REAL_10
  UNORDERED_MACRO(8,10)
  #endif
  #ifdef HAVE_GFC_REAL_16
  UNORDERED_MACRO(8,16)
  #endif
  #ifdef HAVE_GFC_REAL_10
  UNORDERED_MACRO(10,4)
  UNORDERED_MACRO(10,8)
  UNORDERED_MACRO(10,10)
  #ifdef HAVE_GFC_REAL_16
  UNORDERED_MACRO(10,16)
  #endif
  #endif
  #ifdef HAVE_GFC_REAL_16
  UNORDERED_MACRO(16,4)
  UNORDERED_MACRO(16,8)
  #ifdef HAVE_GFC_REAL_10
  UNORDERED_MACRO(16,10)
  #endif
  UNORDERED_MACRO(16,16)
  #endif
    end interface
  
  
negative.code: 
  ! IEEE_SUPPORT_* functions
  
  ! IEEE_SUPPORT_DATATYPE
    pure logical function IEEE_SUPPORT_DATATYPE_4 (X) result(res)
      implicit none
      real(4), intent(in) :: X
      res = .true.
    end function
    pure logical function IEEE_SUPPORT_DATATYPE_8 (X) result(res)
      implicit none
      real(8), intent(in) :: X
      res = .true.
    end function
  #ifdef HAVE_GFC_REAL_10
    pure logical function IEEE_SUPPORT_DATATYPE_10 (X) result(res)
      implicit none
      real(10), intent(in) :: X
      res = .true.
    end function
  #endif
  #ifdef HAVE_GFC_REAL_16
    pure logical function IEEE_SUPPORT_DATATYPE_16 (X) result(res)
      implicit none
      real(16), intent(in) :: X
      res = .true.
    end function
  #endif
    pure logical function IEEE_SUPPORT_DATATYPE_NOARG () result(res)
      implicit none
      res = .true.
    end function
  
  ! IEEE_SUPPORT_DENORMAL
    pure logical function IEEE_SUPPORT_DENORMAL_4 (X) result(res)
      implicit none
      real(4), intent(in) :: X
      res = .true.
    end function
    pure logical function IEEE_SUPPORT_DENORMAL_8 (X) result(res)
      implicit none
      real(8), intent(in) :: X
      res = .true.
    end function
  #ifdef HAVE_GFC_REAL_10
    pure logical function IEEE_SUPPORT_DENORMAL_10 (X) result(res)
      implicit none
      real(10), intent(in) :: X
      res = .true.
    end function
  #endif
  #ifdef HAVE_GFC_REAL_16
    pure logical function IEEE_SUPPORT_DENORMAL_16 (X) result(res)
      implicit none
      real(16), intent(in) :: X
      res = .true.
    end function
  #endif
    pure logical function IEEE_SUPPORT_DENORMAL_NOARG () result(res)
      implicit none
      res = .true.
    end function
  
  ! IEEE_SUPPORT_DIVIDE
    pure logical function IEEE_SUPPORT_DIVIDE_4 (X) result(res)
      implicit none
      real(4), intent(in) :: X
      res = .true.
    end function
    pure logical function IEEE_SUPPORT_DIVIDE_8 (X) result(res)
      implicit none
      real(8), intent(in) :: X
      res = .true.
    end function
  #ifdef HAVE_GFC_REAL_10
    pure logical function IEEE_SUPPORT_DIVIDE_10 (X) result(res)
      implicit none
      real(10), intent(in) :: X
      res = .true.
    end function
  #endif
  #ifdef HAVE_GFC_REAL_16
    pure logical function IEEE_SUPPORT_DIVIDE_16 (X) result(res)
      implicit none
      real(16), intent(in) :: X
      res = .true.
    end function
  #endif
    pure logical function IEEE_SUPPORT_DIVIDE_NOARG () result(res)
      implicit none
      res = .true.
    end function
  
  
  ! IEEE_SUPPORT_INF
    pure logical function IEEE_SUPPORT_INF_4 (X) result(res)
      implicit none
      real(4), intent(in) :: X
      res = .true.
    end function
    pure logical function IEEE_SUPPORT_INF_8 (X) result(res)
      implicit none
      real(8), intent(in) :: X
      res = .true.
    end function
  #ifdef HAVE_GFC_REAL_10
    pure logical function IEEE_SUPPORT_INF_10 (X) result(res)
      implicit none
      real(10), intent(in) :: X
      res = .true.
    end function
  #endif
  #ifdef HAVE_GFC_REAL_16
    pure logical function IEEE_SUPPORT_INF_16 (X) result(res)
      implicit none
      real(16), intent(in) :: X
      res = .true.
    end function
  #endif
    pure logical function IEEE_SUPPORT_INF_NOARG () result(res)
      implicit none
      res = .true.
    end function
  
  ! IEEE_SUPPORT_IO
    pure logical function IEEE_SUPPORT_IO_4 (X) result(res)
      implicit none
      real(4), intent(in) :: X
      res = .true.
    end function
    pure logical function IEEE_SUPPORT_IO_8 (X) result(res)
      implicit none
      real(8), intent(in) :: X
      res = .true.
    end function
  #ifdef HAVE_GFC_REAL_10
    pure logical function IEEE_SUPPORT_IO_10 (X) result(res)
      implicit none
      real(10), intent(in) :: X
      res = .true.
    end function
  #endif
  #ifdef HAVE_GFC_REAL_16
    pure logical function IEEE_SUPPORT_IO_16 (X) result(res)
      implicit none
      real(16), intent(in) :: X
      res = .true.
    end function
  #endif
    pure logical function IEEE_SUPPORT_IO_NOARG () result(res)
      implicit none
      res = .true.
    end function
  
  ! IEEE_SUPPORT_NAN
    pure logical function IEEE_SUPPORT_NAN_4 (X) result(res)
      implicit none
      real(4), intent(in) :: X
      res = .true.
    end function
    pure logical function IEEE_SUPPORT_NAN_8 (X) result(res)
      implicit none
      real(8), intent(in) :: X
      res = .true.
    end function
  #ifdef HAVE_GFC_REAL_10
    pure logical function IEEE_SUPPORT_NAN_10 (X) result(res)
      implicit none
      real(10), intent(in) :: X
      res = .true.
    end function
  #endif
  #ifdef HAVE_GFC_REAL_16
    pure logical function IEEE_SUPPORT_NAN_16 (X) result(res)
      implicit none
      real(16), intent(in) :: X
      res = .true.
    end function
  #endif
    pure logical function IEEE_SUPPORT_NAN_NOARG () result(res)
      implicit none
      res = .true.
    end function
  
  ! IEEE_SUPPORT_SQRT
    pure logical function IEEE_SUPPORT_SQRT_4 (X) result(res)
      implicit none
      real(4), intent(in) :: X
      res = .true.
    end function
    pure logical function IEEE_SUPPORT_SQRT_8 (X) result(res)
      implicit none
      real(8), intent(in) :: X
      res = .true.
    end function
  #ifdef HAVE_GFC_REAL_10
    pure logical function IEEE_SUPPORT_SQRT_10 (X) result(res)
      implicit none
      real(10), intent(in) :: X
      res = .true.
    end function
  #endif
  #ifdef HAVE_GFC_REAL_16
    pure logical function IEEE_SUPPORT_SQRT_16 (X) result(res)
      implicit none
      real(16), intent(in) :: X
      res = .true.
    end function
  #endif
    pure logical function IEEE_SUPPORT_SQRT_NOARG () result(res)
      implicit none
      res = .true.
    end function
  
  ! IEEE_SUPPORT_STANDARD
    pure logical function IEEE_SUPPORT_STANDARD_4 (X) result(res)
      implicit none
      real(4), intent(in) :: X
      res = .true.
    end function
    pure logical function IEEE_SUPPORT_STANDARD_8 (X) result(res)
      implicit none
      real(8), intent(in) :: X
      res = .true.
    end function
  #ifdef HAVE_GFC_REAL_10
    pure logical function IEEE_SUPPORT_STANDARD_10 (X) result(res)
      implicit none
      real(10), intent(in) :: X
      res = .true.
    end function
  #endif
  #ifdef HAVE_GFC_REAL_16
    pure logical function IEEE_SUPPORT_STANDARD_16 (X) result(res)
      implicit none
      real(16), intent(in) :: X
      res = .true.
    end function
  #endif
    pure logical function IEEE_SUPPORT_STANDARD_NOARG () result(res)
      implicit none
      res = .true.
    end function
  
  end module IEEE_ARITHMETIC
  