GUI: Fix Tomato RAF theme for all builds. Compilation typo.
[tomato.git] / release / src-rt-6.x.4708 / toolchains / hndtools-arm-linux-2.6.36-uclibc-4.5.3 / include / mpc.h
blobc32ca65e1ec39ec6b55dae759efd9054b3927ca5
1 /* mpc.h -- Include file for mpc.
3 Copyright (C) INRIA, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011
5 This file is part of the MPC Library.
7 The MPC Library is free software; you can redistribute it and/or modify
8 it under the terms of the GNU Lesser General Public License as published by
9 the Free Software Foundation; either version 2.1 of the License, or (at your
10 option) any later version.
12 The MPC Library is distributed in the hope that it will be useful, but
13 WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
15 License for more details.
17 You should have received a copy of the GNU Lesser General Public License
18 along with the MPC Library; see the file COPYING.LIB. If not, write to
19 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
20 MA 02111-1307, USA. */
22 #ifndef __MPC_H
23 #define __MPC_H
25 #include "gmp.h"
26 #include "mpfr.h"
28 /* Backwards compatibility with mpfr<3.0.0 */
29 #ifndef mpfr_exp_t
30 #define mpfr_exp_t mp_exp_t
31 #endif
33 /* Define MPC version number */
34 #define MPC_VERSION_MAJOR 0
35 #define MPC_VERSION_MINOR 9
36 #define MPC_VERSION_PATCHLEVEL 0
37 #define MPC_VERSION_STRING "0.9"
39 /* Macros dealing with MPC VERSION */
40 #define MPC_VERSION_NUM(a,b,c) (((a) << 16L) | ((b) << 8) | (c))
41 #define MPC_VERSION \
42 MPC_VERSION_NUM(MPC_VERSION_MAJOR,MPC_VERSION_MINOR,MPC_VERSION_PATCHLEVEL)
44 /* Check if stdio.h is included */
45 #if defined (_GMP_H_HAVE_FILE)
46 # define _MPC_H_HAVE_FILE 1
47 #endif
49 /* Check if stdint.h/inttypes.h is included */
50 #if defined (INTMAX_C) && defined (UINTMAX_C)
51 # define _MPC_H_HAVE_INTMAX_T 1
52 #endif
54 /* Check if complex.h is included */
55 #if defined (_COMPLEX_H)
56 # define _MPC_H_HAVE_COMPLEX 1
57 #endif
59 /* Return values */
61 /* Transform negative to 2, positive to 1, leave 0 unchanged */
62 #define MPC_INEX_POS(inex) (((inex) < 0) ? 2 : ((inex) == 0) ? 0 : 1)
63 /* Transform 2 to negative, 1 to positive, leave 0 unchanged */
64 #define MPC_INEX_NEG(inex) (((inex) == 2) ? -1 : ((inex) == 0) ? 0 : 1)
66 /* The global inexact flag is made of (real flag) + 4 * (imaginary flag), where
67 each of the real and imaginary inexact flag are:
68 0 when the result is exact (no rounding error)
69 1 when the result is larger than the exact value
70 2 when the result is smaller than the exact value */
71 #define MPC_INEX(inex_re, inex_im) \
72 (MPC_INEX_POS(inex_re) | (MPC_INEX_POS(inex_im) << 2))
73 #define MPC_INEX_RE(inex) MPC_INEX_NEG((inex) & 3)
74 #define MPC_INEX_IM(inex) MPC_INEX_NEG((inex) >> 2)
76 /* For functions computing two results, the return value is
77 inexact1+16*inexact2, which is 0 iif both results are exact. */
78 #define MPC_INEX12(inex1, inex2) (inex1 | (inex2 << 4))
79 #define MPC_INEX1(inex) (inex & 15)
80 #define MPC_INEX2(inex) (inex >> 4)
82 /* Definition of rounding modes */
84 /* a complex rounding mode is just a pair of two real rounding modes
85 we reserve four bits for a real rounding mode. */
86 typedef int mpc_rnd_t;
88 #define RNDC(r1,r2) (((int)(r1)) + ((int)(r2) << 4))
89 #define MPC_RND_RE(x) ((mpfr_rnd_t)((x) & 0x0F))
90 #define MPC_RND_IM(x) ((mpfr_rnd_t)((x) >> 4))
92 #define MPC_RNDNN RNDC(GMP_RNDN,GMP_RNDN)
93 #define MPC_RNDNZ RNDC(GMP_RNDN,GMP_RNDZ)
94 #define MPC_RNDNU RNDC(GMP_RNDN,GMP_RNDU)
95 #define MPC_RNDND RNDC(GMP_RNDN,GMP_RNDD)
97 #define MPC_RNDZN RNDC(GMP_RNDZ,GMP_RNDN)
98 #define MPC_RNDZZ RNDC(GMP_RNDZ,GMP_RNDZ)
99 #define MPC_RNDZU RNDC(GMP_RNDZ,GMP_RNDU)
100 #define MPC_RNDZD RNDC(GMP_RNDZ,GMP_RNDD)
102 #define MPC_RNDUN RNDC(GMP_RNDU,GMP_RNDN)
103 #define MPC_RNDUZ RNDC(GMP_RNDU,GMP_RNDZ)
104 #define MPC_RNDUU RNDC(GMP_RNDU,GMP_RNDU)
105 #define MPC_RNDUD RNDC(GMP_RNDU,GMP_RNDD)
107 #define MPC_RNDDN RNDC(GMP_RNDD,GMP_RNDN)
108 #define MPC_RNDDZ RNDC(GMP_RNDD,GMP_RNDZ)
109 #define MPC_RNDDU RNDC(GMP_RNDD,GMP_RNDU)
110 #define MPC_RNDDD RNDC(GMP_RNDD,GMP_RNDD)
113 /* Definitions of types and their semantics */
115 typedef struct {
116 mpfr_t re;
117 mpfr_t im;
119 __mpc_struct;
121 typedef __mpc_struct mpc_t[1];
122 typedef __mpc_struct *mpc_ptr;
123 typedef __gmp_const __mpc_struct *mpc_srcptr;
125 /* Prototypes: Support of K&R compiler */
126 #if defined (__GMP_PROTO)
127 # define __MPC_PROTO __GMP_PROTO
128 #elif defined (__STDC__) || defined (__cplusplus)
129 # define __MPC_PROTO(x) x
130 #else
131 # define __MPC_PROTO(x) ()
132 #endif
134 /* Support for WINDOWS Dll:
135 Check if we are inside a MPC build, and if so export the functions.
136 Otherwise does the same thing as GMP */
137 #if defined(__MPC_WITHIN_MPC) && __GMP_LIBGMP_DLL
138 # define __MPC_DECLSPEC __GMP_DECLSPEC_EXPORT
139 #else
140 # define __MPC_DECLSPEC __GMP_DECLSPEC
141 #endif
143 #if defined (__cplusplus)
144 extern "C" {
145 #endif
147 __MPC_DECLSPEC int mpc_add __MPC_PROTO ((mpc_ptr, mpc_srcptr, mpc_srcptr, mpc_rnd_t));
148 __MPC_DECLSPEC int mpc_add_fr __MPC_PROTO ((mpc_ptr, mpc_srcptr, mpfr_srcptr, mpc_rnd_t));
149 __MPC_DECLSPEC int mpc_add_si __MPC_PROTO ((mpc_ptr, mpc_srcptr, long int, mpc_rnd_t));
150 __MPC_DECLSPEC int mpc_add_ui __MPC_PROTO ((mpc_ptr, mpc_srcptr, unsigned long int, mpc_rnd_t));
151 __MPC_DECLSPEC int mpc_sub __MPC_PROTO ((mpc_ptr, mpc_srcptr, mpc_srcptr, mpc_rnd_t));
152 __MPC_DECLSPEC int mpc_sub_fr __MPC_PROTO ((mpc_ptr, mpc_srcptr, mpfr_srcptr, mpc_rnd_t));
153 __MPC_DECLSPEC int mpc_fr_sub __MPC_PROTO ((mpc_ptr, mpfr_srcptr, mpc_srcptr, mpc_rnd_t));
154 __MPC_DECLSPEC int mpc_sub_ui __MPC_PROTO ((mpc_ptr, mpc_srcptr, unsigned long int, mpc_rnd_t));
155 __MPC_DECLSPEC int mpc_ui_ui_sub __MPC_PROTO ((mpc_ptr, unsigned long int, unsigned long int, mpc_srcptr, mpc_rnd_t));
156 __MPC_DECLSPEC int mpc_mul __MPC_PROTO ((mpc_ptr, mpc_srcptr, mpc_srcptr, mpc_rnd_t));
157 __MPC_DECLSPEC int mpc_mul_fr __MPC_PROTO ((mpc_ptr, mpc_srcptr, mpfr_srcptr, mpc_rnd_t));
158 __MPC_DECLSPEC int mpc_mul_ui __MPC_PROTO ((mpc_ptr, mpc_srcptr, unsigned long int, mpc_rnd_t));
159 __MPC_DECLSPEC int mpc_mul_si __MPC_PROTO ((mpc_ptr, mpc_srcptr, long int, mpc_rnd_t));
160 __MPC_DECLSPEC int mpc_mul_i __MPC_PROTO ((mpc_ptr, mpc_srcptr, int, mpc_rnd_t));
161 __MPC_DECLSPEC int mpc_sqr __MPC_PROTO ((mpc_ptr, mpc_srcptr, mpc_rnd_t));
162 __MPC_DECLSPEC int mpc_div __MPC_PROTO ((mpc_ptr, mpc_srcptr, mpc_srcptr, mpc_rnd_t));
163 __MPC_DECLSPEC int mpc_pow __MPC_PROTO ((mpc_ptr, mpc_srcptr, mpc_srcptr, mpc_rnd_t));
164 __MPC_DECLSPEC int mpc_pow_fr __MPC_PROTO ((mpc_ptr, mpc_srcptr, mpfr_srcptr, mpc_rnd_t));
165 __MPC_DECLSPEC int mpc_pow_ld __MPC_PROTO ((mpc_ptr, mpc_srcptr, long double, mpc_rnd_t));
166 __MPC_DECLSPEC int mpc_pow_d __MPC_PROTO ((mpc_ptr, mpc_srcptr, double, mpc_rnd_t));
167 __MPC_DECLSPEC int mpc_pow_si __MPC_PROTO ((mpc_ptr, mpc_srcptr, long, mpc_rnd_t));
168 __MPC_DECLSPEC int mpc_pow_ui __MPC_PROTO ((mpc_ptr, mpc_srcptr, unsigned long, mpc_rnd_t));
169 __MPC_DECLSPEC int mpc_pow_z __MPC_PROTO ((mpc_ptr, mpc_srcptr, mpz_srcptr, mpc_rnd_t));
170 __MPC_DECLSPEC int mpc_div_fr __MPC_PROTO ((mpc_ptr, mpc_srcptr, mpfr_srcptr, mpc_rnd_t));
171 __MPC_DECLSPEC int mpc_fr_div __MPC_PROTO ((mpc_ptr, mpfr_srcptr, mpc_srcptr, mpc_rnd_t));
172 __MPC_DECLSPEC int mpc_div_ui __MPC_PROTO ((mpc_ptr, mpc_srcptr, unsigned long int, mpc_rnd_t));
173 __MPC_DECLSPEC int mpc_ui_div __MPC_PROTO ((mpc_ptr, unsigned long int, mpc_srcptr, mpc_rnd_t));
174 __MPC_DECLSPEC int mpc_div_2exp __MPC_PROTO ((mpc_ptr, mpc_srcptr, unsigned long int, mpc_rnd_t));
175 __MPC_DECLSPEC int mpc_mul_2exp __MPC_PROTO ((mpc_ptr, mpc_srcptr, unsigned long int, mpc_rnd_t));
176 __MPC_DECLSPEC int mpc_conj __MPC_PROTO ((mpc_ptr, mpc_srcptr, mpc_rnd_t));
177 __MPC_DECLSPEC int mpc_neg __MPC_PROTO ((mpc_ptr, mpc_srcptr, mpc_rnd_t));
178 __MPC_DECLSPEC int mpc_norm __MPC_PROTO ((mpfr_ptr, mpc_srcptr, mpfr_rnd_t));
179 __MPC_DECLSPEC int mpc_abs __MPC_PROTO ((mpfr_ptr, mpc_srcptr, mpfr_rnd_t));
180 __MPC_DECLSPEC int mpc_sqrt __MPC_PROTO ((mpc_ptr, mpc_srcptr, mpc_rnd_t));
181 __MPC_DECLSPEC int mpc_set __MPC_PROTO ((mpc_ptr, mpc_srcptr, mpc_rnd_t));
182 __MPC_DECLSPEC int mpc_set_d __MPC_PROTO ((mpc_ptr, double, mpc_rnd_t));
183 __MPC_DECLSPEC int mpc_set_d_d __MPC_PROTO ((mpc_ptr, double, double, mpc_rnd_t));
184 __MPC_DECLSPEC int mpc_set_ld __MPC_PROTO ((mpc_ptr, long double, mpc_rnd_t));
185 __MPC_DECLSPEC int mpc_set_ld_ld __MPC_PROTO ((mpc_ptr, long double, long double, mpc_rnd_t));
186 __MPC_DECLSPEC int mpc_set_f __MPC_PROTO ((mpc_ptr, mpf_srcptr, mpc_rnd_t));
187 __MPC_DECLSPEC int mpc_set_f_f __MPC_PROTO ((mpc_ptr, mpf_srcptr, mpf_srcptr, mpc_rnd_t));
188 __MPC_DECLSPEC int mpc_set_fr __MPC_PROTO ((mpc_ptr, mpfr_srcptr, mpc_rnd_t));
189 __MPC_DECLSPEC int mpc_set_fr_fr __MPC_PROTO ((mpc_ptr, mpfr_srcptr, mpfr_srcptr, mpc_rnd_t));
190 __MPC_DECLSPEC int mpc_set_q __MPC_PROTO ((mpc_ptr, mpq_srcptr, mpc_rnd_t));
191 __MPC_DECLSPEC int mpc_set_q_q __MPC_PROTO ((mpc_ptr, mpq_srcptr, mpq_srcptr, mpc_rnd_t));
192 __MPC_DECLSPEC int mpc_set_si __MPC_PROTO ((mpc_ptr, long int, mpc_rnd_t));
193 __MPC_DECLSPEC int mpc_set_si_si __MPC_PROTO ((mpc_ptr, long int, long int, mpc_rnd_t));
194 __MPC_DECLSPEC int mpc_set_ui __MPC_PROTO ((mpc_ptr, unsigned long int, mpc_rnd_t));
195 __MPC_DECLSPEC int mpc_set_ui_ui __MPC_PROTO ((mpc_ptr, unsigned long int, unsigned long int, mpc_rnd_t));
196 __MPC_DECLSPEC int mpc_set_z __MPC_PROTO ((mpc_ptr, mpz_srcptr, mpc_rnd_t));
197 __MPC_DECLSPEC int mpc_set_z_z __MPC_PROTO ((mpc_ptr, mpz_srcptr, mpz_srcptr, mpc_rnd_t));
198 __MPC_DECLSPEC void mpc_swap __MPC_PROTO ((mpc_ptr, mpc_ptr));
199 __MPC_DECLSPEC int mpc_fma __MPC_PROTO ((mpc_ptr, mpc_srcptr, mpc_srcptr, mpc_srcptr, mpc_rnd_t));
201 #ifdef _MPC_H_HAVE_INTMAX_T
202 __MPC_DECLSPEC int mpc_set_sj __MPC_PROTO ((mpc_ptr, intmax_t, mpc_rnd_t));
203 __MPC_DECLSPEC int mpc_set_uj __MPC_PROTO ((mpc_ptr, uintmax_t, mpc_rnd_t));
204 __MPC_DECLSPEC int mpc_set_sj_sj __MPC_PROTO ((mpc_ptr, intmax_t, intmax_t, mpc_rnd_t));
205 __MPC_DECLSPEC int mpc_set_uj_uj __MPC_PROTO ((mpc_ptr, uintmax_t, uintmax_t, mpc_rnd_t));
206 #endif
208 #ifdef _MPC_H_HAVE_COMPLEX
209 __MPC_DECLSPEC int mpc_set_dc __MPC_PROTO ((mpc_ptr, double _Complex, mpc_rnd_t));
210 __MPC_DECLSPEC int mpc_set_ldc __MPC_PROTO ((mpc_ptr, long double _Complex, mpc_rnd_t));
211 __MPC_DECLSPEC double _Complex mpc_get_dc __MPC_PROTO ((mpc_srcptr, mpc_rnd_t));
212 __MPC_DECLSPEC long double _Complex mpc_get_ldc __MPC_PROTO ((mpc_srcptr, mpc_rnd_t));
213 #endif
215 __MPC_DECLSPEC void mpc_set_nan __MPC_PROTO ((mpc_ptr));
217 __MPC_DECLSPEC int mpc_real __MPC_PROTO ((mpfr_ptr, mpc_srcptr, mpfr_rnd_t));
218 __MPC_DECLSPEC int mpc_imag __MPC_PROTO ((mpfr_ptr, mpc_srcptr, mpfr_rnd_t));
219 __MPC_DECLSPEC int mpc_arg __MPC_PROTO ((mpfr_ptr, mpc_srcptr, mpfr_rnd_t));
220 __MPC_DECLSPEC int mpc_proj __MPC_PROTO ((mpc_ptr, mpc_srcptr, mpc_rnd_t));
221 __MPC_DECLSPEC int mpc_cmp __MPC_PROTO ((mpc_srcptr, mpc_srcptr));
222 __MPC_DECLSPEC int mpc_cmp_si_si __MPC_PROTO ((mpc_srcptr, long int, long int));
223 __MPC_DECLSPEC int mpc_exp __MPC_PROTO ((mpc_ptr, mpc_srcptr, mpc_rnd_t));
224 __MPC_DECLSPEC int mpc_log __MPC_PROTO ((mpc_ptr, mpc_srcptr, mpc_rnd_t));
225 __MPC_DECLSPEC int mpc_sin __MPC_PROTO ((mpc_ptr, mpc_srcptr, mpc_rnd_t));
226 __MPC_DECLSPEC int mpc_cos __MPC_PROTO ((mpc_ptr, mpc_srcptr, mpc_rnd_t));
227 __MPC_DECLSPEC int mpc_sin_cos __MPC_PROTO ((mpc_ptr, mpc_ptr, mpc_srcptr, mpc_rnd_t, mpc_rnd_t));
228 __MPC_DECLSPEC int mpc_tan __MPC_PROTO ((mpc_ptr, mpc_srcptr, mpc_rnd_t));
229 __MPC_DECLSPEC int mpc_sinh __MPC_PROTO ((mpc_ptr, mpc_srcptr, mpc_rnd_t));
230 __MPC_DECLSPEC int mpc_cosh __MPC_PROTO ((mpc_ptr, mpc_srcptr, mpc_rnd_t));
231 __MPC_DECLSPEC int mpc_tanh __MPC_PROTO ((mpc_ptr, mpc_srcptr, mpc_rnd_t));
232 __MPC_DECLSPEC int mpc_asin __MPC_PROTO ((mpc_ptr, mpc_srcptr, mpc_rnd_t));
233 __MPC_DECLSPEC int mpc_acos __MPC_PROTO ((mpc_ptr, mpc_srcptr, mpc_rnd_t));
234 __MPC_DECLSPEC int mpc_atan __MPC_PROTO ((mpc_ptr, mpc_srcptr, mpc_rnd_t));
235 __MPC_DECLSPEC int mpc_asinh __MPC_PROTO ((mpc_ptr, mpc_srcptr, mpc_rnd_t));
236 __MPC_DECLSPEC int mpc_acosh __MPC_PROTO ((mpc_ptr, mpc_srcptr, mpc_rnd_t));
237 __MPC_DECLSPEC int mpc_atanh __MPC_PROTO ((mpc_ptr, mpc_srcptr, mpc_rnd_t));
238 __MPC_DECLSPEC void mpc_clear __MPC_PROTO ((mpc_ptr));
239 __MPC_DECLSPEC int mpc_urandom __MPC_PROTO ((mpc_ptr, gmp_randstate_t));
240 __MPC_DECLSPEC void mpc_init2 __MPC_PROTO ((mpc_ptr, mpfr_prec_t));
241 __MPC_DECLSPEC void mpc_init3 __MPC_PROTO ((mpc_ptr, mpfr_prec_t, mpfr_prec_t));
242 __MPC_DECLSPEC mpfr_prec_t mpc_get_prec __MPC_PROTO((mpc_srcptr x));
243 __MPC_DECLSPEC void mpc_get_prec2 __MPC_PROTO((mpfr_prec_t *pr, mpfr_prec_t *pi, mpc_srcptr x));
244 __MPC_DECLSPEC void mpc_set_prec __MPC_PROTO ((mpc_ptr, mpfr_prec_t));
245 __MPC_DECLSPEC __gmp_const char * mpc_get_version __MPC_PROTO ((void));
247 __MPC_DECLSPEC int mpc_strtoc _MPFR_PROTO ((mpc_ptr, const char *, char **, int, mpc_rnd_t));
248 __MPC_DECLSPEC int mpc_set_str _MPFR_PROTO ((mpc_ptr, const char *, int, mpc_rnd_t));
249 __MPC_DECLSPEC char * mpc_get_str _MPFR_PROTO ((int, size_t, mpc_srcptr, mpc_rnd_t));
250 __MPC_DECLSPEC void mpc_free_str _MPFR_PROTO ((char *));
251 #ifdef _MPC_H_HAVE_FILE
252 __MPC_DECLSPEC int mpc_inp_str __MPC_PROTO ((mpc_ptr, FILE *, size_t *, int, mpc_rnd_t));
253 __MPC_DECLSPEC size_t mpc_out_str __MPC_PROTO ((FILE *, int, size_t, mpc_srcptr, mpc_rnd_t));
254 #endif
256 #if defined (__cplusplus)
258 #endif
260 #define mpc_realref(x) ((x)->re)
261 #define mpc_imagref(x) ((x)->im)
263 #define mpc_cmp_si(x, y) \
264 ( mpc_cmp_si_si ((x), (y), 0l) )
265 #define mpc_ui_sub(x, y, z, r) mpc_ui_ui_sub (x, y, 0ul, z, r)
268 Define a fake mpfr_set_fr so that, for instance, mpc_set_fr_z would
269 be defined as follows:
270 mpc_set_fr_z (mpc_t rop, mpfr_t x, mpz_t y, mpc_rnd_t rnd)
271 MPC_SET_X_Y (fr, z, rop, x, y, rnd)
273 #ifndef mpfr_set_fr
274 #define mpfr_set_fr mpfr_set
275 #endif
276 #define MPC_SET_X_Y(real_t, imag_t, z, real_value, imag_value, rnd) \
278 int _inex_re, _inex_im; \
279 _inex_re = (mpfr_set_ ## real_t) (mpc_realref (z), (real_value), MPC_RND_RE (rnd)); \
280 _inex_im = (mpfr_set_ ## imag_t) (mpc_imagref (z), (imag_value), MPC_RND_IM (rnd)); \
281 return MPC_INEX (_inex_re, _inex_im); \
284 #endif /* ifndef __MPC_H */