00001
00002 #ifndef _ehrhart_H_
00003 #define _ehrhart_H_
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #ifndef ALL_OVERFLOW_WARNINGS
00014 extern int overflow_warning_flag;
00015 #endif
00016
00017
00018 #if (defined(__STDC__) || defined(__cplusplus))
00019
00020 #if defined(__cplusplus)
00021 extern "C" {
00022 #endif
00023
00024 extern void count_points ( int pos, Polyhedron *P, Value *context, Value *res );
00025 extern void eadd ( evalue *e1, evalue *res );
00026 extern enode *ecopy ( enode *e );
00027 extern void edot ( enode *v1, enode *v2, evalue *res );
00028 extern enode *new_enode( enode_type type,int size, int pos );
00029 extern void free_evalue_refs ( evalue *e );
00030 extern Enumeration *Polyhedron_Enumerate ( Polyhedron *P, Polyhedron *C,
00031 unsigned MAXRAYS, char **pname );
00032 extern void print_enode ( FILE *DST, enode *p, char **pname );
00033 extern void print_evalue ( FILE *DST, evalue *e, char **pname );
00034 extern void reduce_evalue (evalue *e);
00035 extern void Enumeration_Free(Enumeration *en);
00036 extern Enumeration *Ehrhart_Quick_Apx(Matrix * M, Matrix * C,
00037 Matrix ** Validity_Lattice,
00038 unsigned MAXRAYS);
00039 extern Enumeration * Enumeration_zero(unsigned int nbParms,
00040 unsigned int maxRays);
00041
00042 #if defined(__cplusplus)
00043 }
00044 #endif
00045
00046 #else
00047
00048 extern void count_points ();
00049 extern void eadd ();
00050 extern enode *ecopy ();
00051 extern void edot ();
00052 extern enode *new_enode( );
00053 extern void free_evalue_refs ();
00054 extern Enumeration *Polyhedron_Enumerate (
00055 );
00056 extern void print_enode ();
00057 extern void print_evalue ();
00058 extern void reduce_evalue ();
00059 extern void Enumeration_Free();
00060 extern Enumeration *Ehrhart_Quick_Apx(
00061
00062 );
00063 extern Enumeration * Enumeration_zero(
00064 );
00065
00066 #endif
00067 #endif