8 #define _LAMCH LAPACKE_slamch_work
10 #define _NAME "PLASMA_sgetri_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 float Rnorm, Anorm, Xnorm, Bnorm, result;
27 float *work = (
float *)malloc((descA1->
m)*
sizeof(float));
28 float eps = LAPACKE_slamch_work(
'e');
30 float *b = (
float *)malloc((descA1->
m)*
sizeof(float));
31 float *x = (
float *)malloc((descA1->
m)*
sizeof(float));
34 descA1->
m, 1, 0, 0, descA1->
m, 1);
36 descA1->
m, 1, 0, 0, descA1->
m, 1);
48 (
float)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 float Rnorm, Anorm, Ainvnorm, result;
84 float *
W = (
float *)malloc(descA1->
n*
sizeof(
float));
85 float *work = (
float *)malloc(descA1->
n*descA1->
n*
sizeof(
float));
86 float eps = LAPACKE_slamch_work(
'e');
90 descA1->
m, descA1->
n, 0, 0, descA1->
m, descA1->
n);
94 (
float)-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 (
float) 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 (
float) 1.0, descA, &descW);
235 ret = check_getri_inverse(descA2, descA, piv, dparam);