2 #include "../gmx_lapack.h"
3 #include "lapack_limits.h"
5 #include "gromacs/utility/real.h"
8 F77_FUNC(slasv2
,SLASV2
)(float *f
,
20 float a
, d__
, l
, m
, r__
, s
, t
, fa
, ga
, ha
, ft
, gt
, ht
, mm
, tt
,
47 if (fabs(ga
)<GMX_FLOAT_MIN
) {
59 if (fa
/ ga
< GMX_FLOAT_EPS
) {
64 *ssmin
= fa
/ (ga
/ ha
);
66 *ssmin
= fa
/ ga
* ha
;
77 if ( fabs( fa
- d__
)<GMX_FLOAT_EPS
*fabs( fa
+ d__
)) {
90 if ( fabs(l
)<GMX_FLOAT_MIN
) {
93 r__
= sqrt(l
* l
+ mm
);
99 if ( fabs(mm
)<GMX_FLOAT_MIN
) {
101 if (fabs(l
)<GMX_FLOAT_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);