snrm2.c
来自「最著名最快的分子模拟软件」· C语言 代码 · 共 53 行
C
53 行
#include <math.h>#include <types/simple.h>#include "gmx_blas.h"floatF77_FUNC(snrm2,SNRM2)(int * n__, float * x, int * incx__){ int ix,max_ix; float ssq,scale,absxi,t; int n = *n__; int incx = *incx__; if(n<1 || incx<1) return 0; else if (n==1) { t = x[0]; if(t>=0) return t; else return -t; } scale = 0.0; ssq = 1.0; max_ix = 1+(n-1)*(incx); for(ix=1;ix<=max_ix;ix+=incx) { t = x[ix-1]; if(fabs(t)>GMX_FLOAT_MIN) { absxi = (t>=0) ? t : (-t); if(scale<absxi) { t = scale/absxi; t = t*t; ssq = ssq*t + 1.0; scale = absxi; } else { t = absxi/scale; ssq += t*t; } } } return scale*sqrt(ssq); }
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?