diff --git a/arrays/dw_array.c b/arrays/dw_array.c index f7f1da4360fba3c20bcaa61b62600b866543fa88..b3d0d507eca738907448e1f45ec51588d4094388 100644 --- a/arrays/dw_array.c +++ b/arrays/dw_array.c @@ -52,12 +52,14 @@ void dw_FreeArray(void* a) if (a) { if ((Destructor=dw_GetDestructorA(a))) - if (dw_IsPointerA(a)) - for (i=dw_DimA(a)-1; i >= 0; i--) - Destructor(((void**)a)[i]); - else - for (i=(size=dw_ElementSizeA(a))*(dw_DimA(a)-1); i >= 0; i-=size) - Destructor((void*)(((char*)a) + i)); + { + if (dw_IsPointerA(a)) + for (i=dw_DimA(a)-1; i >= 0; i--) + Destructor(((void**)a)[i]); + else + for (i=(size=dw_ElementSizeA(a))*(dw_DimA(a)-1); i >= 0; i-=size) + Destructor((void*)(((char*)a) + i)); + } offset=dw_GetOffsetA(a); if (dw_DeleteSpecsA(a)) dw_free(dw_SpecsA(a)); dw_free((void*)(((char*)a) - offset)); diff --git a/error/dw_error.c b/error/dw_error.c index 6e1e6f424038ac1c3c296957ebb0e04dc1184f39..cf63faf2d2753f2f34724e0e5ad3067a6031dcc8 100644 --- a/error/dw_error.c +++ b/error/dw_error.c @@ -152,10 +152,12 @@ int dw_SetError(int err, char *msg) break; } if (VerboseErrors & ERROR_FLAG) - if (f_err) - fprintf(f_err,"%s\n",ERROR_MESSAGE); - else - printf("%s\n",ERROR_MESSAGE); + { + if (f_err) + fprintf(f_err,"%s\n",ERROR_MESSAGE); + else + printf("%s\n",ERROR_MESSAGE); + } if (TerminalErrors & ERROR_FLAG) dw_exit(ERROR_FLAG); return rtrn; } diff --git a/histogram/dw_histogram.c b/histogram/dw_histogram.c index cf870164810daebda8a18409eabdbe91812ba89b..237716edad53d521e540f568746660c1e3f6f86f 100644 --- a/histogram/dw_histogram.c +++ b/histogram/dw_histogram.c @@ -481,24 +481,26 @@ static void Resize(PRECISION x, int *h, PRECISION *min, PRECISION *max, int inte } else if (x < *min) - if (*max - x >= (PRECISION)intervals*(*max - *min)) - { - for (j=intervals-1, i=intervals-2; i >= 0; i--) - { - h[j]+=h[i]; - h[i]=0; - } - *min=x; - } - else { - m=(int)ceil((*max - x)/(*max - *min)); - for (i=j=intervals-1; i >= 0; j--) - for(h[j]=h[i--], k=1; (k < m) && (i >= 0); k++) - h[j]+=h[i--]; - for ( ; j >= 0; j--) h[j]=0; - *min=*max - m*(*max - *min); - if (x < *min) *min=x; + if (*max - x >= (PRECISION)intervals*(*max - *min)) + { + for (j=intervals-1, i=intervals-2; i >= 0; i--) + { + h[j]+=h[i]; + h[i]=0; + } + *min=x; + } + else + { + m=(int)ceil((*max - x)/(*max - *min)); + for (i=j=intervals-1; i >= 0; j--) + for(h[j]=h[i--], k=1; (k < m) && (i >= 0); k++) + h[j]+=h[i--]; + for ( ; j >= 0; j--) h[j]=0; + *min=*max - m*(*max - *min); + if (x < *min) *min=x; + } } } diff --git a/matrix/bmatrix.c b/matrix/bmatrix.c index 430ccfaf9eb95adcfdcd3aa6d94bfeb187f3542d..23fcbea45829ecd12658de2bbe7426f91571cbf7 100644 --- a/matrix/bmatrix.c +++ b/matrix/bmatrix.c @@ -1654,13 +1654,15 @@ int bReorderGeneralizedSchur_real(int *select, PRECISION *QQ, PRECISION *ZZ, PRE if (!QQ) pQQ=(PRECISION*)dw_malloc(n*n*sizeof(PRECISION)); if (wantz) - if (ZZ != Z) - if (zt) - memcpy(ZZ,Z,n*n*sizeof(PRECISION)); - else - bTranspose(ZZ,Z,n,n,0); - else - if (!zt) bTransposeInPlace(Z,n); + { + if (ZZ != Z) + if (zt) + memcpy(ZZ,Z,n*n*sizeof(PRECISION)); + else + bTranspose(ZZ,Z,n,n,0); + else + if (!zt) bTransposeInPlace(Z,n); + } for (i=n-1; i >= 0; i--) bselect[i]=select[i]; @@ -1792,22 +1794,26 @@ int bSortGeneralizedSchur_real(PRECISION *QQ, PRECISION *ZZ, PRECISION *SS, PREC if (!tt) bTransposeInPlace(T,n); if (wantq) - if (QQ != Q) - if (qt) - memcpy(QQ,Q,n*n*sizeof(PRECISION)); + { + if (QQ != Q) + if (qt) + memcpy(QQ,Q,n*n*sizeof(PRECISION)); + else + bTranspose(QQ,Q,n,n,0); else - bTranspose(QQ,Q,n,n,0); - else - if (!qt) bTransposeInPlace(Q,n); + if (!qt) bTransposeInPlace(Q,n); + } if (wantz) - if (ZZ != Z) - if (zt) - memcpy(ZZ,Z,n*n*sizeof(PRECISION)); + { + if (ZZ != Z) + if (zt) + memcpy(ZZ,Z,n*n*sizeof(PRECISION)); + else + bTranspose(ZZ,Z,n,n,0); else - bTranspose(ZZ,Z,n,n,0); - else - if (!zt) bTransposeInPlace(Z,n); + if (!zt) bTransposeInPlace(Z,n); + } if (n > 1) { diff --git a/matrix/dw_matrix.c b/matrix/dw_matrix.c index 8f4f388b998cf15e66d0b6cf668756d2c7c3d2ab..575fce4a1378c342ea47ce0063d6bd6ca1d032ce 100644 --- a/matrix/dw_matrix.c +++ b/matrix/dw_matrix.c @@ -1922,10 +1922,12 @@ TMatrix ProductMU(TMatrix X, TMatrix Y, TMatrix Z) else ptr=pElementM(Z); if (X != Y) - if (MajorForm(X) == MajorForm(Y)) - memcpy(pElementM(X),pElementM(Y),RowM(Y)*ColM(Y)*sizeof(PRECISION)); - else - bTranspose(pElementM(X),pElementM(Y),RowM(Y),ColM(Y),MajorForm(Y)); + { + if (MajorForm(X) == MajorForm(Y)) + memcpy(pElementM(X),pElementM(Y),RowM(Y)*ColM(Y)*sizeof(PRECISION)); + else + bTranspose(pElementM(X),pElementM(Y),RowM(Y),ColM(Y),MajorForm(Y)); + } bProductMT(pElementM(X),ptr,RowM(X),ColM(X),1,MajorForm(X),MajorForm(Z)); if (ptr != pElementM(Z)) dw_free(ptr); return X; @@ -1985,10 +1987,12 @@ TMatrix ProductML(TMatrix X, TMatrix Y, TMatrix Z) else ptr=pElementM(Z); if (X != Y) - if (MajorForm(X) == MajorForm(Y)) - memcpy(pElementM(X),pElementM(Y),RowM(Y)*ColM(Y)*sizeof(PRECISION)); - else - bTranspose(pElementM(X),pElementM(Y),RowM(Y),ColM(Y),MajorForm(Y)); + { + if (MajorForm(X) == MajorForm(Y)) + memcpy(pElementM(X),pElementM(Y),RowM(Y)*ColM(Y)*sizeof(PRECISION)); + else + bTranspose(pElementM(X),pElementM(Y),RowM(Y),ColM(Y),MajorForm(Y)); + } bProductMT(pElementM(X),ptr,RowM(X),ColM(X),0,MajorForm(X),MajorForm(Z)); if (ptr != pElementM(Z)) dw_free(ptr); return X; @@ -2048,10 +2052,12 @@ TMatrix ProductUM(TMatrix X, TMatrix Y, TMatrix Z) else ptr=pElementM(Y); if (X != Z) - if (MajorForm(X) == MajorForm(Z)) - memcpy(pElementM(X),pElementM(Z),RowM(Z)*ColM(Z)*sizeof(PRECISION)); - else - bTranspose(pElementM(X),pElementM(Z),RowM(Z),ColM(Z),MajorForm(Z)); + { + if (MajorForm(X) == MajorForm(Z)) + memcpy(pElementM(X),pElementM(Z),RowM(Z)*ColM(Z)*sizeof(PRECISION)); + else + bTranspose(pElementM(X),pElementM(Z),RowM(Z),ColM(Z),MajorForm(Z)); + } bProductTM(pElementM(X),ptr,RowM(X),ColM(X),1,MajorForm(X),MajorForm(Y)); if (ptr != pElementM(Y)) dw_free(ptr); return X; @@ -2111,10 +2117,12 @@ TMatrix ProductLM(TMatrix X, TMatrix Y, TMatrix Z) else ptr=pElementM(Y); if (X != Z) - if (MajorForm(X) == MajorForm(Z)) - memcpy(pElementM(X),pElementM(Z),RowM(Z)*ColM(Z)*sizeof(PRECISION)); - else - bTranspose(pElementM(X),pElementM(Z),RowM(Z),ColM(Z),MajorForm(Z)); + { + if (MajorForm(X) == MajorForm(Z)) + memcpy(pElementM(X),pElementM(Z),RowM(Z)*ColM(Z)*sizeof(PRECISION)); + else + bTranspose(pElementM(X),pElementM(Z),RowM(Z),ColM(Z),MajorForm(Z)); + } bProductTM(pElementM(X),ptr,RowM(X),ColM(X),0,MajorForm(X),MajorForm(Y)); if (ptr != pElementM(Y)) dw_free(ptr); return X; @@ -4955,17 +4963,19 @@ TVector LU_SolveRow(TVector x, TVector y, TMatrix LU, TPermutation P) return (TVector)NULL; } if ((rtrn=((x == y) ? x : EquateVector(x,y)))) - if ((err=bSolveTriangular(pElementM(LU),pElementV(rtrn),DimV(rtrn),1,0,1^MajorForm(LU),0))) - { - if (rtrn != x) FreeVector(rtrn); - rtrn=(TVector)NULL; - dw_Error(err); - } - else - { - bSolveUnitTriangular(pElementM(LU),pElementV(rtrn),DimV(rtrn),1,1,1^MajorForm(LU),0); - bPermutationMultiply(pElementP(P),pElementV(rtrn),DimV(rtrn),1,UseP(P),0,0); - } + { + if ((err=bSolveTriangular(pElementM(LU),pElementV(rtrn),DimV(rtrn),1,0,1^MajorForm(LU),0))) + { + if (rtrn != x) FreeVector(rtrn); + rtrn=(TVector)NULL; + dw_Error(err); + } + else + { + bSolveUnitTriangular(pElementM(LU),pElementV(rtrn),DimV(rtrn),1,1,1^MajorForm(LU),0); + bPermutationMultiply(pElementP(P),pElementV(rtrn),DimV(rtrn),1,UseP(P),0,0); + } + } return rtrn; }