Menu

Commit [r176]  Maximize  Restore  History

*Some for loops are a bit speeded up.

*Some bug in zhsmatrix are fixed.

yonishi 2013-11-16

1 2 3 .. 9 > >> (Page 1 of 9)
changed /trunk/include/_dgbmatrix-/_dgbmatrix-_dgbmatrix.hpp
changed /trunk/include/_dgbmatrix-/_dgbmatrix-_dgematrix.hpp
changed /trunk/include/_dgbmatrix-/_dgbmatrix-_dgsmatrix.hpp
changed /trunk/include/_dgbmatrix-/_dgbmatrix-_dsymatrix.hpp
changed /trunk/include/_dgbmatrix-/_dgbmatrix-calc.hpp
changed /trunk/include/_dgbmatrix-/_dgbmatrix-cast.hpp
changed /trunk/include/_dgbmatrix-/_dgbmatrix-dgbmatrix.hpp
changed /trunk/include/_dgbmatrix-/_dgbmatrix-dgematrix.hpp
changed /trunk/include/_dgbmatrix-/_dgbmatrix-dgsmatrix.hpp
changed /trunk/include/_dgbmatrix-/_dgbmatrix-dsymatrix.hpp
changed /trunk/include/_dgbmatrix-/_dgbmatrix-io.hpp
changed /trunk/include/_dgematrix-/_dgematrix-_dgbmatrix.hpp
changed /trunk/include/_dgematrix-/_dgematrix-_dgsmatrix.hpp
changed /trunk/include/_dgematrix-/_dgematrix-dgbmatrix.hpp
changed /trunk/include/_dgematrix-/_dgematrix-dgsmatrix.hpp
changed /trunk/include/_dgematrix-/_dgematrix-dssmatrix.hpp
changed /trunk/include/_dgsmatrix-/_dgsmatrix-_dcovector.hpp
changed /trunk/include/_dgsmatrix-/_dgsmatrix-_dgbmatrix.hpp
changed /trunk/include/_dgsmatrix-/_dgsmatrix-_dgematrix.hpp
changed /trunk/include/_dgsmatrix-/_dgsmatrix-_dgsmatrix.hpp
changed /trunk/include/_dgsmatrix-/_dgsmatrix-_dsymatrix.hpp
changed /trunk/include/_dgsmatrix-/_dgsmatrix-calc.hpp
changed /trunk/include/_dgsmatrix-/_dgsmatrix-cast.hpp
changed /trunk/include/_dgsmatrix-/_dgsmatrix-dcovector.hpp
changed /trunk/include/_dgsmatrix-/_dgsmatrix-dgbmatrix.hpp
/trunk/include/_dgbmatrix-/_dgbmatrix-_dgbmatrix.hpp Diff Switch to side-by-side view
--- a/trunk/include/_dgbmatrix-/_dgbmatrix-_dgbmatrix.hpp
+++ b/trunk/include/_dgbmatrix-/_dgbmatrix-_dgbmatrix.hpp
@@ -13,8 +13,9 @@
   
   if(matA.kl>matB.kl && matA.ku>matB.ku){
     for(long i=0; i<matB.m; i++){
-      for(long j=std::max(long(0),i-matB.kl); j<std::min(matB.n,i+matB.ku+1); j++){
-        matA(i,j)+=matB(i,j);
+      const long jmax =std::min(matB.n,i+matB.ku+1);
+      for(long j=std::max(long(0),i-matB.kl); j<jmax; j++){
+        matA(i,j) += matB(i,j);
       }
     }
     
@@ -24,8 +25,9 @@
 
   else if(matB.kl>matA.kl && matB.ku>matA.ku){
     for(long i=0; i<matA.m; i++){
-      for(long j=std::max(long(0),i-matA.kl); j<std::min(matA.n,i+matA.ku+1); j++){
-        matB(i,j)+=matA(i,j);
+      const long jmax =std::min(matA.n,i+matA.ku+1);
+      for(long j=std::max(long(0),i-matA.kl); j<jmax; j++){
+        matB(i,j) += matA(i,j);
       }
     }
     
@@ -38,11 +40,13 @@
     newmat.zero();
     
     for(long i=0; i<matA.m; i++){
-      for(long j=std::max(long(0),i-matA.kl); j<std::min(matA.n,i+matA.ku+1); j++){
-        newmat(i,j)+=matA(i,j);
+      const long jmax1 =std::min(matA.n,i+matA.ku+1);
+      for(long j=std::max(long(0),i-matA.kl); j<jmax1; j++){
+        newmat(i,j) += matA(i,j);
       }
-      for(long j=std::max(long(0),i-matB.kl); j<std::min(matB.n,i+matB.ku+1); j++){
-        newmat(i,j)+=matB(i,j);
+      const long jmax2 =std::min(matB.n,i+matB.ku+1);
+      for(long j=std::max(long(0),i-matB.kl); j<jmax2; j++){
+        newmat(i,j) += matB(i,j);
       }
     }
     
@@ -67,8 +71,9 @@
   
   if(matA.kl>matB.kl && matA.ku>matB.ku){
     for(long i=0; i<matB.m; i++){
-      for(long j=std::max(long(0),i-matB.kl); j<std::min(matB.n,i+matB.ku+1); j++){
-        matA(i,j)-=matB(i,j);
+      const long jmax =std::min(matB.n,i+matB.ku+1);
+      for(long j=std::max(long(0),i-matB.kl); j<jmax; j++){
+        matA(i,j) -= matB(i,j);
       }
     }
     
@@ -81,11 +86,13 @@
     newmat.zero();
     
     for(long i=0; i<matA.m; i++){
-      for(long j=std::max(long(0),i-matA.kl); j<std::min(matA.n,i+matA.ku+1); j++){
-        newmat(i,j)+=matA(i,j);
+      const long jmax1 =std::min(matA.n,i+matA.ku+1);
+      for(long j=std::max(long(0),i-matA.kl); j<jmax1; j++){
+        newmat(i,j) += matA(i,j);
       }
-      for(long j=std::max(long(0),i-matB.kl); j<std::min(matB.n,i+matB.ku+1); j++){
-        newmat(i,j)-=matB(i,j);
+      const long jmax2 =std::min(matB.n,i+matB.ku+1);
+      for(long j=std::max(long(0),i-matB.kl); j<jmax2; j++){
+        newmat(i,j) -= matB(i,j);
       }
     }
     
@@ -112,10 +119,11 @@
   newmat.zero();
   
   for(long i=0; i<newmat.m; i++){
-    for(long j=std::max(long(0),i-newmat.kl); j<std::min(newmat.n,i+newmat.ku+1); j++){
-      for(long k=std::max( std::max(long(0),i-matA.kl), std::max(long(0),j-matB.ku) );
-          k< std::min( std::min(matA.n,i+matA.ku+1), std::min(matB.m,j+matB.kl+1) ); k++){
-        newmat(i,j)+= matA(i,k)*matB(k,j);
+    const long jmax =std::min(newmat.n,i+newmat.ku+1);
+    for(long j=std::max(long(0),i-newmat.kl); j<jmax; j++){
+      const long kmax =std::min( std::min(matA.n,i+matA.ku+1), std::min(matB.m,j+matB.kl+1) );
+      for(long k=std::max( std::max(long(0),i-matA.kl), std::max(long(0),j-matB.ku) ); k<kmax; k++){
+        newmat(i,j) += matA(i,k)*matB(k,j);
       }
     }
   }
/trunk/include/_dgbmatrix-/_dgbmatrix-_dgematrix.hpp Diff Switch to side-by-side view
--- a/trunk/include/_dgbmatrix-/_dgbmatrix-_dgematrix.hpp
+++ b/trunk/include/_dgbmatrix-/_dgbmatrix-_dgematrix.hpp
@@ -12,8 +12,9 @@
 #endif//CPPL_DEBUG
   
   for(long i=0; i<matA.m; i++){
-    for(long j=std::max(long(0),i-matA.kl); j<std::min(matA.n,i+matA.ku+1); j++){
-      matB(i,j)+=matA(i,j);
+    const long jmax =std::min(matA.n,i+matA.ku+1);
+    for(long j=std::max(long(0),i-matA.kl); j<jmax; j++){
+      matB(i,j) += matA(i,j);
     }
   }
   
@@ -35,8 +36,9 @@
 #endif//CPPL_DEBUG
   
   for(long i=0; i<matA.m; i++){
-    for(long j=std::max(long(0),i-matA.kl); j<std::min(matA.n,i+matA.ku+1); j++){
-      matB(i,j) =matA(i,j)-matB(i,j);
+    const long jmax =std::min(matA.n,i+matA.ku+1);
+    for(long j=std::max(long(0),i-matA.kl); j<jmax; j++){
+      matB(i,j) = matA(i,j)-matB(i,j);
     }
   }
   
@@ -62,8 +64,9 @@
   
   for(long i=0; i<newmat.m; i++){
     for(long j=0; j<newmat.n; j++){
-      for(long k=std::max(long(0),i-matA.kl); k<std::min(matA.n,i+matA.ku+1); k++){
-        newmat(i,j)+=matA(i,k)*matB(k,j);
+      const long kmax =std::min(matA.n,i+matA.ku+1);
+      for(long k=std::max(long(0),i-matA.kl); k<kmax; k++){
+        newmat(i,j) += matA(i,k)*matB(k,j);
       }
     }
   }
/trunk/include/_dgbmatrix-/_dgbmatrix-_dgsmatrix.hpp Diff Switch to side-by-side view
Loading...
/trunk/include/_dgbmatrix-/_dgbmatrix-_dsymatrix.hpp Diff Switch to side-by-side view
Loading...
/trunk/include/_dgbmatrix-/_dgbmatrix-calc.hpp Diff Switch to side-by-side view
Loading...
/trunk/include/_dgbmatrix-/_dgbmatrix-cast.hpp Diff Switch to side-by-side view
Loading...
/trunk/include/_dgbmatrix-/_dgbmatrix-dgbmatrix.hpp Diff Switch to side-by-side view
Loading...
/trunk/include/_dgbmatrix-/_dgbmatrix-dgematrix.hpp Diff Switch to side-by-side view
Loading...
/trunk/include/_dgbmatrix-/_dgbmatrix-dgsmatrix.hpp Diff Switch to side-by-side view
Loading...
/trunk/include/_dgbmatrix-/_dgbmatrix-dsymatrix.hpp Diff Switch to side-by-side view
Loading...
/trunk/include/_dgbmatrix-/_dgbmatrix-io.hpp Diff Switch to side-by-side view
Loading...
/trunk/include/_dgematrix-/_dgematrix-_dgbmatrix.hpp Diff Switch to side-by-side view
Loading...
/trunk/include/_dgematrix-/_dgematrix-_dgsmatrix.hpp Diff Switch to side-by-side view
Loading...
/trunk/include/_dgematrix-/_dgematrix-dgbmatrix.hpp Diff Switch to side-by-side view
Loading...
/trunk/include/_dgematrix-/_dgematrix-dgsmatrix.hpp Diff Switch to side-by-side view
Loading...
/trunk/include/_dgematrix-/_dgematrix-dssmatrix.hpp Diff Switch to side-by-side view
Loading...
/trunk/include/_dgsmatrix-/_dgsmatrix-_dcovector.hpp Diff Switch to side-by-side view
Loading...
/trunk/include/_dgsmatrix-/_dgsmatrix-_dgbmatrix.hpp Diff Switch to side-by-side view
Loading...
/trunk/include/_dgsmatrix-/_dgsmatrix-_dgematrix.hpp Diff Switch to side-by-side view
Loading...
/trunk/include/_dgsmatrix-/_dgsmatrix-_dgsmatrix.hpp Diff Switch to side-by-side view
Loading...
/trunk/include/_dgsmatrix-/_dgsmatrix-_dsymatrix.hpp Diff Switch to side-by-side view
Loading...
/trunk/include/_dgsmatrix-/_dgsmatrix-calc.hpp Diff Switch to side-by-side view
Loading...
/trunk/include/_dgsmatrix-/_dgsmatrix-cast.hpp Diff Switch to side-by-side view
Loading...
/trunk/include/_dgsmatrix-/_dgsmatrix-dcovector.hpp Diff Switch to side-by-side view
Loading...
/trunk/include/_dgsmatrix-/_dgsmatrix-dgbmatrix.hpp Diff Switch to side-by-side view
Loading...
1 2 3 .. 9 > >> (Page 1 of 9)
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.