8 #define _LAMCH LAPACKE_dlamch_work
10 #define _NAME "PLASMA_dgetri_Tile"
12 #define _FMULS (FMULS_GETRF(M, N) + FMULS_GETRI( N ))
13 #define _FADDS (FADDS_GETRF(M, N) + FADDS_GETRI( N ))
25 int info_factorization;
26 double Rnorm, Anorm, Xnorm, Bnorm, result;
27 double *work = (
double *)malloc((descA1->
m)*
sizeof(double));
28 double eps = LAPACKE_dlamch_work(
'e');
30 double *b = (
double *)malloc((descA1->
m)*
sizeof(double));
31 double *x = (
double *)malloc((descA1->
m)*
sizeof(double));
34 descA1->
m, 1, 0, 0, descA1->
m, 1);
36 descA1->
m, 1, 0, 0, descA1->
m, 1);
48 (
double)1., descA1, descX,
53 if (getenv(
"PLASMA_TESTING_VERBOSE"))
54 printf(
"||A||_oo=%f\n||X||_oo=%f\n||B||_oo=%f\n||A X - B||_oo=%e\n", Anorm, Xnorm, Bnorm, Rnorm );
56 result = Rnorm / ( (Anorm*Xnorm+Bnorm)*(descA1->
m)*eps ) ;
57 printf(
"============\n");
58 printf(
"Checking the Residual of the solution \n");
59 printf(
"-- ||Ax-B||_oo/((||A||_oo||x||_oo+||B||_oo).N.eps) = %e \n", result);
61 if ( isnan(Xnorm) || isinf(Xnorm) || isnan(result) || isinf(result) || (result > 60.0) ) {
62 printf(
"-- The factorization is suspicious ! \n");
63 info_factorization = 1;
66 printf(
"-- The factorization is CORRECT ! \n");
67 info_factorization = 0;
69 free(x); free(b); free(work);
73 return info_factorization;
83 double Rnorm, Anorm, Ainvnorm, result;
84 double *
W = (
double *)malloc(descA1->
n*
sizeof(
double));
85 double *work = (
double *)malloc(descA1->
n*descA1->
n*
sizeof(
double));
86 double eps = LAPACKE_dlamch_work(
'e');
90 descA1->
m, descA1->
n, 0, 0, descA1->
m, descA1->
n);
94 (
double)-1., descA2, descA1,
104 result = Rnorm / ( (Anorm*Ainvnorm)*descA1->
m*eps ) ;
107 if ( isnan(Ainvnorm) || isinf(Ainvnorm) || isnan(result) || isinf(result) || (result > 60.0) ) {
129 fprintf(stderr,
"This timing works only with M == N\n");
147 #if defined(TRACE_BY_SEQUENCE)
152 PLASMA_REQUEST_INITIALIZER };
169 (
double) 1.0, descA, &descW, sequence[2], &request[2]);
181 descA, sequence[1], &request[1]);
184 descA, &descW, sequence[2], &request[2]);
186 sequence[3], &request[3]);
203 if ( ! iparam[IPARAM_ASYNC] ) {
209 (
double) 1.0, descA, &descW);
235 ret = check_getri_inverse(descA2, descA, piv, dparam);