dlae2.c

来自「最著名最快的分子模拟软件」· C语言 代码 · 共 53 行

C
53
字号
#include <math.h>#include "gmx_lapack.h"voidF77_FUNC(dlae2,DLAE2)(double *a,        double *b,       double *c__,        double *rt1,        double *rt2){    double d__1;    double ab, df, tb, sm, rt, adf, acmn, acmx;    sm = *a + *c__;    df = *a - *c__;    adf = fabs(df);    tb = *b + *b;    ab = fabs(tb);    if (fabs(*a) > fabs(*c__)) {	acmx = *a;	acmn = *c__;    } else {	acmx = *c__;	acmn = *a;    }    if (adf > ab) {	d__1 = ab / adf;	rt = adf * sqrt(d__1 * d__1 + 1.);    } else if (adf < ab) {	d__1 = adf / ab;	rt = ab * sqrt(d__1 * d__1 + 1.);    } else {	rt = ab * sqrt(2.);    }    if (sm < 0.) {	*rt1 = (sm - rt) * .5;	*rt2 = acmx / *rt1 * acmn - *b / *rt1 * *b;    } else if (sm > 0.) {	*rt1 = (sm + rt) * .5;	*rt2 = acmx / *rt1 * acmn - *b / *rt1 * *b;    } else {	*rt1 = rt * .5;	*rt2 = rt * -.5;    }    return;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?