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