anchor.diff:    public :: IEEE_IS_NORMAL
   
     ! IEEE_COPY_SIGN
  -
  -#define COPYSIGN_MACRO(A,B) \
  -  elemental real(kind = A) function \
  -    gfortran_ieee_copy_sign_/**/A/**/_/**/B (X,Y) ; \
  -      real(kind = A), intent(in) :: X ; \
  -      real(kind = B), intent(in) :: Y ; \
  -  end function
  -
     interface
  -COPYSIGN_MACRO(4,4)
  -COPYSIGN_MACRO(4,8)
  -#ifdef HAVE_GFC_REAL_10
  -COPYSIGN_MACRO(4,10)
  -#endif
  -#ifdef HAVE_GFC_REAL_16
  -COPYSIGN_MACRO(4,16)
  -#endif
  -COPYSIGN_MACRO(8,4)
  -COPYSIGN_MACRO(8,8)
  -#ifdef HAVE_GFC_REAL_10
  -COPYSIGN_MACRO(8,10)
  -#endif
  -#ifdef HAVE_GFC_REAL_16
  -COPYSIGN_MACRO(8,16)
  -#endif
  -#ifdef HAVE_GFC_REAL_10
  -COPYSIGN_MACRO(10,4)
  -COPYSIGN_MACRO(10,8)
  -COPYSIGN_MACRO(10,10)
  -#ifdef HAVE_GFC_REAL_16
  -COPYSIGN_MACRO(10,16)
  -#endif
  -#endif
  -#ifdef HAVE_GFC_REAL_16
  -COPYSIGN_MACRO(16,4)
  -COPYSIGN_MACRO(16,8)
  -#ifdef HAVE_GFC_REAL_10
  -COPYSIGN_MACRO(16,10)
  -#endif
  -COPYSIGN_MACRO(16,16)
  +    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
   
  
positive.code: 
  ! 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.)
  
  ! 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.)
  
  ! 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.)
  
  ! 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.)
  
  ! 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.)
  
  ! 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.)
  
  ! 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.)
  
  ! 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.)
  
  end module IEEE_ARITHMETIC
  
negative.code:   public :: IEEE_COPY_SIGN
  
    ! IEEE_UNORDERED
    interface
      elemental logical function gfortran_ieee_unordered_4_4 (X,Y)
        real(kind = 4), intent(in) :: X
        real(kind = 4), intent(in) :: Y
      end function
      elemental logical function gfortran_ieee_unordered_4_8 (X,Y)
        real(kind = 4), intent(in) :: X
        real(kind = 8), intent(in) :: Y
      end function
  #ifdef HAVE_GFC_REAL_10
    elemental logical function gfortran_ieee_unordered_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 logical function gfortran_ieee_unordered_4_16 (X,Y)
      real(kind = 4), intent(in) :: X
      real(kind = 16), intent(in) :: Y
    end function
  #endif
    elemental logical function gfortran_ieee_unordered_8_4 (X,Y)
      real(kind = 8), intent(in) :: X
      real(kind = 4), intent(in) :: Y
    end function
    elemental logical function gfortran_ieee_unordered_8_8 (X,Y)
      real(kind = 8), intent(in) :: X
      real(kind = 8), intent(in) :: Y
    end function
  #ifdef HAVE_GFC_REAL_10
    elemental logical function gfortran_ieee_unordered_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 logical function gfortran_ieee_unordered_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 logical function gfortran_ieee_unordered_10_4 (X,Y)
      real(kind = 10), intent(in) :: X
      real(kind = 4), intent(in) :: Y
    end function
    elemental logical function gfortran_ieee_unordered_10_8 (X,Y)
      real(kind = 10), intent(in) :: X
      real(kind = 8), intent(in) :: Y
    end function
    elemental logical function gfortran_ieee_unordered_10_10 (X,Y)
      real(kind = 10), intent(in) :: X
      real(kind = 10), intent(in) :: Y
    end function
  #ifdef HAVE_GFC_REAL_16
    elemental logical function gfortran_ieee_unordered_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 logical function gfortran_ieee_unordered_16_4 (X,Y)
      real(kind = 16), intent(in) :: X
      real(kind = 4), intent(in) :: Y
    end function
    elemental logical function gfortran_ieee_unordered_16_8 (X,Y)
      real(kind = 16), intent(in) :: X
      real(kind = 8), intent(in) :: Y
    end function
  #ifdef HAVE_GFC_REAL_10
    elemental logical function gfortran_ieee_unordered_16_10 (X,Y)
      real(kind = 16), intent(in) :: X
      real(kind = 10), intent(in) :: Y
    end function
  #endif
    elemental logical function gfortran_ieee_unordered_16_16 (X,Y)
      real(kind = 16), intent(in) :: X
      real(kind = 16), intent(in) :: Y
    end function
  #endif
    end interface
  
  