2 #include "../gmx_lapack.h"
3 #include "lapack_limits.h"
5 #include "types/simple.h"
8 F77_FUNC(slartg,SLARTG)(float *f,
14 float minval,safemin, safemin2, safemx2, eps;
15 float f1,g1,f1a,g1a,scale;
19 minval = GMX_FLOAT_MIN;
20 safemin = minval*(1.0+eps);
21 n = 0.5*log( safemin/eps ) / log(2);
24 safemx2 = 1.0 / safemin2;
26 if(fabs(*g)<GMX_FLOAT_MIN) {
30 } else if (fabs(*f)<GMX_FLOAT_MIN) {
39 scale = (f1a > g1a) ? f1a : g1a;
40 if(scale >= safemx2) {
42 while(scale >= safemx2) {
48 scale = (f1a > g1a) ? f1a : g1a;
50 *r = sqrt(f1*f1 + g1*g1);
55 } else if (scale<=safemin2) {
57 while(scale <= safemin2) {
63 scale = (f1a > g1a) ? f1a : g1a;
65 *r = sqrt(f1*f1 + g1*g1);
71 *r = sqrt(f1*f1 + g1*g1);
75 if(fabs(*f)>fabs(*g) && *cs<0.0) {