00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef _Matop_h_
00019 #define _Matop_h_
00020
00021 #if defined(__cplusplus)
00022 extern "C" {
00023 #endif
00024
00025
00026 extern void Lcm3(Value a, Value b, Value *c);
00027 extern Matrix *AddANullColumn ( Matrix *M );
00028 extern Matrix *AddANullRow ( Matrix *M );
00029 extern void ExchangeColumns ( Matrix *M, int Column1, int Column2 );
00030 extern void ExchangeRows ( Matrix *M, int Row1, int Row2 );
00031 extern int findHermiteBasis ( Matrix *M, Matrix **Result );
00032 extern Matrix *Identity ( unsigned size );
00033 extern Bool isinHnf ( Matrix *A );
00034 extern Bool isIntegral ( Matrix *A );
00035 extern Value *Lcm (Value i, Value j);
00036 extern Matrix *Matrix_Copy(Matrix const *Src);
00037 extern void PutColumnFirst ( Matrix *X, int Columnnumber );
00038 extern void PutColumnLast ( Matrix *X, int Columnnumber );
00039 extern void PutRowFirst ( Matrix *X, int Rownumber );
00040 extern void PutRowLast ( Matrix *X, int Rownumber );
00041 extern Matrix *RemoveNColumns ( Matrix *M, int FirstColumnnumber, int NumColumns );
00042 extern Matrix *RemoveColumn ( Matrix *M, int Columnnumber );
00043 extern Matrix *RemoveRow ( Matrix *M, int Rownumber );
00044 extern Matrix *Transpose ( Matrix *A );
00045
00046 #if defined(__cplusplus)
00047 }
00048 #endif
00049
00050 #endif