📄 slanst.c
字号:
#include <math.h>#include <ctype.h>#include "gmx_lapack.h"floatF77_FUNC(slanst,SLANST)(char *norm, int *n, float *d, float *e){ char ch=toupper(*norm); float dtemp,max,val,scale,sum; int i,j; if(*n<=0) return 0.0; switch(ch) { case 'M': max = fabs(d[*n-1]); for(i=0;i<(*n-1);i++) { dtemp = fabs(d[i]); if(dtemp>max) max = dtemp; dtemp = fabs(e[i]); if(dtemp>max) max = dtemp; } val = max; break; case 'O': case '1': case 'I': if(*n==1) val = fabs(d[0]); else { max = fabs(d[0]) + fabs(e[0]); dtemp = fabs(e[*n-2]) + fabs(d[*n-1]); if(dtemp>max) max = dtemp; for(i=1;i<(*n-1);i++) { dtemp = fabs(d[i]) + fabs(e[i]) + fabs(e[i-1]); if(dtemp>max) max = dtemp; } val = max; } break; case 'F': case 'E': scale = 0.0; sum = 1.0; i = *n-1; j = 1; if(*n>1) { F77_FUNC(slassq,SLASSQ)(&i,e,&j,&scale,&sum); sum *= 2; } F77_FUNC(slassq,SLASSQ)(n,d,&j,&scale,&sum); val = scale * sqrt(sum); break; default: val = 0.0; break; } return val;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -