mp_clear_zero Fungsi mp_clear_zero digunakan untuk mp_copy Fungsi mp_copy digunakan sebagai operasi mp_zero mp_cmp

5 Tabel 2 Return value pada fungsi Return Value Keterangan MP_OKAY 0 Jika fungsi berhasil MP_MEM -2 Jika fungsi melebihi memori MP_VAL -3 Jika nilai input tidak valid Librari dalam penelitian ini mempunyai beberapa fungsi yang menjadi dasar dalam proses komputasi. Fungsi-fungsi tersebut yaitu:

a. init

Fungsi init digunakan untuk melakukan inisialisasi terhadap bilangan mp_int. Proses insialisasi ini akan memberikan nilai default pada variabel-variabel yang ada pada tipe data mp_int. Algoritme fungsi init adalah sebagai berikut: Input : mp_int a Output : alokasi memori a sebanyak 10 digit array 1. Alokasi memori untuk 10 digit 2. Jika gagal , return MP_MEM 3. For n from 0 to 9 do a n 4. a.sign MP_ZPOS 5. a.used 6. a.alloc 10 7. Return MP_OKAY Algoritme fungsi init di atas menunjukkan bahwa fungsi tersebut akan mengalokasikan memori sebanyak 10 digit array atau setara dengan bilangan 320 bit. Jika terjadi kegagalan, maka fungsi tersebut akan mengembalikan nilai MP_MEM. Fungsi ini memberikan nilai default pada variabel-varibel yang ada dengan a.sign=MP_ZPOS, a.used=0, a.alloc=10, dan a n = 0, untuk n=0,1,...,9.

b. mp_free_mem

Fungsi mp_free_mem merupakan kebalikan dari fungsi init. Fungsi ini digunakan untuk mengembalikan memori yang telah dialokasikan ke kondisi semula sehingga memori tersebut dapat digunakan kembali. Algoritme fungsi mp_free_mem adalah sebagai berikut: Input : mp_int a Output : memori a didealokasi 1. For n from 0 to a.used-1 do a n 2. Free alokasi memori pada a 3. a.used 4. a.alloc 5 a. sign MP_ZPOS 6. Return MP_OKAY Algoritme fungsi mp_free_mem di atas menunjukkan bahwa fungsi tersebut akan mengembalikan memori yang telah terpakai. Selanjutnya fungsi tersebut akan memberikan nilai pada variabel-varibel yang ada dengan a.sign = MP_ZPOS, a.used = 0, dan a.alloc =0.

c. mp_grow

Fungsi mp_grow digunakan untuk menambah digit array ketika memori yang akan dipakai melebihi memori yang telah dialokasikan alloc used. Algoritme fungsi mp_grow adalah sebagai berikut: Input : mp_int a dan int b Output : alokasi memori a ditambahkan sampai b digit array 1. If a.alloc b Realokasikan digit array a menjadi b For n from a.used to b do a n a.alloc b 2. Return MP_OKAY Algoritme fungsi mp_grow di atas menunjukkan bahwa fungsi tersebut akan memeriksa banyaknya memori yang dialokasikan terlebih dahulu. Jika banyaknya memori yang ingin ditambahkan lebih besar dari memori yang telah dialokasikan, maka fungsi tersebut akan mengalokasikan kembali memori sebanyak memori yang ingin ditambahkan.

d. mp_clear_zero Fungsi mp_clear_zero digunakan untuk

menghilangkan semua nilai 0 pada digit array paling signifikan yang merupakan nilai tidak penting. Algoritme fungsi mp_clear_zero adalah sebagai berikut: Input : mp_int a Output : semua nilai 0 yang tidak penting pada a dhilangkan 1. If a a.used-1 = 0 While a.used ≠ 0 and a a.used-1 = 0 a a.used a a.used - 1 2. If a.used = 0 a.sign MP_ZPOS 3. Return MP_OKAY Algoritme fungsi mp_clear_zero di atas menunjukkan bahwa fungsi tersebut akan 6 memeriksa nilai pada digit array paling signifikan. Jika bernilai 0, maka fungsi tersebut akan melakukan proses looping sampai digit array tidak bernilai 0. Selama proses looping, nilai a.used berkurang 1. Librari dalam penelitian ini mempunyai beberapa fungsi yang digunakan sebagai operasi dasar dalam proses komputasi. Fungsi-fungsi tersebut yaitu:

a. mp_copy Fungsi mp_copy digunakan sebagai operasi

“sama dengan” = pada bilangan mp_int. Fungsi ini akan melakukan proses copy dari suatu bilangan mp_int ke bilangan mp_int yang lainnya. Algoritme fungsi mp_copy adalah sebagai berikut: Input : mp_int a dan mp_int b Output : b = a 1. If b.alloc a.used mp_grow b, a.used 2. For n from 0 to a.used b n a n 3. b.used a.used 4. b.alloc a.alloc 5 b.sign a.sign Algoritme fungsi mp_copy di atas menunjukkan bahwa fungsi tersebut akan memeriksa jumlah alokasi memori pada bilangan b terlebih dahulu. Jika alokasi memori pada b lebih kecil dari a, maka dilakukan proses penambahan alokasi memori pada b sampai sebanyak a.used. Selanjutnya semua variabel yang ada pada b diberikan nilai yang sama dengan a.

b. mp_zero

Fungsi mp_zero digunakan untuk memberikan nilai 0 pada bilangan mp_int. Algoritme fungsi mp_zero adalah sebagai berikut: Input : mp_int a Output : a = 0 1. a.used = 0 2. For n from 0 to a.used a n 3 a. sign MP_ZPOS

c. mp_cmp

Fungsi mp_cmp digunakan untuk membandingkan dua bilangan mp_int. Fungsi ini mempunyai tiga return value. Ketiga return value tersebut yaitu MP_LT -1 untuk menyatakan “lebih kecil”, MP_GT 1 untuk menyatakan “lebih besar”, dan M’P_EQ 0 untuk menyatakan “sama dengan”. Algoritme fungsi mp_cmp adalah sebagai berikut: Input : mp_int a dan mp_int b Output : nilai perbandingan antara |a| dan |b| 1. If a.used b.used Return MP_GT 2. Else if a.used b.used Return MP_LT 3. Else For n from a.used-1 to 0 If a n b n Return MP_GT Else if a n b n Return MP_LT Return MP_EQ Algoritme fungsi mp_cmp di atas menunjukkan bahwa fungsi tersebut akan membandingkan jumlah memori yang digunakan oleh a dan b . Jika memori yang digunakan a lebih banyak dari memori yang digunakan b, maka a b dan sebaliknya jika memori yang digunakan b lebih banyak dari memori yang digunakan a, maka a b. Jika memori yang digunakan keduanya sama, maka akan dibandingkan dari digit array paling signifikan antara keduanya. Jika semua nilai digit array sama, maka a = b. Librari dalam penelitian ini mempunyai beberapa operasi aritmatik dalam field prima. Operasi-operasi tersebut yaitu:

a. Penjumlahan