1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
2  * gmpy2_math.h                                                            *
3  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
4  * Python interface to the GMP or MPIR, MPFR, and MPC multiple precision   *
5  * libraries.                                                              *
6  *                                                                         *
7  * Copyright 2000 - 2009 Alex Martelli                                     *
8  *                                                                         *
9  * Copyright 2008 - 2021 Case Van Horsen                                   *
10  *                                                                         *
11  * This file is part of GMPY2.                                             *
12  *                                                                         *
13  * GMPY2 is free software: you can redistribute it and/or modify it under  *
14  * the terms of the GNU Lesser General Public License as published by the  *
15  * Free Software Foundation, either version 3 of the License, or (at your  *
16  * option) any later version.                                              *
17  *                                                                         *
18  * GMPY2 is distributed in the hope that it will be useful, but WITHOUT    *
19  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or   *
20  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public    *
21  * License for more details.                                               *
22  *                                                                         *
23  * You should have received a copy of the GNU Lesser General Public        *
24  * License along with GMPY2; if not, see <http://www.gnu.org/licenses/>    *
25  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
26 
27 #ifndef GMPY_MATH_H
28 #define GMPY_MATH_H
29 
30 #ifdef __cplusplus
31 extern "C" {
32 #endif
33 
34 static PyObject * GMPy_RealWithType_Sin(PyObject *x, int xtype, CTXT_Object *context);
35 static PyObject * GMPy_ComplexWithType_Sin(PyObject *x, int xtype, CTXT_Object *context);
36 static PyObject * GMPy_Number_Sin(PyObject *x, CTXT_Object *context);
37 static PyObject * GMPy_Context_Sin(PyObject *self, PyObject *other);
38 
39 static PyObject * GMPy_RealWithType_Cos(PyObject *x, int xtype, CTXT_Object *context);
40 static PyObject * GMPy_ComplexWithType_Cos(PyObject *x, int xtype, CTXT_Object *context);
41 static PyObject * GMPy_Number_Cos(PyObject *x, CTXT_Object *context);
42 static PyObject * GMPy_Context_Cos(PyObject *self, PyObject *other);
43 
44 static PyObject * GMPy_RealWithType_Tan(PyObject *x, int xtype, CTXT_Object *context);
45 static PyObject * GMPy_ComplexWithType_Tan(PyObject *x, int xtype, CTXT_Object *context);
46 static PyObject * GMPy_Number_Tan(PyObject *x, CTXT_Object *context);
47 static PyObject * GMPy_Context_Tan(PyObject *self, PyObject *other);
48 
49 static PyObject * GMPy_RealWithType_Atan(PyObject *x, int xtype, CTXT_Object *context);
50 static PyObject * GMPy_ComplexWithType_Atan(PyObject *x, int xtype, CTXT_Object *context);
51 static PyObject * GMPy_Number_Atan(PyObject *x, CTXT_Object *context);
52 static PyObject * GMPy_Context_Atan(PyObject *self, PyObject *other);
53 
54 static PyObject * GMPy_RealWithType_Sinh(PyObject *x, int xtype, CTXT_Object *context);
55 static PyObject * GMPy_ComplexWithType_Sinh(PyObject *x, int xtype, CTXT_Object *context);
56 static PyObject * GMPy_Number_Sinh(PyObject *x, CTXT_Object *context);
57 static PyObject * GMPy_Context_Sinh(PyObject *self, PyObject *other);
58 
59 static PyObject * GMPy_RealWithType_Cosh(PyObject *x, int xtype, CTXT_Object *context);
60 static PyObject * GMPy_ComplexWithType_Cosh(PyObject *x, int xtype, CTXT_Object *context);
61 static PyObject * GMPy_Number_Cosh(PyObject *x, CTXT_Object *context);
62 static PyObject * GMPy_Context_Cosh(PyObject *self, PyObject *other);
63 
64 static PyObject * GMPy_RealWithType_Tanh(PyObject *x, int xtype, CTXT_Object *context);
65 static PyObject * GMPy_ComplexWithType_Tanh(PyObject *x, int xtype, CTXT_Object *context);
66 static PyObject * GMPy_Number_Tanh(PyObject *x, CTXT_Object *context);
67 static PyObject * GMPy_Context_Tanh(PyObject *self, PyObject *other);
68 
69 static PyObject * GMPy_RealWithType_Asinh(PyObject *x, int xtype, CTXT_Object *context);
70 static PyObject * GMPy_ComplexWithType_Asinh(PyObject *x, int xtype, CTXT_Object *context);
71 static PyObject * GMPy_Number_Asinh(PyObject *x, CTXT_Object *context);
72 static PyObject * GMPy_Context_Asinh(PyObject *self, PyObject *other);
73 
74 static PyObject * GMPy_RealWithType_Acosh(PyObject *x, int xtype, CTXT_Object *context);
75 static PyObject * GMPy_ComplexWithType_Acosh(PyObject *x, int xtype, CTXT_Object *context);
76 static PyObject * GMPy_Number_Acosh(PyObject *x, CTXT_Object *context);
77 static PyObject * GMPy_Context_Acosh(PyObject *self, PyObject *other);
78 
79 static PyObject * GMPy_RealWithType_Sec(PyObject *x, int xtype, CTXT_Object *context);
80 static PyObject * GMPy_Number_Sec(PyObject *x, CTXT_Object *context);
81 static PyObject * GMPy_Context_Sec(PyObject *self, PyObject *other);
82 
83 static PyObject * GMPy_RealWithType_Csc(PyObject *x, int xtype, CTXT_Object *context);
84 static PyObject * GMPy_Number_Csc(PyObject *x, CTXT_Object *context);
85 static PyObject * GMPy_Context_Csc(PyObject *self, PyObject *other);
86 
87 static PyObject * GMPy_RealWithType_Cot(PyObject *x, int xtype, CTXT_Object *context);
88 static PyObject * GMPy_Number_Cot(PyObject *x, CTXT_Object *context);
89 static PyObject * GMPy_Context_Cot(PyObject *self, PyObject *other);
90 
91 static PyObject * GMPy_RealWithType_Sech(PyObject *x, int xtype, CTXT_Object *context);
92 static PyObject * GMPy_Number_Sech(PyObject *x, CTXT_Object *context);
93 static PyObject * GMPy_Context_Sech(PyObject *self, PyObject *other);
94 
95 static PyObject * GMPy_RealWithType_Csch(PyObject *x, int xtype, CTXT_Object *context);
96 static PyObject * GMPy_Number_Csch(PyObject *x, CTXT_Object *context);
97 static PyObject * GMPy_Context_Csch(PyObject *self, PyObject *other);
98 
99 static PyObject * GMPy_RealWithType_Coth(PyObject *x, int xtype, CTXT_Object *context);
100 static PyObject * GMPy_Number_Coth(PyObject *x, CTXT_Object *context);
101 static PyObject * GMPy_Context_Coth(PyObject *self, PyObject *other);
102 
103 static PyObject * GMPy_RealWithType_Acos(PyObject *x, int xtype, CTXT_Object *context);
104 static PyObject * GMPy_ComplexWithType_Acos(PyObject *x, int xtype, CTXT_Object *context);
105 static PyObject * GMPy_Number_Acos(PyObject *x, CTXT_Object *context);
106 static PyObject * GMPy_Context_Acos(PyObject *self, PyObject *other);
107 
108 static PyObject * GMPy_RealWithType_Asin(PyObject *x, int xtype, CTXT_Object *context);
109 static PyObject * GMPy_ComplexWithType_Asin(PyObject *x, int xtype, CTXT_Object *context);
110 static PyObject * GMPy_Number_Asin(PyObject *x, CTXT_Object *context);
111 static PyObject * GMPy_Context_Asin(PyObject *self, PyObject *other);
112 
113 static PyObject * GMPy_RealWithType_Atanh(PyObject *x, int xtype, CTXT_Object *context);
114 static PyObject * GMPy_ComplexWithType_Atanh(PyObject *x, int xtype, CTXT_Object *context);
115 static PyObject * GMPy_Number_Atanh(PyObject *x, CTXT_Object *context);
116 static PyObject * GMPy_Context_Atanh(PyObject *self, PyObject *other);
117 
118 static PyObject * GMPy_RealWithType_Sin_Cos(PyObject *x, int xtype, CTXT_Object *context);
119 static PyObject * GMPy_ComplexWithType_Sin_Cos(PyObject *x, int xtype, CTXT_Object *context);
120 static PyObject * GMPy_Number_Sin_Cos(PyObject *x, CTXT_Object *context);
121 static PyObject * GMPy_Context_Sin_Cos(PyObject *self, PyObject *other);
122 
123 static PyObject * GMPy_RealWithType_Sinh_Cosh(PyObject *x, int xtype, CTXT_Object *context);
124 static PyObject * GMPy_Number_Sinh_Cosh(PyObject *x, CTXT_Object *context);
125 static PyObject * GMPy_Context_Sinh_Cosh(PyObject *self, PyObject *other);
126 
127 static PyObject * GMPy_RealWithType_Atan2(PyObject *x, int xtype, PyObject *y, int ytype, CTXT_Object *context);
128 static PyObject * GMPy_Number_Atan2(PyObject *x, PyObject *y, CTXT_Object *context);
129 static PyObject * GMPy_Context_Atan2(PyObject *self, PyObject *args);
130 
131 static PyObject * GMPy_RealWithType_Hypot(PyObject *x, int xtype, PyObject *y, int ytype, CTXT_Object *context);
132 static PyObject * GMPy_Number_Hypot(PyObject *x, PyObject *y, CTXT_Object *context);
133 static PyObject * GMPy_Context_Hypot(PyObject *self, PyObject *args);
134 
135 static PyObject * GMPy_Context_Degrees(PyObject *self, PyObject *other);
136 static PyObject * GMPy_Context_Radians(PyObject *self, PyObject *other);
137 
138 static PyObject * GMPy_RealWithType_Log(PyObject *x, int xtype, CTXT_Object *context);
139 static PyObject * GMPy_ComplexWithType_Log(PyObject *x, int xtype, CTXT_Object *context);
140 static PyObject * GMPy_Number_Log(PyObject *x, CTXT_Object *context);
141 static PyObject * GMPy_Context_Log(PyObject *self, PyObject *other);
142 
143 static PyObject * GMPy_RealWithType_Log10(PyObject *x, int xtype, CTXT_Object *context);
144 static PyObject * GMPy_ComplexWithType_Log10(PyObject *x, int xtype, CTXT_Object *context);
145 static PyObject * GMPy_Number_Log10(PyObject *x, CTXT_Object *context);
146 static PyObject * GMPy_Context_Log10(PyObject *self, PyObject *other);
147 
148 static PyObject * GMPy_RealWithType_Exp(PyObject *x, int xtype, CTXT_Object *context);
149 static PyObject * GMPy_ComplexWithType_Exp(PyObject *x, int xtype, CTXT_Object *context);
150 static PyObject * GMPy_Number_Exp(PyObject *x, CTXT_Object *context);
151 static PyObject * GMPy_Context_Exp(PyObject *self, PyObject *other);
152 
153 static PyObject * GMPy_RealWithType_Sqrt(PyObject *x, int xtype, CTXT_Object *context);
154 static PyObject * GMPy_ComplexWithType_Sqrt(PyObject *x, int xtype, CTXT_Object *context);
155 static PyObject * GMPy_Number_Sqrt(PyObject *x, CTXT_Object *context);
156 static PyObject * GMPy_Context_Sqrt(PyObject *self, PyObject *other);
157 
158 static PyObject * GMPy_RealWithType_RecSqrt(PyObject *x, int xtype, CTXT_Object *context);
159 static PyObject * GMPy_Number_RecSqrt(PyObject *x, CTXT_Object *context);
160 static PyObject * GMPy_Context_RecSqrt(PyObject *self, PyObject *other);
161 
162 static PyObject * GMPy_RealWithType_Rint(PyObject *x, int xtype, CTXT_Object *context);
163 static PyObject * GMPy_Number_Rint(PyObject *x, CTXT_Object *context);
164 static PyObject * GMPy_Context_Rint(PyObject *self, PyObject *other);
165 
166 static PyObject * GMPy_RealWithType_RintCeil(PyObject *x, int xtype, CTXT_Object *context);
167 static PyObject * GMPy_Number_RintCeil(PyObject *x, CTXT_Object *context);
168 static PyObject * GMPy_Context_RintCeil(PyObject *self, PyObject *other);
169 
170 static PyObject * GMPy_RealWithType_RintFloor(PyObject *x, int xtype, CTXT_Object *context);
171 static PyObject * GMPy_Number_RintFloor(PyObject *x, CTXT_Object *context);
172 static PyObject * GMPy_Context_RintFloor(PyObject *self, PyObject *other);
173 
174 static PyObject * GMPy_RealWithType_RintRound(PyObject *x, int xtype, CTXT_Object *context);
175 static PyObject * GMPy_Number_RintRound(PyObject *x, CTXT_Object *context);
176 static PyObject * GMPy_Context_RintRound(PyObject *self, PyObject *other);
177 
178 static PyObject * GMPy_RealWithType_RintTrunc(PyObject *x, int xtype, CTXT_Object *context);
179 static PyObject * GMPy_Number_RintTrunc(PyObject *x, CTXT_Object *context);
180 static PyObject * GMPy_Context_RintTrunc(PyObject *self, PyObject *other);
181 
182 static PyObject * GMPy_RealWithType_Frac(PyObject *x, int xtype, CTXT_Object *context);
183 static PyObject * GMPy_Number_Frac(PyObject *x, CTXT_Object *context);
184 static PyObject * GMPy_Context_Frac(PyObject *self, PyObject *other);
185 
186 static PyObject * GMPy_RealWithType_Cbrt(PyObject *x, int xtype, CTXT_Object *context);
187 static PyObject * GMPy_Number_Cbrt(PyObject *x, CTXT_Object *context);
188 static PyObject * GMPy_Context_Cbrt(PyObject *self, PyObject *other);
189 
190 static PyObject * GMPy_RealWithType_Log2(PyObject *x, int xtype, CTXT_Object *context);
191 static PyObject * GMPy_Number_Log2(PyObject *x, CTXT_Object *context);
192 static PyObject * GMPy_Context_Log2(PyObject *self, PyObject *other);
193 
194 static PyObject * GMPy_RealWithType_Exp2(PyObject *x, int xtype, CTXT_Object *context);
195 static PyObject * GMPy_Number_Exp2(PyObject *x, CTXT_Object *context);
196 static PyObject * GMPy_Context_Exp2(PyObject *self, PyObject *other);
197 
198 static PyObject * GMPy_RealWithType_Exp10(PyObject *x, int xtype, CTXT_Object *context);
199 static PyObject * GMPy_Number_Exp10(PyObject *x, CTXT_Object *context);
200 static PyObject * GMPy_Context_Exp10(PyObject *self, PyObject *other);
201 
202 static PyObject * GMPy_RealWithType_Log1p(PyObject *x, int xtype, CTXT_Object *context);
203 static PyObject * GMPy_Number_Log1p(PyObject *x, CTXT_Object *context);
204 static PyObject * GMPy_Context_Log1p(PyObject *self, PyObject *other);
205 
206 static PyObject * GMPy_RealWithType_Expm1(PyObject *x, int xtype, CTXT_Object *context);
207 static PyObject * GMPy_Number_Expm1(PyObject *x, CTXT_Object *context);
208 static PyObject * GMPy_Context_Expm1(PyObject *self, PyObject *other);
209 
210 static PyObject * GMPy_RealWithType_Eint(PyObject *x, int xtype, CTXT_Object *context);
211 static PyObject * GMPy_Number_Eint(PyObject *x, CTXT_Object *context);
212 static PyObject * GMPy_Context_Eint(PyObject *self, PyObject *other);
213 
214 static PyObject * GMPy_RealWithType_Li2(PyObject *x, int xtype, CTXT_Object *context);
215 static PyObject * GMPy_Number_Li2(PyObject *x, CTXT_Object *context);
216 static PyObject * GMPy_Context_Li2(PyObject *self, PyObject *other);
217 
218 static PyObject * GMPy_RealWithType_Lngamma(PyObject *x, int xtype, CTXT_Object *context);
219 static PyObject * GMPy_Number_Lngamma(PyObject *x, CTXT_Object *context);
220 static PyObject * GMPy_Context_Lngamma(PyObject *self, PyObject *other);
221 
222 static PyObject * GMPy_RealWithType_Digamma(PyObject *x, int xtype, CTXT_Object *context);
223 static PyObject * GMPy_Number_Digamma(PyObject *x, CTXT_Object *context);
224 static PyObject * GMPy_Context_Digamma(PyObject *self, PyObject *other);
225 
226 static PyObject * GMPy_RealWithType_Zeta(PyObject *x, int xtype, CTXT_Object *context);
227 static PyObject * GMPy_Number_Zeta(PyObject *x, CTXT_Object *context);
228 static PyObject * GMPy_Context_Zeta(PyObject *self, PyObject *other);
229 
230 static PyObject * GMPy_RealWithType_Erf(PyObject *x,int xtype,  CTXT_Object *context);
231 static PyObject * GMPy_Number_Erf(PyObject *x, CTXT_Object *context);
232 static PyObject * GMPy_Context_Erf(PyObject *self, PyObject *other);
233 
234 static PyObject * GMPy_RealWithType_Erfc(PyObject *x, int xtype, CTXT_Object *context);
235 static PyObject * GMPy_Number_Erfc(PyObject *x, CTXT_Object *context);
236 static PyObject * GMPy_Context_Erfc(PyObject *self, PyObject *other);
237 
238 static PyObject * GMPy_RealWithType_J0(PyObject *x, int xtype, CTXT_Object *context);
239 static PyObject * GMPy_Number_J0(PyObject *x, CTXT_Object *context);
240 static PyObject * GMPy_Context_J0(PyObject *self, PyObject *other);
241 
242 static PyObject * GMPy_RealWithType_J1(PyObject *x, int xtype, CTXT_Object *context);
243 static PyObject * GMPy_Number_J1(PyObject *x, CTXT_Object *context);
244 static PyObject * GMPy_Context_J1(PyObject *self, PyObject *other);
245 
246 static PyObject * GMPy_RealWithType_Y0(PyObject *x, int xtype, CTXT_Object *context);
247 static PyObject * GMPy_Number_Y0(PyObject *x, CTXT_Object *context);
248 static PyObject * GMPy_Context_Y0(PyObject *self, PyObject *other);
249 
250 static PyObject * GMPy_RealWithType_Y1(PyObject *x, int xtype, CTXT_Object *context);
251 static PyObject * GMPy_Number_Y1(PyObject *x, CTXT_Object *context);
252 static PyObject * GMPy_Context_Y1(PyObject *self, PyObject *other);
253 
254 static PyObject * GMPy_RealWithType_Ai(PyObject *x, int xtype, CTXT_Object *context);
255 static PyObject * GMPy_Number_Ai(PyObject *x, CTXT_Object *context);
256 static PyObject * GMPy_Context_Ai(PyObject *self, PyObject *other);
257 
258 static PyObject * GMPy_Real_Root(PyObject *x, PyObject *y, CTXT_Object *context);
259 static PyObject * GMPy_Number_Root(PyObject *x, PyObject *y, CTXT_Object *context);
260 static PyObject * GMPy_Context_Root(PyObject *self, PyObject *args);
261 
262 static PyObject * GMPy_RealWithType_Jn(PyObject *x, int xtype, PyObject *y, int ytype, CTXT_Object *context);
263 static PyObject * GMPy_Number_Jn(PyObject *x, PyObject *y, CTXT_Object *context);
264 static PyObject * GMPy_Context_Jn(PyObject *self, PyObject *args);
265 
266 static PyObject * GMPy_RealWithType_Yn(PyObject *x, int xtype, PyObject *y, int ytype, CTXT_Object *context);
267 static PyObject * GMPy_Number_Yn(PyObject *x, PyObject *y, CTXT_Object *context);
268 static PyObject * GMPy_Context_Yn(PyObject *self, PyObject *args);
269 
270 static PyObject * GMPy_RealWithType_AGM(PyObject *x, int xtype, PyObject *y, int ytype, CTXT_Object *context);
271 static PyObject * GMPy_Number_AGM(PyObject *x, PyObject *y, CTXT_Object *context);
272 static PyObject * GMPy_Context_AGM(PyObject *self, PyObject *args);
273 
274 static PyObject * GMPy_RealWithType_Maxnum(PyObject *x, int xtype, PyObject *y, int ytype, CTXT_Object *context);
275 static PyObject * GMPy_Number_Maxnum(PyObject *x, PyObject *y, CTXT_Object *context);
276 static PyObject * GMPy_Context_Maxnum(PyObject *self, PyObject *args);
277 
278 static PyObject * GMPy_RealWithType_Minnum(PyObject *x, int xtype, PyObject *y, int ytype, CTXT_Object *context);
279 static PyObject * GMPy_Number_Minnum(PyObject *x, PyObject *y, CTXT_Object *context);
280 static PyObject * GMPy_Context_Minnum(PyObject *self, PyObject *args);
281 
282 static PyObject * GMPy_RealWithType_Remainder(PyObject *x, int xtype, PyObject *y, int ytype, CTXT_Object *context);
283 static PyObject * GMPy_Number_Remainder(PyObject *x, PyObject *y, CTXT_Object *context);
284 static PyObject * GMPy_Context_Remainder(PyObject *self, PyObject *args);
285 
286 static PyObject * GMPy_RealWithType_Fmod(PyObject *x, int xtype, PyObject *y, int ytype, CTXT_Object *context);
287 static PyObject * GMPy_Number_Fmod(PyObject *x, PyObject *y, CTXT_Object *context);
288 static PyObject * GMPy_Context_Fmod(PyObject *self, PyObject *args);
289 
290 static PyObject * GMPy_RealWithType_RelDiff(PyObject *x, int xtype, PyObject *y, int ytype, CTXT_Object *context);
291 static PyObject * GMPy_Number_RelDiff(PyObject *x, PyObject *y, CTXT_Object *context);
292 static PyObject * GMPy_Context_RelDiff(PyObject *self, PyObject *args);
293 
294 static PyObject * GMPy_RealWithType_Ceil(PyObject *x, int xtype, CTXT_Object *context);
295 static PyObject * GMPy_Number_Ceil(PyObject *x, CTXT_Object *context);
296 static PyObject * GMPy_MPFR_Method_Ceil(PyObject *self, PyObject *args);
297 static PyObject * GMPy_Context_Ceil(PyObject *self, PyObject *args);
298 
299 static PyObject * GMPy_RealWithType_Floor(PyObject *x, int xtype, CTXT_Object *context);
300 static PyObject * GMPy_Number_Floor(PyObject *x, CTXT_Object *context);
301 static PyObject * GMPy_MPFR_Method_Floor(PyObject *self, PyObject *args);
302 static PyObject * GMPy_Context_Floor(PyObject *self, PyObject *args);
303 
304 static PyObject * GMPy_RealWithType_Trunc(PyObject *x, int xtype, CTXT_Object *context);
305 static PyObject * GMPy_Number_Trunc(PyObject *x, CTXT_Object *context);
306 static PyObject * GMPy_MPFR_Method_Trunc(PyObject *self, PyObject *args);
307 static PyObject * GMPy_Context_Trunc(PyObject *self, PyObject *args);
308 
309 static PyObject * GMPy_Real_Round2(PyObject *x, PyObject *y, CTXT_Object *context);
310 static PyObject * GMPy_Number_Round2(PyObject *x, PyObject *y, CTXT_Object *context);
311 static PyObject * GMPy_Context_Round2(PyObject *self, PyObject *args);
312 
313 static PyObject * GMPy_RealWithType_RoundAway(PyObject *x, int xtype, CTXT_Object *context);
314 static PyObject * GMPy_Number_RoundAway(PyObject *x, CTXT_Object *context);
315 static PyObject * GMPy_Context_RoundAway(PyObject *self, PyObject *other);
316 
317 static PyObject * GMPy_RealWithType_Modf(PyObject *x, int xtype, CTXT_Object *context);
318 static PyObject * GMPy_Number_Modf(PyObject *x, CTXT_Object *context);
319 static PyObject * GMPy_Context_Modf(PyObject *self, PyObject *other);
320 
321 static PyObject * GMPy_RealWithType_Lgamma(PyObject *x, int xtype, CTXT_Object *context);
322 static PyObject * GMPy_Number_Lgamma(PyObject *x, CTXT_Object *context);
323 static PyObject * GMPy_Context_Lgamma(PyObject *self, PyObject *other);
324 
325 static PyObject * GMPy_RealWithType_RemQuo(PyObject *x, int xtype, PyObject *y, int ytype, CTXT_Object *context);
326 static PyObject * GMPy_Number_RemQuo(PyObject *x, PyObject *y, CTXT_Object *context);
327 static PyObject * GMPy_Context_RemQuo(PyObject *self, PyObject *other);
328 
329 static PyObject * GMPy_RealWithType_Frexp(PyObject *x, int xtype, CTXT_Object *context);
330 static PyObject * GMPy_Number_Frexp(PyObject *x, CTXT_Object *context);
331 static PyObject * GMPy_Context_Frexp(PyObject *self, PyObject *other);
332 
333 static PyObject * GMPy_Context_NextToward(PyObject *self, PyObject *args);
334 
335 static PyObject * GMPy_Context_NextAbove(PyObject *self, PyObject *other);
336 
337 static PyObject * GMPy_Context_NextBelow(PyObject *self, PyObject *other);
338 
339 static PyObject * GMPy_Context_Factorial(PyObject *self, PyObject *other);
340 
341 static PyObject * GMPy_Context_Fsum(PyObject *self, PyObject *other);
342 
343 #ifdef __cplusplus
344 }
345 #endif
346 #endif
347