5 #include "types/simple.h"
6 #include "../gmx_blas.h"
9 F77_FUNC(dsyr2k,DSYR2K)(const char *uplo,
34 double alpha = *alpha__;
35 double beta = *beta__;
38 ch2 = toupper(*trans);
45 if(n==0 || ( ( fabs(alpha)<GMX_DOUBLE_MIN || k==0 ) && fabs(beta-1.0)<GMX_DOUBLE_EPS))
48 if(fabs(alpha)<GMX_DOUBLE_MIN ) {
50 if(fabs(beta)<GMX_DOUBLE_MIN)
53 c[(j-1)*(ldc)+(i-1)] = 0.0;
57 c[(j-1)*(ldc)+(i-1)] *= beta;
60 if(fabs(beta)<GMX_DOUBLE_MIN)
63 c[(j-1)*(ldc)+(i-1)] = 0.0;
67 c[(j-1)*(ldc)+(i-1)] *= beta;
75 if(fabs(beta)<GMX_DOUBLE_MIN)
77 c[(j-1)*(ldc)+(i-1)] = 0.0;
78 else if(fabs(beta-1.0)>GMX_DOUBLE_EPS)
80 c[(j-1)*(ldc)+(i-1)] *= beta;
82 if( fabs(a[(l-1)*(lda)+(j-1)])>GMX_DOUBLE_MIN ||
83 fabs(b[(l-1)*(ldb)+(j-1)])>GMX_DOUBLE_MIN) {
84 temp1 = alpha * b[(l-1)*(ldb)+(j-1)];
85 temp2 = alpha * a[(l-1)*(lda)+(j-1)];
87 c[(j-1)*(ldc)+(i-1)] +=
88 a[(l-1)*(lda)+(i-1)] * temp1 +
89 b[(l-1)*(ldb)+(i-1)] * temp2;
96 if(fabs(beta)<GMX_DOUBLE_MIN)
98 c[(j-1)*(ldc)+(i-1)] = 0.0;
99 else if(fabs(beta-1.0)>GMX_DOUBLE_EPS)
101 c[(j-1)*(ldc)+(i-1)] *= beta;
103 if( fabs(a[(l-1)*(lda)+(j-1)])>GMX_DOUBLE_MIN ||
104 fabs(b[(l-1)*(ldb)+(j-1)])>GMX_DOUBLE_MIN) {
105 temp1 = alpha * b[(l-1)*(ldb)+(j-1)];
106 temp2 = alpha * a[(l-1)*(lda)+(j-1)];
108 c[(j-1)*(ldc)+(i-1)] +=
109 a[(l-1)*(lda)+(i-1)] * temp1 +
110 b[(l-1)*(ldb)+(i-1)] * temp2;
123 temp1 += a[(i-1)*(lda)+(l-1)] * b[(j-1)*(ldb)+(l-1)];
124 temp2 += b[(i-1)*(ldb)+(l-1)] * a[(j-1)*(lda)+(l-1)];
126 if(fabs(beta)<GMX_DOUBLE_MIN)
127 c[(j-1)*(ldc)+(i-1)] = alpha * (temp1 + temp2);
129 c[(j-1)*(ldc)+(i-1)] = beta * c[(j-1)*(ldc)+(i-1)] +
130 alpha * (temp1 + temp2);
139 temp1 += a[(i-1)*(lda)+(l-1)] * b[(j-1)*(ldb)+(l-1)];
140 temp2 += b[(i-1)*(ldb)+(l-1)] * a[(j-1)*(lda)+(l-1)];
142 if(fabs(beta)<GMX_DOUBLE_MIN)
143 c[(j-1)*(ldc)+(i-1)] = alpha * (temp1 + temp2);
145 c[(j-1)*(ldc)+(i-1)] = beta * c[(j-1)*(ldc)+(i-1)] +
146 alpha * (temp1 + temp2);