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