        abstract interface
          function INRGradientDouble(x, F_, h)
            double precision , pointer :: INRGradientDouble(:)
            
            double precision, intent(in)  :: x(:)
            double precision, optional, intent(in) :: h(:)
            
            procedure(INRFunctionDouble), optional :: F_
            
            include 'nr_fdouble_interface.fi' 
            
          end function
        end interface