BigNum Math: Implementing Cryptographic Multiple Precision Arithmetic

| [3] | Devise an efficient algorithm for selection of the radix point to handle inputs that have different numbers of digits in Karatsuba multiplication. |
| [2] | In section 5.3, we stated, that every column of a squaring is made up of double products and at most one square is stated. Prove this statement. |
| [3] | Prove the equation for Karatsuba squaring. |
| [1] | Prove that Karatsuba squaring requires O ( n lg (3)) time. |
| [3] | Implement a threaded version of Comba multiplication (and squaring) where you compute subsets of the columns in each thread. Determine a cutoff point where it is effective, and add the logic to mp_mul() and mp_sqr(). |
| [4] | Same as the previous, but also modify the Karatsuba and Toom-Cook. You must increase the throughput of mp_exptmod() for random odd moduli in the range 512 4096 bits significantly (> 2 x) to complete this challenge. |