dot_stub.c
来自「基于Blas CLapck的.用过的人知道是干啥的」· C语言 代码 · 共 72 行
C
72 行
#include "atlas_misc.h"#ifdef TREAL TYPE ATL_UDOT(const int N, const TYPE *X, const int incX, const TYPE *Y, const int incY);#else void ATL_UDOT(const int N, const TYPE *X, const int incX, const TYPE *Y, const int incY, SCALAR dot);#endif#ifdef TREAL TYPE ATL_DOT(const int N, const TYPE *X, const int incX, const TYPE *Y, const int incY)#else void ATL_DOT(const int N, const TYPE *X, const int incX, const TYPE *Y, const int incY, SCALAR dot)#endif{ #ifdef TREAL TYPE dot=ATL_rzero; #endif int incx=incX, incy=incY; if (N > 0) {/* * Manipulate incX and inxY such that: * - Both are positive * - else if incX or incY has abs()=1, make it positive * - if both abs(inc) are 1, or if neither, make incY positive */ if (incX > 0 && incY > 0) goto L1; else if (incY < 0) { if (incX < 0) /* make both positive */ { incx = -incX; incy = -incY; X += ((N-1)SHIFT)*incX; Y += ((N-1)SHIFT)*incY; } else if (incX != 1 || incY == -1) { incy = -incY; Y += ((N-1)SHIFT)*incY; incx = -incX; X += ((N-1)SHIFT)*incX; } } else if (incX == -1 && incY != 1) { incx = 1; X -= ((N-1)SHIFT); incy = -incY; Y += ((N-1)SHIFT)*incY; } #ifdef TREAL else if (!incX || !incY) return(0.0); #else else if (!incX || !incY) {*dot = dot[1] = 0.0; return;} #endifL1: #ifdef TREAL dot = ATL_UDOT(N, X, incx, Y, incy); #else ATL_UDOT(N, X, incx, Y, incy, dot); #endif } #ifdef TREAL return(dot); #endif}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?