PSI sics-cvs-psi_pre-ansto
This commit is contained in:
57
matrix/matmul.c
Normal file
57
matrix/matmul.c
Normal file
@@ -0,0 +1,57 @@
|
||||
/*
|
||||
*-----------------------------------------------------------------------------
|
||||
* file: matmul.c
|
||||
* desc: matrix multiplication
|
||||
* by: ko shu pui, patrick
|
||||
* date: 24 nov 91 v0.1
|
||||
* revi:
|
||||
* ref:
|
||||
* [1] Mary L.Boas, "Mathematical Methods in the Physical Sciene,"
|
||||
* John Wiley & Sons, 2nd Ed., 1983. Chap 3.
|
||||
*
|
||||
*-----------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include "matrix.h"
|
||||
|
||||
/*
|
||||
*-----------------------------------------------------------------------------
|
||||
* funct: mat_mul
|
||||
* desct: multiplication of two matrice
|
||||
* given: A, B = compatible matrice to be multiplied
|
||||
* retrn: NULL if malloc() fails
|
||||
* else allocated matrix of A * B
|
||||
* comen:
|
||||
*-----------------------------------------------------------------------------
|
||||
*/
|
||||
MATRIX mat_mul( A, B )
|
||||
MATRIX A, B;
|
||||
{
|
||||
int i, j, k;
|
||||
MATRIX C;
|
||||
|
||||
if ((C = mat_creat( MatRow(A), MatCol(B), UNDEFINED )) == NULL)
|
||||
return (NULL);
|
||||
|
||||
for (i=0; i<MatRow(A); i++)
|
||||
for (j=0; j<MatCol(B); j++)
|
||||
for (k=0, C[i][j]=0.0; k<MatCol(A); k++)
|
||||
{
|
||||
C[i][j] += A[i][k] * B[k][j];
|
||||
}
|
||||
return (C);
|
||||
}
|
||||
|
||||
double mat_diagmul( A )
|
||||
MATRIX A;
|
||||
{
|
||||
int i;
|
||||
double result = 1.0;
|
||||
|
||||
for (i=0; i<MatRow(A); i++)
|
||||
{
|
||||
result *= A[i][i];
|
||||
}
|
||||
return (result);
|
||||
}
|
||||
Reference in New Issue
Block a user