2 #include "../gmx_blas.h"
3 #include "../gmx_lapack.h"
4 #include "lapack_limits.h"
6 #include "types/simple.h"
9 F77_FUNC(slasq1,SLASQ1)(int *n,
22 minval = GMX_FLOAT_MIN;
23 safemin = minval*(1.0+GMX_FLOAT_EPS);
37 d[*n-1] = fabs(d[*n-1]);
39 if(fabs(sigmx)<GMX_FLOAT_MIN) {
40 F77_FUNC(slasrt,SLASRT)("D",n,d,&iinfo);
49 /* Copy d and e into work (z format) and scale.
50 * Squaring input data makes scaling by a power of the
53 scale = sqrt(eps/safemin);
56 F77_FUNC(scopy,SCOPY)(n,d,&i,work,&j);
58 F77_FUNC(scopy,SCOPY)(&k,e,&i,work+1,&j);
62 F77_FUNC(slascl,SLASCL)("G",&i,&i,&sigmx,&scale,&j,&k,work,&j,&iinfo);
65 /* Compute q and e elements */
66 for(i=0;i<2*(*n)-1;i++)
67 work[i] = work[i]*work[i];
71 F77_FUNC(slasq2,SLASQ2)(n,work,info);
78 F77_FUNC(slascl,SLASCL)("G",&j,&j,&scale,&sigmx,n,&k,d,n,&iinfo);