@@ -831,6 +831,44 @@ double * Matrix_mult( const double *A, const double *B, size_t Am, size_t An, si
831
831
return m ;
832
832
}
833
833
834
+ void Matrix_mult2 ( double * m , const double * A , const double * B , size_t Am , size_t An , size_t Bm , size_t Bn ){
835
+ if ( An != Bm ) error ("Matrix_mult: incompatible size\n" );
836
+ memset (m , 0 , sizeof (double )* Am * Bn );
837
+
838
+ size_t i ,j ,k ;
839
+ for ( i = 0 ; i < Am ; i ++ ){
840
+ for ( j = 0 ; j < Bn ; j ++ ){
841
+ for ( k = 0 ; k < Bm ; k ++ )
842
+ m [i * Bn + j ] += A [i * An + k ] * B [k * Bn + j ];
843
+ }
844
+ }
845
+ }
846
+
847
+ void Matrix_mult3 ( double * m , const double * * A , const double * B , size_t Am , size_t An , size_t Bm , size_t Bn ){
848
+ if ( An != Bm ) error ("Matrix_mult: incompatible size\n" );
849
+ memset (m , 0 , sizeof (double )* Am * Bn );
850
+
851
+ size_t i ,j ,k ;
852
+ for ( i = 0 ; i < Am ; i ++ ){
853
+ for ( j = 0 ; j < Bn ; j ++ ){
854
+ for ( k = 0 ; k < Bm ; k ++ )
855
+ m [i * Bn + j ] += A [i ][k ] * B [k * Bn + j ];
856
+ }
857
+ }
858
+ }
859
+
860
+ void Matrix_mult4 ( double * m , const double * A , const double * * B , size_t Am , size_t An , size_t Bm , size_t Bn ){
861
+ if ( An != Bm ) error ("Matrix_mult: incompatible size\n" );
862
+ memset (m , 0 , sizeof (double )* Am * Bn );
863
+
864
+ size_t i ,j ,k ;
865
+ for ( i = 0 ; i < Am ; i ++ ){
866
+ for ( j = 0 ; j < Bn ; j ++ ){
867
+ for ( k = 0 ; k < Bm ; k ++ )
868
+ m [i * Bn + j ] += A [i * An + k ] * B [k ][j ];
869
+ }
870
+ }
871
+ }
834
872
#pragma mark -
835
873
#pragma mark print functions
836
874
0 commit comments