121subroutine zlassq( n, x, incx, scale, sumsq )
133 real(wp) :: scale, sumsq
141 real(wp) :: abig, amed, asml, ax, ymax, ymin
147 if( sumsq == zero ) scale = one
148 if( scale == zero )
then
169 if( incx < 0 ) ix = 1 - (n-1)*incx
171 ax = abs(real(x(ix)))
173 abig = abig + (ax*sbig)**2
175 else if (ax < tsml)
then
176 if (notbig) asml = asml + (ax*ssml)**2
180 ax = abs(aimag(x(ix)))
182 abig = abig + (ax*sbig)**2
184 else if (ax < tsml)
then
185 if (notbig) asml = asml + (ax*ssml)**2
194 if( sumsq > zero )
then
195 ax = scale*sqrt( sumsq )
197 if (scale > one)
then
199 abig = abig + scale * (scale * sumsq)
202 abig = abig + scale * (scale * (sbig * (sbig * sumsq)))
204 else if (ax < tsml)
then
206 if (scale < one)
then
208 asml = asml + scale * (scale * sumsq)
211 asml = asml + scale * (scale * (ssml * (ssml * sumsq)))
215 amed = amed + scale * (scale * sumsq)
222 if (abig > zero)
then
226 if (amed > zero .or.
la_isnan(amed))
then
227 abig = abig + (amed*sbig)*sbig
231 else if (asml > zero)
then
235 if (amed > zero .or.
la_isnan(amed))
then
237 asml = sqrt(asml) / ssml
238 if (asml > amed)
then
246 sumsq = ymax**2*( one + (ymin/ymax)**2 )
subroutine zlassq(n, x, incx, scale, sumsq)
ZLASSQ updates a sum of squares represented in scaled form.