|
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- #include "test.h"
-
- datatype *A[2], *B[2], *C[2], *Ctmp;
- int info;
-
- void pre() {
- x2matgen(n, n, A[0], A[1]);
- x2matgen(n, n, B[0], B[1]);
- x2matgen(n, n, C[0], C[1]);
- }
-
- void post() {
- error = x2vecerr(n * n, C[0], C[1]);
- }
-
- #define ROUTINE XPREF(gemmt)
-
- #define xlacpy XPREF(LAPACK(lacpy))
- #define xgemm XPREF(BLAS(gemm))
-
- extern void xlacpy(const char *, const int *, const int *, const datatype *, const int *, datatype *, const int *);
- extern void xgemm(const char *, const char *, const int *, const int *, const int *, const datatype *, const datatype *, const int *, const datatype *, const int *, const datatype *, const datatype *, const int*);
-
- void XLAPACK(ROUTINE)(
- const char *uplo, const char *transA, const char *transB,
- const int *n, const int *k,
- const datatype *alpha, const datatype *A, const int *ldA,
- const datatype *B, const int *ldB,
- const datatype *beta, datatype *C, const int *ldC
- ) {
- xlacpy(uplo, n, n, C, ldC, Ctmp, n);
- xgemm(transA, transB, n, n, k, alpha, A, ldA, B, ldB, beta, Ctmp, n);
- xlacpy(uplo, n, n, Ctmp, ldC, C, n);
- }
-
- void tests() {
- A[0] = xmalloc(n * n);
- A[1] = xmalloc(n * n);
- B[0] = xmalloc(n * n);
- B[1] = xmalloc(n * n);
- C[0] = xmalloc(n * n);
- C[1] = xmalloc(n * n);
- Ctmp = xmalloc(n * n);
-
- TEST("L", "N", "N", &n, &n, ONE, A[i], &n, B[i], &n, ONE, C[i], &n);
- TEST("L", "N", "N", &n, &n, ONE, A[i], &n, B[i], &n, MONE, C[i], &n);
- TEST("L", "N", "N", &n, &n, MONE, A[i], &n, B[i], &n, ONE, C[i], &n);
- TEST("L", "N", "T", &n, &n, ONE, A[i], &n, B[i], &n, ONE, C[i], &n);
- TEST("L", "T", "N", &n, &n, ONE, A[i], &n, B[i], &n, ONE, C[i], &n);
- TEST("L", "N", "N", &n, &n2, ONE, A[i], &n, B[i], &n, ONE, C[i], &n);
- TEST("U", "N", "N", &n, &n, ONE, A[i], &n, B[i], &n, ONE, C[i], &n);
- TEST("U", "N", "N", &n, &n, ONE, A[i], &n, B[i], &n, MONE, C[i], &n);
- TEST("U", "N", "N", &n, &n, MONE, A[i], &n, B[i], &n, ONE, C[i], &n);
- TEST("U", "N", "T", &n, &n, ONE, A[i], &n, B[i], &n, ONE, C[i], &n);
- TEST("U", "T", "N", &n, &n, ONE, A[i], &n, B[i], &n, ONE, C[i], &n);
- TEST("U", "N", "N", &n, &n2, ONE, A[i], &n, B[i], &n, ONE, C[i], &n);
-
- free(A[0]);
- free(A[1]);
- free(B[0]);
- free(B[1]);
- free(C[0]);
- free(C[1]);
- free(Ctmp);
- }
|