From 70c5cd98a6b383481affa3caa9f71ae373610442 Mon Sep 17 00:00:00 2001
From: Alban Bellot <alban.bellot@inria.fr>
Date: Wed, 20 Jul 2016 14:44:54 +0200
Subject: [PATCH] bug without dofs corrected

---
 z_spm_matrixvector.c | 16 ++++++++--------
 z_spm_norm.c         |  9 ++++-----
 2 files changed, 12 insertions(+), 13 deletions(-)

diff --git a/z_spm_matrixvector.c b/z_spm_matrixvector.c
index 4b0cf889..14238ff1 100644
--- a/z_spm_matrixvector.c
+++ b/z_spm_matrixvector.c
@@ -109,12 +109,12 @@ z_spmGeCSCv(      int                 trans,
             for( i=0; i < csc->gN; i++ )
             {
                 dofi = ( csc->dof > 0 ) ? csc->dof : dofs[i+1] - dofs[i];
-                col=dofs[i];
+                col  = ( csc->dof > 0 ) ? i        : dofs[i];
                 for( k=csc->colptr[i]; k<csc->colptr[i+1]; k++ )
                 {
                     j = csc->rowptr[k-baseval]-baseval;
                     dofj = ( csc->dof > 0 ) ? csc->dof : dofs[j+1] - dofs[j];
-                    row=dofs[j];
+                    row  = ( csc->dof > 0 ) ? j        : dofs[j];
                     for(ii=0; ii<dofi; ii++)
                     {
                         for(jj=0; jj<dofj; jj++, valptr++)
@@ -133,12 +133,12 @@ z_spmGeCSCv(      int                 trans,
             for( i=0; i < csc->gN; i++ )
             {
                 dofi = ( csc->dof > 0 ) ? csc->dof : dofs[i+1] - dofs[i];
-                col=dofs[i];
+                col  = ( csc->dof > 0 ) ? i        : dofs[i];
                 for( k=csc->colptr[i]; k<csc->colptr[i+1]; k++ )
                 {
                     j = csc->rowptr[k-baseval]-baseval;
                     dofj = ( csc->dof > 0 ) ? csc->dof : dofs[j+1] - dofs[j];
-                    row=dofs[j];
+                    row  = ( csc->dof > 0 ) ? j        : dofs[j];
                     for(ii=0; ii<dofi; ii++)
                     {
                         for(jj=0; jj<dofj; jj++, valptr++)
@@ -250,12 +250,12 @@ z_spmSyCSCv(      pastix_complex64_t  alpha,
         for( i=0; i < csc->gN; i++ )
         {
             dofi = ( csc->dof > 0 ) ? csc->dof : dofs[i+1] - dofs[i];
-            col = dofs[i];
+            col  = ( csc->dof > 0 )  ? i        : dofs[i];
             for( k=csc->colptr[i]; k<csc->colptr[i+1]; k++ )
             {
                 j = csc->rowptr[k-baseval]-baseval;
                 dofj = ( csc->dof > 0 ) ? csc->dof : dofs[j+1] - dofs[j];
-                row = dofs[j];
+                row  = ( csc->dof > 0 ) ? j        : dofs[j];
                 for(ii=0; ii<dofi; ii++)
                 {
                     for(jj=0; jj<dofj; jj++, valptr++)
@@ -351,12 +351,12 @@ z_spmHeCSCv(      pastix_complex64_t  alpha,
         for( i=0; i < csc->gN; i++ )
         {
             dofi = ( csc->dof > 0 ) ? csc->dof : dofs[i+1] - dofs[i];
-            col = dofs[i];
+            col  = ( csc->dof > 0 ) ? i        : dofs[i];
             for( k=csc->colptr[i]; k<csc->colptr[i+1]; k++ )
             {
                 j = csc->rowptr[k-baseval]-baseval;
                 dofj = ( csc->dof > 0 ) ? csc->dof : dofs[j+1] - dofs[j];
-                row = dofs[j];
+                row  = ( csc->dof > 0 ) ? j        : dofs[j];
                 for(ii=0; ii<dofi; ii++)
                 {
                     for(jj=0; jj<dofj; jj++, valptr++)
diff --git a/z_spm_norm.c b/z_spm_norm.c
index 9d45ade4..549a1415 100644
--- a/z_spm_norm.c
+++ b/z_spm_norm.c
@@ -229,7 +229,7 @@ z_spmInfNorm( const pastix_spm_t *spm )
             {
                 j = spm->rowptr[k - baseval] - baseval;
                 dofj = ( spm->dof > 0 ) ? spm->dof : dofs[j+1] - dofs[j];
-                row = dofs[j];
+                row  = ( spm->dof > 0 ) ? j        : dofs[j];
                 for(ii=0; ii < dofi; ii++)
                 {
                     for(jj=0; jj < dofj; jj++, valptr++)
@@ -248,7 +248,7 @@ z_spmInfNorm( const pastix_spm_t *spm )
             valptr = (pastix_complex64_t*)spm->values;
             for(i=0; i < spm->n; i++)
             {
-                col = dofs[i];
+                col  = ( spm->dof > 0 ) ? i        : dofs[i];
                 dofi = ( spm->dof > 0 ) ? spm->dof : dofs[i+1] - dofs[i];
                 for(k=spm->colptr[i]; k < spm->colptr[i+1]; k++)
                 {
@@ -381,7 +381,7 @@ z_spmOneNorm( const pastix_spm_t *spm )
 
         for(i=0; i < spm->n; i++)
         {
-            col = dofs[i];
+            col  = ( spm->dof > 0 ) ? i        : dofs[i];
             dofi = ( spm->dof > 0 ) ? spm->dof : dofs[i+1] - dofs[i];
             for(k=spm->colptr[i]; k < spm->colptr[i+1]; k++)
             {
@@ -409,7 +409,7 @@ z_spmOneNorm( const pastix_spm_t *spm )
                 for(k=spm->colptr[i]; k < spm->colptr[i+1]; k++)
                 {
                     j = spm->rowptr[k - baseval] - baseval;
-                    row = dofs[j];
+                    row  = ( spm->dof > 0 ) ? j        : dofs[j];
                     dofj = ( spm->dof > 0 ) ? spm->dof : dofs[j+1] - dofs[j];
                     if(i != j)
                     {
@@ -417,7 +417,6 @@ z_spmOneNorm( const pastix_spm_t *spm )
                         {
                             for(jj=0; jj < dofj; jj++, valptr++)
                             {
-
                                 sumrow[row + jj] += cabs( *valptr );
                             }
                         }
-- 
GitLab