PROGRAM xnewt
!	driver for routine newt
	USE nrtype
	USE nr
	IMPLICIT NONE
	INTERFACE
		FUNCTION funcv(x)
		USE nrtype
		IMPLICIT NONE
		REAL(SP), DIMENSION(:), INTENT(IN) :: x
		REAL(SP), DIMENSION(size(x)) :: funcv
		END FUNCTION funcv
	END INTERFACE
	INTEGER(I4B), PARAMETER :: N=2
	INTEGER(I4B) :: i
	REAL(SP), DIMENSION(N) :: x,f
	LOGICAL(LGT) :: check
	x(1)=2.0
	x(2)=0.5_sp
	call newt(x,check)
	f=funcv(x)
	if (check) write(*,*) 'Convergence problems.'
	write(*,'(1x,a5,t10,a1,t22,a1)') 'Index','x','f'
	do i=1,N
		write(*,'(1x,i2,2x,2f12.6)') i,x(i),f(i)
	end do
	END PROGRAM xnewt

	FUNCTION funcv(x)
	USE nrtype
	IMPLICIT NONE
	REAL(SP), DIMENSION(:), INTENT(IN) :: x
	REAL(SP), DIMENSION(size(x)) :: funcv
	funcv(1)=x(1)**2+x(2)**2-2.0_sp
	funcv(2)=exp(x(1)-1.0_sp)+x(2)**3-2.0_sp
	END FUNCTION funcv