Blame cblas/error_cblas_l2.h

Packit 67cb25
/* cblas/error_cblas_l2.h
Packit 67cb25
 *
Packit 67cb25
 * Copyright (C) 2010 José Luis García Pallero
Packit 67cb25
 *
Packit 67cb25
 * This program is free software; you can redistribute it and/or modify
Packit 67cb25
 * it under the terms of the GNU General Public License as published by
Packit 67cb25
 * the Free Software Foundation; either version 3 of the License, or (at
Packit 67cb25
 * your option) any later version.
Packit 67cb25
 *
Packit 67cb25
 * This program is distributed in the hope that it will be useful, but
Packit 67cb25
 * WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 67cb25
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit 67cb25
 * General Public License for more details.
Packit 67cb25
 *
Packit 67cb25
 * You should have received a copy of the GNU General Public License
Packit 67cb25
 * along with this program; if not, write to the Free Software
Packit 67cb25
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Packit 67cb25
 */
Packit 67cb25
Packit 67cb25
#ifndef __ERROR_CBLAS_L2_H__
Packit 67cb25
#define __ERROR_CBLAS_L2_H__
Packit 67cb25
#include <gsl/gsl_math.h>
Packit 67cb25
#include "error_cblas.h"
Packit 67cb25
/*
Packit 67cb25
 * =============================================================================
Packit 67cb25
 * Prototypes for level 2 BLAS
Packit 67cb25
 * =============================================================================
Packit 67cb25
 */
Packit 67cb25
Packit 67cb25
/*
Packit 67cb25
 * Routines with standard 4 prefixes (S, D, C, Z)
Packit 67cb25
 */
Packit 67cb25
Packit 67cb25
/* cblas_xgemv() */
Packit 67cb25
#define CBLAS_ERROR_GEMV(pos,order,TransA,M,N,alpha,A,lda,X,incX,beta,Y,incY) \
Packit 67cb25
CHECK_ORDER(pos,1,order); \
Packit 67cb25
CHECK_TRANSPOSE(pos,2,TransA); \
Packit 67cb25
CHECK_DIM(pos,3,M); \
Packit 67cb25
CHECK_DIM(pos,4,N); \
Packit 67cb25
if((order)==CblasRowMajor) { \
Packit 67cb25
    if((lda)
Packit 67cb25
        pos = 7; \
Packit 67cb25
    } \
Packit 67cb25
} else if((order)==CblasColMajor) { \
Packit 67cb25
    if((lda)
Packit 67cb25
        pos = 7; \
Packit 67cb25
    } \
Packit 67cb25
};                       \
Packit 67cb25
CHECK_STRIDE(pos,9,incX); \
Packit 67cb25
CHECK_STRIDE(pos,12,incY);
Packit 67cb25
Packit 67cb25
/* cblas_xgbmv() */
Packit 67cb25
#define CBLAS_ERROR_GBMV(pos,order,TransA,M,N,KL,KU,alpha,A,lda,X,incX,beta,Y,incY) \
Packit 67cb25
CHECK_ORDER(pos,1,order); \
Packit 67cb25
CHECK_TRANSPOSE(pos,2,TransA); \
Packit 67cb25
CHECK_DIM(pos,3,M); \
Packit 67cb25
CHECK_DIM(pos,4,N); \
Packit 67cb25
CHECK_DIM(pos,5,KL); \
Packit 67cb25
CHECK_DIM(pos,6,KU); \
Packit 67cb25
if((lda)
Packit 67cb25
    pos = 9; \
Packit 67cb25
};                        \
Packit 67cb25
CHECK_STRIDE(pos,11,incX); \
Packit 67cb25
CHECK_STRIDE(pos,14,incY);
Packit 67cb25
Packit 67cb25
/* cblas_xtrmv() */
Packit 67cb25
#define CBLAS_ERROR_TRMV(pos,order,Uplo,TransA,Diag,N,A,lda,X,incX) \
Packit 67cb25
CHECK_ORDER(pos,1,order); \
Packit 67cb25
CHECK_UPLO(pos,2,Uplo); \
Packit 67cb25
CHECK_TRANSPOSE(pos,3,TransA); \
Packit 67cb25
CHECK_DIAG(pos,4,Diag); \
Packit 67cb25
CHECK_DIM(pos,5,N); \
Packit 67cb25
if((lda)
Packit 67cb25
    pos = 7; \
Packit 67cb25
CHECK_STRIDE(pos,9,incX);
Packit 67cb25
Packit 67cb25
/* cblas_xtbmv() */
Packit 67cb25
#define CBLAS_ERROR_TBMV(pos,order,Uplo,TransA,Diag,N,K,A,lda,X,incX) \
Packit 67cb25
CHECK_ORDER(pos,1,order); \
Packit 67cb25
CHECK_UPLO(pos,2,Uplo); \
Packit 67cb25
CHECK_TRANSPOSE(pos,3,TransA); \
Packit 67cb25
CHECK_DIAG(pos,4,Diag); \
Packit 67cb25
CHECK_DIM(pos,5,N); \
Packit 67cb25
CHECK_DIM(pos,6,K); \
Packit 67cb25
if((lda)
Packit 67cb25
    pos = 8; \
Packit 67cb25
}; \
Packit 67cb25
CHECK_STRIDE(pos,10,incX);
Packit 67cb25
Packit 67cb25
/* cblas_xtpmv() */
Packit 67cb25
#define CBLAS_ERROR_TPMV(pos,order,Uplo,TransA,Diag,N,Ap,X,incX) \
Packit 67cb25
CHECK_ORDER(pos,1,order); \
Packit 67cb25
CHECK_UPLO(pos,2,Uplo); \
Packit 67cb25
CHECK_TRANSPOSE(pos,3,TransA); \
Packit 67cb25
CHECK_DIAG(pos,4,Diag); \
Packit 67cb25
CHECK_DIM(pos,5,N); \
Packit 67cb25
CHECK_STRIDE(pos,8,incX);
Packit 67cb25
Packit 67cb25
/* cblas_xtrsv() */
Packit 67cb25
#define CBLAS_ERROR_TRSV(pos,order,Uplo,TransA,Diag,N,A,lda,X,incX) \
Packit 67cb25
CBLAS_ERROR_TRMV(pos,order,Uplo,TransA,Diag,N,A,lda,X,incX)
Packit 67cb25
Packit 67cb25
/* cblas_xtbsv() */
Packit 67cb25
#define CBLAS_ERROR_TBSV(pos,order,Uplo,TransA,Diag,N,K,A,lda,X,incX) \
Packit 67cb25
CBLAS_ERROR_TBMV(pos,order,Uplo,TransA,Diag,N,K,A,lda,X,incX)
Packit 67cb25
Packit 67cb25
/* cblas_xtpsv() */
Packit 67cb25
#define CBLAS_ERROR_TPSV(pos,order,Uplo,TransA,Diag,N,Ap,X,incX) \
Packit 67cb25
CBLAS_ERROR_TPMV(pos,order,Uplo,TransA,Diag,N,Ap,X,incX)
Packit 67cb25
Packit 67cb25
/*
Packit 67cb25
 * Routines with S and D prefixes only
Packit 67cb25
 */
Packit 67cb25
Packit 67cb25
/* cblas_xsymv() */
Packit 67cb25
#define CBLAS_ERROR_SD_SYMV(pos,order,Uplo,N,alpha,A,lda,X,incX,beta,Y,incY) \
Packit 67cb25
CHECK_ORDER(pos,1,order); \
Packit 67cb25
CHECK_UPLO(pos,2,Uplo); \
Packit 67cb25
CHECK_DIM(pos,3,N); \
Packit 67cb25
if((lda)
Packit 67cb25
    pos = 6; \
Packit 67cb25
};                       \
Packit 67cb25
CHECK_STRIDE(pos,8,incX); \
Packit 67cb25
CHECK_STRIDE(pos,11,incY);
Packit 67cb25
Packit 67cb25
/* cblas_xsbmv() */
Packit 67cb25
#define CBLAS_ERROR_SD_SBMV(pos,order,Uplo,N,K,alpha,A,lda,X,incX,beta,Y,incY) \
Packit 67cb25
CHECK_ORDER(pos,1,order); \
Packit 67cb25
CHECK_UPLO(pos,2,Uplo); \
Packit 67cb25
CHECK_DIM(pos,3,N); \
Packit 67cb25
CHECK_DIM(pos,4,K); \
Packit 67cb25
if((lda)
Packit 67cb25
    pos = 7; \
Packit 67cb25
};                       \
Packit 67cb25
CHECK_STRIDE(pos,9,incX); \
Packit 67cb25
CHECK_STRIDE(pos,12,incY);
Packit 67cb25
Packit 67cb25
/* cblas_xspmv() */
Packit 67cb25
#define CBLAS_ERROR_SD_SPMV(pos,order,Uplo,N,alpha,Ap,X,incX,beta,Y,incY) \
Packit 67cb25
CHECK_ORDER(pos,1,order); \
Packit 67cb25
CHECK_UPLO(pos,2,Uplo); \
Packit 67cb25
CHECK_DIM(pos,3,N); \
Packit 67cb25
CHECK_STRIDE(pos,7,incX); \
Packit 67cb25
CHECK_STRIDE(pos,10,incY);
Packit 67cb25
Packit 67cb25
/* cblas_xger() */
Packit 67cb25
#define CBLAS_ERROR_SD_GER(pos,order,M,N,alpha,X,incX,Y,incY,A,lda) \
Packit 67cb25
CHECK_ORDER(pos,1,order); \
Packit 67cb25
CHECK_DIM(pos,2,M); \
Packit 67cb25
CHECK_DIM(pos,3,N); \
Packit 67cb25
CHECK_STRIDE(pos,6,incX); \
Packit 67cb25
CHECK_STRIDE(pos,8,incY); \
Packit 67cb25
if((order)==CblasRowMajor) { \
Packit 67cb25
    if((lda)
Packit 67cb25
        pos = 10; \
Packit 67cb25
    } \
Packit 67cb25
} else if((order)==CblasColMajor) { \
Packit 67cb25
    if((lda)
Packit 67cb25
        pos = 10; \
Packit 67cb25
    } \
Packit 67cb25
};
Packit 67cb25
Packit 67cb25
/* cblas_xsyr() */
Packit 67cb25
#define CBLAS_ERROR_SD_SYR(pos,order,Uplo,N,alpha,X,incX,A,lda) \
Packit 67cb25
CHECK_ORDER(pos,1,order); \
Packit 67cb25
CHECK_UPLO(pos,2,Uplo); \
Packit 67cb25
CHECK_DIM(pos,3,N); \
Packit 67cb25
CHECK_STRIDE(pos,6,incX); \
Packit 67cb25
if((lda)
Packit 67cb25
    pos = 8; \
Packit 67cb25
};
Packit 67cb25
Packit 67cb25
/* cblas_xspr() */
Packit 67cb25
#define CBLAS_ERROR_SD_SPR(pos,order,Uplo,N,alpha,X,incX,Ap) \
Packit 67cb25
CHECK_ORDER(pos,1,order); \
Packit 67cb25
CHECK_UPLO(pos,2,Uplo); \
Packit 67cb25
CHECK_DIM(pos,3,N); \
Packit 67cb25
CHECK_STRIDE(pos,6,incX);
Packit 67cb25
Packit 67cb25
/* cblas_xsyr2() */
Packit 67cb25
#define CBLAS_ERROR_SD_SYR2(pos,order,Uplo,N,alpha,X,incX,Y,incY,A,lda) \
Packit 67cb25
CHECK_ORDER(pos,1,order); \
Packit 67cb25
CHECK_UPLO(pos,2,Uplo); \
Packit 67cb25
CHECK_DIM(pos,3,N); \
Packit 67cb25
CHECK_STRIDE(pos,6,incX); \
Packit 67cb25
CHECK_STRIDE(pos,8,incY); \
Packit 67cb25
if((lda)
Packit 67cb25
    pos = 10; \
Packit 67cb25
};
Packit 67cb25
Packit 67cb25
/* cblas_xspr2() */
Packit 67cb25
#define CBLAS_ERROR_SD_SPR2(pos,order,Uplo,N,alpha,X,incX,Y,incY,A) \
Packit 67cb25
CHECK_ORDER(pos,1,order); \
Packit 67cb25
CHECK_UPLO(pos,2,Uplo); \
Packit 67cb25
CHECK_DIM(pos,3,N); \
Packit 67cb25
CHECK_STRIDE(pos,6,incX); \
Packit 67cb25
CHECK_STRIDE(pos,8,incY);
Packit 67cb25
Packit 67cb25
/*
Packit 67cb25
 * Routines with C and Z prefixes only
Packit 67cb25
 */
Packit 67cb25
Packit 67cb25
/* cblas_xhemv() */
Packit 67cb25
#define CBLAS_ERROR_CZ_HEMV(pos,order,Uplo,N,alpha,A,lda,X,incX,beta,Y,incY) \
Packit 67cb25
CBLAS_ERROR_SD_SYMV(pos,order,Uplo,N,alpha,A,lda,X,incX,beta,Y,incY)
Packit 67cb25
Packit 67cb25
/* cblas_xhbmv() */
Packit 67cb25
#define CBLAS_ERROR_CZ_HBMV(pos,order,Uplo,N,K,alpha,A,lda,X,incX,beta,Y,incY) \
Packit 67cb25
CBLAS_ERROR_SD_SBMV(pos,order,Uplo,N,K,alpha,A,lda,X,incX,beta,Y,incY)
Packit 67cb25
Packit 67cb25
/* cblas_xhpmv() */
Packit 67cb25
#define CBLAS_ERROR_CZ_HPMV(pos,order,Uplo,N,alpha,Ap,X,incX,beta,Y,incY) \
Packit 67cb25
CBLAS_ERROR_SD_SPMV(pos,order,Uplo,N,alpha,Ap,X,incX,beta,Y,incY)
Packit 67cb25
Packit 67cb25
/* cblas_xgeru() */
Packit 67cb25
#define CBLAS_ERROR_CZ_GERU(pos,order,M,N,alpha,X,incX,Y,incY,A,lda) \
Packit 67cb25
CBLAS_ERROR_SD_GER(pos,order,M,N,alpha,X,incX,Y,incY,A,lda)
Packit 67cb25
Packit 67cb25
/* cblas_xgerc() */
Packit 67cb25
#define CBLAS_ERROR_CZ_GERC(pos,order,M,N,alpha,X,incX,Y,incY,A,lda) \
Packit 67cb25
CBLAS_ERROR_SD_GER(pos,order,M,N,alpha,X,incX,Y,incY,A,lda)
Packit 67cb25
Packit 67cb25
/* cblas_xher() */
Packit 67cb25
#define CBLAS_ERROR_CZ_HER(pos,order,Uplo,N,alpha,X,incX,A,lda) \
Packit 67cb25
CBLAS_ERROR_SD_SYR(pos,order,Uplo,N,alpha,X,incX,A,lda)
Packit 67cb25
Packit 67cb25
/* cblas_xhpr() */
Packit 67cb25
#define CBLAS_ERROR_CZ_HPR(pos,order,Uplo,N,alpha,X,incX,A) \
Packit 67cb25
CBLAS_ERROR_SD_SPR(pos,order,Uplo,N,alpha,X,incX,A)
Packit 67cb25
Packit 67cb25
/* cblas_xher2() */
Packit 67cb25
#define CBLAS_ERROR_CZ_HER2(pos,order,Uplo,N,alpha,X,incX,Y,incY,A,lda) \
Packit 67cb25
CBLAS_ERROR_SD_SYR2(pos,order,Uplo,N,alpha,X,incX,Y,incY,A,lda)
Packit 67cb25
Packit 67cb25
/* cblas_xhpr2() */
Packit 67cb25
#define CBLAS_ERROR_CZ_HPR2(pos,order,Uplo,N,alpha,X,incX,Y,incY,Ap) \
Packit 67cb25
CBLAS_ERROR_SD_SPR2(pos,order,Uplo,N,alpha,X,incX,Y,incY,Ap)
Packit 67cb25
Packit 67cb25
#endif /* __ERROR_CBLAS_L2_H__ */