required inclusion of a matrix package. - modified counter error handling to send a Stop when the _BAD_BUSY error is received. - added an environment interface to the general controller stuff in choco.* Also added setting a parameter directly at the controller object. - Added a driver for the ETH High Temperature Furnace to be used at SANS.
60 lines
1.2 KiB
C
60 lines
1.2 KiB
C
/*
|
||
*-----------------------------------------------------------------------------
|
||
* 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);
|
||
}
|
||
|
||
|
||
|