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.
-
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?
-
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?
-
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.
-
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.