Initial revision
[silc.git] / lib / silcmath / silcmp.h
1 /*
2
3   silcmp.h
4
5   Author: Pekka Riikonen <priikone@poseidon.pspt.fi>
6
7   Copyright (C) 1997 - 2000 Pekka Riikonen
8
9   This program is free software; you can redistribute it and/or modify
10   it under the terms of the GNU General Public License as published by
11   the Free Software Foundation; either version 2 of the License, or
12   (at your option) any later version.
13   
14   This program is distributed in the hope that it will be useful,
15   but WITHOUT ANY WARRANTY; without even the implied warranty of
16   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17   GNU General Public License for more details.
18
19 */
20
21 #ifndef SILCMP_H
22 #define SILCMP_H
23
24 #include "gmp.h"
25
26 /* SILC MP library definitions. We use GNU MP library as default
27    MP library. However, to make possible future changes easier (SILC 
28    might have its own MP library in the future) we implement our own 
29    MP API with simple macros. */ 
30
31 typedef MP_INT SilcInt;
32 #define silc_mp_abs(a, b) mpz_abs((a), (b))
33 #define silc_mp_add(a, b, c) mpz_add((a), (b), (c))
34 #define silc_mp_add_ui(a, b, c) mpz_add_ui((a), (b), (c))
35 #define silc_mp_and(a, b, c) mpz_and((a), (b), (c))
36 #define silc_mp_cdiv_q(a, b, c) mpz_cdiv_q((a), (b), (c))
37 #define silc_mp_cdiv_q_ui(a, b, c) mpz_cdiv_q_ui((a), (b), (c))
38 #define silc_mp_cdiv_r(a, b, c) mpz_cdiv_r((a), (b), (c))
39 #define silc_mp_cdiv_r_ui(a, b, c) mpz_cdiv_r_ui((a), (b), (c))
40 #define silc_mp_cdiv_ui(a, b) mpz_cdiv_ui((a), (b))
41 #define silc_mp_clear(a) mpz_clear((a))
42 #define silc_mp_clrbit(a, b) mpz_clrbit((a), (b))
43 #define silc_mp_cmp(a, b) mpz_cmp((a), (b))
44 #define silc_mp_cmp_si(a, b) mpz_cmp_si((a), (b))
45 #define silc_mp_cmp_ui(a, b) mpz_cmp_ui((a), (b))
46 #define silc_mp_com(a, b) mpz_com((a), (b))
47 #define silc_mp_divexact(a, b, c) mpz_divexact((a), (b), (c))
48 #define silc_mp_div(a, b, c) mpz_div((a), (b), (c))
49 #define silc_mp_div_ui(a, b, c) mpz_div_ui((a), (b), (c))
50 #define silc_mp_fdiv_ui(a, b) mpz_fdiv_ui((a), (b))
51 #define silc_mp_fdiv_q(a, b, c) mpz_fdiv_q((a), (b), (c))
52 #define silc_mp_fdiv_q_2exp(a, b, c) mpz_fdiv_q_2exp((a), (b), (c))
53 #define silc_mp_fdiv_q_ui(a, b, c) mpz_fdiv_q_ui((a), (b), (c))
54 #define silc_mp_fdiv_qr(a, b, c, d) mpz_fdiv_qr((a), (b), (c), (d))
55 #define silc_mp_fdiv_qr_ui(a, b, c, d) mpz_fdiv_qr_ui((a), (b), (c), (d))
56 #define silc_mp_fdiv_r(a, b, c) mpz_fdiv_r((a), (b), (c))
57 #define silc_mp_fdiv_r_2exp(a, b, c) mpz_fdiv_r_2exp((a), (b), (c))
58 #define silc_mp_fdiv_r_ui(a, b, c) mpz_fdiv_r_ui((a), (b), (c))
59 #define silc_mp_fdiv_ui(a, b) mpz_fdiv_ui((a), (b))
60 #define silc_mp_gcd(a, b, c) mpz_gcd((a), (b), (c))
61 #define silc_mp_gcd_ui(a, b, c) mpz_gcd_ui((a), (b), (c))
62 #define silc_mp_gcdext(a, b, c, d, e) mpz_gcdext((a), (b), (c), (d), (e))
63 #define silc_mp_get_ui(a) mpz_get_ui((a))
64 #define silc_mp_init(a) mpz_init((a))
65 #define silc_mp_init_set(a, b) mpz_init_set((a), (b))
66 #define silc_mp_init_set_d(a, b) mpz_init_set_d((a), (b))
67 #define silc_mp_init_set_si(a, b) mpz_init_set_si((a), (b))
68 #define silc_mp_init_set_str(a, b, c) mpz_init_set_str((a), (b), (c))
69 #define silc_mp_init_set_ui(a, b) mpz_init_set_ui((a), (b))
70 #define silc_mp_invert(a, b, c) mpz_invert((a), (b), (c))
71 #define silc_mp_ior(a, b, c) mpz_ior((a), (b), (c))
72 #define silc_mp_mod(a, b, c) mpz_mod((a), (b), (c))
73 #define silc_mp_mod_2exp(a, b, c) mpz_mod_2exp((a), (b), (c))
74 #define silc_mp_mod_ui(a, b, c) mpz_mod_ui((a), (b), (c))
75 #define silc_mp_mul(a, b, c) mpz_mul((a), (b), (c))
76 #define silc_mp_mul_2exp(a, b, c) mpz_mul_2exp((a), (b), (c))
77 #define silc_mp_mul_ui(a, b, c) mpz_mul_ui((a), (b), (c))
78 #define silc_mp_neg(a, b) mpz_neg((a), (b))
79 #define silc_mp_pow_ui(a, b, c) mpz_pow_ui((a), (b), (c))
80 #define silc_mp_powm(a, b, c, d) mpz_powm((a), (b), (c), (d))
81 #define silc_mp_powm_ui(a, b, c, d) mpz_powm_ui((a), (b), (c), (d))
82 #define silc_mp_probab_prime_p(a, b) mpz_probab_prime_p((a), (b))
83 #define silc_mp_set(a, b) mpz_set((a), (b))
84 #define silc_mp_set_d(a, b) mpz_set_d((a), (b))
85 #define silc_mp_set_f(a, b) mpz_set_f((a), (b))
86 #define silc_mp_set_q(a, b) mpz_set_q((a), (b))
87 #define silc_mp_set_si(a, b) mpz_set_si((a), (b))
88 #define silc_mp_set_str(a, b, c) mpz_set_str((a), (b), (c))
89 #define silc_mp_set_ui(a, b) mpz_set_ui((a), (b))
90 #define silc_mp_setbit(a, b) mpz_setbit((a), (b))
91 #define silc_mp_size(a) mpz_size((a))
92 #define silc_mp_sizeinbase(a, b) mpz_sizeinbase((a), (b))
93 #define silc_mp_sqrt(a, b) mpz_sqrt((a), (b))
94 #define silc_mp_sqrtrem(a, b, c) mpz_sqrtrem((a), (b), (c))
95 #define silc_mp_sub(a, b, c) mpz_sub((a), (b), (c))
96 #define silc_mp_sub_ui(a, b, c) mpz_sub_ui((a), (b), (c))
97 #define silc_mp_tdiv_ui(a, b) mpz_tdiv_ui((a), (b))
98 #define silc_mp_tdiv_q(a, b, c) mpz_tdiv_q((a), (b), (c))
99 #define silc_mp_tdiv_q_2exp(a, b, c) mpz_tdiv_q_2exp((a), (b), (c))
100 #define silc_mp_tdiv_q_ui(a, b, c) mpz_tdiv_q_ui((a), (b), (c))
101 #define silc_mp_tdiv_qr(a, b, c, d) mpz_tdiv_qr((a), (b), (c), (d))
102 #define silc_mp_tdiv_qr_ui(a, b, c, d) mpz_tdiv_qr_ui((a), (b), (c), (d))
103 #define silc_mp_tdiv_r(a, b, c) mpz_tdiv_r((a), (b), (c))
104 #define silc_mp_tdiv_r_2exp(a, b, c) mpz_tdiv_r_2exp((a), (b), (c))
105 #define silc_mp_tdiv_r_ui(a, b, c) mpz_tdiv_r_ui((a), (b), (c))
106 #define silc_mp_tdiv_ui(a, b) mpz_tdiv_ui((a), (b))
107 #define silc_mp_ui_pow_ui(a, b, c) mpz_ui_pow_ui((a), (b), (c))
108 #define silc_mp_get_str(a, b, c) mpz_get_str((a), (b), (c))
109 #define silc_mp_out_str(a, b, c) mpz_out_str((a), (b), (c))
110
111 #endif