MPSolve
3.2.2
Toggle main menu visibility
Loading...
Searching...
No Matches
gmptools.h
Go to the documentation of this file.
1
/***********************************************************
2
** GMP Tools **
3
** Version 2.0 **
4
** **
5
** Written by Giuseppe Fiorentino **
6
** (fiorent@dm.unipi.it) **
7
***********************************************************/
8
14
15
#ifndef __GMPTOOLS_H__
16
#define __GMPTOOLS_H__
17
18
#include <gmp.h>
19
#include <stdio.h>
20
21
#ifdef __cplusplus
22
extern
"C"
23
{
24
#endif
25
26
/**********************************************
27
* MPZ_T *
28
**********************************************/
29
30
#define mpz_Val(Z) (*Z)
31
#define mpz_Move(Z1, Z2) (*Z1 = *Z2)
32
33
/* missing functions */
34
#ifndef mpz_swap
35
void
mpz_swap (mpz_t z1, mpz_t z2);
36
#endif
37
#ifndef mpz_tstbit
38
int
mpz_tstbit (mpz_t z,
unsigned
long
int
pos);
39
#endif
40
#define mpz_get_bit(Z, N) mpz_tstbit (Z, N)
41
42
#define mpz_mul_eq(Z1, Z2) mpz_mul (Z1, Z1, Z2)
43
#define mpz_add_eq(Z1, Z2) mpz_add (Z1, Z1, Z2)
44
45
/* vector support functions */
46
#define mpz_valloc(N) (mpz_t*)malloc ((N)*sizeof(mpz_t))
47
void
mpz_vinit (mpz_t v[],
unsigned
long
int
size);
48
void
mpz_vclear (mpz_t v[],
unsigned
long
int
size);
49
#define mpz_vfree(V) free (V)
50
51
/**********************************************
52
* MPQ_T *
53
**********************************************/
54
55
#define mpq_Val(Q) (*Q)
56
#define mpq_Move(Q1, Q2) (*Q1 = *Q2)
57
58
/* missing functions */
59
#ifndef mpq_swap
60
void
mpq_swap (mpq_t q1, mpq_t q2);
61
#endif
62
63
/* I/O */
64
#ifndef mpq_out_str
65
void
mpq_out_str (FILE * stream,
int
base, mpq_t q);
66
#endif
67
68
/* vector support functions */
69
#define mpq_valloc(N) (mpq_t*)malloc ((N)*sizeof(mpq_t))
70
void
mpq_vinit (mpq_t v[],
unsigned
long
int
size);
71
void
mpq_vclear (mpq_t v[],
unsigned
long
int
size);
72
#define mpq_vfree(V) free (V)
73
74
/**********************************************
75
* MPF_T *
76
**********************************************/
77
78
#define mpf_Val(F) (*F)
79
#define mpf_Move(F1, F2) (*F1 = *F2)
80
81
/* missing functions */
82
#ifndef mpf_swap
83
void
mpf_swap (mpf_t f1, mpf_t f2);
84
#endif
85
void
mpf_set_2dl (mpf_t f,
double
d,
long
int
l);
86
void
mpf_get_2dl (
double
*d,
long
int
*l, mpf_t f);
87
long
int
mpf_size_2 (mpf_t f);
88
89
/* missing operators */
90
#define mpf_inv(R, F) mpf_ui_div (R, 1, F)
91
#define mpf_sqr(R, F) mpf_mul (R, F, F)
92
void
mpf_add_si (mpf_t r, mpf_t f,
long
int
i);
93
void
mpf_sub_si (mpf_t r, mpf_t f,
long
int
i);
94
void
mpf_si_sub (mpf_t r,
long
int
i, mpf_t f);
95
void
mpf_mul_si (mpf_t r, mpf_t f,
long
int
i);
96
void
mpf_div_si (mpf_t r, mpf_t f,
long
int
i);
97
#ifndef mpf_pow_ui
98
void
mpf_pow_ui (mpf_t r, mpf_t f,
unsigned
long
int
i);
99
#endif
100
void
mpf_pow_si (mpf_t r, mpf_t f,
long
int
i);
101
102
/* op= style operators for mpf_t */
103
#define mpf_neg_eq(F) mpf_neg (F, F)
104
#define mpf_inv_eq(F) mpf_ui_div (F, 1, F)
105
#define mpf_sqr_eq(F) mpf_mul (F, F, F)
106
#define mpf_sqrt_eq(F) mpf_sqrt (F, F)
107
#define mpf_add_eq(F1, F2) mpf_add (F1, F1, F2)
108
#define mpf_add_eq_ui(F, I) mpf_add_ui (F, F, I)
109
#define mpf_add_eq_si(F, I) mpf_add_si (F, F, I)
110
#define mpf_sub_eq(F1, F2) mpf_sub (F1, F1, F2)
111
#define mpf_sub_eq_ui(F, I) mpf_sub_ui (F, F, I)
112
#define mpf_sub_eq_si(F, I) mpf_sub_si (F, F, I)
113
#define mpf_ui_sub_eq(F, I) mpf_ui_sub (F, I, F)
114
#define mpf_si_sub_eq(F, I) mpf_si_sub (F, I, F)
115
#define mpf_mul_eq(F1, F2) mpf_mul (F1, F1, F2)
116
#define mpf_mul_eq_ui(F, I) mpf_mul_ui (F, F, I)
117
#define mpf_mul_eq_si(F, I) mpf_mul_si (F, F, I)
118
#define mpf_mul_eq_2exp(F, I) mpf_mul_2exp (F, F, I)
119
#define mpf_div_eq(F1, F2) mpf_div (F1, F1, F2)
120
#define mpf_div_eq_ui(F, I) mpf_div_ui (F, F, I)
121
#define mpf_div_eq_si(F, I) mpf_div_si (F, F, I)
122
#define mpf_ui_div_eq(F, I) mpf_ui_div (F, I, F)
123
#define mpf_si_div_eq(F, I) mpf_si_div (F, I, F)
124
#define mpf_div_eq_2exp(F, I) mpf_div_2exp (F, F, I)
125
#define mpf_pow_eq_si(F, I) mpf_pow_si (F, F, I)
126
127
#define mpf_is_zero_p(F) (mpf_sgn (F) ? 0 : 1)
128
129
/* vector support functions */
130
#define mpf_valloc(N) (mpf_t*)malloc ((N)*sizeof(mpf_t))
131
void
mpf_vinit (mpf_t v[],
unsigned
long
int
size);
132
void
mpf_vinit2 (mpf_t v[],
unsigned
long
int
size,
unsigned
long
int
prec);
133
void
mpf_vclear (mpf_t v[],
unsigned
long
int
size);
134
#define mpf_vfree(V) free (V)
135
136
137
138
/*
139
* End of extern "C" {
140
* ...
141
* }
142
*/
143
#ifdef __cplusplus
144
}
145
#endif
146
147
#endif
include
mps
gmptools.h
Generated on
for MPSolve by
1.17.0