00001 typedef Monom<macrev_Z, mon::rep_t> mon_mod;
00002
00003 template<>
00004 void INIT_ELEM<pol<mon_mod,macrev_Z > >(void *ptr, int size)
00005 {
00006 typedef pol<mon_mod,macrev_Z > pol;
00007 int nbelem=size/sizeof(pol),k=0;
00008 for(pol *i=(pol*)ptr;k<nbelem;i++,k++)
00009 mpz_init((i->ind).coeff.rep);
00010 }
00011 template<>
00012 void INIT_ELEM<macrev_Z >(void * ptr, int size)
00013 {
00014 int nbelem=size/sizeof(macrev_Z),k=0;
00015 #if 0
00016 mpz_array_init(*((mpz_t *)ptr),nbelem,macrev_Z_nbbits);
00017 return;
00018 #endif
00019 for(macrev_Z *i=(macrev_Z *)ptr;k<nbelem;i++,k++)
00020 mpz_init(i->rep)
00021 ;
00022 }
00023 template<>
00024 void CLEAR_ELEM<macrev_Z >(void * ptr, int size)
00025 {
00026
00027 #if 0
00028 if(ptr)
00029 mpz_clear(((macrev_Z*) ptr)->rep);
00030 return;
00031 #endif
00032 int nbelem=size/sizeof(macrev_Z),k=0;
00033 for(macrev_Z *i=(macrev_Z*)ptr;k<nbelem;i++,k++)
00034 mpz_clear(i->rep);
00035 }
00036
00037 template<>
00038 void CLEAR_ELEM<pol<mon_mod,macrev_Z > >(void *ptr, int size)
00039 {
00040 typedef pol<mon_mod,macrev_Z > pol;
00041 typedef pol::coeff_t coeff;
00042 int nbelem=size/sizeof(pol),k=0;
00043 for(pol *i=(pol*)ptr;k<nbelem;i++,k++)
00044 {
00045 mpz_clear(((i->ind).coeff.rep));
00046
00047 }
00048 }
00049 #if 0
00050 template<>
00051 inline void * MAC_REV_REALLOC<macrev_Z>(void * ptr,int size,int newsize)
00052 {
00053 void *res=ptr;
00054 if(size<newsize)
00055 {
00056 INIT_ELEM<macrev_Z>(res,newsize);
00057 for(int i=0;i<size/sizeof(macrev_Z);i++)
00058 ((macrev_Z *)res)[i]=((macrev_Z *)ptr)[i];
00059 CLEAR_ELEM<macrev_Z>(ptr,size);
00060 }
00061 if(size>newsize)
00062 {
00063 res=realloc(ptr,newsize);
00064 }
00065 return res;
00066 }
00067 #endif
00068
00069 inline int Iszero(const macrev_Z & c)
00070 {
00071 return c==macrev_Z(0);
00072 }
00073
00074 inline void convert (macrev_Z & dd, char *s)
00075 {
00076 dd=macrev_Z(s);
00077 }