=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/engine/Mgfs.c,v retrieving revision 1.8 retrieving revision 1.10 diff -u -p -r1.8 -r1.10 --- OpenXM_contrib2/asir2000/engine/Mgfs.c 2001/07/03 01:41:26 1.8 +++ OpenXM_contrib2/asir2000/engine/Mgfs.c 2001/09/03 01:04:26 1.10 @@ -1,4 +1,4 @@ -/* $OpenXM: OpenXM_contrib2/asir2000/engine/Mgfs.c,v 1.7 2001/06/27 04:07:57 noro Exp $ */ +/* $OpenXM: OpenXM_contrib2/asir2000/engine/Mgfs.c,v 1.9 2001/07/23 05:05:41 noro Exp $ */ #include "ca.h" @@ -8,7 +8,16 @@ extern int *current_gfs_plus1; void mulssfum(UM,int,UM); void kmulsfummain(UM,UM,UM); -inline int _ADDSF(a,b) + +#if defined(__GNUC__) +#define INLINE inline +#elif defined(VISUAL) +#define INLINE __inline +#else +#define INLINE +#endif + +INLINE int _ADDSF(a,b) int a,b; { if ( !a ) @@ -42,7 +51,7 @@ int a,b; } } -inline int _MULSF(a,b) +INLINE int _MULSF(a,b) int a,b; { if ( !a || !b ) @@ -321,6 +330,30 @@ UM f; inv = _invsf(*sp); for ( ; i >= 0; i--, sp-- ) *sp = _MULSF(*sp,inv); +} + +int compsfum(a,b) +UM a,b; +{ + int i,da,db; + + if ( !a ) + return !b?0:1; + else if ( !b ) + return 1; + else if ( (da = DEG(a)) > (db = DEG(b)) ) + return 1; + else if ( da < db ) + return -1; + else { + for ( i = da; i >= 0 && COEF(a)[i] == COEF(b)[i]; i-- ); + if ( i < 0 ) + return 0; + else if ( (unsigned int)COEF(a)[i] > (unsigned int)COEF(b)[i] ) + return 1; + else + return -1; + } } void addsfarray(int,int *,int *);