diff options
Diffstat (limited to 'external/clBLAS/src/tests/blas.c')
-rw-r--r-- | external/clBLAS/src/tests/blas.c | 4966 |
1 files changed, 0 insertions, 4966 deletions
diff --git a/external/clBLAS/src/tests/blas.c b/external/clBLAS/src/tests/blas.c deleted file mode 100644 index 54a0fbe9..00000000 --- a/external/clBLAS/src/tests/blas.c +++ /dev/null @@ -1,4966 +0,0 @@ -/* ************************************************************************ - * Copyright 2013 Advanced Micro Devices, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ************************************************************************/ - - -#include <stdlib.h> /* abort() */ -#include <stdio.h> /* fprintf(), stderr */ - -#include <clBLAS.h> -#include <blas-internal.h> -#include <common.h> - -#if defined CORR_TEST_WITH_ACML -#include <acml.h> -#else -#include <blas-cblas.h> -#endif - -void -blasSgemv( - clblasOrder order, - clblasTranspose transA, - size_t M, - size_t N, - float alpha, - const float *A, - size_t lda, - const float *X, - int incx, - float beta, - float *Y, - int incy) -{ - char fTransA; - int fM, fN; - int fLDA; - - if (order != clblasColumnMajor) { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - fTransA = encodeTranspose(transA); - fM = (int)M; - fN = (int)N; - fLDA = (int)lda; - - sgemv(fTransA, fM, fN, - alpha, (float*)A, fLDA, (float*)X, incx, beta, Y, incy); -} - -void -blasDgemv( - clblasOrder order, - clblasTranspose transA, - size_t M, - size_t N, - double alpha, - const double *A, - size_t lda, - const double *X, - int incx, - double beta, - double *Y, - int incy) -{ - char fTransA; - int fM, fN; - int fLDA; - - if (order != clblasColumnMajor) { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - fTransA = encodeTranspose(transA); - fM = (int)M; - fN = (int)N; - fLDA = (int)lda; - - dgemv(fTransA, fM, fN, - alpha, (double*)A, fLDA, (double*)X, incx, beta, Y, incy); -} - -void -blasCgemv( - clblasOrder order, - clblasTranspose transA, - size_t M, - size_t N, - FloatComplex alpha, - const FloatComplex *A, - size_t lda, - const FloatComplex *X, - int incx, - FloatComplex beta, - FloatComplex *Y, - int incy) -{ - char fTransA; - int fM, fN; - int fLDA; - complex *fA, *fX, *fY; - complex fAlpha, fBeta; -#if 0 - size_t sizeA, sizeX, sizeY; - size_t i; - - sizeA = lda * N; //column major - - if (transA == clblasNoTrans) { - sizeX = (N - 1) * abs(incx) + 1; - sizeY = (M - 1) * abs(incy) + 1; - } else { - sizeX = (M - 1) * abs(incx) + 1; - sizeY = (N - 1) * abs(incy) + 1; - } -#endif - - if (order != clblasColumnMajor) { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - fTransA = encodeTranspose(transA); - fM = (int)M; - fN = (int)N; - fLDA = (int)lda; - - fAlpha = compose_complex(CREAL(alpha), CIMAG(alpha)); - fBeta = compose_complex(CREAL(beta), CIMAG(beta)); - -#if 0 - fA = (complex*)calloc(sizeA, sizeof(complex)); - if (fA == NULL) { - return; - } - fX = (complex*)calloc(sizeX, sizeof(complex)); - if (fX == NULL) { - free(fA); - return; - } - fY = (complex*)calloc(sizeY, sizeof(complex)); - if (fY == NULL) { - free(fX); - free(fA); - return; - } - - for (i = 0; i < sizeA; i++) { - fA[i] = compose_complex(CREAL(A[i]), CIMAG(A[i])); - } - for (i = 0; i < sizeX; i++) { - fX[i] = compose_complex(CREAL(X[i]), CIMAG(X[i])); - } - for (i = 0; i < sizeY; i++) { - fY[i] = compose_complex(CREAL(Y[i]), CIMAG(Y[i])); - } -#else - fA = (complex*)A; - fX = (complex*)X; - fY = (complex*)Y; -#endif - cgemv(fTransA, fM, fN, - &fAlpha, fA, fLDA, fX, incx, &fBeta, fY, incy); -#if 0 - for (i = 0; i < sizeY; i++) { - Y[i] = floatComplex(complex_real(fY[i]), complex_imag(fY[i])); - } - free(fY); - free(fX); - free(fA); -#endif -} - -void -blasZgemv( - clblasOrder order, - clblasTranspose transA, - size_t M, - size_t N, - DoubleComplex alpha, - const DoubleComplex *A, - size_t lda, - const DoubleComplex *X, - int incx, - DoubleComplex beta, - DoubleComplex *Y, - int incy) -{ - char fTransA; - int fM, fN; - int fLDA; - doublecomplex *fA, *fX, *fY; - doublecomplex fAlpha, fBeta; -#if 0 - size_t sizeA, sizeX, sizeY; - size_t i; - - sizeA = lda * N; //column major - - if (transA == clblasNoTrans) { - sizeX = (N - 1) * abs(incx) + 1; - sizeY = (M - 1) * abs(incy) + 1; - } else { - sizeX = (M - 1) * abs(incx) + 1; - sizeY = (N - 1) * abs(incy) + 1; - } -#endif - - if (order != clblasColumnMajor) { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - fTransA = encodeTranspose(transA); - fM = (int)M; - fN = (int)N; - fLDA = (int)lda; - - fAlpha = compose_doublecomplex(CREAL(alpha), CIMAG(alpha)); - fBeta = compose_doublecomplex(CREAL(beta), CIMAG(beta)); -#if 0 - fA = (doublecomplex*)calloc(sizeA, sizeof(doublecomplex)); - if (fA == NULL) { - return; - } - fX = (doublecomplex*)calloc(sizeX, sizeof(doublecomplex)); - if (fX == NULL) { - free(fA); - return; - } - fY = (doublecomplex*)calloc(sizeY, sizeof(doublecomplex)); - if (fY == NULL) { - free(fX); - free(fA); - return; - } - - for (i = 0; i < sizeA; i++) { - fA[i] = compose_doublecomplex(CREAL(A[i]), CIMAG(A[i])); - } - for (i = 0; i < sizeX; i++) { - fX[i] = compose_doublecomplex(CREAL(X[i]), CIMAG(X[i])); - } - for (i = 0; i < sizeY; i++) { - fY[i] = compose_doublecomplex(CREAL(Y[i]), CIMAG(Y[i])); - } -#else - fA = (doublecomplex*)A; - fX = (doublecomplex*)X; - fY = (doublecomplex*)Y; -#endif - zgemv(fTransA, fM, fN, - &fAlpha, fA, fLDA, fX, incx, &fBeta, fY, incy); -#if 0 - for (i = 0; i < sizeY; i++) { - Y[i] = doubleComplex( - doublecomplex_real(fY[i]), - doublecomplex_imag(fY[i])); - } - free(fY); - free(fX); - free(fA); -#endif -} - -void -blasSsymv( - clblasOrder order, - clblasUplo uplo, - size_t N, - float alpha, - const float *A, - size_t lda, - const float *X, - int incx, - float beta, - float *Y, - int incy) -{ - char fUplo; - int fN; - int fLDA; - - if (order != clblasColumnMajor) { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - fUplo = encodeUplo(uplo); - fN = (int)N; - fLDA = (int)lda; - - ssymv(fUplo, fN, alpha, (float*)A, fLDA, (float*)X, incx, beta, Y, incy); -} - -void -blasDsymv( - clblasOrder order, - clblasUplo uplo, - size_t N, - double alpha, - const double *A, - size_t lda, - const double *X, - int incx, - double beta, - double *Y, - int incy) -{ - char fUplo; - int fN; - int fLDA; - - if (order != clblasColumnMajor) { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - fUplo = encodeUplo(uplo); - fN = (int)N; - fLDA = (int)lda; - - dsymv(fUplo, fN, alpha, (double*)A, fLDA, (double*)X, incx, beta, Y, incy); -} - -void -blasSgemm( - clblasOrder order, - clblasTranspose transA, - clblasTranspose transB, - size_t M, - size_t N, - size_t K, - float alpha, - const float *A, - size_t lda, - const float *B, - size_t ldb, - float beta, - float *C, - size_t ldc) -{ - char fTransA, fTransB; - int fM, fN, fK; - int fLDA, fLDB, fLDC; - - if (order != clblasColumnMajor) { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - fTransA = encodeTranspose(transA); - fTransB = encodeTranspose(transB); - fM = (int)M; - fN = (int)N; - fK = (int)K; - fLDA = (int)lda; - fLDB = (int)ldb; - fLDC = (int)ldc; - - sgemm(fTransA, fTransB, fM, fN, fK, - alpha, (float*)A, fLDA, (float*)B, fLDB, beta, C, fLDC); -} - -void -blasDgemm( - clblasOrder order, - clblasTranspose transA, - clblasTranspose transB, - size_t M, - size_t N, - size_t K, - double alpha, - const double *A, - size_t lda, - const double *B, - size_t ldb, - double beta, - double *C, - size_t ldc) -{ - char fTransA, fTransB; - int fM, fN, fK; - int fLDA, fLDB, fLDC; - - if (order != clblasColumnMajor) { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - fTransA = encodeTranspose(transA); - fTransB = encodeTranspose(transB); - fM = (int)M; - fN = (int)N; - fK = (int)K; - fLDA = (int)lda; - fLDB = (int)ldb; - fLDC = (int)ldc; - - dgemm(fTransA, fTransB, fM, fN, fK, - alpha, (double*)A, fLDA, (double*)B, fLDB, beta, C, fLDC); -} - -void -blasCgemm( - clblasOrder order, - clblasTranspose transA, - clblasTranspose transB, - size_t M, - size_t N, - size_t K, - FloatComplex alpha, - const FloatComplex *A, - size_t lda, - const FloatComplex *B, - size_t ldb, - FloatComplex beta, - FloatComplex *C, - size_t ldc) -{ - char fTransA, fTransB; - int fM, fN, fK; - int fLDA, fLDB, fLDC; - complex *fA, *fB, *fC; - complex fAlpha, fBeta; -#if 0 - size_t ma, ka, nb, kb, mc, nc; - size_t i; - - if (transA == clblasNoTrans) { - ma = lda; - ka = K; - } else { - ka = lda; - ma = M; - } - if (transB == clblasNoTrans) { - kb = ldb; - nb = N; - } else { - nb = ldb; - kb = K; - } - mc = ldc; - nc = N; -#endif - - if (order != clblasColumnMajor) { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - fTransA = encodeTranspose(transA); - fTransB = encodeTranspose(transB); - fM = (int)M; - fN = (int)N; - fK = (int)K; - fLDA = (int)lda; - fLDB = (int)ldb; - fLDC = (int)ldc; - - fAlpha = compose_complex(CREAL(alpha), CIMAG(alpha)); - fBeta = compose_complex(CREAL(beta), CIMAG(beta)); -#if 0 - fA = (complex*)calloc(ma * ka, sizeof(complex)); - if (fA == NULL) { - return; - } - fB = (complex*)calloc(kb * nb, sizeof(complex)); - if (fB == NULL) { - free(fA); - return; - } - fC = (complex*)calloc(mc * nc, sizeof(complex)); - if (fC == NULL) { - free(fB); - free(fA); - return; - } - - for (i = 0; i < ma * ka; i++) { - fA[i] = compose_complex(CREAL(A[i]), CIMAG(A[i])); - } - for (i = 0; i < kb * nb; i++) { - fB[i] = compose_complex(CREAL(B[i]), CIMAG(B[i])); - } - for (i = 0; i < mc * nc; i++) { - fC[i] = compose_complex(CREAL(C[i]), CIMAG(C[i])); - } -#else - fA = (complex*)A; - fB = (complex*)B; - fC = (complex*)C; -#endif - cgemm(fTransA, fTransB, fM, fN, fK, - &fAlpha, fA, fLDA, fB, fLDB, &fBeta, fC, fLDC); -#if 0 - for (i = 0; i < mc * nc; i++) { - C[i] = floatComplex(complex_real(fC[i]), complex_imag(fC[i])); - } - free(fC); - free(fB); - free(fA); -#endif -} - -void -blasZgemm( - clblasOrder order, - clblasTranspose transA, - clblasTranspose transB, - size_t M, - size_t N, - size_t K, - DoubleComplex alpha, - const DoubleComplex *A, - size_t lda, - const DoubleComplex *B, - size_t ldb, - DoubleComplex beta, - DoubleComplex *C, - size_t ldc) -{ - char fTransA, fTransB; - int fM, fN, fK; - int fLDA, fLDB, fLDC; - doublecomplex *fA, *fB, *fC; - doublecomplex fAlpha, fBeta; -#if 0 - size_t ma, ka, nb, kb, mc, nc; - size_t i; - - if (transA == clblasNoTrans) { - ma = lda; - ka = K; - } else { - ka = lda; - ma = M; - } - if (transB == clblasNoTrans) { - kb = ldb; - nb = N; - } else { - nb = ldb; - kb = K; - } - mc = ldc; - nc = N; -#endif - - if (order != clblasColumnMajor) { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - fTransA = encodeTranspose(transA); - fTransB = encodeTranspose(transB); - fM = (int)M; - fN = (int)N; - fK = (int)K; - fLDA = (int)lda; - fLDB = (int)ldb; - fLDC = (int)ldc; - - fAlpha = compose_doublecomplex(CREAL(alpha), CIMAG(alpha)); - fBeta = compose_doublecomplex(CREAL(beta), CIMAG(beta)); -#if 0 - fA = (doublecomplex*)calloc(ma * ka, sizeof(doublecomplex)); - if (fA == NULL) { - return; - } - fB = (doublecomplex*)calloc(kb * nb, sizeof(doublecomplex)); - if (fB == NULL) { - free(fA); - return; - } - fC = (doublecomplex*)calloc(mc * nc, sizeof(doublecomplex)); - if (fC == NULL) { - free(fB); - free(fA); - return; - } - - for (i = 0; i < ma * ka; i++) { - fA[i] = compose_doublecomplex(CREAL(A[i]), CIMAG(A[i])); - } - for (i = 0; i < kb * nb; i++) { - fB[i] = compose_doublecomplex(CREAL(B[i]), CIMAG(B[i])); - } - for (i = 0; i < mc * nc; i++) { - fC[i] = compose_doublecomplex(CREAL(C[i]), CIMAG(C[i])); - } -#else - fA = (doublecomplex*)A; - fB = (doublecomplex*)B; - fC = (doublecomplex*)C; -#endif - zgemm(fTransA, fTransB, fM, fN, fK, - &fAlpha, fA, fLDA, fB, fLDB, &fBeta, fC, fLDC); -#if 0 - for (i = 0; i < mc * nc; i++) { - C[i] = doubleComplex(doublecomplex_real(fC[i]), doublecomplex_imag(fC[i])); - } - free(fC); - free(fB); - free(fA); -#endif -} - -void blasStrmm( - clblasOrder order, - clblasSide side, - clblasUplo uplo, - clblasTranspose transA, - clblasDiag diag, - size_t M, - size_t N, - float alpha, - const float *A, - size_t lda, - float *B, - size_t ldb) -{ - char fSide, fUplo, fTransA, fDiag; - int fM, fN; - int fLDA, fLDB; - - if (order != clblasColumnMajor) { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - fSide = encodeSide(side); - fUplo = encodeUplo(uplo); - fTransA = encodeTranspose(transA); - fDiag = encodeDiag(diag); - fM = (int)M; - fN = (int)N; - fLDA = (int)lda; - fLDB = (int)ldb; - - strmm(fSide, fUplo, fTransA, fDiag, fM, fN, - alpha, (float*)A, fLDA, B, fLDB); -} - -void blasDtrmm( - clblasOrder order, - clblasSide side, - clblasUplo uplo, - clblasTranspose transA, - clblasDiag diag, - size_t M, - size_t N, - double alpha, - const double *A, - size_t lda, - double *B, - size_t ldb) -{ - char fSide, fUplo, fTransA, fDiag; - int fM, fN; - int fLDA, fLDB; - - if (order != clblasColumnMajor) { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - fSide = encodeSide(side); - fUplo = encodeUplo(uplo); - fTransA = encodeTranspose(transA); - fDiag = encodeDiag(diag); - fM = (int)M; - fN = (int)N; - fLDA = (int)lda; - fLDB = (int)ldb; - - dtrmm(fSide, fUplo, fTransA, fDiag, fM, fN, - alpha, (double*)A, fLDA, B, fLDB); -} - -void blasCtrmm( - clblasOrder order, - clblasSide side, - clblasUplo uplo, - clblasTranspose transA, - clblasDiag diag, - size_t M, - size_t N, - FloatComplex alpha, - const FloatComplex *A, - size_t lda, - FloatComplex *B, - size_t ldb) -{ - char fSide, fUplo, fTransA, fDiag; - int fM, fN; - int fLDA, fLDB; - complex *fA, *fB; - complex fAlpha; -#if 0 - size_t ma, na, mb, nb; - size_t i; - - ma = lda; - if (side == clblasLeft) { - na = M; - } - else { - na = N; - } - mb = ldb; - nb = N; -#endif - - if (order != clblasColumnMajor) { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - fSide = encodeSide(side); - fUplo = encodeUplo(uplo); - fTransA = encodeTranspose(transA); - fDiag = encodeDiag(diag); - fM = (int)M; - fN = (int)N; - fLDA = (int)lda; - fLDB = (int)ldb; - - fAlpha = compose_complex(CREAL(alpha), CIMAG(alpha)); -#if 0 - fA = (complex*)calloc(ma * na, sizeof(complex)); - if (fA == NULL) { - return; - } - fB = (complex*)calloc(mb * nb, sizeof(complex)); - if (fB == NULL) { - free(fA); - return; - } - - for (i = 0; i < ma * na; i++) { - fA[i] = compose_complex(CREAL(A[i]), CIMAG(A[i])); - } - for (i = 0; i < mb * nb; i++) { - fB[i] = compose_complex(CREAL(B[i]), CIMAG(B[i])); - } -#else - fA = (complex*)A; - fB = (complex*)B; -#endif - ctrmm(fSide, fUplo, fTransA, fDiag, fM, fN, - &fAlpha, fA, fLDA, fB, fLDB); -#if 0 - for (i = 0; i < mb * nb; i++) { - B[i] = floatComplex(complex_real(fB[i]), complex_imag(fB[i])); - } - free(fB); - free(fA); -#endif -} - -void blasZtrmm( - clblasOrder order, - clblasSide side, - clblasUplo uplo, - clblasTranspose transA, - clblasDiag diag, - size_t M, - size_t N, - DoubleComplex alpha, - const DoubleComplex *A, - size_t lda, - DoubleComplex *B, - size_t ldb) -{ - char fSide, fUplo, fTransA, fDiag; - int fM, fN; - int fLDA, fLDB; - doublecomplex *fA, *fB; - doublecomplex fAlpha; -#if 0 - size_t ma, na, mb, nb; - size_t i; - - ma = lda; - if (side == clblasLeft) { - na = M; - } - else { - na = N; - } - mb = ldb; - nb = N; -#endif - - if (order != clblasColumnMajor) { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - fSide = encodeSide(side); - fUplo = encodeUplo(uplo); - fTransA = encodeTranspose(transA); - fDiag = encodeDiag(diag); - fM = (int)M; - fN = (int)N; - fLDA = (int)lda; - fLDB = (int)ldb; - - fAlpha = compose_doublecomplex(CREAL(alpha), CIMAG(alpha)); -#if 0 - fA = (doublecomplex*)calloc(ma * na, sizeof(doublecomplex)); - if (fA == NULL) { - return; - } - fB = (doublecomplex*)calloc(mb * nb, sizeof(doublecomplex)); - if (fB == NULL) { - free(fA); - return; - } - - for (i = 0; i < ma * na; i++) { - fA[i] = compose_doublecomplex(CREAL(A[i]), CIMAG(A[i])); - } - for (i = 0; i < mb * nb; i++) { - fB[i] = compose_doublecomplex(CREAL(B[i]), CIMAG(B[i])); - } -#else - fA = (doublecomplex*)A; - fB = (doublecomplex*)B; -#endif - ztrmm(fSide, fUplo, fTransA, fDiag, fM, fN, - &fAlpha, fA, fLDA, fB, fLDB); -#if 0 - for (i = 0; i < mb * nb; i++) { - B[i] = doubleComplex(doublecomplex_real(fB[i]), doublecomplex_imag(fB[i])); - } - free(fB); - free(fA); -#endif -} - -void blasStrsm( - clblasOrder order, - clblasSide side, - clblasUplo uplo, - clblasTranspose transA, - clblasDiag diag, - size_t M, - size_t N, - float alpha, - const float *A, - size_t lda, - float *B, - size_t ldb) -{ - char fSide, fUplo, fTransA, fDiag; - int fM, fN; - int fLDA, fLDB; - - if (order != clblasColumnMajor) { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - fSide = encodeSide(side); - fUplo = encodeUplo(uplo); - fTransA = encodeTranspose(transA); - fDiag = encodeDiag(diag); - fM = (int)M; - fN = (int)N; - fLDA = (int)lda; - fLDB = (int)ldb; - - strsm(fSide, fUplo, fTransA, fDiag, fM, fN, - alpha, (float*)A, fLDA, B, fLDB); -} - -void blasDtrsm( - clblasOrder order, - clblasSide side, - clblasUplo uplo, - clblasTranspose transA, - clblasDiag diag, - size_t M, - size_t N, - double alpha, - const double *A, - size_t lda, - double *B, - size_t ldb) -{ - char fSide, fUplo, fTransA, fDiag; - int fM, fN; - int fLDA, fLDB; - - if (order != clblasColumnMajor) { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - fSide = encodeSide(side); - fUplo = encodeUplo(uplo); - fTransA = encodeTranspose(transA); - fDiag = encodeDiag(diag); - fM = (int)M; - fN = (int)N; - fLDA = (int)lda; - fLDB = (int)ldb; - - dtrsm(fSide, fUplo, fTransA, fDiag, fM, fN, - alpha, (double*)A, fLDA, B, fLDB); -} - -void blasCtrsm( - clblasOrder order, - clblasSide side, - clblasUplo uplo, - clblasTranspose transA, - clblasDiag diag, - size_t M, - size_t N, - FloatComplex alpha, - const FloatComplex *A, - size_t lda, - FloatComplex *B, - size_t ldb) -{ - char fSide, fUplo, fTransA, fDiag; - int fM, fN; - int fLDA, fLDB; - complex *fA, *fB; - complex fAlpha; -#if 0 - size_t ma, na, mb, nb; - size_t i; - - ma = lda; - if (side == clblasLeft) { - na = M; - } - else { - na = N; - } - mb = ldb; - nb = N; -#endif - - if (order != clblasColumnMajor) { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - fSide = encodeSide(side); - fUplo = encodeUplo(uplo); - fTransA = encodeTranspose(transA); - fDiag = encodeDiag(diag); - fM = (int)M; - fN = (int)N; - fLDA = (int)lda; - fLDB = (int)ldb; - - fAlpha = compose_complex(CREAL(alpha), CIMAG(alpha)); -#if 0 - fA = (complex*)calloc(ma * na, sizeof(complex)); - if (fA == NULL) { - return; - } - fB = (complex*)calloc(mb * nb, sizeof(complex)); - if (fB == NULL) { - free(fA); - return; - } - - for (i = 0; i < ma * na; i++) { - fA[i] = compose_complex(CREAL(A[i]), CIMAG(A[i])); - } - for (i = 0; i < mb * nb; i++) { - fB[i] = compose_complex(CREAL(B[i]), CIMAG(B[i])); - } -#else - fA = (complex*)A; - fB = (complex*)B; -#endif - ctrsm(fSide, fUplo, fTransA, fDiag, fM, fN, - &fAlpha, fA, fLDA, fB, fLDB); -#if 0 - for (i = 0; i < mb * nb; i++) { - B[i] = floatComplex(complex_real(fB[i]), complex_imag(fB[i])); - } - free(fB); - free(fA); -#endif -} - -void blasZtrsm( - clblasOrder order, - clblasSide side, - clblasUplo uplo, - clblasTranspose transA, - clblasDiag diag, - size_t M, - size_t N, - DoubleComplex alpha, - const DoubleComplex *A, - size_t lda, - DoubleComplex *B, - size_t ldb) -{ - char fSide, fUplo, fTransA, fDiag; - int fM, fN; - int fLDA, fLDB; - doublecomplex *fA, *fB; - doublecomplex fAlpha; -#if 0 - size_t ma, na, mb, nb; - size_t i; - - ma = lda; - if (side == clblasLeft) { - na = M; - } - else { - na = N; - } - mb = ldb; - nb = N; -#endif - - if (order != clblasColumnMajor) { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - fSide = encodeSide(side); - fUplo = encodeUplo(uplo); - fTransA = encodeTranspose(transA); - fDiag = encodeDiag(diag); - fM = (int)M; - fN = (int)N; - fLDA = (int)lda; - fLDB = (int)ldb; - - fAlpha = compose_doublecomplex(CREAL(alpha), CIMAG(alpha)); -#if 0 - fA = (doublecomplex*)calloc(ma * na, sizeof(doublecomplex)); - if (fA == NULL) { - return; - } - fB = (doublecomplex*)calloc(mb * nb, sizeof(doublecomplex)); - if (fB == NULL) { - free(fA); - return; - } - - for (i = 0; i < ma * na; i++) { - fA[i] = compose_doublecomplex(CREAL(A[i]), CIMAG(A[i])); - } - for (i = 0; i < mb * nb; i++) { - fB[i] = compose_doublecomplex(CREAL(B[i]), CIMAG(B[i])); - } -#else - fA = (doublecomplex*)A; - fB = (doublecomplex*)B; -#endif - ztrsm(fSide, fUplo, fTransA, fDiag, fM, fN, - &fAlpha, fA, fLDA, fB, fLDB); -#if 0 - for (i = 0; i < mb * nb; i++) { - B[i] = doubleComplex(doublecomplex_real(fB[i]), doublecomplex_imag(fB[i])); - } - free(fB); - free(fA); -#endif -} - -void -blasSsyr2k( - clblasOrder order, - clblasUplo uplo, - clblasTranspose transA, - size_t N, - size_t K, - float alpha, - const float *A, - size_t lda, - const float *B, - size_t ldb, - float beta, - float *C, - size_t ldc) -{ - char fUplo, fTransA; - int fN, fK; - int fLDA, fLDB, fLDC; - - if (order != clblasColumnMajor) { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - fUplo = encodeUplo(uplo); - fTransA = encodeTranspose(transA); - fN = (int)N; - fK = (int)K; - fLDA = (int)lda; - fLDB = (int)ldb; - fLDC = (int)ldc; - - ssyr2k(fUplo, fTransA, fN, fK, alpha, (float*)A, fLDA, (float*)B, fLDB, - beta, C, fLDC); -} - -void -blasDsyr2k( - clblasOrder order, - clblasUplo uplo, - clblasTranspose transA, - size_t N, - size_t K, - double alpha, - const double *A, - size_t lda, - const double *B, - size_t ldb, - double beta, - double *C, - size_t ldc) -{ - char fUplo, fTransA; - int fN, fK; - int fLDA, fLDB, fLDC; - - if (order != clblasColumnMajor) { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - fUplo = encodeUplo(uplo); - fTransA = encodeTranspose(transA); - fN = (int)N; - fK = (int)K; - fLDA = (int)lda; - fLDB = (int)ldb; - fLDC = (int)ldc; - - dsyr2k(fUplo, fTransA, fN, fK, alpha, (double*)A, fLDA, (double*)B, fLDB, - beta, C, fLDC); -} - -void -blasCsyr2k( - clblasOrder order, - clblasUplo uplo, - clblasTranspose transA, - size_t N, - size_t K, - FloatComplex alpha, - const FloatComplex *A, - size_t lda, - const FloatComplex *B, - size_t ldb, - FloatComplex beta, - FloatComplex *C, - size_t ldc) -{ - char fUplo, fTransA; - int fN, fK; - int fLDA, fLDB, fLDC; - complex *fA, *fB, *fC; - complex fAlpha, fBeta; -#if 0 - size_t na, ka, nb, kb, rowsC, columnsC; - size_t i; - - if (transA == clblasNoTrans) { - na = lda; - ka = K; - nb = ldb; - kb = K; - } - else { - ka = lda; - na = N; - kb = ldb; - nb = N; - } - rowsC = ldc; - columnsC = N; -#endif - - if (order != clblasColumnMajor) { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - fUplo = encodeUplo(uplo); - fTransA = encodeTranspose(transA); - fN = (int)N; - fK = (int)K; - fLDA = (int)lda; - fLDB = (int)ldb; - fLDC = (int)ldc; - - fAlpha = compose_complex(CREAL(alpha), CIMAG(alpha)); - fBeta = compose_complex(CREAL(beta), CIMAG(beta)); -#if 0 - fA = (complex*)calloc(na * ka, sizeof(complex)); - if (fA == NULL) { - return; - } - fB = (complex*)calloc(nb * kb, sizeof(complex)); - if (fB == NULL) { - free(fA); - return; - } - fC = (complex*)calloc(rowsC * columnsC, sizeof(complex)); - if (fC == NULL) { - free(fB); - free(fA); - return; - } - - for (i = 0; i < na * ka; i++) { - fA[i] = compose_complex(CREAL(A[i]), CIMAG(A[i])); - } - for (i = 0; i < nb * kb; i++) { - fB[i] = compose_complex(CREAL(B[i]), CIMAG(B[i])); - } - for (i = 0; i < rowsC * columnsC; i++) { - fC[i] = compose_complex(CREAL(C[i]), CIMAG(C[i])); - } -#else - fA = (complex*)A; - fB = (complex*)B; - fC = (complex*)C; -#endif - csyr2k(fUplo, fTransA, fN, fK, &fAlpha, fA, fLDA, - fB, fLDB, &fBeta, fC, fLDC); -#if 0 - for (i = 0; i < rowsC * columnsC; i++) { - C[i] = floatComplex(complex_real(fC[i]), complex_imag(fC[i])); - } - free(fC); - free(fB); - free(fA); -#endif -} - -void -blasZsyr2k( - clblasOrder order, - clblasUplo uplo, - clblasTranspose transA, - size_t N, - size_t K, - DoubleComplex alpha, - const DoubleComplex *A, - size_t lda, - const DoubleComplex *B, - size_t ldb, - DoubleComplex beta, - DoubleComplex *C, - size_t ldc) -{ - char fUplo, fTransA; - int fN, fK; - int fLDA, fLDB, fLDC; - doublecomplex *fA, *fB, *fC; - doublecomplex fAlpha, fBeta; -#if 0 - size_t na, ka, nb, kb, rowsC, columnsC; - size_t i; - - - if (transA == clblasNoTrans) { - na = lda; - ka = K; - nb = ldb; - kb = K; - } - else { - ka = lda; - na = N; - kb = ldb; - nb = N; - } - rowsC = ldc; - columnsC = N; -#endif - - if (order != clblasColumnMajor) { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - fUplo = encodeUplo(uplo); - fTransA = encodeTranspose(transA); - fN = (int)N; - fK = (int)K; - fLDA = (int)lda; - fLDB = (int)ldb; - fLDC = (int)ldc; - - fAlpha = compose_doublecomplex(CREAL(alpha), CIMAG(alpha)); - fBeta = compose_doublecomplex(CREAL(beta), CIMAG(beta)); -#if 0 - fA = (doublecomplex*)calloc(na * ka, sizeof(doublecomplex)); - if (fA == NULL) { - return; - } - fB = (doublecomplex*)calloc(nb * kb, sizeof(doublecomplex)); - if (fB == NULL) { - free(fA); - return; - } - fC = (doublecomplex*)calloc(rowsC * columnsC, sizeof(doublecomplex)); - if (fC == NULL) { - free(fB); - free(fA); - return; - } - - for (i = 0; i < na * ka; i++) { - fA[i] = compose_doublecomplex(CREAL(A[i]), CIMAG(A[i])); - } - for (i = 0; i < nb * kb; i++) { - fB[i] = compose_doublecomplex(CREAL(B[i]), CIMAG(B[i])); - } - for (i = 0; i < rowsC * columnsC; i++) { - fC[i] = compose_doublecomplex(CREAL(C[i]), CIMAG(C[i])); - } -#else - fA = (doublecomplex*)A; - fB = (doublecomplex*)B; - fC = (doublecomplex*)C; -#endif - zsyr2k(fUplo, fTransA, fN, fK, &fAlpha, fA, fLDA, - fB, fLDB, &fBeta, fC, fLDC); -#if 0 - for (i = 0; i < rowsC * columnsC; i++) { - C[i] = doubleComplex(doublecomplex_real(fC[i]), doublecomplex_imag(fC[i])); - } - free(fC); - free(fB); - free(fA); -#endif -} - - -void -blasSsyrk( - clblasOrder order, - clblasUplo uplo, - clblasTranspose transA, - size_t N, - size_t K, - float alpha, - const float *A, - size_t lda, - float beta, - float *C, - size_t ldc) -{ - char fUplo, fTransA; - int fN, fK; - int fLDA, fLDC; - - if (order != clblasColumnMajor) { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - fUplo = encodeUplo(uplo); - fTransA = encodeTranspose(transA); - fN = (int)N; - fK = (int)K; - fLDA = (int)lda; - fLDC = (int)ldc; - - ssyrk(fUplo, fTransA, fN, fK, alpha, (float*)A, fLDA, - beta, C, fLDC); -} - -void -blasDsyrk( - clblasOrder order, - clblasUplo uplo, - clblasTranspose transA, - size_t N, - size_t K, - double alpha, - const double *A, - size_t lda, - double beta, - double *C, - size_t ldc) -{ - char fUplo, fTransA; - int fN, fK; - int fLDA, fLDC; - - if (order != clblasColumnMajor) { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - fUplo = encodeUplo(uplo); - fTransA = encodeTranspose(transA); - fN = (int)N; - fK = (int)K; - fLDA = (int)lda; - fLDC = (int)ldc; - - dsyrk(fUplo, fTransA, fN, fK, alpha, (double*)A, fLDA, - beta, C, fLDC); -} - -void -blasCsyrk( - clblasOrder order, - clblasUplo uplo, - clblasTranspose transA, - size_t N, - size_t K, - FloatComplex alpha, - const FloatComplex *A, - size_t lda, - FloatComplex beta, - FloatComplex *C, - size_t ldc) -{ - char fUplo, fTransA; - int fN, fK; - int fLDA, fLDC; - complex *fA, *fC; - complex fAlpha, fBeta; -#if 0 - size_t i; - size_t na, ka, rowsC, columnsC; - if (transA == clblasNoTrans) { - na = lda; - ka = K; - } - else { - ka = lda; - na = N; - } - rowsC = ldc; - columnsC = N; -#endif - - if (order != clblasColumnMajor) { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - fUplo = encodeUplo(uplo); - fTransA = encodeTranspose(transA); - fN = (int)N; - fK = (int)K; - fLDA = (int)lda; - fLDC = (int)ldc; - - fAlpha = compose_complex(CREAL(alpha), CIMAG(alpha)); - fBeta = compose_complex(CREAL(beta), CIMAG(beta)); -#if 0 - fA = (complex*)calloc(na * ka, sizeof(complex)); - if (fA == NULL) { - return; - } - fC = (complex*)calloc(rowsC * columnsC, sizeof(complex)); - if (fC == NULL) { - free(fA); - return; - } - - for (i = 0; i < na * ka; i++) { - fA[i] = compose_complex(CREAL(A[i]), CIMAG(A[i])); - } - for (i = 0; i < rowsC * columnsC; i++) { - fC[i] = compose_complex(CREAL(C[i]), CIMAG(C[i])); - } -#else - fA = (complex*)A; - fC = (complex*)C; -#endif - csyrk(fUplo, fTransA, fN, fK, &fAlpha, fA, fLDA, - &fBeta, fC, fLDC); -#if 0 - for (i = 0; i < rowsC * columnsC; i++) { - C[i] = floatComplex(complex_real(fC[i]), complex_imag(fC[i])); - } - free(fC); - free(fA); -#endif -} - -void -blasZsyrk( - clblasOrder order, - clblasUplo uplo, - clblasTranspose transA, - size_t N, - size_t K, - DoubleComplex alpha, - const DoubleComplex *A, - size_t lda, - DoubleComplex beta, - DoubleComplex *C, - size_t ldc) -{ - char fUplo, fTransA; - int fN, fK; - int fLDA, fLDC; - doublecomplex *fA, *fC; - doublecomplex fAlpha, fBeta; -#if 0 - size_t na, ka, rowsC, columnsC; - size_t i; - - if (transA == clblasNoTrans) { - na = lda; - ka = K; - } - else { - ka = lda; - na = N; - } - rowsC = ldc; - columnsC = N; -#endif - - if (order != clblasColumnMajor) { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - fUplo = encodeUplo(uplo); - fTransA = encodeTranspose(transA); - fN = (int)N; - fK = (int)K; - fLDA = (int)lda; - fLDC = (int)ldc; - - fAlpha = compose_doublecomplex(CREAL(alpha), CIMAG(alpha)); - fBeta = compose_doublecomplex(CREAL(beta), CIMAG(beta)); -#if 0 - fA = (doublecomplex*)calloc(na * ka, sizeof(doublecomplex)); - if (fA == NULL) { - return; - } - fC = (doublecomplex*)calloc(rowsC * columnsC, sizeof(doublecomplex)); - if (fC == NULL) { - free(fA); - return; - } - - for (i = 0; i < na * ka; i++) { - fA[i] = compose_doublecomplex(CREAL(A[i]), CIMAG(A[i])); - } - for (i = 0; i < rowsC * columnsC; i++) { - fC[i] = compose_doublecomplex(CREAL(C[i]), CIMAG(C[i])); - } -#else - fA = (doublecomplex*)A; - fC = (doublecomplex*)C; -#endif - zsyrk(fUplo, fTransA, fN, fK, &fAlpha, fA, fLDA, - &fBeta, fC, fLDC); -#if 0 - for (i = 0; i < rowsC * columnsC; i++) { - C[i] = doubleComplex(doublecomplex_real(fC[i]), doublecomplex_imag(fC[i])); - } - free(fC); - free(fA); -#endif -} - -void -blasStrmv( - clblasOrder order, - clblasUplo uplo, - clblasTranspose transA, - clblasDiag diag, - size_t N, - float *A, - size_t offa, - size_t lda, - float *X, - size_t offx, - int incx) -{ - char fUplo, fDiag, fTrans; - int fN, fLda; - - fUplo = encodeUplo(uplo); - fTrans = encodeTranspose(transA); - fDiag = encodeDiag(diag); - - if (order != clblasColumnMajor) - { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - fN = (int)N; - fLda = (int)lda; - - strmv( fUplo, fTrans, fDiag, fN, A+offa, fLda, X+offx, incx ); -} - -void -blasDtrmv( - clblasOrder order, - clblasUplo uplo, - clblasTranspose transA, - clblasDiag diag, - size_t N, - double *A, - size_t offa, - size_t lda, - double *X, - size_t offx, - int incx) -{ - char fUplo, fDiag, fTrans; - int fN, fLda; - - fUplo = encodeUplo(uplo); - fTrans = encodeTranspose(transA); - fDiag = encodeDiag(diag); - - if (order != clblasColumnMajor) - { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - - fN = (int)N; - fLda = (int)lda; - - dtrmv( fUplo, fTrans, fDiag, fN, A+offa , fLda, X+offx, incx ); -} - -void -blasCtrmv( - clblasOrder order, - clblasUplo uplo, - clblasTranspose transA, - clblasDiag diag, - size_t N, - FloatComplex *A, - size_t offa, - size_t lda, - FloatComplex *X, - size_t offx, - int incx) -{ - char fUplo, fDiag, fTrans; - int fN, fLda; - complex *fA, *fX; - - fUplo = encodeUplo(uplo); - fTrans = encodeTranspose(transA); - fDiag = encodeDiag(diag); - - if (order != clblasColumnMajor) - { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - - fN = (int)N; - fLda = (int)lda; - fA = (complex*) A + offa; - fX = (complex*) X + offx; - - ctrmv( fUplo, fTrans, fDiag, fN, fA, fLda, fX, incx ); -} - -void -blasZtrmv( - clblasOrder order, - clblasUplo uplo, - clblasTranspose transA, - clblasDiag diag, - size_t N, - DoubleComplex *A, - size_t offa, - size_t lda, - DoubleComplex *X, - size_t offx, - int incx) -{ - char fUplo, fDiag, fTrans; - int fN, fLda; - doublecomplex *fA, *fX; - - fUplo = encodeUplo(uplo); - fTrans = encodeTranspose(transA); - fDiag = encodeDiag(diag); - - if (order != clblasColumnMajor) - { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - - fN = (int)N; - fLda = (int)lda; - - fA = (doublecomplex*)A + offa; - fX = (doublecomplex*)X + offx; - ztrmv( fUplo, fTrans, fDiag, fN, fA, fLda, fX, incx ); -} - -//TPMV - -void -blasStpmv( - clblasOrder order, - clblasUplo uplo, - clblasTranspose transA, - clblasDiag diag, - size_t N, - float *AP, - size_t offa, - float *X, - size_t offx, - int incx) -{ - char fUplo, fDiag, fTrans; - int fN; - - fUplo = encodeUplo(uplo); - fTrans = encodeTranspose(transA); - fDiag = encodeDiag(diag); - - if (order != clblasColumnMajor) - { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - fN = (int)N; - - stpmv( fUplo, fTrans, fDiag, fN, AP+offa, X+offx, incx ); -} - -void -blasDtpmv( - clblasOrder order, - clblasUplo uplo, - clblasTranspose transA, - clblasDiag diag, - size_t N, - double *AP, - size_t offa, - double *X, - size_t offx, - int incx) -{ - char fUplo, fDiag, fTrans; - int fN; - - fUplo = encodeUplo(uplo); - fTrans = encodeTranspose(transA); - fDiag = encodeDiag(diag); - - if (order != clblasColumnMajor) - { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - - fN = (int)N; - - dtpmv( fUplo, fTrans, fDiag, fN, AP+offa , X+offx, incx ); -} - -void -blasCtpmv( - clblasOrder order, - clblasUplo uplo, - clblasTranspose transA, - clblasDiag diag, - size_t N, - FloatComplex *AP, - size_t offa, - FloatComplex *X, - size_t offx, - int incx) -{ - char fUplo, fDiag, fTrans; - int fN; - complex *fAP, *fX; - - fUplo = encodeUplo(uplo); - fTrans = encodeTranspose(transA); - fDiag = encodeDiag(diag); - - if (order != clblasColumnMajor) - { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - - fN = (int)N; - fAP = (complex*) AP + offa; - fX = (complex*) X + offx; - - ctpmv( fUplo, fTrans, fDiag, fN, fAP, fX, incx ); -} - -void -blasZtpmv( - clblasOrder order, - clblasUplo uplo, - clblasTranspose transA, - clblasDiag diag, - size_t N, - DoubleComplex *AP, - size_t offa, - DoubleComplex *X, - size_t offx, - int incx) -{ - char fUplo, fDiag, fTrans; - int fN; - doublecomplex *fAP, *fX; - - fUplo = encodeUplo(uplo); - fTrans = encodeTranspose(transA); - fDiag = encodeDiag(diag); - - if (order != clblasColumnMajor) - { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - - fN = (int)N; - - fAP = (doublecomplex*)AP + offa; - fX = (doublecomplex*)X + offx; - ztpmv( fUplo, fTrans, fDiag, fN, fAP, fX, incx ); -} - - -void -blasStrsv( - clblasOrder order, - clblasUplo uplo, - clblasTranspose transA, - clblasDiag diag, - size_t N, - float *A, - size_t offa, - size_t lda, - float *X, - size_t offx, - int incx) -{ - char fUplo, fDiag, fTrans; - int fN, fLda; - - fUplo = encodeUplo(uplo); - fTrans = encodeTranspose(transA); - fDiag = encodeDiag(diag); - - - if (order != clblasColumnMajor) - { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - - fN = (int)N; - fLda = (int)lda; - - strsv( fUplo, fTrans, fDiag, fN, (A+offa), fLda, (X+offx), incx ); -} - -void -blasDtrsv( - clblasOrder order, - clblasUplo uplo, - clblasTranspose transA, - clblasDiag diag, - size_t N, - double *A, - size_t offa, - size_t lda, - double *X, - size_t offx, - int incx) -{ - char fUplo, fDiag, fTrans; - int fN, fLda; - - fUplo = encodeUplo(uplo); - fTrans = encodeTranspose(transA); - fDiag = encodeDiag(diag); - - if (order != clblasColumnMajor) { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - fN = (int)N; - fLda = (int)lda; - - dtrsv( fUplo, fTrans, fDiag, fN, (A+offa), fLda, (X+offx), incx ); -} - -void -blasCtrsv( - clblasOrder order, - clblasUplo uplo, - clblasTranspose transA, - clblasDiag diag, - size_t N, - FloatComplex *A, - size_t offa, - size_t lda, - FloatComplex *X, - size_t offx, - int incx) -{ - char fUplo, fDiag, fTrans; - int fN, fLda; - complex *fA, *fX; - - fUplo = encodeUplo(uplo); - fTrans = encodeTranspose(transA); - fDiag = encodeDiag(diag); - - if (order != clblasColumnMajor) - { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - - - - fN = (int)N; - fLda = (int)lda; - -#if 0 - fA = (complex*)calloc(N * lda, sizeof(complex)); - if (fA == NULL) { - return; - } - fX = (complex*)calloc(1 + ((N-1)* abs(incx)), sizeof(complex)); - if (fX == NULL) { - free(fA); - return; - } - - - for (i = 0; i < (N * lda); i++) { - fA[i] = compose_complex(CREAL(A[i]), CIMAG(A[i])); - } - for (i = 0; i < (1 +((N-1)* abs(incx))); i++) { - fX[i] = compose_complex(CREAL(X[i]), CIMAG(X[i])); - } -#else - fA = (complex*)A; - fX = (complex*)X; -#endif - ctrsv(fUplo, fTrans,fDiag, fN,fA+offa, fLda, - fX+offx, incx); -#if 0 - for (i = 0; i < (1 +((N-1)* abs(incx))); i++) { - X[i] = floatComplex(complex_real(fX[i]), complex_imag(fX[i])); - } - free(fX); - free(fA); -#endif - -} - -void -blasZtrsv( - clblasOrder order, - clblasUplo uplo, - clblasTranspose transA, - clblasDiag diag, - size_t N, - DoubleComplex *A, - size_t offa, - size_t lda, - DoubleComplex *X, - size_t offx, - int incx) -{ - char fUplo, fDiag, fTrans; - int fN, fLda; - doublecomplex *fA, *fX; - - fUplo = encodeUplo(uplo); - fTrans = encodeTranspose(transA); - fDiag = encodeDiag(diag); - - if (order != clblasColumnMajor) { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - fN = (int)N; - fLda = (int)lda; -#if 0 - fA = (doublecomplex*)calloc(N * lda, sizeof(doublecomplex)); - if (fA == NULL) { - return; - } - fX = (doublecomplex*)calloc((1 + ((N-1) * abs(incx))), sizeof(doublecomplex)); - if (fX == NULL) { - free(fX); - return; - } - - for (i = 0; i < (N * lda); i++) { - fA[i] = compose_doublecomplex(CREAL(A[i]), CIMAG(A[i])); - } - for (i = 0; i < (1 + ((N-1) * abs(incx))); i++) { - fX[i] = compose_doublecomplex(CREAL(X[i]), CIMAG(X[i])); - } -#else - fA = (doublecomplex*)A; - fX = (doublecomplex*)X; -#endif - ztrsv( fUplo, fTrans, fDiag, fN, fA + offa, fLda, fX + offx, incx ); -#if 0 - for (i = 0; i < ((1 + ((N-1) * abs(incx))); i++) { - X[i] = doubleComplex(doublecomplex_real(fX[i]), doublecomplex_imag(fX[i])); - } - free(fX); - free(fA); -#endif - -} - -void -blasStpsv( - clblasOrder order, - clblasUplo uplo, - clblasTranspose transA, - clblasDiag diag, - size_t N, - float *A, - size_t offa, - float *X, - size_t offx, - int incx) -{ - char fUplo, fDiag, fTrans; - int fN; - - fUplo = encodeUplo(uplo); - fTrans = encodeTranspose(transA); - fDiag = encodeDiag(diag); - - - if (order != clblasColumnMajor) - { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - fN = (int)N; - stpsv( fUplo, fTrans, fDiag, fN, (A+offa), (X+offx), incx ); -} - -void -blasDtpsv( - clblasOrder order, - clblasUplo uplo, - clblasTranspose transA, - clblasDiag diag, - size_t N, - double *A, - size_t offa, - double *X, - size_t offx, - int incx) -{ - char fUplo, fDiag, fTrans; - int fN; - - fUplo = encodeUplo(uplo); - fTrans = encodeTranspose(transA); - fDiag = encodeDiag(diag); - - - if (order != clblasColumnMajor) - { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - fN = (int)N; - dtpsv( fUplo, fTrans, fDiag, fN, (A+offa), (X+offx), incx ); -} - -void -blasCtpsv( - clblasOrder order, - clblasUplo uplo, - clblasTranspose transA, - clblasDiag diag, - size_t N, - FloatComplex *A, - size_t offa, - FloatComplex *X, - size_t offx, - int incx) -{ - char fUplo, fDiag, fTrans; - int fN; - complex *fA, *fX; - - fUplo = encodeUplo(uplo); - fTrans = encodeTranspose(transA); - fDiag = encodeDiag(diag); - - if (order != clblasColumnMajor) - { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - fN = (int)N; - - fA = (complex*)A; - fX = (complex*)X; - - ctpsv(fUplo, fTrans,fDiag, fN,fA+offa, fX+offx, incx); -} - -void -blasZtpsv( - clblasOrder order, - clblasUplo uplo, - clblasTranspose transA, - clblasDiag diag, - size_t N, - DoubleComplex *A, - size_t offa, - DoubleComplex *X, - size_t offx, - int incx) -{ - char fUplo, fDiag, fTrans; - int fN; - doublecomplex *fA, *fX; - - fUplo = encodeUplo(uplo); - fTrans = encodeTranspose(transA); - fDiag = encodeDiag(diag); - - if (order != clblasColumnMajor) - { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - fN = (int)N; - - fA = (doublecomplex*)A; - fX = (doublecomplex*)X; - - ztpsv(fUplo, fTrans,fDiag, fN,fA+offa, fX+offx, incx); -} - - -void - blasSsymm( - clblasOrder order, - clblasSide side, - clblasUplo uplo, - size_t M, - size_t N, - float alpha, - float* A, - size_t offa, - size_t lda, - float* B, - size_t offb, - size_t ldb, - float beta, - float* C, - size_t offc, - size_t ldc) - { - - char fSide, fUplo; - int fM, fN, fLda, fLdb, fLdc; - - fSide = encodeSide( side ); - fUplo = encodeUplo( uplo ); - - fM = (int) M; - fN = (int) N; - fLda= (int) lda; - fLdb = (int) ldb; - fLdc = (int) ldc; - - if (order != clblasColumnMajor) { - - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - - } - - ssymm( fSide, fUplo, fM, fN, alpha, (A+offa), fLda, (B+offb), fLdb, beta, (C+offc), fLdc ); - - } - -void - blasDsymm( - clblasOrder order, - clblasSide side, - clblasUplo uplo, - size_t M, - size_t N, - double alpha, - double* A, - size_t offa, - size_t lda, - double* B, - size_t offb, - size_t ldb, - double beta, - double* C, - size_t offc, - size_t ldc) - { - - char fSide, fUplo; - int fM, fN, fLda, fLdb, fLdc; - - fSide = encodeSide( side ); - fUplo = encodeUplo( uplo ); - - fM = (int) M; - fN = (int) N; - fLda= (int) lda; - fLdb = (int) ldb; - fLdc = (int) ldc; - - if (order != clblasColumnMajor) { - - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - - } - - dsymm( fSide, fUplo, fM, fN, alpha, (A+offa), fLda, (B+offb), fLdb, beta, (C+offc), fLdc ); - - } - -void - blasCsymm( - clblasOrder order, - clblasSide side, - clblasUplo uplo, - size_t M, - size_t N, - FloatComplex alpha, - FloatComplex* A, - size_t offa, - size_t lda, - FloatComplex* B, - size_t offb, - size_t ldb, - FloatComplex beta, - FloatComplex* C, - size_t offc, - size_t ldc) - { - - char fSide, fUplo; - int fM, fN, fLda, fLdb, fLdc; - complex *fA, *fB, *fC, fAlpha, fBeta; - - fSide = encodeSide( side ); - fUplo = encodeUplo( uplo ); - - fM = (int) M; - fN = (int) N; - fLda= (int) lda; - fLdb = (int) ldb; - fLdc = (int) ldc; - fA = (complex*) A; - fB = (complex*) B; - fC = (complex*) C; - fAlpha = compose_complex(CREAL(alpha), CIMAG(alpha)); - fBeta = compose_complex(CREAL(beta), CIMAG(beta)); - - if (order != clblasColumnMajor) { - - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - - } - - csymm( fSide, fUplo, fM, fN, &fAlpha, (fA+offa), fLda, (fB+offb), fLdb, &fBeta, (fC+offc), fLdc ); - - } - -void - blasZsymm( - clblasOrder order, - clblasSide side, - clblasUplo uplo, - size_t M, - size_t N, - DoubleComplex alpha, - DoubleComplex* A, - size_t offa, - size_t lda, - DoubleComplex* B, - size_t offb, - size_t ldb, - DoubleComplex beta, - DoubleComplex* C, - size_t offc, - size_t ldc) - { - - char fSide, fUplo; - int fM, fN, fLda, fLdb, fLdc; - doublecomplex *fA, *fB, *fC, fAlpha, fBeta; - - fSide = encodeSide( side ); - fUplo = encodeUplo( uplo ); - - fM = (int) M; - fN = (int) N; - fLda= (int) lda; - fLdb = (int) ldb; - fLdc = (int) ldc; - fA =(doublecomplex*) A; - fB =(doublecomplex*) B; - fC =(doublecomplex*) C; - - fAlpha = compose_doublecomplex(CREAL(alpha), CIMAG(alpha)); - fBeta = compose_doublecomplex(CREAL(beta), CIMAG(beta)); - - if (order != clblasColumnMajor) { - - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - - } - - zsymm( fSide, fUplo, fM, fN, &fAlpha, (fA+offa), fLda, (fB+offb), fLdb, &fBeta, (fC+offc), fLdc ); - - } - - -void - blasSger( - clblasOrder order, - size_t M, - size_t N, - float alpha, - float* x, - size_t offx, - int incx, - float* y, - size_t offy, - int incy, - float* A, - size_t offa, - size_t lda) - { - - int fM, fN, fLda; - - fM = (int) M; - fN = (int) N; - fLda= (int) lda; - - if (order != clblasColumnMajor) { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - sger( fM, fN, alpha, (x+offx), incx, (y+offy), incy, (A+offa), fLda ); - - } - - -void - blasDger( - clblasOrder order, - size_t M, - size_t N, - double alpha, - double* x, - size_t offx, - int incx, - double* y, - size_t offy, - int incy, - double* A, - size_t offa, - size_t lda) - { - - int fM, fN, fLda; - fM = (int) M; - fN = (int) N; - fLda= (int) lda; - - if (order != clblasColumnMajor) { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - dger( fM, fN, alpha, (x+offx), incx, (y+offy), incy, (A+offa), fLda ); - - } - - -void - blasCgeru( - clblasOrder order, - size_t M, - size_t N, - FloatComplex alpha, - FloatComplex* x, - size_t offx, - int incx, - FloatComplex* y, - size_t offy, - int incy, - FloatComplex* A, - size_t offa, - size_t lda) - { - - int fM, fN, fLda; - complex *fA, *fx, *fy, fAlpha; - fM = (int) M; - fN = (int) N; - fLda= (int) lda; - fA = (complex*) A; - fx = (complex*) x; - fy = (complex*) y; - fAlpha = compose_complex(CREAL(alpha), CIMAG(alpha)); - - if (order != clblasColumnMajor) { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - cgeru( fM, fN, &fAlpha, (fx+offx), incx, (fy+offy), incy, (fA+offa), fLda ); - - } - - -void - blasZgeru( - clblasOrder order, - size_t M, - size_t N, - DoubleComplex alpha, - DoubleComplex* x, - size_t offx, - int incx, - DoubleComplex* y, - size_t offy, - int incy, - DoubleComplex* A, - size_t offa, - size_t lda) - { - - int fM, fN, fLda; - doublecomplex *fA, *fx, *fy, fAlpha; - fM = (int) M; - fN = (int) N; - fLda= (int) lda; - fA =(doublecomplex*) A; - fx =(doublecomplex*) x; - fy =(doublecomplex*) y; - - fAlpha = compose_doublecomplex(CREAL(alpha), CIMAG(alpha)); - if (order != clblasColumnMajor) { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - zgeru( fM, fN, &fAlpha, (fx+offx), incx, (fy+offy), incy, (fA+offa), fLda ); - } - - -void - blasCgerc( - clblasOrder order, - size_t M, - size_t N, - FloatComplex alpha, - FloatComplex* x, - size_t offx, - int incx, - FloatComplex* y, - size_t offy, - int incy, - FloatComplex* A, - size_t offa, - size_t lda) - { - - int fM, fN, fLda; - complex *fA, *fx, *fy, fAlpha; - fM = (int) M; - fN = (int) N; - fLda= (int) lda; - fA = (complex*) A; - fx = (complex*) x; - fy = (complex*) y; - fAlpha = compose_complex(CREAL(alpha), CIMAG(alpha)); - - if (order != clblasColumnMajor) { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - cgerc( fM, fN, &fAlpha, (fx+offx), incx, (fy+offy), incy, (fA+offa), fLda ); - - } - -void - blasZgerc( - clblasOrder order, - size_t M, - size_t N, - DoubleComplex alpha, - DoubleComplex* x, - size_t offx, - int incx, - DoubleComplex* y, - size_t offy, - int incy, - DoubleComplex* A, - size_t offa, - size_t lda) - { - - int fM, fN, fLda; - doublecomplex *fA, *fx, *fy, fAlpha; - fM = (int) M; - fN = (int) N; - fLda= (int) lda; - fA =(doublecomplex*) A; - fx =(doublecomplex*) x; - fy =(doublecomplex*) y; - - fAlpha = compose_doublecomplex(CREAL(alpha), CIMAG(alpha)); - if (order != clblasColumnMajor) { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - zgerc( fM, fN, &fAlpha, (fx+offx), incx, (fy+offy), incy, (fA+offa), fLda ); - - } - -void - blasSsyr( - clblasOrder order, - clblasUplo uplo, - size_t N, - float alpha, - float* X, - size_t offx, - int incx, - float* A, - size_t offa, - size_t lda) - { - char fUplo; - int fN, fLda, fIncx; - float *fA, fAlpha, *fX; - - fUplo = encodeUplo( uplo ); - fN = (int) N; - fLda = (int) lda; - fIncx = (int) incx; - fA = (float*) A; - fX = (float*) X; - fAlpha = alpha; - - if (order != clblasColumnMajor) - { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - ssyr(fUplo, fN, fAlpha, (fX + offx), fIncx, (fA + offa), fLda); - } - - -void - blasDsyr( - clblasOrder order, - clblasUplo uplo, - size_t N, - double alpha, - double* X, - size_t offx, - int incx, - double* A, - size_t offa, - size_t lda) - { - char fUplo; - int fN, fLda, fIncx; - double *fA, fAlpha, *fX; - - fUplo = encodeUplo( uplo ); - fN = (int) N; - fLda = (int) lda; - fIncx = (int) incx; - fA = (double*) A; - fX = (double*) X; - fAlpha = alpha; - - if (order != clblasColumnMajor) - { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - dsyr(fUplo, fN, fAlpha, (fX + offx), fIncx, (fA + offa), fLda); - - -} - -//SPR - -void - blasSspr( - clblasOrder order, - clblasUplo uplo, - size_t N, - float alpha, - float* X, - size_t offx, - int incx, - float* AP, - size_t offa) - { - char fUplo; - int fN, fIncx; - float *fAP, fAlpha, *fX; - - fUplo = encodeUplo( uplo ); - fN = (int) N; - fIncx = (int) incx; - fAP = (float*) AP; - fX = (float*) X; - - fAlpha = alpha; - - if (order != clblasColumnMajor) - { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - sspr(fUplo, fN, fAlpha, (fX + offx), fIncx, (fAP + offa)); - } - - -void - blasDspr( - clblasOrder order, - clblasUplo uplo, - size_t N, - double alpha, - double* X, - size_t offx, - int incx, - double* AP, - size_t offa) - { - char fUplo; - int fN, fIncx; - double *fAP, fAlpha, *fX; - - fUplo = encodeUplo( uplo ); - - fN = (int) N; - fIncx = (int) incx; - fAP = (double*) AP; - fX = (double*) X; - fAlpha = alpha; - - if (order != clblasColumnMajor) - { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - dspr(fUplo, fN, fAlpha, (fX + offx), fIncx, (fAP + offa)); - - -} - - -void - blasCher( - clblasOrder order, - clblasUplo uplo, - size_t N, - float alpha, - FloatComplex* x, - size_t offx, - int incx, - FloatComplex* A, - size_t offa, - size_t lda) - { - char fUplo; - int fN, fLda; - complex *fA, *fx ; - fUplo = encodeUplo( uplo ); - fN = (int) N; - fLda= (int) lda; - fA = (complex*) A; - fx = (complex*) x; - - if (order != clblasColumnMajor) { - - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - cher( fUplo, fN, alpha, (fx+offx), incx, (fA+offa), fLda ); - - } - - -void - blasZher( - clblasOrder order, - clblasUplo uplo, - size_t N, - double alpha, - DoubleComplex* x, - size_t offx, - int incx, - DoubleComplex* A, - size_t offa, - size_t lda) - { - char fUplo; - int fN, fLda; - doublecomplex *fA, *fx; - fUplo = encodeUplo( uplo ); - fN = (int) N; - fLda= (int) lda; - fA =(doublecomplex*) A; - fx =(doublecomplex*) x; - - if (order != clblasColumnMajor) { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - zher( fUplo, fN, alpha, (fx+offx), incx, (fA+offa), fLda ); - } - -void - blasSsyr2( - clblasOrder order, - clblasUplo uplo, - size_t N, - float alpha, - float* X, - size_t offx, - int incx, - float* Y, - size_t offy, - int incy, - float* A, - size_t offa, - size_t lda) - { - char fUplo; - int fN, fLda, fIncx, fIncy; - float *fA, fAlpha, *fX, *fY; - - fUplo = encodeUplo( uplo ); - - fN = (int) N; - fLda = (int) lda; - fIncx = (int) incx; - fIncy = (int) incy; - - fA = (float*) A; - fX = (float*) X; - fY = (float*) Y; - - fAlpha = alpha; - - if (order != clblasColumnMajor) - { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - ssyr2(fUplo, fN, fAlpha, (fX + offx), fIncx, (fY + offy), fIncy, (fA + offa), fLda); - } - - -void - blasDsyr2( - clblasOrder order, - clblasUplo uplo, - size_t N, - double alpha, - double* X, - size_t offx, - int incx, - double* Y, - size_t offy, - int incy, - double* A, - size_t offa, - size_t lda) - { - char fUplo; - int fN, fLda, fIncx, fIncy; - double *fA, fAlpha, *fX, *fY; - - fUplo = encodeUplo( uplo ); - - fN = (int) N; - fLda = (int) lda; - fIncx = (int) incx; - fIncy = (int) incy; - - fA = (double*) A; - fX = (double*) X; - fY = (double*) Y; - - fAlpha = alpha; - - if (order != clblasColumnMajor) - { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - dsyr2(fUplo, fN, fAlpha, (fX + offx), fIncx, (fY + offy), fIncy, (fA + offa), fLda); - } - -//HER2 -void - blasCher2( - clblasOrder order, - clblasUplo uplo, - size_t N, - FloatComplex alpha, - FloatComplex* X, - size_t offx, - int incx, - FloatComplex* Y, - size_t offy, - int incy, - FloatComplex* A, - size_t offa, - size_t lda) - { - char fUplo; - int fN, fLda; - complex *fA, fAlpha, *fX, *fY; - fUplo = encodeUplo( uplo ); - fN = (int) N; - fLda = (int) lda; - fA = (complex*) A; - fX = (complex*) X; - fY = (complex*) Y; - - fAlpha = compose_complex(CREAL(alpha), CIMAG(alpha)); - - if (order != clblasColumnMajor) - { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - cher2(fUplo, fN, &fAlpha, (fX + offx), incx, (fY + offy), incy, (fA + offa), fLda); - } - -void - blasZher2( - clblasOrder order, - clblasUplo uplo, - size_t N, - DoubleComplex alpha, - DoubleComplex* X, - size_t offx, - int incx, - DoubleComplex* Y, - size_t offy, - int incy, - DoubleComplex* A, - size_t offa, - size_t lda) - { - char fUplo; - int fN, fLda ; - doublecomplex *fA, fAlpha, *fX, *fY; - fUplo = encodeUplo( uplo ); - fN = (int) N; - fLda = (int) lda; - fA = (doublecomplex*) A; - fX = (doublecomplex*) X; - fY = (doublecomplex*) Y; - - fAlpha = compose_doublecomplex(CREAL(alpha), CIMAG(alpha)); - - if (order != clblasColumnMajor) - { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - zher2(fUplo, fN, &fAlpha, (fX + offx), incx, (fY + offy), incy, (fA + offa), fLda); - } - - - -void - blasChemv( - clblasOrder order, - clblasUplo uplo, - size_t N, - FloatComplex alpha, - FloatComplex* A, - size_t offa, - size_t lda, - FloatComplex* X, - size_t offx, - int incx, - FloatComplex beta, - FloatComplex* Y, - size_t offy, - int incy) - { - char fUplo; - int fN, fLda, fIncx, fIncy; - complex *fA, fAlpha, fBeta, *fX, *fY; - - fUplo = encodeUplo( uplo ); - - fN = (int) N; - fLda = (int) lda; - fIncx = (int) incx; - fIncy = (int) incy; - - fA = (complex*) A; - fX = (complex*) X; - fY = (complex*) Y; - - fAlpha = compose_complex(CREAL(alpha), CIMAG(alpha)); - fBeta = compose_complex(CREAL(beta), CIMAG(beta)); - if (order != clblasColumnMajor) - { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - chemv(fUplo, fN, &fAlpha, (fA + offa), fLda, (fX + offx), fIncx, &fBeta, (fY + offy), fIncy); - } - -void - blasZhemv( - clblasOrder order, - clblasUplo uplo, - size_t N, - DoubleComplex alpha, - DoubleComplex* A, - size_t offa, - size_t lda, - DoubleComplex* X, - size_t offx, - int incx, - DoubleComplex beta, - DoubleComplex* Y, - size_t offy, - int incy) - { - char fUplo; - int fN, fLda, fIncx, fIncy; - doublecomplex *fA, fAlpha, fBeta, *fX, *fY; - - fUplo = encodeUplo( uplo ); - - fN = (int) N; - fLda = (int) lda; - fIncx = (int) incx; - fIncy = (int) incy; - - fA = (doublecomplex*) A; - fX = (doublecomplex*) X; - fY = (doublecomplex*) Y; - - fAlpha = compose_doublecomplex(CREAL(alpha), CIMAG(alpha)); - fBeta = compose_doublecomplex(CREAL(beta), CIMAG(beta)); - - if (order != clblasColumnMajor) - { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - zhemv(fUplo, fN, &fAlpha, (fA + offa), fLda, (fX + offx), fIncx, &fBeta, (fY + offy), fIncy); - } - -//HEMM -void - blasChemm( - clblasOrder order, - clblasSide side, - clblasUplo uplo, - size_t M, - size_t N, - FloatComplex alpha, - FloatComplex* A, - size_t offa, - size_t lda, - FloatComplex* B, - size_t offb, - size_t ldb, - FloatComplex beta, - FloatComplex* C, - size_t offc, - size_t ldc) - { - - char fSide, fUplo; - int fM, fN, fLda, fLdb, fLdc; - complex *fA, *fB, *fC, fAlpha, fBeta; - - fSide = encodeSide( side ); - fUplo = encodeUplo( uplo ); - - fM = (int) M; - fN = (int) N; - fLda= (int) lda; - fLdb = (int) ldb; - fLdc = (int) ldc; - fA = (complex*) A; - fB = (complex*) B; - fC = (complex*) C; - fAlpha = compose_complex(CREAL(alpha), CIMAG(alpha)); - fBeta = compose_complex(CREAL(beta), CIMAG(beta)); - - if (order != clblasColumnMajor) { - - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - chemm( fSide, fUplo, fM, fN, &fAlpha, (fA+offa), fLda, (fB+offb), fLdb, &fBeta, (fC+offc), fLdc ); - - } - -void - blasZhemm( - clblasOrder order, - clblasSide side, - clblasUplo uplo, - size_t M, - size_t N, - DoubleComplex alpha, - DoubleComplex* A, - size_t offa, - size_t lda, - DoubleComplex* B, - size_t offb, - size_t ldb, - DoubleComplex beta, - DoubleComplex* C, - size_t offc, - size_t ldc) - { - - char fSide, fUplo; - int fM, fN, fLda, fLdb, fLdc; - doublecomplex *fA, *fB, *fC, fAlpha, fBeta; - - fSide = encodeSide( side ); - fUplo = encodeUplo( uplo ); - - fM = (int) M; - fN = (int) N; - fLda= (int) lda; - fLdb = (int) ldb; - fLdc = (int) ldc; - fA =(doublecomplex*) A; - fB =(doublecomplex*) B; - fC =(doublecomplex*) C; - - fAlpha = compose_doublecomplex(CREAL(alpha), CIMAG(alpha)); - fBeta = compose_doublecomplex(CREAL(beta), CIMAG(beta)); - - if (order != clblasColumnMajor) { - - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - - } - - zhemm( fSide, fUplo, fM, fN, &fAlpha, (fA+offa), fLda, (fB+offb), fLdb, &fBeta, (fC+offc), fLdc ); - - } - - -void -blasCherk( - clblasOrder order, - clblasUplo uplo, - clblasTranspose transA, - size_t N, - size_t K, - float alpha, - const FloatComplex *A, - size_t lda, - float beta, - FloatComplex *C, - size_t ldc) -{ - char fUplo, fTransA; - int fN, fK; - int fLDA, fLDC; - complex *fA, *fC; - - if (order != clblasColumnMajor) { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - fUplo = encodeUplo(uplo); - fTransA = encodeTranspose(transA); - fN = (int)N; - fK = (int)K; - fLDA = (int)lda; - fLDC = (int)ldc; - - fA = (complex*)A; - fC = (complex*)C; - - cherk(fUplo, fTransA, fN, fK, alpha, fA, fLDA, beta, fC, fLDC); -} - -void -blasZherk( - clblasOrder order, - clblasUplo uplo, - clblasTranspose transA, - size_t N, - size_t K, - double alpha, - const DoubleComplex *A, - size_t lda, - double beta, - DoubleComplex *C, - size_t ldc) -{ - char fUplo, fTransA; - int fN, fK; - int fLDA, fLDC; - doublecomplex *fA, *fC; - - if (order != clblasColumnMajor) { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - fUplo = encodeUplo(uplo); - fTransA = encodeTranspose(transA); - fN = (int)N; - fK = (int)K; - fLDA = (int)lda; - fLDC = (int)ldc; - - fA = (doublecomplex*)A; - fC = (doublecomplex*)C; - - zherk(fUplo, fTransA, fN, fK, alpha, fA, fLDA, beta, fC, fLDC); -} - - -void -blasSspmv( - clblasOrder order, - clblasUplo uplo, - size_t N, - float alpha, - const float *A, - size_t offa, - const float *X, - size_t offx, - int incx, - float beta, - float *Y, - size_t offy, - int incy) -{ - char fUplo; - int fN; - - if (order != clblasColumnMajor) { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - fUplo = encodeUplo(uplo); - fN = (int)N; - - sspmv(fUplo, fN, alpha, (float*)(A+offa), (float*)(X+offx), incx, beta, (Y+offy), incy); -} - -void -blasDspmv( - clblasOrder order, - clblasUplo uplo, - size_t N, - double alpha, - const double *A, - size_t offa, - const double *X, - size_t offx, - int incx, - double beta, - double *Y, - size_t offy, - int incy) -{ - char fUplo; - int fN; - - if (order != clblasColumnMajor) { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - fUplo = encodeUplo(uplo); - fN = (int)N; - - dspmv(fUplo, fN, alpha, (double*)(A+offa),(double*)(X+offx), incx, beta, (Y+offy), incy); -} - -void - blasChpmv( - clblasOrder order, - clblasUplo uplo, - size_t N, - FloatComplex alpha, - FloatComplex* A, - size_t offa, - FloatComplex* X, - size_t offx, - int incx, - FloatComplex beta, - FloatComplex* Y, - size_t offy, - int incy) - { - char fUplo; - int fN, fIncx, fIncy; - complex *fA, fAlpha, fBeta, *fX, *fY; - - fUplo = encodeUplo( uplo ); - - fN = (int) N; - fIncx = (int) incx; - fIncy = (int) incy; - - fA = (complex*) A; - fX = (complex*) X; - fY = (complex*) Y; - - fAlpha = compose_complex(CREAL(alpha), CIMAG(alpha)); - fBeta = compose_complex(CREAL(beta), CIMAG(beta)); - if (order != clblasColumnMajor) - { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - chpmv(fUplo, fN, &fAlpha, (fA + offa), (fX + offx), fIncx, &fBeta, (fY + offy), fIncy); - } - -void - blasZhpmv( - clblasOrder order, - clblasUplo uplo, - size_t N, - DoubleComplex alpha, - DoubleComplex* A, - size_t offa, - DoubleComplex* X, - size_t offx, - int incx, - DoubleComplex beta, - DoubleComplex* Y, - size_t offy, - int incy) - { - char fUplo; - int fN, fIncx, fIncy; - doublecomplex *fA, fAlpha, fBeta, *fX, *fY; - - fUplo = encodeUplo( uplo ); - - fN = (int) N; - fIncx = (int) incx; - fIncy = (int) incy; - - fA = (doublecomplex*) A; - fX = (doublecomplex*) X; - fY = (doublecomplex*) Y; - - fAlpha = compose_doublecomplex(CREAL(alpha), CIMAG(alpha)); - fBeta = compose_doublecomplex(CREAL(beta), CIMAG(beta)); - - if (order != clblasColumnMajor) - { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - zhpmv(fUplo, fN, &fAlpha, (fA + offa), (fX + offx), fIncx, &fBeta, (fY + offy), fIncy); - } - -void - blasChpr( - clblasOrder order, - clblasUplo uplo, - size_t N, - float alpha, - FloatComplex* x, - size_t offx, - int incx, - FloatComplex* A, - size_t offa) - { - char fUplo; - int fN; - complex *fA, *fx ; - fUplo = encodeUplo( uplo ); - fN = (int) N; - fA = (complex*) A; - fx = (complex*) x; - - if (order != clblasColumnMajor) { - - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - chpr( fUplo, fN, alpha, (fx+offx), incx, (fA+offa)); - - } - - -void - blasZhpr( - clblasOrder order, - clblasUplo uplo, - size_t N, - double alpha, - DoubleComplex* x, - size_t offx, - int incx, - DoubleComplex* A, - size_t offa) - { - char fUplo; - int fN; - doublecomplex *fA, *fx; - fUplo = encodeUplo( uplo ); - fN = (int) N; - fA =(doublecomplex*) A; - fx =(doublecomplex*) x; - - if (order != clblasColumnMajor) { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - zhpr( fUplo, fN, alpha, (fx+offx), incx, (fA+offa) ); - } - -void - blasSspr2( - clblasOrder order, - clblasUplo uplo, - size_t N, - float alpha, - float* X, - size_t offx, - int incx, - float* Y, - size_t offy, - int incy, - float* A, - size_t offa) - { - char fUplo; - int fN, fIncx, fIncy; - float *fA, fAlpha, *fX, *fY; - - fUplo = encodeUplo( uplo ); - - fN = (int) N; - fIncx = (int) incx; - fIncy = (int) incy; - - fA = (float*) A; - fX = (float*) X; - fY = (float*) Y; - - fAlpha = alpha; - - if (order != clblasColumnMajor) - { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - sspr2(fUplo, fN, fAlpha, (fX + offx), fIncx, (fY + offy), fIncy, (fA + offa)); - } - - -void - blasDspr2( - clblasOrder order, - clblasUplo uplo, - size_t N, - double alpha, - double* X, - size_t offx, - int incx, - double* Y, - size_t offy, - int incy, - double* A, - size_t offa) - { - char fUplo; - int fN, fIncx, fIncy; - double *fA, fAlpha, *fX, *fY; - - fUplo = encodeUplo( uplo ); - - fN = (int) N; - fIncx = (int) incx; - fIncy = (int) incy; - - fA = (double*) A; - fX = (double*) X; - fY = (double*) Y; - - fAlpha = alpha; - - if (order != clblasColumnMajor) - { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - dspr2(fUplo, fN, fAlpha, (fX + offx), fIncx, (fY + offy), fIncy, (fA + offa)); - } - -void - blasChpr2( - clblasOrder order, - clblasUplo uplo, - size_t N, - FloatComplex alpha, - FloatComplex* X, - size_t offx, - int incx, - FloatComplex* Y, - size_t offy, - int incy, - FloatComplex* A, - size_t offa) - { - char fUplo; - int fN; - complex *fA, fAlpha, *fX, *fY; - fUplo = encodeUplo( uplo ); - fN = (int) N; - fA = (complex*) A; - fX = (complex*) X; - fY = (complex*) Y; - - fAlpha = compose_complex(CREAL(alpha), CIMAG(alpha)); - - if (order != clblasColumnMajor) - { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - chpr2(fUplo, fN, &fAlpha, (fX + offx), incx, (fY + offy), incy, (fA + offa)); - } - -void - blasZhpr2( - clblasOrder order, - clblasUplo uplo, - size_t N, - DoubleComplex alpha, - DoubleComplex* X, - size_t offx, - int incx, - DoubleComplex* Y, - size_t offy, - int incy, - DoubleComplex* A, - size_t offa) - { - char fUplo; - int fN ; - doublecomplex *fA, fAlpha, *fX, *fY; - fUplo = encodeUplo( uplo ); - fN = (int) N; - fA = (doublecomplex*) A; - fX = (doublecomplex*) X; - fY = (doublecomplex*) Y; - - fAlpha = compose_doublecomplex(CREAL(alpha), CIMAG(alpha)); - - if (order != clblasColumnMajor) - { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - zhpr2(fUplo, fN, &fAlpha, (fX + offx), incx, (fY + offy), incy, (fA + offa)); - } - -void -blasSgbmv( - clblasOrder order, - clblasTranspose trans, - size_t M, - size_t N, - size_t KL, - size_t KU, - float alpha, - float *A, - size_t offa, - size_t lda, - float *X, - size_t offx, - int incx, - float beta, - float *Y, - size_t offy, - int incy) - { - char fTrans; - int fN, fM, fKL, fKU, fLda; - - fTrans = encodeTranspose(trans); - fN = (int) N; - fM = (int) M; - fKL = (int) KL; - fKU = (int) KU; - fLda = (int) lda; - - if (order != clblasColumnMajor) - { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - sgbmv(fTrans, fM, fN, fKL, fKU, alpha, (A+offa), fLda, (X+offx), incx, beta, (Y+offy), incy); - } - -void -blasDgbmv( - clblasOrder order, - clblasTranspose trans, - size_t M, - size_t N, - size_t KL, - size_t KU, - double alpha, - double *A, - size_t offa, - size_t lda, - double *X, - size_t offx, - int incx, - double beta, - double *Y, - size_t offy, - int incy) - { - char fTrans; - int fN, fM, fKL, fKU, fLda; - - fTrans = encodeTranspose(trans); - fN = (int) N; - fM = (int) M; - fKL = (int) KL; - fKU = (int) KU; - fLda = (int) lda; - - if (order != clblasColumnMajor) - { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - dgbmv(fTrans, fM, fN, fKL, fKU, alpha, (A+offa), fLda, (X+offx), incx, beta, (Y+offy), incy); - } - -void -blasCgbmv( - clblasOrder order, - clblasTranspose trans, - size_t M, - size_t N, - size_t KL, - size_t KU, - FloatComplex alpha, - FloatComplex *A, - size_t offa, - size_t lda, - FloatComplex *X, - size_t offx, - int incx, - FloatComplex beta, - FloatComplex *Y, - size_t offy, - int incy) - { - char fTrans; - int fN, fM, fKL, fKU, fLda; - complex *fA, *fX, *fY, fAlpha, fBeta; - - fTrans = encodeTranspose(trans); - fN = (int) N; - fM = (int) M; - fKL = (int) KL; - fKU = (int) KU; - fLda = (int) lda; - fA = (complex*) (A + offa); - fX = (complex*) (X + offx); - fY = (complex*) (Y + offy); - fAlpha = compose_complex(CREAL(alpha), CIMAG(alpha)); - fBeta = compose_complex(CREAL(beta), CIMAG(beta)); - - if (order != clblasColumnMajor) - { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - cgbmv(fTrans, fM, fN, fKL, fKU, &fAlpha, fA, fLda, fX, incx, &fBeta, fY, incy); - } - -void -blasZgbmv( - clblasOrder order, - clblasTranspose trans, - size_t M, - size_t N, - size_t KL, - size_t KU, - DoubleComplex alpha, - DoubleComplex *A, - size_t offa, - size_t lda, - DoubleComplex *X, - size_t offx, - int incx, - DoubleComplex beta, - DoubleComplex *Y, - size_t offy, - int incy) - { - char fTrans; - int fN, fM, fKL, fKU, fLda; - doublecomplex *fA, *fX, *fY, fAlpha, fBeta; - - fTrans = encodeTranspose(trans); - fN = (int) N; - fM = (int) M; - fKL = (int) KL; - fKU = (int) KU; - fLda = (int) lda; - fA = (doublecomplex*) (A + offa); - fX = (doublecomplex*) (X + offx); - fY = (doublecomplex*) (Y + offy); - fAlpha = compose_doublecomplex(CREAL(alpha), CIMAG(alpha)); - fBeta = compose_doublecomplex(CREAL(beta), CIMAG(beta)); - - if (order != clblasColumnMajor) - { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - zgbmv(fTrans, fM, fN, fKL, fKU, &fAlpha, fA, fLda, fX, incx, &fBeta, fY, incy); - } - - -//TBMV - -void -blasStbmv( - clblasOrder order, - clblasUplo uplo, - clblasTranspose trans, - clblasDiag diag, - size_t N, - size_t K, - float *A, - size_t offa, - size_t lda, - float *X, - size_t offx, - int incx) - { - char fTrans, fUplo, fDiag; - int fN, fK, fLda; - - fTrans = encodeTranspose(trans); - fUplo = encodeUplo(uplo); - fDiag = encodeDiag(diag); - fN = (int) N; - fK = (int) K; - fLda = (int) lda; - - if (order != clblasColumnMajor) - { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - stbmv(fUplo, fTrans, fDiag, fN, fK, (A+offa), fLda, (X+offx), incx ); - } - -void -blasDtbmv( - clblasOrder order, - clblasUplo uplo, - clblasTranspose trans, - clblasDiag diag, - size_t N, - size_t K, - double *A, - size_t offa, - size_t lda, - double *X, - size_t offx, - int incx) - { - char fTrans, fUplo, fDiag; - int fN, fK, fLda; - - fTrans = encodeTranspose(trans); - fUplo = encodeUplo(uplo); - fDiag = encodeDiag(diag); - fN = (int) N; - fK = (int) K; - fLda = (int) lda; - - if (order != clblasColumnMajor) - { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - dtbmv(fUplo, fTrans, fDiag, fN, fK, (A+offa), fLda, (X+offx), incx ); - } -void -blasCtbmv( - clblasOrder order, - clblasUplo uplo, - clblasTranspose trans, - clblasDiag diag, - size_t N, - size_t K, - FloatComplex *A, - size_t offa, - size_t lda, - FloatComplex *X, - size_t offx, - int incx) - { - char fTrans, fUplo, fDiag; - int fN, fK, fLda; - complex *fA, *fX; - - fUplo = encodeUplo(uplo); - fDiag = encodeDiag(diag); - fTrans = encodeTranspose(trans); - fN = (int) N; - fK = (int) K; - fLda = (int) lda; - fA = (complex*) (A + offa); - fX = (complex*) (X + offx); - - if (order != clblasColumnMajor) - { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - ctbmv(fUplo, fTrans, fDiag, fN, fK, fA, fLda, fX, incx ); - } - -void -blasZtbmv( - clblasOrder order, - clblasUplo uplo, - clblasTranspose trans, - clblasDiag diag, - size_t N, - size_t K, - DoubleComplex *A, - size_t offa, - size_t lda, - DoubleComplex *X, - size_t offx, - int incx) - { - char fTrans, fUplo, fDiag; - int fN, fK, fLda; - doublecomplex *fA, *fX; - - fUplo = encodeUplo(uplo); - fDiag = encodeDiag(diag); - fTrans = encodeTranspose(trans); - fN = (int) N; - fK = (int) K; - fLda = (int) lda; - fA = (doublecomplex*) (A + offa); - fX = (doublecomplex*) (X + offx); - - if (order != clblasColumnMajor) - { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - ztbmv(fUplo, fTrans, fDiag, fN, fK, fA, fLda, fX, incx ); - } - - -//SBMV - -void -blasSsbmv( - clblasOrder order, - clblasUplo uplo, - size_t N, - size_t K, - float alpha, - float *A, - size_t offa, - size_t lda, - float *X, - size_t offx, - int incx, - float beta, - float *Y, - size_t offy, - int incy) - { - char fUplo; - int fN, fK, fLda; - - fUplo = encodeUplo(uplo); - fN = (int) N; - fK = (int) K; - fLda = (int) lda; - - if (order != clblasColumnMajor) - { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - ssbmv( fUplo, fN, fK, alpha, (A+offa), fLda, (X+offx), incx, beta, (Y+offy), incy ); - } - -void -blasDsbmv( - clblasOrder order, - clblasUplo uplo, - size_t N, - size_t K, - double alpha, - double *A, - size_t offa, - size_t lda, - double *X, - size_t offx, - int incx, - double beta, - double *Y, - size_t offy, - int incy) - { - char fUplo; - int fN, fK, fLda; - - fUplo = encodeUplo(uplo); - fN = (int) N; - fK = (int) K; - fLda = (int) lda; - - if (order != clblasColumnMajor) - { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - dsbmv(fUplo, fN, fK, alpha, (A+offa), fLda, (X+offx), incx, beta, (Y+offy), incy ); - } - -//HBMV - -void -blasChbmv( - clblasOrder order, - clblasUplo uplo, - size_t N, - size_t K, - FloatComplex alpha, - FloatComplex *A, - size_t offa, - size_t lda, - FloatComplex *X, - size_t offx, - int incx, - FloatComplex beta, - FloatComplex *Y, - size_t offy, - int incy) - { - char fUplo; - int fN, fK, fLda; - complex *fA, *fX, *fY, fAlpha, fBeta; - - fUplo = encodeUplo(uplo); - fN = (int) N; - fK = (int) K; - fLda = (int) lda; - fA = (complex*) (A + offa); - fX = (complex*) (X + offx); - fY = (complex*) (Y + offy); - - fAlpha = compose_complex(CREAL(alpha), CIMAG(alpha)); - fBeta = compose_complex(CREAL(beta), CIMAG(beta)); - - if (order != clblasColumnMajor) - { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - chbmv( fUplo, fN, fK, &fAlpha, fA, fLda, fX, incx, &fBeta, fY, incy ); - } - -void -blasZhbmv( - clblasOrder order, - clblasUplo uplo, - size_t N, - size_t K, - DoubleComplex alpha, - DoubleComplex *A, - size_t offa, - size_t lda, - DoubleComplex *X, - size_t offx, - int incx, - DoubleComplex beta, - DoubleComplex *Y, - size_t offy, - int incy) - { - char fUplo; - int fN, fK, fLda; - doublecomplex *fA, *fX, *fY, fAlpha, fBeta; - - fUplo = encodeUplo(uplo); - fN = (int) N; - fK = (int) K; - fLda = (int) lda; - fA = (doublecomplex*) (A + offa); - fX = (doublecomplex*) (X + offx); - fY = (doublecomplex*) (Y + offy); - - fAlpha = compose_doublecomplex(CREAL(alpha), CIMAG(alpha)); - fBeta = compose_doublecomplex(CREAL(beta), CIMAG(beta)); - - if (order != clblasColumnMajor) - { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - zhbmv(fUplo, fN, fK, &fAlpha, fA, fLda, fX, incx, &fBeta, fY, incy ); - } - - -//TBSV - -void -blasStbsv( - clblasOrder order, - clblasUplo uplo, - clblasTranspose trans, - clblasDiag diag, - size_t N, - size_t K, - float *A, - size_t offa, - size_t lda, - float *X, - size_t offx, - int incx) - { - char fTrans, fUplo, fDiag; - int fN, fK, fLda; - - fTrans = encodeTranspose(trans); - fUplo = encodeUplo(uplo); - fDiag = encodeDiag(diag); - fN = (int) N; - fK = (int) K; - fLda = (int) lda; - - if (order != clblasColumnMajor) - { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - stbsv(fUplo, fTrans, fDiag, fN, fK, (A+offa), fLda, (X+offx), incx ); - } - -void -blasDtbsv( - clblasOrder order, - clblasUplo uplo, - clblasTranspose trans, - clblasDiag diag, - size_t N, - size_t K, - double *A, - size_t offa, - size_t lda, - double *X, - size_t offx, - int incx) - { - char fTrans, fUplo, fDiag; - int fN, fK, fLda; - - fTrans = encodeTranspose(trans); - fUplo = encodeUplo(uplo); - fDiag = encodeDiag(diag); - fN = (int) N; - fK = (int) K; - fLda = (int) lda; - - if (order != clblasColumnMajor) - { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - dtbsv(fUplo, fTrans, fDiag, fN, fK, (A+offa), fLda, (X+offx), incx ); - } - - -void -blasCtbsv( - clblasOrder order, - clblasUplo uplo, - clblasTranspose trans, - clblasDiag diag, - size_t N, - size_t K, - FloatComplex *A, - size_t offa, - size_t lda, - FloatComplex *X, - size_t offx, - int incx) - { - char fTrans, fUplo, fDiag; - int fN, fK, fLda; - complex *fA, *fX; - - fUplo = encodeUplo(uplo); - fDiag = encodeDiag(diag); - fTrans = encodeTranspose(trans); - fN = (int) N; - fK = (int) K; - fLda = (int) lda; - fA = (complex*) (A + offa); - fX = (complex*) (X + offx); - - if (order != clblasColumnMajor) - { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - ctbsv(fUplo, fTrans, fDiag, fN, fK, fA, fLda, fX, incx ); - } - -void -blasZtbsv( - clblasOrder order, - clblasUplo uplo, - clblasTranspose trans, - clblasDiag diag, - size_t N, - size_t K, - DoubleComplex *A, - size_t offa, - size_t lda, - DoubleComplex *X, - size_t offx, - int incx) - { - char fTrans, fUplo, fDiag; - int fN, fK, fLda; - doublecomplex *fA, *fX; - - fUplo = encodeUplo(uplo); - fDiag = encodeDiag(diag); - fTrans = encodeTranspose(trans); - fN = (int) N; - fK = (int) K; - fLda = (int) lda; - fA = (doublecomplex*) (A + offa); - fX = (doublecomplex*) (X + offx); - - if (order != clblasColumnMajor) - { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - ztbsv(fUplo, fTrans, fDiag, fN, fK, fA, fLda, fX, incx ); - } - -void -blasCher2k( - clblasOrder order, - clblasUplo uplo, - clblasTranspose transA, - size_t N, - size_t K, - FloatComplex alpha, - const FloatComplex *A, - size_t offa, - size_t lda, - const FloatComplex *B, - size_t offb, - size_t ldb, - float beta, - FloatComplex *C, - size_t offc, - size_t ldc) -{ - char fUplo, fTransA; - int fN, fK; - int fLDA, fLDC, fLDB; - complex *fA, *fC, *fB, *fAlpha; - - if (order != clblasColumnMajor) { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - fUplo = encodeUplo(uplo); - fTransA = encodeTranspose(transA); - fN = (int)N; - fK = (int)K; - fLDA = (int)lda; - fLDB = (int)ldb; - fLDC = (int)ldc; - - fA = (complex*)(A+offa); - fB = (complex*)(B+offb); - fC = (complex*)(C+offc); - fAlpha = (complex*)(&alpha); - - cher2k(fUplo, fTransA, fN, fK, fAlpha, fA, fLDA, fB, fLDB, beta, fC, fLDC); -} - -void -blasZher2k( - clblasOrder order, - clblasUplo uplo, - clblasTranspose transA, - size_t N, - size_t K, - DoubleComplex alpha, - const DoubleComplex *A, - size_t offa, - size_t lda, - const DoubleComplex *B, - size_t offb, - size_t ldb, - double beta, - DoubleComplex *C, - size_t offc, - size_t ldc) -{ - char fUplo, fTransA; - int fN, fK; - int fLDA, fLDC, fLDB; - doublecomplex *fA, *fC, *fB, *fAlpha; - - if (order != clblasColumnMajor) { - fprintf(stderr, "LAPACK routines require clblasColumnMajor order\n"); - abort(); - } - - fUplo = encodeUplo(uplo); - fTransA = encodeTranspose(transA); - fN = (int)N; - fK = (int)K; - fLDA = (int)lda; - fLDB = (int)ldb; - fLDC = (int)ldc; - - fA = (doublecomplex*)(A+offa); - fB = (doublecomplex*)(B+offb); - fC = (doublecomplex*)(C+offc); - fAlpha = (doublecomplex*)(&alpha); - - zher2k(fUplo, fTransA, fN, fK, fAlpha, fA, fLDA, fB, fLDB, beta, fC, fLDC); -} - - -//COPY - - -void -blasScopy( - size_t N, - float *X, - size_t offx, - int incx, - float *Y, - size_t offy, - int incy) - { - int fN; - fN = (int) N; - - scopy(fN, (X+offx), incx, (Y+offy), incy); - } - - - -void -blasDcopy( - size_t N, - double *X, - size_t offx, - int incx, - double *Y, - size_t offy, - int incy) - { - - int fN; - fN = (int) N; - - dcopy( fN, (X+offx), incx, (Y+offy), incy ); - } - - -void -blasCcopy( - size_t N, - FloatComplex *X, - size_t offx, - int incx, - FloatComplex *Y, - size_t offy, - int incy) - { - - int fN; - complex *fY, *fX; - - fN = (int) N; - fY = (complex*) (Y + offy); - fX = (complex*) (X + offx); - - ccopy( fN, fX, incx, fY, incy ); - } - - -void -blasZcopy( - size_t N, - DoubleComplex *X, - size_t offx, - int incx, - DoubleComplex *Y, - size_t offy, - int incy) - { - int fN; - doublecomplex *fY, *fX; - - fN = (int) N; - fY = (doublecomplex*) (Y + offy); - fX = (doublecomplex*) (X + offx); - - zcopy(fN, fX, incx , fY, incy); - } - - -//SWAP - -void -blasSswap( - size_t N, - float *X, - size_t offBX, - int incx, - float *Y, - size_t offCY, - int incy) - { - int fN; - fN = (int) N; - - sswap(fN, (X+offBX), incx, (Y+offCY), incy); - } - - - -void -blasDswap( - size_t N, - double *X, - size_t offBX, - int incx, - double *Y, - size_t offCY, - int incy) - { - - int fN; - fN = (int) N; - - dswap( fN, (X+offBX), incx, (Y+offCY), incy ); - } - - -void -blasCswap( - size_t N, - FloatComplex *X, - size_t offBX, - int incx, - FloatComplex *Y, - size_t offCY, - int incy) - { - - int fN; - complex *fY, *fX; - - fN = (int) N; - fY = (complex*) (Y + offCY); - fX = (complex*) (X + offBX); - - cswap( fN, fX, incx, fY, incy ); - } - - -void -blasZswap( - size_t N, - DoubleComplex *X, - size_t offBX, - int incx, - DoubleComplex *Y, - size_t offCY, - int incy) - { - int fN; - doublecomplex *fY, *fX; - - fN = (int) N; - fY = (doublecomplex*) (Y + offCY); - fX = (doublecomplex*) (X + offBX); - - zswap(fN, fX, incx , fY, incy); - } - - -void - blasSscal( - size_t N, - float alpha, - float *X, - size_t offx, - int incx) -{ - sscal((int)N, alpha, (X+offx), incx); -} - -void - blasDscal( - size_t N, - double alpha, - double *X, - size_t offx, - int incx) -{ - dscal((int)N, alpha, (X+offx), incx); -} - -void - blasCscal( - size_t N, - FloatComplex alpha, - FloatComplex *X, - size_t offx, - int incx) -{ - cscal((int)N, (complex*)(&alpha), (complex*)(X+offx), incx); -} - -void - blasZscal( - size_t N, - DoubleComplex alpha, - DoubleComplex *X, - size_t offx, - int incx) -{ - zscal((int)N, (doublecomplex*)(&alpha), (doublecomplex*)(X+offx), incx); -} - -void - blasCsscal( - size_t N, - float alpha, - FloatComplex *X, - size_t offx, - int incx) -{ - csscal((int)N, alpha, (complex*)(X+offx), incx); -} - -void - blasZdscal( - size_t N, - double alpha, - DoubleComplex *X, - size_t offx, - int incx) -{ - zdscal((int)N, alpha, (doublecomplex*)(X+offx), incx); -} - -//DOT -float -blasSdot( - size_t N, - float *X, - size_t offx, - int incx, - float *Y, - size_t offy, - int incy) - { - return sdot((int)N, (X+offx), incx, (Y+offy), incy); - } - -double -blasDdot( - size_t N, - double *X, - size_t offx, - int incx, - double *Y, - size_t offy, - int incy) - { - return ddot( (int)N, (X+offx), incx, (Y+offy), incy ); - } - -FloatComplex -blasCdotu( - size_t N, - FloatComplex *X, - size_t offx, - int incx, - FloatComplex *Y, - size_t offy, - int incy) - { - complex ans = cdotu((int)N, (complex*)(X+offx), incx, (complex*)(Y+offy), incy); - FloatComplex ret; - CREAL(ret) = ans.real; - CIMAG(ret) = ans.imag; - return ret; - } - -DoubleComplex -blasZdotu( - size_t N, - DoubleComplex *X, - size_t offx, - int incx, - DoubleComplex *Y, - size_t offy, - int incy) - { - doublecomplex answer = zdotu( (int)N, (doublecomplex*)(X+offx), incx, (doublecomplex*)(Y+offy), incy ); - DoubleComplex ret2; - CREAL(ret2) = answer.real; - CIMAG(ret2) = answer.imag; - return ret2; - } - -//ASUM -float -blasSasum( - size_t N, - float *X, - size_t offx, - int incx) - { - return sasum((int)N, (X+offx), incx); - } - -double -blasDasum( - size_t N, - double *X, - size_t offx, - int incx) - { - return dasum( (int)N, (X+offx), incx); - } - -float -blasScasum( - size_t N, - FloatComplex *X, - size_t offx, - int incx) - { - return scasum((int)N, (complex*)(X+offx), incx); - } - -double -blasDzasum( - size_t N, - DoubleComplex *X, - size_t offx, - int incx) - { - return dzasum( (int)N, (doublecomplex*)(X+offx), incx); - } - -//DOTC -FloatComplex -blasCdotc( - size_t N, - FloatComplex *X, - size_t offx, - int incx, - FloatComplex *Y, - size_t offy, - int incy) - { - complex ans = cdotc((int)N, (complex*)(X+offx), incx, (complex*)(Y+offy), incy); - FloatComplex ret; - CREAL(ret) = ans.real; - CIMAG(ret) = ans.imag; - return ret; - } - -DoubleComplex -blasZdotc( - size_t N, - DoubleComplex *X, - size_t offx, - int incx, - DoubleComplex *Y, - size_t offy, - int incy) - { - doublecomplex answer = zdotc( (int)N, (doublecomplex*)(X+offx), incx, (doublecomplex*)(Y+offy), incy ); - DoubleComplex ret2; - CREAL(ret2) = answer.real; - CIMAG(ret2) = answer.imag; - return ret2; - } - - -void -blasSaxpy( - size_t N, - float alpha, - const float *X, - size_t offBX, - int incx, - float *Y, - size_t offCY, - int incy) -{ - saxpy((int)N, alpha, (float*)(X+offBX), incx, (Y+offCY), incy); -} - -void -blasDaxpy( - size_t N, - double alpha, - const double *X, - size_t offBX, - int incx, - double *Y, - size_t offCY, - int incy) -{ - daxpy((int)N, alpha, (double*)(X+offBX), incx, (Y+offCY), incy); -} - -void -blasCaxpy( - size_t N, - FloatComplex alpha, - const FloatComplex *X, - size_t offBX, - int incx, - FloatComplex *Y, - size_t offCY, - int incy) -{ - caxpy((int)N, (complex*)(&alpha),(complex*)(X+offBX), incx, (complex*)(Y+offCY), incy); -} - -void -blasZaxpy( - size_t N, - DoubleComplex alpha, - const DoubleComplex *X, - size_t offBX, - int incx, - DoubleComplex *Y, - size_t offCY, - int incy) -{ - zaxpy((int)N, (doublecomplex*)(&alpha), (doublecomplex*)(X+offBX), incx, (doublecomplex*)(Y+offCY), incy); -} - - -//ROTG -void -blasSrotg( - float* SA, - size_t offSA, - float* SB, - size_t offSB, - float* C, - size_t offC, - float* S, - size_t offS) - { - srotg((SA+offSA), (SB+offSB), (C+offC), (S+offS)); - } - -void -blasDrotg( - double* SA, - size_t offSA, - double* SB, - size_t offSB, - double* C, - size_t offC, - double* S, - size_t offS) - { - drotg((SA+offSA), (SB+offSB), (C+offC), (S+offS)); - } - -void -blasCrotg( - FloatComplex* SA, - size_t offSA, - FloatComplex* SB, - size_t offSB, - float* C, - size_t offC, - FloatComplex* S, - size_t offS) - { - crotg((complex*)(SA+offSA), (complex*)(SB+offSB), (C+offC), (complex*)(S+offS)); - } - -void -blasZrotg( - DoubleComplex* SA, - size_t offSA, - DoubleComplex* SB, - size_t offSB, - double* C, - size_t offC, - DoubleComplex* S, - size_t offS) - { - zrotg((doublecomplex*)(SA+offSA), (doublecomplex*)(SB+offSB), (C+offC), (doublecomplex*)(S+offS)); - } - -void -blasSrotmg( - float *D1, - size_t offD1, - float *D2, - size_t offD2, - float *X1, - size_t offX1, - const float *Y1, - size_t offY1, - float *PARAM, - size_t offParam) - { - // C and fortran interface are different for rotmg.. FIXME - #if defined CORR_TEST_WITH_ACML - srotmg(D1[offD1], D2[offD2], X1[offX1], Y1[offY1], - (PARAM+offParam)); - #else - srotmg((D1+offD1), (D2+offD2), (X1+offX1), (Y1+offY1), - (PARAM+offParam)); - #endif - } - -void -blasDrotmg( - double *D1, - size_t offD1, - double *D2, - size_t offD2, - double *X1, - size_t offX1, - const double *Y1, - size_t offY1, - double *PARAM, - size_t offParam) - { - // C and fortran interface are different for rotmg.. FIXME - #if defined CORR_TEST_WITH_ACML - drotmg(D1[offD1], D2[offD2], X1[offX1], Y1[offY1], - (PARAM+offParam)); - #else - drotmg((D1+offD1), (D2+offD2), (X1+offX1), (Y1+offY1), - (PARAM+offParam)); - #endif - } - -void -blasSrotm( - size_t N, - float *X, - size_t offx, - int incx, - float *Y, - size_t offy, - int incy, - float *PARAM, - size_t offParam) - { - srotm(N, (X+offx), incx, (Y+offy), incy, (PARAM+offParam)); - } - -void -blasDrotm( - size_t N, - double *X, - size_t offx, - int incx, - double *Y, - size_t offy, - int incy, - double *PARAM, - size_t offParam) - { - drotm(N, (X+offx), incx, (Y+offy), incy, (PARAM+offParam)); - } -//ROT - -void -blasSrot( - size_t N, - float *X, - size_t offx, - int incx, - float *Y, - size_t offy, - int incy, - float C, - float S) - { - srot(N, (X+offx), incx, (Y+offy), incy, C, S); - } - -void -blasDrot( - size_t N, - double *X, - size_t offx, - int incx, - double *Y, - size_t offy, - int incy, - double C, - double S) - { - drot(N, (X+offx), incx, (Y+offy), incy, C, S); - } - -void -blasCsrot( - size_t N, - FloatComplex *X, - size_t offx, - int incx, - FloatComplex *Y, - size_t offy, - int incy, - float C, - float S) - { - csrot(N, (complex*)(X+offx), incx, (complex*)(Y+offy), incy, C, S); - } - -void -blasZdrot( - size_t N, - DoubleComplex *X, - size_t offx, - int incx, - DoubleComplex *Y, - size_t offy, - int incy, - double C, - double S) - { - zdrot(N, (doublecomplex*)(X+offx), incx, (doublecomplex*)(Y+offy), incy, C, S); - } - -int -blasiSamax( - size_t N, - float *X, - size_t offx, - int incx) - { - return isamax((int)N, (X+offx), incx); - } - -int -blasiDamax( - size_t N, - double *X, - size_t offx, - int incx) - { - return idamax( (int)N, (X+offx), incx); - } - -int -blasiCamax( - size_t N, - FloatComplex *X, - size_t offx, - int incx) - { - return icamax((int)N, (complex*)(X+offx), incx); - } - -int -blasiZamax( - size_t N, - DoubleComplex *X, - size_t offx, - int incx) - { - return izamax( (int)N, (doublecomplex*)(X+offx), incx); - } - -float -blasSnrm2( - size_t N, - float *X, - size_t offx, - int incx) - { - return snrm2((int)N, (X+offx), incx); - } - -double -blasDnrm2( - size_t N, - double *X, - size_t offx, - int incx) - { - return dnrm2( (int)N, (X+offx), incx); - } - -float -blasScnrm2( - size_t N, - FloatComplex *X, - size_t offx, - int incx) - { - return scnrm2((int)N, (complex*)(X+offx), incx); - } - -double -blasDznrm2( - size_t N, - DoubleComplex *X, - size_t offx, - int incx) - { - return dznrm2( (int)N, (doublecomplex*)(X+offx), incx); - } |