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