====== 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