You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

44 lines
1.2 KiB
C++

Fig10_38.cpp - Simple matrix multiplication algorithm with a test program
#include <iostream.h>
#include "matrix.h"
/* START: Fig10_38.txt */
/**
* Standard matrix multiplication.
* Arrays start at 0.
* Assumes a and b are square.
*/
matrix<int> operator*( const matrix<int> & a, const matrix<int> & b )
{
int n = a.numrows( );
matrix<int> c( n, n );
int i;
for( i = 0; i < n; i++ ) // Initialization
for( int j = 0; j < n; j++ )
c[ i ][ j ] = 0;
for( i = 0; i < n; i++ )
for( int j = 0; j < n; j++ )
for( int k = 0; k < n; k++ )
c[ i ][ j ] += a[ i ][ k ] * b[ k ][ j ];
return c;
}
/* END */
int main( )
{
matrix<int> a( 2, 2 );
a[ 0 ][ 0 ] = 1; a[ 0 ][ 1 ] = 2;
a[ 1 ][ 0 ] = 3; a[ 1 ][ 1 ] = 4;
matrix<int> c = a * a;
cout << c[ 0 ][ 0 ] << " " << c[ 0 ][ 1 ] << endl <<
c[ 1 ][ 0 ] << " " << c[ 1 ][ 1 ] << endl;
return 0;
}