====== 5.5. Integer Multiplication ====== \\ ===== The Problem ===== \\ We need an efficient way to multiply two integers. The widely used algorithm costs O(n²) time.\\ Our goal: improve on this quadratic running time.\\ ==== Designing the Algorithm ==== \\ The basic idea is to break up the product into partial sums.\\ The recurrence relation of the algorithm after some analysis: T(n) ≤ 3T(n/2) + cn\\ ** Algorithm** \\ \\ >>>>>>>>>>>>>>>>>>>>>>>>> Recursive-Multiply(x,y):\\ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Write x = x1*2^(n/2) + x0\\ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> y = y1*2^(n/2) + y0\\ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Compute x1 + x0 and y1 + y0\\ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> p = Recursive-Multiply(x1 + x0,y1 + y0)\\ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> x1 y1 = Recursive-Multiply(x1,y1)\\ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> x0y0 = Recursive-Multiply(x0,y0)\\ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Return x1y1.(2^n) + (p - x1y1 - \\ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> x0y0).(2^n/2) + x0 y0\\ \\ Upon analyzing this algorithm, we find out that the overall running time is O(n^(log(base 3)3)= O(n^1.59).\\ \\ I give this section 8/10