geop_dv Function

public function geop_dv(first, factor, n)

Arguments

Type IntentOptional AttributesName
real(kind=DP), intent(in), DIMENSION(:):: first
real(kind=DP), intent(in), DIMENSION(:):: factor
integer(kind=I4B), intent(in) :: n

Return Value real(kind=DP), DIMENSION(size(first),n)


Called by

proc~~geop_dv~~CalledByGraph proc~geop_dv geop_dv interface~geop geop interface~geop->proc~geop_dv

Contents

Source Code


Source Code

	FUNCTION geop_dv(first,factor,n)
	REAL(DP), DIMENSION(:), INTENT(IN) :: first,factor
	INTEGER(I4B), INTENT(IN) :: n
	REAL(DP), DIMENSION(size(first),n) :: geop_dv
	INTEGER(I4B) :: k,k2
	REAL(DP), DIMENSION(size(first)) :: temp
	if (n > 0) geop_dv(:,1)=first(:)
	if (n <= NPAR_GEOP) then
		do k=2,n
			geop_dv(:,k)=geop_dv(:,k-1)*factor(:)
		end do
	else
		do k=2,NPAR2_GEOP
			geop_dv(:,k)=geop_dv(:,k-1)*factor(:)
		end do
		temp=factor**NPAR2_GEOP
		k=NPAR2_GEOP
		do
			if (k >= n) exit
			k2=k+k
			geop_dv(:,k+1:min(k2,n))=geop_dv(:,1:min(k,n-k))*&
				spread(temp,2,size(geop_dv(:,1:min(k,n-k)),2))
			temp=temp*temp
			k=k2
		end do
	end if
	END FUNCTION geop_dv