packages feed

blas-0.7: cbits/double.c

#include "BLAS.h"
#include "config.h"

static char *BLAS_TRANS_CODES[] = { "N", "T", "C" };
#define TRANS(x) BLAS_TRANS_CODES[(int) (x) - (int) BlasNoTrans]

static char *BLAS_UPLO_CODES[] = { "U", "L" };
#define UPLO(x) BLAS_UPLO_CODES[(int) (x) - (int) BlasUpper]

static char *BLAS_DIAG_CODES[] = { "N", "U" };
#define DIAG(x) BLAS_DIAG_CODES[(int) (x) - (int) BlasNonUnit]

static char *BLAS_SIDE_CODES[] = { "L", "R" };
#define SIDE(x) BLAS_SIDE_CODES[(int) (x) - (int) BlasLeft]


extern double
F77_FUNC(ddot) (const int *N, const double *X, const int *incX,
	            const double *Y, const int *incY);
extern double
F77_FUNC(dnrm2) (const int *N, const double *X, const int *incX);
extern double
F77_FUNC(dasum) (const int *N, const double *X, const int *incX);

extern BLAS_INDEX 
F77_FUNC(idamax) (const int *N, const double *X, const int *incX);
extern void 
F77_FUNC(dswap) (const int *N, double *X, const int *incX,
                 double *Y, const int *incY);
extern void 
F77_FUNC(dcopy) (const int *N, const double *X, const int *incX,
                 double *Y, const int *incY);
extern void 
F77_FUNC(daxpy) (const int *N, const double *alpha, const double *X,
                 const int *incX, double *Y, const int *incY);

extern void
F77_FUNC(drotg) (double *a, double *b, double *c, double *s);
extern void
F77_FUNC(drotmg) (double *d1, double *d2, double *b1, const double *b2, double *P);
extern void
F77_FUNC(drot) (const int *N, double *X, const int *incX,
                double *Y, const int *incY, const double *c, const double *s);
extern void 
F77_FUNC(drotm) (const int *N, double *X, const int *incX,
                 double *Y, const int *incY, const double *P);
extern void 
F77_FUNC(dscal) (const int *N, const double *alpha, double *X, const int *incX);


extern void 
F77_FUNC(dgemv) (const char *TransA, const int *M, const int *N,
                 const double *alpha, const double *A, const int *lda,
                 const double *X, const int *incX, const double *beta,
                 double *Y, const int *incY);

extern void
F77_FUNC(dgbmv)(const char *trans, const int *m, const int *n,
		const int *kl,const int *ku,
		const double *alpha, const double *a, const int *lda,
		const double *x, const int *incx,
		const double *beta, double *y, const int *incy);

extern void
F77_FUNC(dsbmv)(const char *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);
extern void
F77_FUNC(dspmv)(const char *uplo, const int *n,
		const double *alpha, const double *ap,
		const double *x, const int *incx,
		const double *beta, double *y, const int *incy);
extern void
F77_FUNC(dsymv)(const char *uplo, const int *n, const double *alpha,
		const double *a, const int *lda,
		const double *x, const int *incx,
		const double *beta, double *y, const int *incy);
extern void
F77_FUNC(dtbmv)(const char *uplo, const char *trans,
		const char *diag, const int *n, const int *k,
		const double *a, const int *lda,
		double *x, const int *incx);
extern void
F77_FUNC(dtpmv)(const char *uplo, const char *trans, const char *diag,
		const int *n, const double *ap,
		double *x, const int *incx);
extern void
F77_FUNC(dtrmv)(const char *uplo, const char *trans, const char *diag,
		const int *n, const double *a, const int *lda,
		double *x, const int *incx);
extern void
F77_FUNC(dtbsv)(const char *uplo, const char *trans,
		const char *diag, const int *n, const int *k,
		const double *a, const int *lda,
		double *x, const int *incx);
extern void
F77_FUNC(dtpsv)(const char *uplo, const char *trans,
		const char *diag, const int *n,
		const double *ap, double *x, const int *incx);
extern void
F77_FUNC(dtrsv)(const char *uplo, const char *trans,
		const char *diag, const int *n,
		const double *a, const int *lda,
		double *x, const int *incx);
extern void
F77_FUNC(dger)(const int *m, const int *n, const double *alpha,
	       const double *x, const int *incx,
	       const double *y, const int *incy,
	       double *a, const int *lda);
extern void
F77_FUNC(dsyr)(const char *uplo, const int *n, const double *alpha,
	       const double *x, const int *incx,
	       double *a, const int *lda);
extern void
F77_FUNC(dspr)(const char *uplo, const int *n, const double *alpha,
	       const double *x, const int *incx, double *ap);
extern void
F77_FUNC(dsyr2)(const char *uplo, const int *n, const double *alpha,
		const double *x, const int *incx,
		const double *y, const int *incy,
		double *a, const int *lda);
extern void
F77_FUNC(dspr2)(const char *uplo, const int *n, const double *alpha,
		const double *x, const int *incx,
		const double *y, const int *incy, double *ap);
extern void
F77_FUNC(dgemm)(const char *transa, const char *transb, 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);
extern void
F77_FUNC(dtrsm)(const char *side, const char *uplo,
		const char *transa, const char *diag,
		const int *m, const int *n, const double *alpha,
		const double *a, const int *lda,
		double *b, const int *ldb);
extern void
F77_FUNC(dtrmm)(const char *side, const char *uplo, const char *transa,
		const char *diag, const int *m, const int *n,
		const double *alpha, const double *a, const int *lda,
		double *b, const int *ldb);
extern void
F77_FUNC(dsymm)(const char *side, const char *uplo, const int *m,
		const int *n, const double *alpha,
		const double *a, const int *lda,
		const double *b, const int *ldb,
		const double *beta, double *c, const int *ldc);
extern void
F77_FUNC(dsyrk)(const char *uplo, const char *trans,
		const int *n, const int *k,
		const double *alpha, const double *a, const int *lda,
		const double *beta, double *c, const int *ldc);
extern void
F77_FUNC(dsyr2k)(const char *uplo, const char *trans,
		 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);


double 
blas_ddot (const int N, const double *X, const int incX,
           const double *Y, const int incY)
{
    return F77_FUNC(ddot) (&N, X, &incX, Y, &incY);
}


double 
blas_dnrm2 (const int N, const double *X, const int incX)
{
    return F77_FUNC(dnrm2) (&N, X, &incX);
}

double 
blas_dasum (const int N, const double *X, const int incX)
{
    return F77_FUNC(dasum) (&N, X, &incX);    
}

BLAS_INDEX 
blas_idamax (const int N, const double *X, const int incX)
{
    return (F77_FUNC(idamax) (&N, X, &incX) - 1);
}

void 
blas_dswap (const int N, double *X, const int incX,
            double *Y, const int incY)
{
    F77_FUNC(dswap) (&N, X, &incX, Y, &incY);
}

void 
blas_dcopy (const int N, const double *X, const int incX,
            double *Y, const int incY)
{
    F77_FUNC(dcopy) (&N, X, &incX, Y, &incY);
}

void 
blas_daxpy (const int N, const double alpha, const double *X,
            const int incX, double *Y, const int incY)
{
    F77_FUNC(daxpy) (&N, &alpha, X, &incX, Y, &incY);
}

void 
blas_drotg (double *a, double *b, double *c, double *s)
{
    F77_FUNC(drotg) (a, b, c, s);
}

void 
blas_drotmg (double *d1, double *d2, double *b1, const double b2, double *P)
{
    F77_FUNC(drotmg) (d1, d2, b1, &b2, P);
}

void 
blas_drot (const int N, double *X, const int incX,
           double *Y, const int incY, const double c, const double s)
{
    F77_FUNC(drot) (&N, X, &incX, Y, &incY, &c, &s);
}

void 
blas_drotm (const int N, double *X, const int incX,
            double *Y, const int incY, const double *P)
{
    F77_FUNC(drotm) (&N, X, &incX, Y, &incY, P);
}

void 
blas_dscal (const int N, const double alpha, double *X, const int incX)
{
    F77_FUNC(dscal) (&N, &alpha, X, &incX);
}

void 
blas_dgemv (const enum BLAS_TRANSPOSE TransA, const int M, const int N,
            const double alpha, const double *A, const int lda,
            const double *X, const int incX, const double beta,
            double *Y, const int incY)
{
    F77_FUNC(dgemv) (TRANS(TransA), &M, &N, &alpha, A, &lda, X, &incX,
                     &beta, Y, &incY);
}

void 
blas_dgbmv (const enum BLAS_TRANSPOSE TransA, const int M, const int N,
            const int KL, const int KU, const double alpha,
            const double *A, const int lda, const double *X,
            const int incX, const double beta, double *Y, const int incY)
{
    F77_FUNC(dgbmv) (TRANS(TransA), &M, &N, &KL, &KU, &alpha, A, &lda,
                     X, &incX, &beta, Y, &incY);
}
 
void 
blas_dtrmv (const enum BLAS_UPLO Uplo,
            const enum BLAS_TRANSPOSE TransA, const enum BLAS_DIAG Diag,
            const int N, const double *A, const int lda,
            double *X, const int incX)
{
    F77_FUNC(dtrmv) (UPLO(Uplo), TRANS(TransA), DIAG(Diag), &N, A, &lda,
                     X, &incX);
}

void 
blas_dtbmv (const enum BLAS_UPLO Uplo,
            const enum BLAS_TRANSPOSE TransA, const enum BLAS_DIAG Diag,
            const int N, const int K, const double *A, const int lda,
            double *X, const int incX)
{
    F77_FUNC(dtbmv) (UPLO(Uplo), TRANS(TransA), DIAG(Diag), &N, &K, A, &lda,
                     X, &incX);
}

void 
blas_dtpmv (const enum BLAS_UPLO Uplo,
            const enum BLAS_TRANSPOSE TransA, const enum BLAS_DIAG Diag,
            const int N, const double *Ap, double *X, const int incX)
{
    F77_FUNC(dtpmv) (UPLO(Uplo), TRANS(TransA), DIAG(Diag), &N, Ap,
                     X, &incX);
}

void 
blas_dtrsv (const enum BLAS_UPLO Uplo,
            const enum BLAS_TRANSPOSE TransA, const enum BLAS_DIAG Diag,
            const int N, const double *A, const int lda, double *X,
            const int incX)
{
    F77_FUNC(dtrsv) (UPLO(Uplo), TRANS(TransA), DIAG(Diag), &N, A, &lda,
                     X, &incX);
}

void 
blas_dtbsv (const enum BLAS_UPLO Uplo,
            const enum BLAS_TRANSPOSE TransA, const enum BLAS_DIAG Diag,
            const int N, const int K, const double *A, const int lda,
            double *X, const int incX)

{
    F77_FUNC(dtbsv) (UPLO(Uplo), TRANS(TransA), DIAG(Diag), &N, &K, A, &lda,
                     X, &incX);
}

void 
blas_dtpsv (const enum BLAS_UPLO Uplo,
            const enum BLAS_TRANSPOSE TransA, const enum BLAS_DIAG Diag,
            const int N, const double *Ap, double *X, const int incX)
{
    F77_FUNC(dtpsv) (UPLO(Uplo), TRANS(TransA), DIAG(Diag), &N, Ap,
                     X, &incX);
}


void 
blas_dsymv (const enum BLAS_UPLO Uplo,
            const int N, const double alpha, const double *A,
            const int lda, const double *X, const int incX,
            const double beta, double *Y, const int incY)
{
    F77_FUNC(dsymv) (UPLO(Uplo), &N, &alpha, A, &lda, X, &incX,
                     &beta, Y, &incY);    
}

void 
blas_dsbmv (const enum BLAS_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)
{
    F77_FUNC(dsbmv) (UPLO(Uplo), &N, &K, &alpha, A, &lda, X, &incX,
                     &beta, Y, &incY);    
}

void
blas_dspmv (const enum BLAS_UPLO Uplo,
            const int N, const double alpha, const double *Ap,
            const double *X, const int incX,
            const double beta, double *Y, const int incY)
{
    F77_FUNC(dspmv) (UPLO(Uplo), &N, &alpha, Ap, X, &incX, &beta, Y, &incY);
}

void
blas_dger (const int M, const int N,
           const double alpha, const double *X, const int incX,
           const double *Y, const int incY, double *A, const int lda)
{
    F77_FUNC(dger) (&M, &N, &alpha, X, &incX, Y, &incY, A, &lda);        
}

void
blas_dsyr (const enum BLAS_UPLO Uplo,
           const int N, const double alpha, const double *X,
           const int incX, double *A, const int lda)
{
    F77_FUNC(dsyr) (UPLO(Uplo), &N, &alpha, X, &incX, A, &lda);    
}

void
blas_dspr (const enum BLAS_UPLO Uplo,
           const int N, const double alpha, const double *X,
           const int incX, double *Ap)
{
    F77_FUNC(dspr) (UPLO(Uplo), &N, &alpha, X, &incX, Ap);    
}

void 
blas_dsyr2 (const enum BLAS_UPLO Uplo,
            const int N, const double alpha, const double *X,
            const int incX, const double *Y, const int incY, double *A,
            const int lda)
{
    F77_FUNC(dsyr2) (UPLO(Uplo), &N, &alpha, X, &incX, Y, &incY, A, &lda);    
}

void
blas_dspr2 (const enum BLAS_UPLO Uplo,
            const int N, const double alpha, const double *X,
            const int incX, const double *Y, const int incY, double *A)
{
    F77_FUNC(dspr2) (UPLO(Uplo), &N, &alpha, X, &incX, Y, &incY, A);
}

void 
blas_dgemm (const enum BLAS_TRANSPOSE TransA,
            const enum BLAS_TRANSPOSE TransB, 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)
{
    F77_FUNC(dgemm) (TRANS(TransA), TRANS(TransB), &M, &N, &K,
                     &alpha, A, &lda, B, &ldb, &beta, C, &ldc);
}

void 
blas_dsymm (const enum BLAS_SIDE Side,
            const enum BLAS_UPLO Uplo, const int M, const int N,
            const double alpha, const double *A, const int lda,
            const double *B, const int ldb, const double beta,
            double *C, const int ldc)
{
    F77_FUNC(dsymm) (SIDE(Side), UPLO(Uplo), &M, &N,
                     &alpha, A, &lda, B, &ldb, &beta, C, &ldc);
}

void 
blas_dsyrk (const enum BLAS_UPLO Uplo,
            const enum BLAS_TRANSPOSE Trans, const int N, const int K,
            const double alpha, const double *A, const int lda,
            const double beta, double *C, const int ldc)
{
    F77_FUNC(dsyrk) (UPLO(Uplo), TRANS(Trans), &N, &K,
                     &alpha, A, &lda, &beta, C, &ldc);
    
}

void
blas_dsyr2k (const enum BLAS_UPLO Uplo,
             const enum BLAS_TRANSPOSE Trans, 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)
{
    F77_FUNC(dsyr2k) (UPLO(Uplo), TRANS(Trans), &N, &K,
                      &alpha, A, &lda, B, &ldb, &beta, C, &ldc);
}

void
blas_dtrmm (const enum BLAS_SIDE Side,
            const enum BLAS_UPLO Uplo, const enum BLAS_TRANSPOSE TransA,
            const enum BLAS_DIAG Diag, const int M, const int N,
            const double alpha, const double *A, const int lda,
            double *B, const int ldb)
{
    F77_FUNC(dtrmm) (SIDE(Side), UPLO(Uplo), TRANS(TransA), DIAG(Diag), &M, &N,
                     &alpha, A, &lda, B, &ldb);
}

void
blas_dtrsm (const enum BLAS_SIDE Side,
            const enum BLAS_UPLO Uplo, const enum BLAS_TRANSPOSE TransA,
            const enum BLAS_DIAG Diag, const int M, const int N,
            const double alpha, const double *A, const int lda,
            double *B, const int ldb)
{
    F77_FUNC(dtrsm) (SIDE(Side), UPLO(Uplo), TRANS(TransA), DIAG(Diag), &M, &N,
                     &alpha, A, &lda, B, &ldb);
}