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