ciamax_abs2p32.c
来自「基于Blas CLapck的.用过的人知道是干啥的」· C语言 代码 · 共 52 行
C
52 行
#include "atlas_misc.h"#ifdef ATL_AltiVec #define ATL_NoFakePF#endif#include "atlas_prefetch.h"#include <math.h>int ATL_UIAMAX(const int N, const TYPE *X, const int incX){ const int incX2 = incX+incX; register TYPE xr, xi, yr, yi, xmax; int imax=0; const TYPE *stX = X + N+N, *xp=X, *x; #ifdef ATL_AltiVec int cwrd = ATL_MulBySize(N)>>4; #endif if (N > 0) { #ifdef ATL_AltiVec if (cwrd >= 64) cwrd = ATL_GetCtrl(512, (cwrd+31)>>5, 0); else cwrd = ATL_GetCtrl(64, (cwrd+3)>>2, 4); ATL_pfavR(X, cwrd, 0); #endif xr = *X; xi = X[1]; xmax = fabs(xr) + fabs(xi); if ((N>>1)<<1 == N) { xr = X[2]; xi = X[3]; xr = fabs(xr) + fabs(xi); if (xr > xmax) { xmax = xr; xp = X + 2; } x = X + 4; } else x = X + 2; } if (N > 2) { do { ATL_pfl1R(x + 32); xr = *x; xi = x[1]; yr = x[2]; yi = x[3]; x += 4; xr = fabs(xr) + fabs(xi); yr = fabs(yr) + fabs(yi); if (xmax >= xr && xmax >= yr) continue; else if (xr >= yr) { xmax = xr; xp = x - 4; } else { xmax = yr; xp = x - 2; } } while(x != stX); } imax = (int) (xp - X); return(imax>>1);}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?