136 subroutine slassq( n, x, incx, scale, sumsq )
138 only: wp=>sp, zero=>szero, one=>sone, &
139 sbig=>ssbig, ssml=>sssml, tbig=>stbig, tsml=>stsml
148 real(wp) :: scale, sumsq
156 real(wp) :: abig, amed, asml, ax, ymax, ymin
161 if( la_isnan(scale) .or. la_isnan(sumsq) )
return 162 if( sumsq == zero ) scale = one
163 if( scale == zero )
then 184 if( incx < 0 ) ix = 1 - (n-1)*incx
188 abig = abig + (ax*sbig)**2
190 else if (ax < tsml)
then 191 if (notbig) asml = asml + (ax*ssml)**2
200 if( sumsq > zero )
then 201 ax = scale*sqrt( sumsq )
204 abig = abig + (scale*sbig)**2 * sumsq
205 else if (ax < tsml)
then 207 if (notbig) asml = asml + (scale*ssml)**2 * sumsq
209 amed = amed + scale**2 * sumsq
216 if (abig > zero)
then 220 if (amed > zero .or. la_isnan(amed))
then 221 abig = abig + (amed*sbig)*sbig
225 else if (asml > zero)
then 229 if (amed > zero .or. la_isnan(amed))
then 231 asml = sqrt(asml) / ssml
232 if (asml > amed)
then 240 sumsq = ymax**2*( one + (ymin/ymax)**2 )
LA_CONSTANTS is a module for the scaling constants for the compiled Fortran single and double precisi...