本文整理汇总了C++中cblas_errprn函数的典型用法代码示例。如果您正苦于以下问题:C++ cblas_errprn函数的具体用法?C++ cblas_errprn怎么用?C++ cblas_errprn使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了cblas_errprn函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: cblas_sspr
void cblas_sspr(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
const int N, const float alpha,
const float *X, const int incX, float *A)
{
int info = 2000;
#define x X
#ifndef NoCblasErrorChecks
if (Order != CblasColMajor && Order != CblasRowMajor)
info = cblas_errprn(1, info, "Order must be %d or %d, but is set to %d",
CblasRowMajor, CblasColMajor, Order);
if (Uplo != CblasUpper && Uplo != CblasLower)
info = cblas_errprn(2, info, "UPLO must be %d or %d, but is set to %d",
CblasUpper, CblasLower, Uplo);
if (N < 0) info = cblas_errprn(3, info,
"N cannot be less than zero; is set to %d.", N);
if (!incX) info = cblas_errprn(6, info,
"incX cannot be zero; is set to %d.", incX);
if (info != 2000)
{
cblas_xerbla(info, "cblas_sspr", "");
return;
}
#endif
if (incX < 0) x += (1-N)*incX;
if (Order == CblasColMajor)
ATL_sspr(Uplo, N, alpha, x, incX, A);
else
ATL_sspr(( (Uplo == CblasUpper) ? CblasLower : CblasUpper ),
N, alpha, x, incX, A);
}
示例2: cblas_zhpr2
void cblas_zhpr2(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
const int N, const void *alpha,
const void *X, const int incX,
const void *Y, const int incY, void *A)
{
int info = 2000;
void *vx, *vy;
double *x0, *y0;
const double *x=X, *y=Y, *alp=alpha;
const double one[2]={ATL_rone, ATL_rzero};
#ifndef NoCblasErrorChecks
if (Order != CblasColMajor && Order != CblasRowMajor)
info = cblas_errprn(1, info, "Order must be %d or %d, but is set to %d",
CblasRowMajor, CblasColMajor, Order);
if (Uplo != CblasUpper && Uplo != CblasLower)
info = cblas_errprn(2, info, "UPLO must be %d or %d, but is set to %d",
CblasUpper, CblasLower, Uplo);
if (N < 0) info = cblas_errprn(3, info,
"N cannot be less than zero; is set to %d.", N);
if (!incX) info = cblas_errprn(6, info,
"incX cannot be zero; is set to %d.", incX);
if (!incY) info = cblas_errprn(8, info,
"incY cannot be zero; is set to %d.", incY);
if (info != 2000)
{
cblas_xerbla(info, "cblas_zhpr2", "");
return;
}
#endif
if (incX < 0) x += (1-N)*incX<<1;
if (incY < 0) y += (1-N)*incY<<1;
if (Order == CblasColMajor)
ATL_zhpr2(Uplo, N, alpha, x, incX, y, incY, A);
else if (alp[0] != ATL_rzero || alp[1] != ATL_rzero)
{
vx = malloc(ATL_Cachelen + ATL_MulBySize(N));
vy = malloc(ATL_Cachelen + ATL_MulBySize(N));
ATL_assert(vx != NULL && vy != NULL);
x0 = ATL_AlignPtr(vx);
y0 = ATL_AlignPtr(vy);
ATL_zmoveConj(N, alpha, y, incY, y0, 1);
ATL_zcopyConj(N, x, incX, x0, 1);
ATL_zhpr2(( (Uplo == CblasUpper) ? CblasLower : CblasUpper ),
N, one, y0, 1, x0, 1, A);
free(vx);
free(vy);
}
else ATL_zhpr2(( (Uplo == CblasUpper) ? CblasLower : CblasUpper ),
N, alpha, y, incY, x, incX, A);
}
示例3: cblas_dger2
void cblas_dger2(const enum CBLAS_ORDER Order, ATL_CINT M, ATL_CINT N,
const double alpha, const double *X, ATL_CINT incX,
const double *Y, ATL_CINT incY, const double beta,
const double *W, ATL_CINT incW,
const double *Z, ATL_CINT incZ, double *A, ATL_CINT lda)
{
int info = 2000;
#define x X
#define y Y
#define w W
#define z Z
#ifndef NoCblasErrorChecks
if (M < 0) info = cblas_errprn(2, info,
"M cannot be less than zero; is set to %d.", M);
if (N < 0) info = cblas_errprn(3, info,
"N cannot be less than zero; is set to %d.", N);
if (!incX) info = cblas_errprn(6, info,
"incX cannot be zero; is set to %d.", incX);
if (!incY) info = cblas_errprn(8, info,
"incY cannot be zero; is set to %d.", incY);
if (!incW) info = cblas_errprn(11, info,
"incW cannot be zero; is set to %d.", incW);
if (!incZ) info = cblas_errprn(13, info,
"incZ cannot be zero; is set to %d.", incZ);
if (Order == CblasColMajor)
{
if (lda < M || lda < 1)
info = cblas_errprn(15, info, "lda must be >= MAX(M,1): lda=%d M=%d",
lda, M);
}
else if (Order == CblasRowMajor)
{
if (lda < N || lda < 1)
info = cblas_errprn(15, info, "lda must be >= MAX(N,1): lda=%d M=%d",
lda, N);
}
else
info = cblas_errprn(1, info, "Order must be %d or %d, but is set to %d",
CblasRowMajor, CblasColMajor, Order);
if (info != 2000)
{
cblas_xerbla(info, "cblas_dger2", "");
return;
}
#endif
if (incX < 0) x += (1-M)*incX;
if (incY < 0) y += (1-N)*incY;
if (incW < 0) w += (1-M)*incW;
if (incZ < 0) z += (1-N)*incZ;
if (Order == CblasColMajor)
ATL_dger2(M, N, alpha, x, incX, y, incY, beta, w, incW, z, incZ, A, lda);
else
ATL_dger2(N, M, alpha, y, incY, x, incX, beta, w, incW, z, incZ, A, lda);
}
示例4: cblas_cher
void cblas_cher(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
const int N, const float alpha,
const void *X, const int incX, void *A, const int lda)
{
int info = 2000;
void *vx;
float one[2] = {ATL_rone, ATL_rzero};
float *x0;
const float *x=X;
#ifndef NoCblasErrorChecks
if (Order != CblasColMajor && Order != CblasRowMajor)
info = cblas_errprn(1, info, "Order must be %d or %d, but is set to %d",
CblasRowMajor, CblasColMajor, Order);
if (Uplo != CblasUpper && Uplo != CblasLower)
info = cblas_errprn(2, info, "UPLO must be %d or %d, but is set to %d",
CblasUpper, CblasLower, Uplo);
if (N < 0) info = cblas_errprn(3, info,
"N cannot be less than zero; is set to %d.", N);
if (!incX) info = cblas_errprn(6, info,
"incX cannot be zero; is set to %d.", incX);
if (lda < N || lda < 1)
info = cblas_errprn(8, info, "lda must be >= MAX(N,1): lda=%d N=%d",
lda, N);
if (info != 2000)
{
cblas_xerbla(info, "cblas_cher", "");
return;
}
#endif
if (incX < 0) x += (1-N)*incX<<1;
if (Order == CblasColMajor)
ATL_cher(Uplo, N, alpha, x, incX, A, lda);
else if (alpha != ATL_rzero)
{
vx = malloc(ATL_Cachelen + ATL_MulBySize(N));
ATL_assert(vx);
x0 = ATL_AlignPtr(vx);
ATL_cmoveConj(N, one, x, incX, x0, 1);
ATL_cher(( (Uplo == CblasUpper) ? CblasLower : CblasUpper ),
N, alpha, x0, 1, A, lda);
free(vx);
}
else
ATL_cher(( (Uplo == CblasUpper) ? CblasLower : CblasUpper ),
N, ATL_rzero, x, incX, A, lda);
}
示例5: cblas_ctbmv
void cblas_ctbmv(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
const enum CBLAS_TRANSPOSE TA, const enum CBLAS_DIAG Diag,
const int N, const int K, const void *A, const int lda,
void *X, const int incX)
{
int info = 2000;
enum CBLAS_UPLO uplo;
enum CBLAS_TRANSPOSE ta;
float *x = X;
#ifndef NoCblasErrorChecks
if (Order != CblasColMajor && Order != CblasRowMajor)
info = cblas_errprn(1, info, "Order must be %d or %d, but is set to %d",
CblasRowMajor, CblasColMajor, Order);
if (Uplo != CblasUpper && Uplo != CblasLower)
info = cblas_errprn(2, info, "UPLO must be %d or %d, but is set to %d",
CblasUpper, CblasLower, Uplo);
if (TA != CblasNoTrans && TA != CblasTrans && TA != CblasConjTrans)
info = cblas_errprn(3, info,
"TransA must be %d, %d or %d, but is set to %d",
CblasNoTrans, CblasTrans, CblasConjTrans, TA);
if (Diag != CblasUnit && Diag != CblasNonUnit)
info = cblas_errprn(4, info, "DIAG must be %d or %d, but is set to %d",
CblasUnit, CblasNonUnit, Diag);
if (N < 0) info = cblas_errprn(5, info,
"N cannot be less than zero; is set to %d.", N);
if (K < 0)
info = cblas_errprn(6, info, "Valid K: 0 < K < N; K=%d, N=%d.", K, N);
if (lda < K+1)
info = cblas_errprn(8, info, "lda must be >= K+1: lda=%d K=%d", lda, K);
if (!incX)
info = cblas_errprn(10, info, "incX cannot be zero; is set to %d.", incX);
if (info != 2000)
{
cblas_xerbla(info, "cblas_ctbmv", "");
return;
}
#endif
if (incX < 0) x += (1-N)*incX<<1;
if (Order == CblasColMajor)
ATL_ctbmv(Uplo, TA, Diag, N, K, A, lda, x, incX);
else
{
uplo = ( (Uplo == CblasUpper) ? CblasLower : CblasUpper );
if (TA == CblasNoTrans) ta = CblasTrans;
else if (TA == CblasConjTrans) ta = AtlasConj;
else ta = CblasNoTrans;
ATL_ctbmv(uplo, ta, Diag, N, K, A, lda, x, incX);
}
}
示例6: cblas_zgerc
void cblas_zgerc(const enum CBLAS_ORDER Order, const int M, const int N,
const void *alpha, const void *X, const int incX,
const void *Y, const int incY, void *A, const int lda)
{
int info = 2000;
const double *x = X, *y = Y;
void *vy;
double *y0;
double one[2] = {ATL_rone, ATL_rzero};
#ifndef NoCblasErrorChecks
if (M < 0) info = cblas_errprn(2, info,
"M cannot be less than zero; is set to %d.", M);
if (N < 0) info = cblas_errprn(3, info,
"N cannot be less than zero; is set to %d.", N);
if (!incX) info = cblas_errprn(6, info,
"incX cannot be zero; is set to %d.", incX);
if (!incY) info = cblas_errprn(8, info,
"incY cannot be zero; is set to %d.", incY);
if (Order == CblasColMajor)
{
if (lda < M || lda < 1)
info = cblas_errprn(10, info, "lda must be >= MAX(M,1): lda=%d M=%d",
lda, M);
}
else if (Order == CblasRowMajor)
{
if (lda < N || lda < 1)
info = cblas_errprn(10, info, "lda must be >= MAX(N,1): lda=%d M=%d",
lda, N);
}
else
info = cblas_errprn(1, info, "Order must be %d or %d, but is set to %d",
CblasRowMajor, CblasColMajor, Order);
if (info != 2000)
{
cblas_xerbla(info, "cblas_zgerc", "");
return;
}
#endif
if (incX < 0) x += (1-M)*incX<<1;
if (incY < 0) y += (1-N)*incY<<1;
if (Order == CblasColMajor)
ATL_zgerc(M, N, alpha, x, incX, y, incY, A, lda);
else
{
vy = malloc(ATL_Cachelen + ATL_MulBySize(N));
ATL_assert(vy);
y0 = ATL_AlignPtr(vy);
ATL_zmoveConj(N, alpha, y, incY, y0, 1);
ATL_zgeru(N, M, one, y0, 1, x, incX, A, lda);
free(vy);
}
}
示例7: cblas_dsyr
void cblas_dsyr(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
const int N, const double alpha,
const double *X, const int incX, double *A, const int lda)
{
int info = 2000;
#define x X
#ifndef NoCblasErrorChecks
if (Order != CblasColMajor && Order != CblasRowMajor)
info = cblas_errprn(1, info, "Order must be %d or %d, but is set to %d",
CblasRowMajor, CblasColMajor, Order);
if (Uplo != CblasUpper && Uplo != CblasLower)
info = cblas_errprn(2, info, "UPLO must be %d or %d, but is set to %d",
CblasUpper, CblasLower, Uplo);
if (N < 0) info = cblas_errprn(3, info,
"N cannot be less than zero; is set to %d.", N);
if (!incX) info = cblas_errprn(6, info,
"incX cannot be zero; is set to %d.", incX);
if (lda < N || lda < 1)
info = cblas_errprn(8, info, "lda must be >= MAX(N,1): lda=%d N=%d",
lda, N);
if (info != 2000)
{
cblas_xerbla(info, "cblas_dsyr", "");
return;
}
#endif
if (incX < 0) x += (1-N)*incX;
if (Order == CblasColMajor)
ATL_dsyr(Uplo, N, alpha, x, incX, A, lda);
else
ATL_dsyr(( (Uplo == CblasUpper) ? CblasLower : CblasUpper ),
N, alpha, x, incX, A, lda);
}
示例8: cblas_dtrmv
void cblas_dtrmv(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
const enum CBLAS_TRANSPOSE TA, const enum CBLAS_DIAG Diag,
const int N, const double *A, const int lda,
double *X, const int incX)
{
int info = 2000;
enum CBLAS_UPLO uplo;
enum CBLAS_TRANSPOSE ta;
#define x X
#ifndef NoCblasErrorChecks
if (Order != CblasColMajor && Order != CblasRowMajor)
info = cblas_errprn(1, info, "Order must be %d or %d, but is set to %d",
CblasRowMajor, CblasColMajor, Order);
if (Uplo != CblasUpper && Uplo != CblasLower)
info = cblas_errprn(2, info, "UPLO must be %d or %d, but is set to %d",
CblasUpper, CblasLower, Uplo);
if (TA != CblasNoTrans && TA != CblasTrans && TA != CblasConjTrans)
info = cblas_errprn(3, info,
"TransA must be %d, %d or %d, but is set to %d",
CblasNoTrans, CblasTrans, CblasConjTrans, TA);
if (Diag != CblasUnit && Diag != CblasNonUnit)
info = cblas_errprn(4, info, "DIAG must be %d or %d, but is set to %d",
CblasUnit, CblasNonUnit, Diag);
if (N < 0) info = cblas_errprn(5, info,
"N cannot be less than zero; is set to %d.", N);
if (lda < N || lda < 1)
info = cblas_errprn(7, info, "lda must be >= MAX(N,1): lda=%d N=%d",
lda, N);
if (!incX) info = cblas_errprn(9, info,
"incX cannot be zero; is set to %d.", incX);
if (info != 2000)
{
cblas_xerbla(info, "cblas_dtrmv", "");
return;
}
#endif
if (incX < 0) x += (1-N)*incX;
if (Order == CblasColMajor)
ATL_dtrmv(Uplo, TA, Diag, N, A, lda, x, incX);
else
{
uplo = ( (Uplo == CblasUpper) ? CblasLower : CblasUpper );
if (TA == CblasNoTrans) ta = CblasTrans;
else ta = CblasNoTrans;
ATL_dtrmv(uplo, ta, Diag, N, A, lda, x, incX);
}
}
示例9: cblas_sger
void cblas_sger (const enum CBLAS_ORDER Order, const int M, const int N,
const float alpha, const float *X, const int incX,
const float *Y, const int incY, float *A, const int lda)
{
int info = 2000;
#define x X
#define y Y
#ifndef NoCblasErrorChecks
if (M < 0) info = cblas_errprn(2, info,
"M cannot be less than zero; is set to %d.", M);
if (N < 0) info = cblas_errprn(3, info,
"N cannot be less than zero; is set to %d.", N);
if (!incX) info = cblas_errprn(6, info,
"incX cannot be zero; is set to %d.", incX);
if (!incY) info = cblas_errprn(8, info,
"incY cannot be zero; is set to %d.", incY);
if (Order == CblasColMajor)
{
if (lda < M || lda < 1)
info = cblas_errprn(10, info, "lda must be >= MAX(M,1): lda=%d M=%d",
lda, M);
}
else if (Order == CblasRowMajor)
{
if (lda < N || lda < 1)
info = cblas_errprn(10, info, "lda must be >= MAX(N,1): lda=%d M=%d",
lda, N);
}
else
info = cblas_errprn(1, info, "Order must be %d or %d, but is set to %d",
CblasRowMajor, CblasColMajor, Order);
if (info != 2000)
{
cblas_xerbla(info, "cblas_sger", "");
return;
}
#endif
if (incX < 0) x += (1-M)*incX;
if (incY < 0) y += (1-N)*incY;
if (Order == CblasColMajor)
ATL_sger(M, N, alpha, x, incX, y, incY, A, lda);
else
ATL_sger(N, M, alpha, y, incY, x, incX, A, lda);
}
示例10: cblas_dsbmv
void cblas_dsbmv(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
const int N, const int K, const double alpha, const double *A,
const int lda, const double *X, const int incX,
const double beta, double *Y, const int incY)
{
int info = 2000;
const enum CBLAS_UPLO ruplo = (Uplo == CblasUpper) ? CblasLower : CblasUpper;
#define x X
#define y Y
#ifndef NoCblasErrorChecks
if (Order != CblasColMajor && Order != CblasRowMajor)
info = cblas_errprn(1, info, "Order must be %d or %d, but is set to %d",
CblasRowMajor, CblasColMajor, Order);
if (Uplo != CblasUpper && Uplo != CblasLower)
info = cblas_errprn(2, info,
"Uplo must be %d or %d, but is set to %d",
CblasUpper, CblasLower, Uplo);
if (N < 0) info = cblas_errprn(3, info,
"N cannot be less than zero; is set to %d.", N);
if (K < 0)
info = cblas_errprn(4, info, "Valid K: 0 < K < N; K=%d, N=%d.", K, N);
if (lda < K+1) info = cblas_errprn(7, info,
"lda cannot be less than K+1; K=%d, lda=%d\n", K, lda);
if (!incX) info = cblas_errprn(9, info,
"incX cannot be zero; is set to %d.", incX);
if (!incY) info = cblas_errprn(12, info,
"incY cannot be zero; is set to %d.", incY);
if (info != 2000)
{
cblas_xerbla(info, "cblas_dsbmv", "");
return;
}
#endif
if (incX < 0) x += (1-N)*incX;
if (incY < 0) y += (1-N)*incY;
if (Order == CblasColMajor)
ATL_dsbmv(Uplo, N, K, alpha, A, lda, x, incX, beta, y, incY);
else
ATL_dsbmv(ruplo, N, K, alpha, A, lda, x, incX, beta, y, incY);
}
示例11: cblas_ssymv
void cblas_ssymv(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
const int N, const float alpha, const float *A,
const int lda, const float *X, const int incX,
const float beta, float *Y, const int incY)
{
int info = 2000;
const enum CBLAS_UPLO ruplo = (Uplo == CblasUpper) ? CblasLower : CblasUpper;
#define x X
#define y Y
#ifndef NoCblasErrorChecks
if (Order != CblasColMajor && Order != CblasRowMajor)
info = cblas_errprn(1, info, "Order must be %d or %d, but is set to %d",
CblasRowMajor, CblasColMajor, Order);
if (Uplo != CblasUpper && Uplo != CblasLower)
info = cblas_errprn(2, info,
"Uplo must be %d or %d, but is set to %d",
CblasUpper, CblasLower, Uplo);
if (N < 0) info = cblas_errprn(3, info,
"N cannot be less than zero; is set to %d.", N);
if (lda < Mmax(N,1)) info = cblas_errprn(6, info,
"lda cannot be less than MAX(N,1); N=%d, lda=%d\n", N, lda);
if (!incX) info = cblas_errprn(8, info,
"incX cannot be zero; is set to %d.", incX);
if (!incY) info = cblas_errprn(11, info,
"incY cannot be zero; is set to %d.", incY);
if (info != 2000)
{
cblas_xerbla(info, "cblas_ssymv", "");
return;
}
#endif
if (incX < 0) x += (1-N)*incX;
if (incY < 0) y += (1-N)*incY;
if (Order == CblasColMajor)
ATL_ssymv(Uplo, N, alpha, A, lda, x, incX, beta, y, incY);
else
ATL_ssymv(ruplo, N, alpha, A, lda, x, incX, beta, y, incY);
}
示例12: cblas_zhbmv
void cblas_zhbmv(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
const int N, const int K, const void *alpha, const void *A,
const int lda, const void *X, const int incX,
const void *beta, void *Y, const int incY)
{
int info = 2000;
const enum CBLAS_UPLO ruplo = (Uplo == CblasUpper) ? CblasLower : CblasUpper;
void *vx;
double *X0, *x = (double*) X;
double *y = Y;
const double *alp=alpha;
const double *bet=beta;
double calpha[2], cbeta[2];
const double one[2] = {ATL_rone, ATL_rzero};
calpha[0] = *alp;
calpha[1] = -alp[1];
cbeta[0] = *bet;
cbeta[1] = -bet[1];
#ifndef NoCblasErrorChecks
if (Order != CblasColMajor && Order != CblasRowMajor)
info = cblas_errprn(1, info, "Order must be %d or %d, but is set to %d",
CblasRowMajor, CblasColMajor, Order);
if (Uplo != CblasUpper && Uplo != CblasLower)
info = cblas_errprn(2, info,
"Uplo must be %d or %d, but is set to %d",
CblasUpper, CblasLower, Uplo);
if (N < 0) info = cblas_errprn(3, info,
"N cannot be less than zero; is set to %d.", N);
if (K < 0)
info = cblas_errprn(4, info, "Valid K: 0 < K < N; K=%d, N=%d.", K, N);
if (lda < K+1) info = cblas_errprn(7, info,
"lda cannot be less than K+1; K=%d, lda=%d\n", K, lda);
if (!incX) info = cblas_errprn(9, info,
"incX cannot be zero; is set to %d.", incX);
if (!incY) info = cblas_errprn(12, info,
"incY cannot be zero; is set to %d.", incY);
if (info != 2000)
{
cblas_xerbla(info, "cblas_zhbmv", "");
return;
}
#endif
if (incX < 0) x += (1-N)*incX<<1;
if (incY < 0) y += (1-N)*incY<<1;
if (Order == CblasColMajor)
ATL_zhbmv(Uplo, N, K, alpha, A, lda, x, incX, beta, y, incY);
else
{
vx = malloc(ATL_Cachelen + 2*N*sizeof(double));
ATL_assert(vx);
X0 = x;
x = ATL_AlignPtr(vx);
ATL_zmoveConj(N, calpha, X0, incX, x, 1);
if (*bet != ATL_rzero || bet[1] != ATL_rzero)
{
ATL_zscalConj(N, cbeta, y, incY);
ATL_zhbmv(ruplo, N, K, one, A, lda, x, 1, one, y, incY);
}
else ATL_zhbmv(ruplo, N, K, one, A, lda, x, 1, beta, y, incY);
free(vx);
ATL_zscalConj(N, one, y, incY);
}
}
示例13: cblas_cgemv
void cblas_cgemv(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TA,
const int M, const int N, const void *alpha, const void *A,
const int lda, const void *X, const int incX,
const void *beta, void *Y, const int incY)
{
int info = 2000;
const float *x = X;
float *y = Y;
#ifndef NoCblasErrorChecks
if (TA != CblasNoTrans && TA != CblasTrans && TA != CblasConjTrans)
info = cblas_errprn(2, info,
"TransA must be %d, %d or %d, but is set to %d",
CblasNoTrans, CblasTrans, CblasConjTrans, TA);
if (M < 0) info = cblas_errprn(3, info,
"M cannot be less than zero; is set to %d.", M);
if (N < 0) info = cblas_errprn(4, info,
"N cannot be less than zero; is set to %d.", N);
if (!incX) info = cblas_errprn(9, info,
"incX cannot be zero; is set to %d.", incX);
if (!incY) info = cblas_errprn(12, info,
"incY cannot be zero; is set to %d.", incY);
if (Order == CblasColMajor)
{
if (lda < M || lda < 1)
info = cblas_errprn(7, info, "lda must be >= MAX(M,1): lda=%d M=%d",
lda, M);
}
else if (Order == CblasRowMajor)
{
if (lda < N || lda < 1)
info = cblas_errprn(7, info, "lda must be >= MAX(N,1): lda=%d N=%d",
lda, N);
}
else
info = cblas_errprn(1, info, "Order must be %d or %d, but is set to %d",
CblasRowMajor, CblasColMajor, Order);
if (info != 2000)
{
cblas_xerbla(info, "cblas_cgemv", "");
return;
}
#endif
if (TA == AtlasNoTrans)
{
if (incX < 0) x += (1-N)*incX<<1;
if (incY < 0) y += (1-M)*incY<<1;
}
else
{
if (incX < 0) x += (1-M)*incX<<1;
if (incY < 0) y += (1-N)*incY<<1;
}
if (Order == CblasColMajor)
{
if (TA == CblasNoTrans)
ATL_cgemv(TA, M, N, alpha, A, lda, x, incX, beta, y, incY);
else ATL_cgemv(TA, N, M, alpha, A, lda, x, incX, beta, y, incY);
}
else
{
if (TA == CblasNoTrans)
ATL_cgemv(CblasTrans, M, N, alpha, A, lda, x, incX, beta, y, incY);
else if (TA == CblasConjTrans)
ATL_cgemv(AtlasConj, N, M, alpha, A, lda, x, incX, beta, y, incY);
else
ATL_cgemv(CblasNoTrans, N, M, alpha, A, lda, x, incX, beta, y, incY);
}
}
示例14: cblas_cger2c
void cblas_cger2c(const enum CBLAS_ORDER Order, ATL_CINT M, ATL_CINT N,
const void *alpha, const void *X, ATL_CINT incX,
const void *Y, ATL_CINT incY, const void *beta,
const void *W, ATL_CINT incW,
const void *Z, ATL_CINT incZ, void *A, ATL_CINT lda)
{
int info = 2000;
const float *x = X, *y = Y, *w = W, *z = Z;
void *vy;
float *y0, *z0;
float one[2] = {ATL_rone, ATL_rzero};
#ifndef NoCblasErrorChecks
if (M < 0) info = cblas_errprn(2, info,
"M cannot be less than zero; is set to %d.", M);
if (N < 0) info = cblas_errprn(3, info,
"N cannot be less than zero; is set to %d.", N);
if (!incX) info = cblas_errprn(6, info,
"incX cannot be zero; is set to %d.", incX);
if (!incY) info = cblas_errprn(8, info,
"incY cannot be zero; is set to %d.", incY);
if (!incW) info = cblas_errprn(11, info,
"incW cannot be zero; is set to %d.", incW);
if (!incZ) info = cblas_errprn(13, info,
"incZ cannot be zero; is set to %d.", incZ);
if (Order == CblasColMajor)
{
if (lda < M || lda < 1)
info = cblas_errprn(15, info, "lda must be >= MAX(M,1): lda=%d M=%d",
lda, M);
}
else if (Order == CblasRowMajor)
{
if (lda < N || lda < 1)
info = cblas_errprn(15, info, "lda must be >= MAX(N,1): lda=%d M=%d",
lda, N);
}
else
info = cblas_errprn(1, info, "Order must be %d or %d, but is set to %d",
CblasRowMajor, CblasColMajor, Order);
if (info != 2000)
{
cblas_xerbla(info, "cblas_cger2c", "");
return;
}
#endif
if (incX < 0) x += (1-M)*incX<<1;
if (incY < 0) y += (1-N)*incY<<1;
if (incW < 0) w += (1-M)*incW<<1;
if (incZ < 0) z += (1-N)*incZ<<1;
if (Order == CblasColMajor)
ATL_cger2c(M, N, alpha, x, incX, y, incY, beta, w, incW, z, incZ, A, lda);
else
{
vy = malloc(ATL_Cachelen+ATL_Cachelen + ATL_MulBySize(N+N));
ATL_assert(vy);
y0 = ATL_AlignPtr(vy);
z0 = y0 + N;
z0 = ATL_AlignPtr(z0);
ATL_cmoveConj(N, alpha, y, incY, y0, 1);
ATL_cmoveConj(N, alpha, z, incZ, z0, 1);
ATL_cger2u(N, M, one, y0, 1, x, incX, beta, w, incW, z, incZ, A, lda);
free(vy);
}
}
示例15: cblas_dgemm
void cblas_dgemm(const enum CBLAS_ORDER Order,
const enum CBLAS_TRANSPOSE TA, const enum CBLAS_TRANSPOSE TB,
const int M, const int N, const int K,
const double alpha, const double *A, const int lda,
const double *B, const int ldb, const double beta,
double *C, const int ldc)
{
int info=2000;
#ifndef NoCblasErrorChecks
if (M < 0) info = cblas_errprn(4, info,
"M cannot be less than zero 0,; is set to %d.", M);
if (N < 0) info = cblas_errprn(5, info,
"N cannot be less than zero 0,; is set to %d.", N);
if (K < 0) info = cblas_errprn(6, info,
"K cannot be less than zero 0,; is set to %d.", K);
if (Order == CblasRowMajor)
{
if (TA == CblasNoTrans)
{
if ( (lda < K) || (lda < 1) )
info = cblas_errprn(9, info, "lda must be >= MAX(K,1): lda=%d K=%d",
lda, K);
}
else
{
if (TA != CblasConjTrans && TA != CblasTrans)
info = cblas_errprn(2, info,
"TransA must be %d, %d or %d, but is set to %d",
CblasNoTrans, CblasTrans, CblasConjTrans, TA);
if ( (lda < M) || (lda < 1) )
info = cblas_errprn(9, info, "lda must be >= MAX(M,1): lda=%d M=%d",
lda, M);
}
if (TB == CblasNoTrans)
{
if ( (ldb < N) || (ldb < 1) )
info = cblas_errprn(11, info,"ldb must be >= MAX(N,1): ldb=%d N=%d",
ldb, N);
}
else
{
if (TB != CblasConjTrans && TB != CblasTrans)
info = cblas_errprn(3, info,
"TransB must be %d, %d or %d, but is set to %d",
CblasNoTrans, CblasTrans, CblasConjTrans, TB);
if ( (ldb < K) || (ldb < 1) )
info = cblas_errprn(11, info,"ldb must be >= MAX(N,1): ldb=%d K=%d",
ldb, K);
}
if ( (ldc < N) || (ldc < 1) )
info = cblas_errprn(14, info,"ldc must be >= MAX(N,1): ldc=%d N=%d",
ldc, N);
}
else if (Order == CblasColMajor)
{
if (TA == CblasNoTrans)
{
if ( (lda < M) || (lda < 1) )
info = cblas_errprn(9, info, "lda must be >= MAX(M,1): lda=%d M=%d",
lda, M);
}
else
{
if (TA != CblasConjTrans && TA != CblasTrans)
info = cblas_errprn(2, info,
"TransA must be %d, %d or %d, but is set to %d",
CblasNoTrans, CblasTrans, CblasConjTrans, TA);
if ( (lda < K) || (lda < 1) )
info = cblas_errprn(9, info, "lda must be >= MAX(K,1): lda=%d K=%d",
lda, K);
}
if (TB == CblasNoTrans)
{
if ( (ldb < K) || (ldb < 1) )
info = cblas_errprn(11,info, "ldb must be >= MAX(K,1): ldb=%d K=%d",
ldb, K);
}
else
{
if (TB != CblasConjTrans && TB != CblasTrans)
info = cblas_errprn(3, info,
"TransB must be %d, %d or %d, but is set to %d",
CblasNoTrans, CblasTrans, CblasConjTrans, TB);
if ( (ldb < N) || (ldb < 1) )
info = cblas_errprn(11,info, "ldb must be >= MAX(K,1): ldb=%d K=%d",
ldb, K);
}
if ( (ldc < M) || (ldc < 1) )
info = cblas_errprn(14, info,"ldc must be >= MAX(M,1): ldc=%d M=%d",
ldc, M);
}
else
info = cblas_errprn(1, info, "Order must be %d or %d, but is set to %d",
CblasRowMajor, CblasColMajor, Order);
if (info != 2000)
{
cblas_xerbla(info, "cblas_dgemm", "");
return;
//.........这里部分代码省略.........