SUBROUTINE ksone(data,func,d,prob)
	USE nrtype; USE nrutil, ONLY : arth
	USE nr, ONLY : probks,sort
	IMPLICIT NONE
	REAL(SP), INTENT(OUT) :: d,prob
	REAL(SP), DIMENSION(:), INTENT(INOUT) :: data
	INTERFACE
		FUNCTION func(x)
		USE nrtype
		REAL(SP), DIMENSION(:), INTENT(IN) :: x
		REAL(SP), DIMENSION(size(x)) :: func
		END FUNCTION func
	END INTERFACE
	INTEGER(I4B) :: n
	REAL(SP) :: en
	REAL(SP), DIMENSION(size(data)) :: fvals
	REAL(SP), DIMENSION(size(data)+1) :: temp
	call sort(data)
	n=size(data)
	en=n
	fvals(:)=func(data(:))
	temp=arth(0,1,n+1)/en
	d=maxval(max(abs(temp(1:n)-fvals(:)), &
		abs(temp(2:n+1)-fvals(:))))
	en=sqrt(en)
	prob=probks((en+0.12_sp+0.11_sp/en)*d)
	END SUBROUTINE ksone