00001
00002
00003
00004
00005
00006
00007 #ifndef _matrix_H_
00008 #define _matrix_H_
00009 #if (defined(__STDC__) || defined(__cplusplus))
00010
00011 #if defined(__cplusplus)
00012 extern "C" {
00013 #endif
00014
00015 extern Matrix *Matrix_Alloc(unsigned NbRows, unsigned NbColumns);
00016 extern void Matrix_Free(Matrix *Mat);
00017 extern void Matrix_Print(FILE * Dst,char *Format,Matrix *Mat);
00018 extern void Matrix_Read_Input(Matrix *Mat);
00019 extern Matrix *Matrix_Read(void);
00020 extern void right_hermite(Matrix *A,Matrix **Hp,Matrix **Up,Matrix
00021 **Qp);
00022 extern void left_hermite(Matrix *A,Matrix **Hp,Matrix **Qp,Matrix
00023 **Up);
00024 extern int MatInverse(Matrix *M,Matrix *MInv);
00025 extern void rat_prodmat(Matrix *S,Matrix *X,Matrix *P);
00026 extern void Matrix_Vector_Product(Matrix *mat,Value *p1,Value *p2);
00027 extern void Vector_Matrix_Product(Value *p1,Matrix *mat,Value *p2);
00028 extern void Matrix_Product(Matrix *mat1,Matrix *mat2,Matrix *mat3);
00029 extern int Matrix_Inverse(Matrix *Mat,Matrix *MatInv);
00030
00031 #if defined(__cplusplus)
00032 }
00033 #endif
00034
00035 #else
00036
00037 extern Matrix *Matrix_Alloc();
00038 extern void Matrix_Free();
00039 extern void Matrix_Print();
00040 extern void Matrix_Read_Input();
00041 extern Matrix *Matrix_Read();
00042 extern void right_hermite(
00043 );
00044 extern void left_hermite(
00045 );
00046 extern int MatInverse();
00047 extern void rat_prodmat();
00048 extern void Matrix_Vector_Product();
00049 extern void Vector_Matrix_Product();
00050 extern void Matrix_Product();
00051 extern int Matrix_Inverse();
00052
00053 #endif
00054 #endif