43 double *A1 = (
double *)malloc(LDA*N*
sizeof(
double));
44 double *A2 = (
double *)malloc(LDA*N*
sizeof(
double));
45 double *B1 = (
double *)malloc(LDB*NRHS*
sizeof(
double));
46 double *B2 = (
double *)malloc(LDB*NRHS*
sizeof(
double));
49 if ((!A1)||(!A2)||(!B1)||(!B2)){
50 printf(
"Out of Memory \n ");
56 printf(
"-- PLASMA is initialized to run on %d cores. \n",cores);
69 N, NRHS, (
double)1.0, A2, LDA, B2, LDB);
71 N, NRHS, (
double)1.0, A2, LDA, B2, LDB);
76 if ( info_solution != 0 )
77 printf(
"-- Error in DTRSM example ! \n");
79 printf(
"-- Run of DTRSM example successful ! \n");
81 free(A1); free(A2); free(B1); free(B2);
93 int check_solution(
int N,
int NRHS,
double *A1,
int LDA,
double *B1,
double *B2,
int LDB)
96 double Rnorm, Anorm, Xnorm, Bnorm;
98 double *work = (
double *)malloc(N*
sizeof(
double));
101 eps = LAPACKE_dlamch_work(
'e');
110 cblas_dgemm(
CblasColMajor,
CblasNoTrans,
CblasNoTrans, N, NRHS, N, (alpha), A1, LDA, B2, LDB, (beta), B1, LDB);
113 printf(
"============\n");
114 printf(
"Checking the Residual of the solution \n");
115 printf(
"-- ||Ax-B||_oo/((||A||_oo||x||_oo+||B||_oo).N.eps) = %e \n",Rnorm/((Anorm*Xnorm+Bnorm)*N*eps));
117 if (Rnorm/((Anorm*Xnorm+Bnorm)*N*eps) > 10.0){
118 printf(
"-- The solution is suspicious ! \n");
122 printf(
"-- The solution is CORRECT ! \n");
128 return info_solution;