Advertisement
Guest User

mul_ttmath.cpp

a guest
Apr 18th, 2013
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.07 KB | None | 0 0
  1. #include "ttmath/ttmath.h"
  2. #include <ctime>
  3. #include <iostream>
  4. #include <cstdlib>
  5. #include <string>
  6.  
  7.  
  8. #define DIGITS 200
  9. #define TESTS  100000
  10. #define TTMATH_MANTISSA_SIZE_BITS 1344
  11. // because 2^1344 = 3.839...e+404  (1344 = 21 * 64)
  12. // and we need more than 400 digits after comma
  13. // (multiplication needs at least DIGITS * 2 to store all the digits)
  14.  
  15.  
  16. char rand_digit()
  17. {
  18.     return '0' + int(double(std::rand()) / RAND_MAX * 9.0);
  19. }
  20.  
  21.  
  22. void generate_something(std::string & out)
  23. {
  24.     out.resize(DIGITS);
  25.  
  26.     for(size_t i=0 ; i<DIGITS ; ++i)
  27.         out[i] = rand_digit();
  28. }
  29.  
  30.  
  31. int main()
  32. {
  33. std::srand(time(0));
  34. ttmath::Big<1, TTMATH_BITS(TTMATH_MANTISSA_SIZE_BITS)> a,b,c;
  35. int i, i2;
  36. std::string str_a, str_b;
  37.  
  38.     clock_t t1 = clock();
  39.  
  40.     for(i=0 ; i<10 ; ++i)
  41.     {
  42.         generate_something(str_a);
  43.         generate_something(str_b);
  44.  
  45.         a = str_a;
  46.         b = str_b;
  47.  
  48.         //std::cout << str_a << std::endl;
  49.         //std::cout << str_b << std::endl;
  50.  
  51.         for(i2 = 0 ; i2<TESTS ; ++i2)
  52.             c = a * b;
  53.     }
  54.  
  55.     clock_t t2 = clock();
  56.  
  57.     std::cout << "time: " << (t2-t1) << std::endl;
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement