1 | /* mpc.h -- Include file for mpc.
|
---|
2 |
|
---|
3 | Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011, 2012, 2016, 2017, 2018, 2020 INRIA
|
---|
4 |
|
---|
5 | This file is part of GNU MPC.
|
---|
6 |
|
---|
7 | GNU MPC is free software; you can redistribute it and/or modify it under
|
---|
8 | the terms of the GNU Lesser General Public License as published by the
|
---|
9 | Free Software Foundation; either version 3 of the License, or (at your
|
---|
10 | option) any later version.
|
---|
11 |
|
---|
12 | GNU MPC is distributed in the hope that it will be useful, but WITHOUT ANY
|
---|
13 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
---|
14 | FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
|
---|
15 | more details.
|
---|
16 |
|
---|
17 | You should have received a copy of the GNU Lesser General Public License
|
---|
18 | along with this program. If not, see http://www.gnu.org/licenses/ .
|
---|
19 | */
|
---|
20 |
|
---|
21 | #ifndef __MPC_H
|
---|
22 | #define __MPC_H
|
---|
23 |
|
---|
24 | #include "gmp.h"
|
---|
25 | #include "mpfr.h"
|
---|
26 |
|
---|
27 | /* Define MPC version number */
|
---|
28 | #define MPC_VERSION_MAJOR 1
|
---|
29 | #define MPC_VERSION_MINOR 2
|
---|
30 | #define MPC_VERSION_PATCHLEVEL 1
|
---|
31 | #define MPC_VERSION_STRING "1.2.1"
|
---|
32 |
|
---|
33 | /* Macros dealing with MPC VERSION */
|
---|
34 | #define MPC_VERSION_NUM(a,b,c) (((a) << 16L) | ((b) << 8) | (c))
|
---|
35 | #define MPC_VERSION \
|
---|
36 | MPC_VERSION_NUM(MPC_VERSION_MAJOR,MPC_VERSION_MINOR,MPC_VERSION_PATCHLEVEL)
|
---|
37 |
|
---|
38 | /* Check if stdint.h/inttypes.h is included */
|
---|
39 | #if defined (INTMAX_C) && defined (UINTMAX_C)
|
---|
40 | #define _MPC_H_HAVE_INTMAX_T 1
|
---|
41 | #endif
|
---|
42 |
|
---|
43 | /* Return values */
|
---|
44 |
|
---|
45 | /* Transform negative to 2, positive to 1, leave 0 unchanged.
|
---|
46 | Warning: since inex is evaluated two times, we should avoid
|
---|
47 | MPC_INEX(mpc_mul (...), mpc_mul (...)) */
|
---|
48 | #define MPC_INEX_POS(inex) (((inex) < 0) ? 2 : ((inex) == 0) ? 0 : 1)
|
---|
49 | /* Transform 2 to negative, 1 to positive, leave 0 unchanged */
|
---|
50 | #define MPC_INEX_NEG(inex) (((inex) == 2) ? -1 : ((inex) == 0) ? 0 : 1)
|
---|
51 |
|
---|
52 | /* The global inexact flag is made of (real flag) + 4 * (imaginary flag), where
|
---|
53 | each of the real and imaginary inexact flag are:
|
---|
54 | 0 when the result is exact (no rounding error)
|
---|
55 | 1 when the result is larger than the exact value
|
---|
56 | 2 when the result is smaller than the exact value */
|
---|
57 | #define MPC_INEX(inex_re, inex_im) \
|
---|
58 | (MPC_INEX_POS(inex_re) | (MPC_INEX_POS(inex_im) << 2))
|
---|
59 | #define MPC_INEX_RE(inex) MPC_INEX_NEG((inex) & 3)
|
---|
60 | #define MPC_INEX_IM(inex) MPC_INEX_NEG((inex) >> 2)
|
---|
61 |
|
---|
62 | /* For functions computing two results, the return value is
|
---|
63 | inexact1+16*inexact2, which is 0 iif both results are exact. */
|
---|
64 | #define MPC_INEX12(inex1, inex2) (inex1 | (inex2 << 4))
|
---|
65 | #define MPC_INEX1(inex) (inex & 15)
|
---|
66 | #define MPC_INEX2(inex) (inex >> 4)
|
---|
67 |
|
---|
68 | /* Definition of rounding modes */
|
---|
69 |
|
---|
70 | /* a complex rounding mode is just a pair of two real rounding modes
|
---|
71 | we reserve four bits for a real rounding mode. */
|
---|
72 | typedef int mpc_rnd_t;
|
---|
73 |
|
---|
74 | #define MPC_RND(r1,r2) (((int)(r1)) + ((int)(r2) << 4))
|
---|
75 | #define MPC_RND_RE(x) ((mpfr_rnd_t)((x) & 0x0F))
|
---|
76 | #define MPC_RND_IM(x) ((mpfr_rnd_t)((x) >> 4))
|
---|
77 |
|
---|
78 | #define MPC_RNDNN MPC_RND (MPFR_RNDN,MPFR_RNDN)
|
---|
79 | #define MPC_RNDNZ MPC_RND (MPFR_RNDN,MPFR_RNDZ)
|
---|
80 | #define MPC_RNDNU MPC_RND (MPFR_RNDN,MPFR_RNDU)
|
---|
81 | #define MPC_RNDND MPC_RND (MPFR_RNDN,MPFR_RNDD)
|
---|
82 |
|
---|
83 | #define MPC_RNDZN MPC_RND (MPFR_RNDZ,MPFR_RNDN)
|
---|
84 | #define MPC_RNDZZ MPC_RND (MPFR_RNDZ,MPFR_RNDZ)
|
---|
85 | #define MPC_RNDZU MPC_RND (MPFR_RNDZ,MPFR_RNDU)
|
---|
86 | #define MPC_RNDZD MPC_RND (MPFR_RNDZ,MPFR_RNDD)
|
---|
87 |
|
---|
88 | #define MPC_RNDUN MPC_RND (MPFR_RNDU,MPFR_RNDN)
|
---|
89 | #define MPC_RNDUZ MPC_RND (MPFR_RNDU,MPFR_RNDZ)
|
---|
90 | #define MPC_RNDUU MPC_RND (MPFR_RNDU,MPFR_RNDU)
|
---|
91 | #define MPC_RNDUD MPC_RND (MPFR_RNDU,MPFR_RNDD)
|
---|
92 |
|
---|
93 | #define MPC_RNDDN MPC_RND (MPFR_RNDD,MPFR_RNDN)
|
---|
94 | #define MPC_RNDDZ MPC_RND (MPFR_RNDD,MPFR_RNDZ)
|
---|
95 | #define MPC_RNDDU MPC_RND (MPFR_RNDD,MPFR_RNDU)
|
---|
96 | #define MPC_RNDDD MPC_RND (MPFR_RNDD,MPFR_RNDD)
|
---|
97 |
|
---|
98 |
|
---|
99 | /* Definitions of types and their semantics */
|
---|
100 |
|
---|
101 | typedef struct {
|
---|
102 | mpfr_t re;
|
---|
103 | mpfr_t im;
|
---|
104 | }
|
---|
105 | __mpc_struct;
|
---|
106 |
|
---|
107 | typedef __mpc_struct mpc_t[1];
|
---|
108 | typedef __mpc_struct *mpc_ptr;
|
---|
109 | typedef const __mpc_struct *mpc_srcptr;
|
---|
110 |
|
---|
111 | /* Support for WINDOWS DLL, see
|
---|
112 | http://lists.gforge.inria.fr/pipermail/mpc-discuss/2011-November/000990.html;
|
---|
113 | when building the DLL, export symbols, otherwise behave as GMP */
|
---|
114 | #if defined (__MPC_LIBRARY_BUILD) && __GMP_LIBGMP_DLL
|
---|
115 | #define __MPC_DECLSPEC __GMP_DECLSPEC_EXPORT
|
---|
116 | #else
|
---|
117 | #define __MPC_DECLSPEC __GMP_DECLSPEC
|
---|
118 | #endif
|
---|
119 |
|
---|
120 | #if defined (__cplusplus)
|
---|
121 | extern "C" {
|
---|
122 | #endif
|
---|
123 |
|
---|
124 | __MPC_DECLSPEC int mpc_add (mpc_ptr, mpc_srcptr, mpc_srcptr, mpc_rnd_t);
|
---|
125 | __MPC_DECLSPEC int mpc_add_fr (mpc_ptr, mpc_srcptr, mpfr_srcptr, mpc_rnd_t);
|
---|
126 | __MPC_DECLSPEC int mpc_add_si (mpc_ptr, mpc_srcptr, long int, mpc_rnd_t);
|
---|
127 | __MPC_DECLSPEC int mpc_add_ui (mpc_ptr, mpc_srcptr, unsigned long int, mpc_rnd_t);
|
---|
128 | __MPC_DECLSPEC int mpc_sub (mpc_ptr, mpc_srcptr, mpc_srcptr, mpc_rnd_t);
|
---|
129 | __MPC_DECLSPEC int mpc_sub_fr (mpc_ptr, mpc_srcptr, mpfr_srcptr, mpc_rnd_t);
|
---|
130 | __MPC_DECLSPEC int mpc_fr_sub (mpc_ptr, mpfr_srcptr, mpc_srcptr, mpc_rnd_t);
|
---|
131 | __MPC_DECLSPEC int mpc_sub_ui (mpc_ptr, mpc_srcptr, unsigned long int, mpc_rnd_t);
|
---|
132 | __MPC_DECLSPEC int mpc_ui_ui_sub (mpc_ptr, unsigned long int, unsigned long int, mpc_srcptr, mpc_rnd_t);
|
---|
133 | __MPC_DECLSPEC int mpc_mul (mpc_ptr, mpc_srcptr, mpc_srcptr, mpc_rnd_t);
|
---|
134 | __MPC_DECLSPEC int mpc_mul_fr (mpc_ptr, mpc_srcptr, mpfr_srcptr, mpc_rnd_t);
|
---|
135 | __MPC_DECLSPEC int mpc_mul_ui (mpc_ptr, mpc_srcptr, unsigned long int, mpc_rnd_t);
|
---|
136 | __MPC_DECLSPEC int mpc_mul_si (mpc_ptr, mpc_srcptr, long int, mpc_rnd_t);
|
---|
137 | __MPC_DECLSPEC int mpc_mul_i (mpc_ptr, mpc_srcptr, int, mpc_rnd_t);
|
---|
138 | __MPC_DECLSPEC int mpc_sqr (mpc_ptr, mpc_srcptr, mpc_rnd_t);
|
---|
139 | __MPC_DECLSPEC int mpc_div (mpc_ptr, mpc_srcptr, mpc_srcptr, mpc_rnd_t);
|
---|
140 | __MPC_DECLSPEC int mpc_pow (mpc_ptr, mpc_srcptr, mpc_srcptr, mpc_rnd_t);
|
---|
141 | __MPC_DECLSPEC int mpc_pow_fr (mpc_ptr, mpc_srcptr, mpfr_srcptr, mpc_rnd_t);
|
---|
142 | __MPC_DECLSPEC int mpc_pow_ld (mpc_ptr, mpc_srcptr, long double, mpc_rnd_t);
|
---|
143 | __MPC_DECLSPEC int mpc_pow_d (mpc_ptr, mpc_srcptr, double, mpc_rnd_t);
|
---|
144 | __MPC_DECLSPEC int mpc_pow_si (mpc_ptr, mpc_srcptr, long, mpc_rnd_t);
|
---|
145 | __MPC_DECLSPEC int mpc_pow_ui (mpc_ptr, mpc_srcptr, unsigned long, mpc_rnd_t);
|
---|
146 | __MPC_DECLSPEC int mpc_pow_z (mpc_ptr, mpc_srcptr, mpz_srcptr, mpc_rnd_t);
|
---|
147 | __MPC_DECLSPEC int mpc_div_fr (mpc_ptr, mpc_srcptr, mpfr_srcptr, mpc_rnd_t);
|
---|
148 | __MPC_DECLSPEC int mpc_fr_div (mpc_ptr, mpfr_srcptr, mpc_srcptr, mpc_rnd_t);
|
---|
149 | __MPC_DECLSPEC int mpc_div_ui (mpc_ptr, mpc_srcptr, unsigned long int, mpc_rnd_t);
|
---|
150 | __MPC_DECLSPEC int mpc_ui_div (mpc_ptr, unsigned long int, mpc_srcptr, mpc_rnd_t);
|
---|
151 | __MPC_DECLSPEC int mpc_div_2ui (mpc_ptr, mpc_srcptr, unsigned long int, mpc_rnd_t);
|
---|
152 | __MPC_DECLSPEC int mpc_mul_2ui (mpc_ptr, mpc_srcptr, unsigned long int, mpc_rnd_t);
|
---|
153 | __MPC_DECLSPEC int mpc_div_2si (mpc_ptr, mpc_srcptr, long int, mpc_rnd_t);
|
---|
154 | __MPC_DECLSPEC int mpc_mul_2si (mpc_ptr, mpc_srcptr, long int, mpc_rnd_t);
|
---|
155 | __MPC_DECLSPEC int mpc_conj (mpc_ptr, mpc_srcptr, mpc_rnd_t);
|
---|
156 | __MPC_DECLSPEC int mpc_neg (mpc_ptr, mpc_srcptr, mpc_rnd_t);
|
---|
157 | __MPC_DECLSPEC int mpc_sum (mpc_ptr, const mpc_ptr *, unsigned long, mpc_rnd_t);
|
---|
158 | __MPC_DECLSPEC int mpc_dot (mpc_ptr, const mpc_ptr *, const mpc_ptr *, unsigned long, mpc_rnd_t);
|
---|
159 | __MPC_DECLSPEC int mpc_norm (mpfr_ptr, mpc_srcptr, mpfr_rnd_t);
|
---|
160 | __MPC_DECLSPEC int mpc_abs (mpfr_ptr, mpc_srcptr, mpfr_rnd_t);
|
---|
161 | __MPC_DECLSPEC int mpc_sqrt (mpc_ptr, mpc_srcptr, mpc_rnd_t);
|
---|
162 | __MPC_DECLSPEC int mpc_set (mpc_ptr, mpc_srcptr, mpc_rnd_t);
|
---|
163 | __MPC_DECLSPEC int mpc_set_d (mpc_ptr, double, mpc_rnd_t);
|
---|
164 | __MPC_DECLSPEC int mpc_set_d_d (mpc_ptr, double, double, mpc_rnd_t);
|
---|
165 | __MPC_DECLSPEC int mpc_set_ld (mpc_ptr, long double, mpc_rnd_t);
|
---|
166 | __MPC_DECLSPEC int mpc_set_ld_ld (mpc_ptr, long double, long double, mpc_rnd_t);
|
---|
167 | __MPC_DECLSPEC int mpc_set_f (mpc_ptr, mpf_srcptr, mpc_rnd_t);
|
---|
168 | __MPC_DECLSPEC int mpc_set_f_f (mpc_ptr, mpf_srcptr, mpf_srcptr, mpc_rnd_t);
|
---|
169 | __MPC_DECLSPEC int mpc_set_fr (mpc_ptr, mpfr_srcptr, mpc_rnd_t);
|
---|
170 | __MPC_DECLSPEC int mpc_set_fr_fr (mpc_ptr, mpfr_srcptr, mpfr_srcptr, mpc_rnd_t);
|
---|
171 | __MPC_DECLSPEC int mpc_set_q (mpc_ptr, mpq_srcptr, mpc_rnd_t);
|
---|
172 | __MPC_DECLSPEC int mpc_set_q_q (mpc_ptr, mpq_srcptr, mpq_srcptr, mpc_rnd_t);
|
---|
173 | __MPC_DECLSPEC int mpc_set_si (mpc_ptr, long int, mpc_rnd_t);
|
---|
174 | __MPC_DECLSPEC int mpc_set_si_si (mpc_ptr, long int, long int, mpc_rnd_t);
|
---|
175 | __MPC_DECLSPEC int mpc_set_ui (mpc_ptr, unsigned long int, mpc_rnd_t);
|
---|
176 | __MPC_DECLSPEC int mpc_set_ui_ui (mpc_ptr, unsigned long int, unsigned long int, mpc_rnd_t);
|
---|
177 | __MPC_DECLSPEC int mpc_set_z (mpc_ptr, mpz_srcptr, mpc_rnd_t);
|
---|
178 | __MPC_DECLSPEC int mpc_set_z_z (mpc_ptr, mpz_srcptr, mpz_srcptr, mpc_rnd_t);
|
---|
179 | __MPC_DECLSPEC void mpc_swap (mpc_ptr, mpc_ptr);
|
---|
180 | __MPC_DECLSPEC int mpc_fma (mpc_ptr, mpc_srcptr, mpc_srcptr, mpc_srcptr, mpc_rnd_t);
|
---|
181 |
|
---|
182 | __MPC_DECLSPEC void mpc_set_nan (mpc_ptr);
|
---|
183 |
|
---|
184 | __MPC_DECLSPEC int mpc_real (mpfr_ptr, mpc_srcptr, mpfr_rnd_t);
|
---|
185 | __MPC_DECLSPEC int mpc_imag (mpfr_ptr, mpc_srcptr, mpfr_rnd_t);
|
---|
186 | __MPC_DECLSPEC int mpc_arg (mpfr_ptr, mpc_srcptr, mpfr_rnd_t);
|
---|
187 | __MPC_DECLSPEC int mpc_proj (mpc_ptr, mpc_srcptr, mpc_rnd_t);
|
---|
188 | __MPC_DECLSPEC int mpc_cmp (mpc_srcptr, mpc_srcptr);
|
---|
189 | __MPC_DECLSPEC int mpc_cmp_si_si (mpc_srcptr, long int, long int);
|
---|
190 | __MPC_DECLSPEC int mpc_cmp_abs (mpc_srcptr, mpc_srcptr);
|
---|
191 | __MPC_DECLSPEC int mpc_exp (mpc_ptr, mpc_srcptr, mpc_rnd_t);
|
---|
192 | __MPC_DECLSPEC int mpc_log (mpc_ptr, mpc_srcptr, mpc_rnd_t);
|
---|
193 | __MPC_DECLSPEC int mpc_log10 (mpc_ptr, mpc_srcptr, mpc_rnd_t);
|
---|
194 | __MPC_DECLSPEC int mpc_sin (mpc_ptr, mpc_srcptr, mpc_rnd_t);
|
---|
195 | __MPC_DECLSPEC int mpc_cos (mpc_ptr, mpc_srcptr, mpc_rnd_t);
|
---|
196 | __MPC_DECLSPEC int mpc_sin_cos (mpc_ptr, mpc_ptr, mpc_srcptr, mpc_rnd_t, mpc_rnd_t);
|
---|
197 | __MPC_DECLSPEC int mpc_tan (mpc_ptr, mpc_srcptr, mpc_rnd_t);
|
---|
198 | __MPC_DECLSPEC int mpc_sinh (mpc_ptr, mpc_srcptr, mpc_rnd_t);
|
---|
199 | __MPC_DECLSPEC int mpc_cosh (mpc_ptr, mpc_srcptr, mpc_rnd_t);
|
---|
200 | __MPC_DECLSPEC int mpc_tanh (mpc_ptr, mpc_srcptr, mpc_rnd_t);
|
---|
201 | __MPC_DECLSPEC int mpc_asin (mpc_ptr, mpc_srcptr, mpc_rnd_t);
|
---|
202 | __MPC_DECLSPEC int mpc_acos (mpc_ptr, mpc_srcptr, mpc_rnd_t);
|
---|
203 | __MPC_DECLSPEC int mpc_atan (mpc_ptr, mpc_srcptr, mpc_rnd_t);
|
---|
204 | __MPC_DECLSPEC int mpc_asinh (mpc_ptr, mpc_srcptr, mpc_rnd_t);
|
---|
205 | __MPC_DECLSPEC int mpc_acosh (mpc_ptr, mpc_srcptr, mpc_rnd_t);
|
---|
206 | __MPC_DECLSPEC int mpc_atanh (mpc_ptr, mpc_srcptr, mpc_rnd_t);
|
---|
207 | __MPC_DECLSPEC int mpc_rootofunity (mpc_ptr, unsigned long int, unsigned long int, mpc_rnd_t);
|
---|
208 | __MPC_DECLSPEC void mpc_clear (mpc_ptr);
|
---|
209 | __MPC_DECLSPEC int mpc_urandom (mpc_ptr, gmp_randstate_t);
|
---|
210 | __MPC_DECLSPEC void mpc_init2 (mpc_ptr, mpfr_prec_t);
|
---|
211 | __MPC_DECLSPEC void mpc_init3 (mpc_ptr, mpfr_prec_t, mpfr_prec_t);
|
---|
212 | __MPC_DECLSPEC mpfr_prec_t mpc_get_prec (mpc_srcptr x);
|
---|
213 | __MPC_DECLSPEC void mpc_get_prec2 (mpfr_prec_t *pr, mpfr_prec_t *pi, mpc_srcptr x);
|
---|
214 | __MPC_DECLSPEC void mpc_set_prec (mpc_ptr, mpfr_prec_t);
|
---|
215 | __MPC_DECLSPEC const char * mpc_get_version (void);
|
---|
216 |
|
---|
217 | __MPC_DECLSPEC int mpc_strtoc (mpc_ptr, const char *, char **, int, mpc_rnd_t);
|
---|
218 | __MPC_DECLSPEC int mpc_set_str (mpc_ptr, const char *, int, mpc_rnd_t);
|
---|
219 | __MPC_DECLSPEC char * mpc_get_str (int, size_t, mpc_srcptr, mpc_rnd_t);
|
---|
220 | __MPC_DECLSPEC void mpc_free_str (char *);
|
---|
221 |
|
---|
222 | /* declare certain functions only if appropriate headers have been included */
|
---|
223 | #ifdef _MPC_H_HAVE_INTMAX_T
|
---|
224 | __MPC_DECLSPEC int mpc_set_sj (mpc_ptr, intmax_t, mpc_rnd_t);
|
---|
225 | __MPC_DECLSPEC int mpc_set_uj (mpc_ptr, uintmax_t, mpc_rnd_t);
|
---|
226 | __MPC_DECLSPEC int mpc_set_sj_sj (mpc_ptr, intmax_t, intmax_t, mpc_rnd_t);
|
---|
227 | __MPC_DECLSPEC int mpc_set_uj_uj (mpc_ptr, uintmax_t, uintmax_t, mpc_rnd_t);
|
---|
228 | #endif
|
---|
229 |
|
---|
230 | #ifdef _Complex_I
|
---|
231 | __MPC_DECLSPEC int mpc_set_dc (mpc_ptr, double _Complex, mpc_rnd_t);
|
---|
232 | __MPC_DECLSPEC int mpc_set_ldc (mpc_ptr, long double _Complex, mpc_rnd_t);
|
---|
233 | __MPC_DECLSPEC double _Complex mpc_get_dc (mpc_srcptr, mpc_rnd_t);
|
---|
234 | __MPC_DECLSPEC long double _Complex mpc_get_ldc (mpc_srcptr, mpc_rnd_t);
|
---|
235 | #endif
|
---|
236 |
|
---|
237 | #ifdef _GMP_H_HAVE_FILE
|
---|
238 | __MPC_DECLSPEC int mpc_inp_str (mpc_ptr, FILE *, size_t *, int, mpc_rnd_t);
|
---|
239 | __MPC_DECLSPEC size_t mpc_out_str (FILE *, int, size_t, mpc_srcptr, mpc_rnd_t);
|
---|
240 | #endif
|
---|
241 |
|
---|
242 | #if defined (__cplusplus)
|
---|
243 | }
|
---|
244 | #endif
|
---|
245 |
|
---|
246 | #define mpc_realref(x) ((x)->re)
|
---|
247 | #define mpc_imagref(x) ((x)->im)
|
---|
248 |
|
---|
249 | #define mpc_cmp_si(x, y) \
|
---|
250 | ( mpc_cmp_si_si ((x), (y), 0l) )
|
---|
251 | #define mpc_ui_sub(x, y, z, r) mpc_ui_ui_sub (x, y, 0ul, z, r)
|
---|
252 |
|
---|
253 | /*
|
---|
254 | Define a fake mpfr_set_fr so that, for instance, mpc_set_fr_z would
|
---|
255 | be defined as follows:
|
---|
256 | mpc_set_fr_z (mpc_t rop, mpfr_t x, mpz_t y, mpc_rnd_t rnd)
|
---|
257 | MPC_SET_X_Y (fr, z, rop, x, y, rnd)
|
---|
258 | */
|
---|
259 | #ifndef mpfr_set_fr
|
---|
260 | #define mpfr_set_fr mpfr_set
|
---|
261 | #endif
|
---|
262 | #define MPC_SET_X_Y(real_t, imag_t, z, real_value, imag_value, rnd) \
|
---|
263 | { \
|
---|
264 | int _inex_re, _inex_im; \
|
---|
265 | _inex_re = (mpfr_set_ ## real_t) (mpc_realref (z), (real_value), MPC_RND_RE (rnd)); \
|
---|
266 | _inex_im = (mpfr_set_ ## imag_t) (mpc_imagref (z), (imag_value), MPC_RND_IM (rnd)); \
|
---|
267 | return MPC_INEX (_inex_re, _inex_im); \
|
---|
268 | }
|
---|
269 |
|
---|
270 | #endif /* ifndef __MPC_H */
|
---|