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 + -
显示快捷键?