10 positif. Akan tetapi, jika kedua bilangan
mempunyai tanda yang berbeda maka hasil yang diperoleh bernilai negatif tetapi jika
salah satu bilangannya bernilai 0 maka hasil yang diperoleh bernilai positif.
4. mp_mul_mod
Fungsi mp_mul_mod
merupakan fungsi perkalian yang digunakan dalam
field prima dimana hasil yang diperoleh harus merupakan anggota field tersebut.
Jika hasil yang diperoleh bukan merupakan anggota dalam field tersebut, maka hasil
tersebut harus dilakukan proses reduksi. Algoritme fungsi mp_mul_mod adalah
sebagai berikut:
Input : mp_int a, mp_int b, dan mp_int p Output : c = a b mod p
1. c = a b mp_mul 2. If c = a
c 0 mp_zero
3. Else if c p c
c mod p mp_mod 4. Return MP_OKAY
d. Pembagian
Operasi pembagian yang terdapat dalam librari dibagi menjadi beberapa fungsi. Fungsi-
fungsi tersebut yaitu:
1. mp_div
Fungsi mp_div
digunakan untuk
melakukan operasi
pembagian antara
bilangan mutlak mp_int a dan bilangan mutlak mp_int b. Fungsi ini akan
menghasilkan nilai hasil bagi dan sisa bagi. Algoritme yang digunakan pada fungsi ini
adalah algoritme pembagian klasik seperti yang diajarkan di sekolah dasar hanya saja
sebelum dilakukan proses pembagian terdapat
proses normalisasi.
Proses normalisasi dilakukan agar nilai digit array
paling signifikan b lebih besar atau sama dengan basis2 b
n
≥ basis2 dengan
mengalikan suatu konstanta k pada a dan b. Nilai k sebaiknya merupakan kelipatan 2
sehingga operasinya hanya shift. Dengan adanya proses normalisasi ini, nilai
perkiraan hasil bagi q’ akan mendekati nilai hasil bagi sebenarnya q. Jika digit
array a = digit array b + 1 maka nilai q’ diperoleh dari persamaan :
−
+
=
− −
1 ,
min
1 1
B b
a B
a q
n n
n
B adalah basis yang digunakan. Jika
pada persamaan di atas nilai b
n-1
≥ a b,
maka q’-2 ≤ q ≤ q’ Knuth 1998, diacu dalam
Welschenbach 2005.
Dengan asumsi bahwa nilai b
n-1
mendekati nilai B, maka nilai q’ adalah q’-2 ≤ q ≤ q’.
Proses normalisasi pada fungsi mp_div
hanya akan mengubah nilai sisa bagi pada proses pembagian tanpa mengubah nilai
hasil bagi. Oleh karena itu, untuk mendapatkan
nilai sisa
bagi yang
sebenarnya diperlukan
proses denormalisasi yaitu dengan membagi sisa
bagi dengan k. Algoritme fungsi mp_div dapat dilihat pada Lampiran 1.
2. mp_div_mod
Fungsi mp_div_mod merupakan fungsi
pembagian yang digunakan dalam field prima dimana pembagian suatu bilangan a
oleh b merupakan perkalian bilangan a dengan b
- 1
. Jika hasil yang diperoleh bukan merupakan anggota dalam field tersebut ,
maka hasil tersebut harus dilakukan proses reduksi. Algoritme fungsi mp_div_mod
adalah sebagai berikut:
Input : mp_int a, mp_int b, dan mp_int p Output : c = a b mod p
1. Inisialisasi d 2. d
b
-1
mp_invmod 3. c
a b
-1
mp_mul 4. If c = a
c 0 mp_zero
5. Else if c a c
c mod p mp_mod
6. Return MP_OKAY e.