bignum_helper.h 774 B

1234567891011121314151617181920212223
  1. //
  2. // bignum_helper.h
  3. // bigdecimal
  4. //
  5. // Created by Sam Jaffe on 7/4/17.
  6. //
  7. #pragma once
  8. #include <vector>
  9. namespace math { namespace detail {
  10. using data_type = std::vector<int32_t>;
  11. constexpr const int32_t powers[] = {1, 10, 100, 1000, 10000,
  12. 100000, 1000000, 10000000, 100000000, 1};
  13. // 1 => GREATER, 0 => EQUAL, -1 => LESS
  14. int compare(data_type const & rhs, data_type const & lhs, size_t offset = 0);
  15. void add(data_type & rhs, data_type const & lhs, size_t offset = 0);
  16. void subtract_nounderflow(data_type & rhs, data_type const & lhs,
  17. size_t offset = 0);
  18. void multiply(data_type & rhs, data_type const & lhs);
  19. data_type divide(data_type & remainder, data_type const & divisor);
  20. }}