D end for 4. for i  0 to k – 1 do for j  i+1 to k – 1 6. D end for 8. end for c if i ganjil, maka 14. for n  i – i2 to i l  i – n 16. c end for 18. else for n  i – i2 + 1 to i 20.

9 Schoolbook, operasi perkalian yang dilakukan adalah 4 kali. Selain menambah banyaknya operasi jumlah, algoritme ini juga memerlukan variabel yang lebih banyak untuk melakukan perhitungan. Algoritme Karatsuba satu iterasi adalah sebagai berikut Input : a,b ∈ dengan k koefisien, p Output : = ab 1. for i  0 to k – 1 do

2. D

i  a i b i mod p

3. end for 4. for i  0 to k – 1 do

5. for j  i+1 to k – 1 6. D i,j  a i + a j b i + b j mod p

7. end for 8. end for

9. c  D 10. i  1 11. for i  0 to 2k – 3 do

12. c

i  0

13. if i ganjil, maka 14. for n  i – i2 to i

15. l  i – n 16. c

i  c i + D l,n - D l – D n

17. end for 18. else

19. for n  i – i2 + 1 to i 20. l  i – n 21. c i  c i + D l,n - D l – D n

22. end for 23. c

i  c i + D i2

24. end if 25. end for

26. c 2k – 2  D k-1 Mahfouz 2004 mengatakan bahwa salah satu hal yang mempengaruhi kecepatan algoritme Karatsuba adalah rasio antara waktu eksekusi operasi kali dan waktu eksekusi operasi jumlah. Rasio yang diperlukan agar algoritme ini lebih cepat dibandingkan algoritme Schoolbook adalah lebih besar dari 3. Contoh untuk m = 3 misal r adalah rasio r = T mul T add T mul = waktu operasi kali T add = waktu operasi tambah kompleksitas waktu algoritme Schoolbook T SB = 9T mul + 4T add = 9r + 4 T add Sedangkan kompleksitas algoritme Karatsuba T KA = 6T mul + 13T add = 6r + 13 T add Agar algoritme Karatsuba lebih cepat, maka T SB T KA 9r + 4 T add 6r + 13 T add 9r - 6r 13 – 4 3r 9 r 3

d. Kuadrat

Operasi kuadrat pemangkatan dua adalah sebuah bentuk khusus dari perkalian. Operasi kuadrat dapat dituliskan sebagai perkalian dengan = . Operasi ini didefinisikan secara khusus karena memberikan suatu keuntungan dalam efisiensi operasi. Hasil dari operasi kali polinomial berderajat dua dan adalah az = + + bz = + + = = + + + + + + + + Jika = , maka hasilnya menjadi = = + + + + + + + + = + 2 + 2 + + 2 + Perkalian dengan 2 dapat dilakukan dengan pergeseran ke kiri sebanyak 1 bit. Dengan begitu, jumlah operasi kali menjadi lebih sedikit dan waktu operasinya pun menjadi lebih cepat. Implementasi algoritmenya adalah sebagai berikut Input : a ∈ dengan k koefisien, p Output : = a 2

1. for i  0 to k – 1 do 2. D

i  a i b i mod p

3. end for 4. c

 D 5. i  1

6. for i  0 to 2k – 3 do 7. c

i  0

8. if i ganjil, maka 9. for n  i – i2 to i

10. c i  c i + c l c n 1 mod p

11. end for 12. else

13. for n  i – i2 + 1 to i 14. c