anchor.diff:  
   ! IEEE_SUPPORT_* functions
   
  -#define SUPPORTMACRO(NAME, INTKIND, VALUE) \
  -  pure logical function NAME/**/_/**/INTKIND (X) result(res) ; \
  -    implicit none                                            ; \
  -    real(INTKIND), intent(in) :: X                       ; \
  -  end function
  -
  -#define SUPPORTMACRO_NOARG(NAME, VALUE) \
  -  pure logical function NAME/**/_NOARG () result(res) ; \
  -    implicit none                                     ; \
  -  end function
  -
   ! IEEE_SUPPORT_DATATYPE
  -
  -SUPPORTMACRO(IEEE_SUPPORT_DATATYPE,4,.true.)
  -SUPPORTMACRO(IEEE_SUPPORT_DATATYPE,8,.true.)
  -#ifdef HAVE_GFC_REAL_10
  -SUPPORTMACRO(IEEE_SUPPORT_DATATYPE,10,.true.)
  -#endif
  -#ifdef HAVE_GFC_REAL_16
  -SUPPORTMACRO(IEEE_SUPPORT_DATATYPE,16,.true.)
  -#endif
  -SUPPORTMACRO_NOARG(IEEE_SUPPORT_DATATYPE,.true.)
  +  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
  -
  -SUPPORTMACRO(IEEE_SUPPORT_DENORMAL,4,.true.)
  -SUPPORTMACRO(IEEE_SUPPORT_DENORMAL,8,.true.)
  -#ifdef HAVE_GFC_REAL_10
  -SUPPORTMACRO(IEEE_SUPPORT_DENORMAL,10,.true.)
  -#endif
  -#ifdef HAVE_GFC_REAL_16
  -SUPPORTMACRO(IEEE_SUPPORT_DENORMAL,16,.true.)
  -#endif
  -SUPPORTMACRO_NOARG(IEEE_SUPPORT_DENORMAL,.true.)
  +  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
  -
  -SUPPORTMACRO(IEEE_SUPPORT_DIVIDE,4,.true.)
  -SUPPORTMACRO(IEEE_SUPPORT_DIVIDE,8,.true.)
  -#ifdef HAVE_GFC_REAL_10
  -SUPPORTMACRO(IEEE_SUPPORT_DIVIDE,10,.true.)
  -#endif
  -#ifdef HAVE_GFC_REAL_16
  -SUPPORTMACRO(IEEE_SUPPORT_DIVIDE,16,.true.)
  -#endif
  -SUPPORTMACRO_NOARG(IEEE_SUPPORT_DIVIDE,.true.)
  +  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
  -
  -SUPPORTMACRO(IEEE_SUPPORT_INF,4,.true.)
  -SUPPORTMACRO(IEEE_SUPPORT_INF,8,.true.)
  -#ifdef HAVE_GFC_REAL_10
  -SUPPORTMACRO(IEEE_SUPPORT_INF,10,.true.)
  -#endif
  -#ifdef HAVE_GFC_REAL_16
  -SUPPORTMACRO(IEEE_SUPPORT_INF,16,.true.)
  -#endif
  -SUPPORTMACRO_NOARG(IEEE_SUPPORT_INF,.true.)
  +  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
  -
  -SUPPORTMACRO(IEEE_SUPPORT_IO,4,.true.)
  -SUPPORTMACRO(IEEE_SUPPORT_IO,8,.true.)
  -#ifdef HAVE_GFC_REAL_10
  -SUPPORTMACRO(IEEE_SUPPORT_IO,10,.true.)
  -#endif
  -#ifdef HAVE_GFC_REAL_16
  -SUPPORTMACRO(IEEE_SUPPORT_IO,16,.true.)
  -#endif
  -SUPPORTMACRO_NOARG(IEEE_SUPPORT_IO,.true.)
  +  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
  -
  -SUPPORTMACRO(IEEE_SUPPORT_NAN,4,.true.)
  -SUPPORTMACRO(IEEE_SUPPORT_NAN,8,.true.)
  -#ifdef HAVE_GFC_REAL_10
  -SUPPORTMACRO(IEEE_SUPPORT_NAN,10,.true.)
  -#endif
  -#ifdef HAVE_GFC_REAL_16
  -SUPPORTMACRO(IEEE_SUPPORT_NAN,16,.true.)
  -#endif
  -SUPPORTMACRO_NOARG(IEEE_SUPPORT_NAN,.true.)
  +  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
  -
  -SUPPORTMACRO(IEEE_SUPPORT_SQRT,4,.true.)
  -SUPPORTMACRO(IEEE_SUPPORT_SQRT,8,.true.)
  -#ifdef HAVE_GFC_REAL_10
  -SUPPORTMACRO(IEEE_SUPPORT_SQRT,10,.true.)
  -#endif
  -#ifdef HAVE_GFC_REAL_16
  -SUPPORTMACRO(IEEE_SUPPORT_SQRT,16,.true.)
  -#endif
  -SUPPORTMACRO_NOARG(IEEE_SUPPORT_SQRT,.true.)
  +  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
  -
  -SUPPORTMACRO(IEEE_SUPPORT_STANDARD,4,.true.)
  -SUPPORTMACRO(IEEE_SUPPORT_STANDARD,8,.true.)
  -#ifdef HAVE_GFC_REAL_10
  -SUPPORTMACRO(IEEE_SUPPORT_STANDARD,10,.true.)
  -#endif
  -#ifdef HAVE_GFC_REAL_16
  -SUPPORTMACRO(IEEE_SUPPORT_STANDARD,16,.true.)
  -#endif
  -SUPPORTMACRO_NOARG(IEEE_SUPPORT_STANDARD,.true.)
  +  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
  
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:   public :: IEEE_IS_NORMAL
  
    ! IEEE_COPY_SIGN
    interface
      elemental real(kind = 4) function gfortran_ieee_copy_sign_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_copy_sign_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_copy_sign_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_copy_sign_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_copy_sign_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_copy_sign_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_copy_sign_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_copy_sign_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_copy_sign_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_copy_sign_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_copy_sign_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_copy_sign_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_copy_sign_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_copy_sign_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_copy_sign_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_copy_sign_16_16 (X,Y)
      real(kind = 16), intent(in) :: X
      real(kind = 16), intent(in) :: Y
    end function
  #endif
    end interface
  
  