diff --git a/z_spm_convert_to_csc.c b/z_spm_convert_to_csc.c index 45acca7d8d0546838156d1d225ef96c947cff519..3c66d83277809c96705bd94a0de6d712708d7283 100644 --- a/z_spm_convert_to_csc.c +++ b/z_spm_convert_to_csc.c @@ -160,11 +160,15 @@ z_spmConvertCSR2CSC( pastix_spm_t *spm ) { /* Similar to PastixSymmetric case with conjugate of the values */ pastix_complex64_t *valptr = spm->values; - pastix_int_t i; - - for(i=0; i<spm->nnz; i++, valptr++){ - if (spm->rowptr[i] != spm->colptr[i]) { - *valptr = conj( *valptr ); + pastix_int_t *colptr = spm->colptr; + pastix_int_t *rowptr = spm->rowptr; + pastix_int_t i, j; + + for(i=0; i<spm->n; i++, rowptr++){ + for(j=rowptr[0]; j<rowptr[1]; j++, colptr++, valptr++) { + if ( *colptr != i ) { + *valptr = conj( *valptr ); + } } } } diff --git a/z_spm_convert_to_csr.c b/z_spm_convert_to_csr.c index f940ddb2e6cc311ff5c65258bec9f3239730d8a4..c490d3c6592470773bf0c674e800db1e7754f375 100644 --- a/z_spm_convert_to_csr.c +++ b/z_spm_convert_to_csr.c @@ -51,11 +51,15 @@ z_spmConvertCSC2CSR( pastix_spm_t *spm ) { /* Similar to PastixSymmetric case with conjugate of the values */ pastix_complex64_t *valptr = spm->values; - pastix_int_t i; - - for(i=0; i<spm->nnz; i++, valptr++){ - if (spm->rowptr[i] != spm->colptr[i]) { - *valptr = conj( *valptr ); + pastix_int_t *colptr = spm->colptr; + pastix_int_t *rowptr = spm->rowptr; + pastix_int_t i, j; + + for(j=0; j<spm->n; j++, colptr++){ + for(i=colptr[0]; i<colptr[1]; i++, rowptr++, valptr++) { + if ( *rowptr != j ) { + *valptr = conj( *valptr ); + } } } }