CISC 320 Algorithms and Advanced Programming -- Spring, 2000

Fast Squaring (and Multiplication) of Large Integers.
Project Phase 3, Individual Writeup Guidelines,

The individual writeup is a brief essay, 3 pages in length (a little more is ok). Due date is May 17. 2000.

  1. What the code does: Explain the structure of your solution. Compare it to any solutions or variations you tried but rejected. If you used the outline in main3.cc, did your team find that handling certain details one way rather than another was better? If you did not use the outline, what is your method? Did you try and reject as less efficient the outlined divide and conquer method? Again, did you find handling certain details one way better than another you tried?
  2. Asymptotic analysis and prediction: The classical method csqr() requires worst case and average case time of theta(k^2) to multiply two k digit numbers. Thus we hypothesize that the time required will approximately quadruple if k is doubled, especially for larger values of k. Give an asymptotic analysis of your ksqr(). Set up a recurrence formula or summation and solve it. Does your ksqr() also run in theta(k^2) time, but with a smaller constant, or is it asympotically faster? What do you hypothesize regarding the slow down when k is doubled?
  3. Experimental measurements: Report times for the benchmark csqr() and for your ksqr() for a random number of lengths k, for each of several k. Powers of 2 will probably be most useful. Try to find some lengths where your code is faster than csqr and some sizes where it isn't. Present these measurements in a suitable tabular form.
  4. Conclusions and projections: Interpret your timings with respect to the expectations (hypotheses). Do the experimental times illustrate the predicted growth rates for csqr() and for ksqr()? What is the trend of the ration for csqr() over ksqr() times. do you expect this ratio would grow, stay same, or shrink for larger k? If the times do not conform to hypothesis, suggest some reasons this might have happened.
This writup is an individual expression. Team members may use the same experimental times, and may discuss the analysis and other aspects of the project, but must not share or even look at each other's writeup.