dzsum1.c

来自「SuperLU is a general purpose library for」· C语言 代码 · 共 95 行

C
95
字号
/*! @file dzsum1.c * \brief Takes sum of the absolute values of a complex vector and returns a double precision result * * <pre> *     -- LAPACK auxiliary routine (version 2.0) --    *     Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,    *     Courant Institute, Argonne National Lab, and Rice University    *     October 31, 1992    * </pre> */#include "slu_dcomplex.h"#include "slu_Cnames.h"/*! \brief <pre>    Purpose       =======       DZSUM1 takes the sum of the absolute values of a complex       vector and returns a double precision result.       Based on DZASUM from the Level 1 BLAS.       The change is to use the 'genuine' absolute value.       Contributed by Nick Higham for use with ZLACON.       Arguments       =========       N       (input) INT               The number of elements in the vector CX.       CX      (input) COMPLEX*16 array, dimension (N)               The vector whose elements will be summed.       INCX    (input) INT               The spacing between successive values of CX.  INCX > 0.       ===================================================================== </pre>*/  double dzsum1_(int *n, doublecomplex *cx, int *incx){    /* Builtin functions */    double z_abs(doublecomplex *);        /* Local variables */    int i, nincx;    double stemp;#define CX(I) cx[(I)-1]    stemp = 0.;    if (*n <= 0) {	return stemp;    }    if (*incx == 1) {	goto L20;    }    /*     CODE FOR INCREMENT NOT EQUAL TO 1 */    nincx = *n * *incx;    for (i = 1; *incx < 0 ? i >= nincx : i <= nincx; i += *incx) {	/*        NEXT LINE MODIFIED. */	stemp += z_abs(&CX(i));/* L10: */    }        return stemp;    /*     CODE FOR INCREMENT EQUAL TO 1 */L20:    for (i = 1; i <= *n; ++i) {	/*        NEXT LINE MODIFIED. */	stemp += z_abs(&CX(i));/* L30: */    }        return stemp;    /*     End of DZSUM1 */} /* dzsum1_ */

⌨️ 快捷键说明

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