/[escript]/trunk/finley/src/Util.c
ViewVC logotype

Diff of /trunk/finley/src/Util.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2747 by jfenwick, Mon Jul 20 06:20:06 2009 UTC revision 2748 by gross, Tue Nov 17 07:32:59 2009 UTC
# Line 89  void Finley_Util_AddScatter(dim_t len,in Line 89  void Finley_Util_AddScatter(dim_t len,in
89    
90  void Finley_Util_SmallMatMult(dim_t A1,dim_t A2, double* A, dim_t B2, double*B, double* C) {  void Finley_Util_SmallMatMult(dim_t A1,dim_t A2, double* A, dim_t B2, double*B, double* C) {
91      dim_t i,j,s;      dim_t i,j,s;
92      for (i=0;i<A1*A2;i++) A[i]=0;      register double rtmp;
93         for (i=0;i<A1;i++) {         for (i=0;i<A1;i++) {
94            for (j=0;j<A2;j++) {            for (j=0;j<A2;j++) {
95               for (s=0;s<B2;s++) {               rtmp=0;
96                  A[INDEX2(i,j,A1)]+=B[INDEX2(i,s,A1)]*C[INDEX2(s,j,B2)];               for (s=0;s<B2;s++) rtmp+=B[INDEX2(i,s,A1)]*C[INDEX2(s,j,B2)];
97               }               A[INDEX2(i,j,A1)]=rtmp;
98            }            }
99         }         }
100  }  }
# Line 105  void Finley_Util_SmallMatMult(dim_t A1,d Line 105  void Finley_Util_SmallMatMult(dim_t A1,d
105    
106  void Finley_Util_SmallMatSetMult(dim_t len,dim_t A1,dim_t A2, double* A, dim_t B2, double*B, double* C) {  void Finley_Util_SmallMatSetMult(dim_t len,dim_t A1,dim_t A2, double* A, dim_t B2, double*B, double* C) {
107      dim_t q,i,j,s;      dim_t q,i,j,s;
108      for (i=0;i<A1*A2*len;i++) A[i]=0;      register double rtmp;
109      for (q=0;q<len;q++) {      for (q=0;q<len;q++) {
110         for (i=0;i<A1;i++) {         for (i=0;i<A1;i++) {
111            for (j=0;j<A2;j++) {            for (j=0;j<A2;j++) {
112               for (s=0;s<B2;s++) {               rtmp=0;
113                  A[INDEX3(i,j,q,A1,A2)]+=B[INDEX3(i,s,q,A1,B2)]*C[INDEX3(s,j,q,B2,A2)];               for (s=0;s<B2;s++) rtmp+=B[INDEX3(i,s,q,A1,B2)]*C[INDEX3(s,j,q,B2,A2)];
114               }               A[INDEX3(i,j,q, A1,A2)]=rtmp;
115              }
116           }
117        }
118    }
119    /*    multiplies a set of matries with a single matrix: */
120    
121    /*        A(1:A1,1:A2,i)=B(1:A1,1:B2,i)*C(1:B2,1:A2) i=1,len */
122    
123    void Finley_Util_SmallMatSetMult1(dim_t len,dim_t A1,dim_t A2, double* A, dim_t B2, double*B, double* C) {
124        dim_t q,i,j,s;
125        register double rtmp;
126        for (q=0;q<len;q++) {
127           for (i=0;i<A1;i++) {
128              for (j=0;j<A2;j++) {
129                 rtmp=0;
130                 for (s=0;s<B2;s++) rtmp+=B[INDEX3(i,s,q, A1,B2)]*C[INDEX2(s,j,B2)];
131                 A[INDEX3(i,j,q,A1,A2)]=rtmp;
132            }            }
133         }         }
134      }      }

Legend:
Removed from v.2747  
changed lines
  Added in v.2748

  ViewVC Help
Powered by ViewVC 1.1.26