87 real(
dp) function
ddot(n,dx,incx,dy,incy)
90 integer(ip),
intent(in) :: n,incx,incy
91 real(
dp),
intent(in) :: dx(*),dy(*)
94 integer(ip) :: i,ix,iy,m
105 if ( incx /= 1 .or. incy /= 1 )
then
107 if ( 0 <= incx )
then
110 ix = ( - n + 1 ) * incx + 1
113 if ( 0 <= incy )
then
116 iy = ( - n + 1 ) * incy + 1
120 dtemp = dtemp + dx(ix) * dy(iy)
132 dtemp = dtemp + dx(i) * dy(i)
136 dtemp = dtemp + dx(i)*dy(i) + dx(i+1)*dy(i+1) + dx(i+2)*dy(i+2) &
137 + dx(i+3)*dy(i+3) + dx(i+4)*dy(i+4)
184 real(dp) function
dnrm2 ( n, x, incx )
187 integer(ip),
intent(in) :: n,incx
188 real(dp),
intent(in) :: x(*)
191 real(dp) :: ssq,absxi,norm,scale
193 if ( n < 1 .or. incx < 1 )
then
195 else if ( n == 1 )
then
201 do ix = 1, 1 + ( n - 1 )*incx, incx
202 if ( x(ix) /= zero )
then
204 if ( scale < absxi )
then
205 ssq = 1_dp + ssq * ( scale / absxi )**2
208 ssq = ssq + ( absxi / scale )**2
212 norm = scale * sqrt( ssq )
real(dp) function, public ddot(n, dx, incx, dy, incy)
DDOT forms the dot product of two vectors.
real(dp) function, public dnrm2(n, x, incx)
DNRM2 returns the euclidean norm of a vector.
Defines precision and range in real(kind=dp) and integer(kind=ip) for portability and a few constants...
real(dp), parameter, public one
real(dp), parameter, public zero
integer, parameter, public ip
integer, parameter, public dp