2 #include "../gmx_lapack.h"
3 #include "lapack_limits.h"
5 #include "types/simple.h"
8 F77_FUNC(dlasv2,DLASV2)(double *f,
20 double a, d__, l, m, r__, s, t, fa, ga, ha, ft, gt, ht, mm, tt,
47 if (fabs(ga)<GMX_DOUBLE_MIN) {
59 if (fa / ga < GMX_DOUBLE_EPS) {
64 *ssmin = fa / (ga / ha);
66 *ssmin = fa / ga * ha;
77 if ( fabs( fa - d__ )<GMX_DOUBLE_EPS*fabs( fa + d__ )) {
90 if ( fabs(l)<GMX_DOUBLE_MIN) {
93 r__ = sqrt(l * l + mm);
99 if ( fabs(mm)<GMX_DOUBLE_MIN) {
101 if (fabs(l)<GMX_DOUBLE_MIN) {
102 t = ( (ft>0) ? 2.0 : -2.0) * ( (gt>0) ? 1.0 : -1.0);
104 t = gt / ( (ft>0) ? d__ : d__) + m / t;
107 t = (m / (s + t) + m / (r__ + l)) * (a + 1.);
109 l = sqrt(t * t + 4.);
112 clt = (crt + srt * m) / a;
113 slt = ht / ft * srt / a;
129 tsign = ( (*csr>0) ? 1.0 : -1.0) * ( (*csl>0) ? 1.0 : -1.0) * ( (*f>0) ? 1.0 : -1.0);
132 tsign = ( (*snr>0) ? 1.0 : -1.0) * ( (*csl>0) ? 1.0 : -1.0) * ( (*g>0) ? 1.0 : -1.0);
135 tsign = ( (*snr>0) ? 1.0 : -1.0) * ( (*snl>0) ? 1.0 : -1.0) * ( (*h__>0) ? 1.0 : -1.0);
139 d__1 = tsign * ( (*f>0) ? 1.0 : -1.0) * ( (*h__>0) ? 1.0 : -1.0);