mp_div mp_div_mod

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.