#include #include "gf28.h" using namespace std; namespace GF28 { const int modulus=0x11b; uint8_t reduce(int v,int m){ assert(v&&m); while(true){ int sh=__builtin_clz(m)-__builtin_clz(v); if(sh<0)break; v^=m<>=1; } return res; } uint8_t inverse(uint8_t value){ if(value==0)return value; int x=1,y=0,x2=0,y2=1,r=modulus,r2=value; while(r2!=0){ assert(r!=0); int ex=__builtin_clz(r2)-__builtin_clz(r); if(ex<0){ swap(x,x2); swap(y,y2); swap(r,r2); } else { int xn=x^(x2<