6
Algoritme dari fungsi cmp_fpm adalah
sebagai berikut :
Input : fpm a dan b
Output : Nilai perbandingan antara a dan b 1. if a.length b.length
2. return 1 3. else
4. if b.length a. length 5. return -1
6. else 7. for n a.length-1 to 0
8. if a
n
b
n
9. return 1 10. end if
11. if a
n
b
n
12. return -1 13. end if
14. end for 15. end if
16. end if 17. return 0
Dari algoritme tersebut terlihat bahwa fungsi cmp_fpm
akan membandingkan jumlah tempat
di array yang digunakan pada a dan b. Jika a lebih banyak daripada b maka a b dan
sebaliknya jika b lebih banyak daripada a maka a b. Jika array yang digunakan keduanya
sama, maka akan dibandingkan mulai dari digit array paling signifikan antara keduanya. Jika
semua nilai digit array sama, maka a = b.
Aritmetika pada subfield
Sebelum masuk ke algoritme optimal extension field
, akan dijelaskan terlebih dahulu mengenai aritmetika pada subfield
. Anggota
direpresentasikan sebagai
polinomial yang suku-sukunya mempunyai nilai koefisien. Operasi aritmetika yang digunakan
pada suku-suku polinomial tersebut adalah aritmetika field prima
. Dalam OEF, aritmetika field prima terhadap koefisien-
koefisien polinomial ini biasa disebut sebagai aritmetika pada subfield.
Misal az dan bz ∈
, maka az dan bz dapat ditulis sebagai berikut
az = + ··· +
+ +
bz = + ··· +
+ +
Aritmetika yang digunakan pada az dan bz secara keseluruhan adalah aritmetika optimal
extension field. Akan tetapi, aritmetika yang digunakan pada operasi antar koefisien elemen-
elemen az dan bz yaitu a
i
dan b
i
adalah aritmetika field prima
.
Operasi-operasi aritmetika subfield yang
digunakan pada aritmetika adalah sebagai
berikut :
a. Penjumlahan
Operasi penjumlahan dalam adalah
jumlah modulo p c = a + b mod p
Nilai a, b p maka a + b 2p. Oleh karena itu, langkah reduksi yaitu modulo p dapat
dengan mudah dilakukan dengan a + b – p jika a + b p
Dengan begitu, dapat dipastikan bahwa c ∈ .
Aritmetika OEF mendapat keuntungan dengan operasi ini karena tidak menyebabkan adanya
carry. b. Pengurangan
Operasi pengurangan dalam juga
merupakan operasi kurang modulo p c = a - b mod p
Nilai a , b p maka a - b -p. Oleh karena itu, langkah modulo p dapat dengan mudah
dilakukan dengan
p - b + a jika a b Dengan begitu, dapat dipastikan bahwa c
∈ . c. Perkalian
Operasi perkalian dalam adalah kali
modulo p
c = a . b mod p
Misal panjang bit a
i
, b
i
adalah w, maka panjang bit a.b 2w. Oleh karena itu, langkah reduksi
modulo p yang dilakukan akan memastikan c ∈
dan membuat panjang bit c menjadi w kembali. Dalam penelitian ini, operasi modulo
dalam dilakukan dengan suatu fungsi
khusus. d. Reduksi
Operasi a mod b bila dijalankan secara konvensional adalah mengurangkan a dengan b
sampai a
b. Akan
tetapi, dengan
menggunakan algoritme reduksi cepat yang dikemukakan Baley 2000 berikut, operasi
modulo dapat dilakukan dengan lebih efisien. Algoritmenya adalah sebagai berikut
Input : n, c, p = 2
n
– c, x p
2
Output : r = x modulo p
1. q x n
2. r x – q
n
7 3. r r
4. i 0 5. while q
i
0 do
6. q
i+1
q c n
7. r
i+1
q c – q
i+1
c n 8. i i + 1
9. r r + r
i
10. end while 11. while r p do
12. r r – p 13. end while
e. Invers Misalkan a
∈ , maka g
∈
yang membuat
g
.
mod p = 1
atau bisa ditulis dengan g
.
≡ 1mod p disebut dengan invers a dalam
atau notasinya g =
. Ada dua macam algoritme invers dalam
yang diimplementasikan dalam penelitian ini, yaitu algoritme invers Extended
Euclidean dan algoritme Binary Invers.
Algoritme Extended Euclidean
Input : a
∈ , a 0 Output :
g = ∈
1. u a, v p 2.
1, 0
3. while u 1 do 4. quo v u
5. rem v mod u 6. x
=
− x
1
.quo 7. v u
8. u rem 9.
x
1
10. x
11. end while 12. g
mod p
Algoritme Binary Invers
Input : a
∈ , a 0 Output :
g = ∈
1. u a, v p 2.
1, 0
3. while u ≠ 1 dan v ≠ 1 do
4. while u genap do 5. u u 1
6. if
genap maka 7.
1
8. else 9.
+
1
10. end if 11. end while
12. while v genap do 13. v v 1
14. if
genap maka 15.
1
16. else 17.
+
1
18. end if 19. end while
20. if u v maka 21. –
22.
–
23. else 24.
– 25.
–
26. end if 27. end while
28. if u == 1 maka 29. g
mod p
30. else 31. g