treewalk.hpp 473 B

1234567891011121314151617181920212223
  1. #ifndef TREEWALK_HPP
  2. #define TREEWALK_HPP
  3. #include "semigroup.hpp"
  4. #include "stack.hpp"
  5. bool cut(const Semigroup& m);
  6. void treat(const Semigroup& m);
  7. void walk(Stack& stack,size_t* res);
  8. void signal_checkpoint_handler(int signum);
  9. inline bool
  10. cut(const Semigroup& m){
  11. if(3*m.left_primitive>=m.min) return true;
  12. return false;
  13. }
  14. inline bool is_special(const Semigroup& S){
  15. ind_t c=S.conductor;
  16. ind_t m=S.min;
  17. ind_t x=c+(m-1)-c%m;
  18. return S.decs[x]==1;
  19. }
  20. #endif