16 #ifndef polybori_groebner_PseudoLongProduct_h_
17 #define polybori_groebner_PseudoLongProduct_h_
33 protected BitMask<sizeof(unsigned long)*4> {
39 most(high(first)*high(second)), least(low(first)*low(second)) {
41 long_type mixed = high(least) + high(first)*low(second);
44 mixed = low(mixed) + low(first)*high(second);
47 least = shift(mixed) + low(least);
52 return (most > 0) || (least > rhs);
56 template <
long_type MaxLow>
58 return greater(MaxLow);
62 template <
long_type MaxHigh,
long_type MaxLow>
64 return (most > MaxHigh) || ( (most == MaxHigh) && (least > MaxLow) );
68 long_type most, least;
71 template <
class RhsType>