Advertisement
Rapptz

Karatsuba

Feb 14th, 2013
363
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.21 KB | None | 0 0
  1. // void Split(const BigInteger& bi, const BigInteger& bi2, BigInteger& x, BigInteger& x2, BigInteger& y, BigInteger& y2, int& n) {
  2. //     ullong size = bi.digits.size();
  3. //     ullong size2 = bi2.digits.size();
  4.  
  5. //     ullong minSize = size;
  6. //     if(minSize > size2) {
  7. //         minSize = size2;
  8. //     }
  9. //     n = minSize / 2;
  10.  
  11. //     x.digits.resize(n);
  12. //     x2.digits.resize(size-n);
  13. //     y.digits.resize(n);
  14. //     y2.digits.resize(size2-n);
  15.  
  16. //     std::copy(bi.digits.begin(),bi.digits.begin()+n,x.digits.begin());
  17. //     std::copy(bi.digits.begin()+n,bi.digits.end(),x2.digits.begin());
  18. //     std::copy(bi2.digits.begin(),bi2.digits.begin()+n,y.digits.begin());
  19. //     std::copy(bi2.digits.begin()+n,bi2.digits.end(),y2.digits.begin());
  20. // }
  21. // BigInteger Karatsuba(const BigInteger& bi, const BigInteger& bi2) {
  22. //     BigInteger x, x2, y, y2;
  23. //     BigInteger z, z2, z3;
  24.  
  25. //     if((bi.digits.size() < 250) || (bi2.digits.size() < 250))
  26. //         return bi*bi2;
  27.  
  28. //     int n;
  29. //     Split(bi,bi2,x,x2,y,y2,n);
  30. //     z = Karatsuba(x,y);
  31. //     z3 = Karatsuba(x2,y2);
  32. //     z2 = (Karatsuba(x+x2,y+y2)-z3)-z;
  33.  
  34. //     z.addZeroes(n);
  35. //     z3.addZeroes(2*n);
  36.  
  37. //     return z+z2+z3;
  38. // }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement