w32tex
About: TeX Live provides a comprehensive TeX system including all the major TeX-related programs, macro packages, and fonts that are free software. Windows sources.
  Fossies Dox: w32tex-src.tar.xz  ("unofficial" and yet experimental doxygen-generated source code documentation)  

mpfr-gmp.c
Go to the documentation of this file.
1 /* mpfr_gmp -- Limited gmp-impl emulator
2  Modified version of the GMP files.
3 
4 Copyright 2004-2020 Free Software Foundation, Inc.
5 Contributed by the AriC and Caramba projects, INRIA.
6 
7 This file is part of the GNU MPFR Library.
8 
9 The GNU MPFR Library is free software; you can redistribute it and/or modify
10 it under the terms of the GNU Lesser General Public License as published by
11 the Free Software Foundation; either version 3 of the License, or (at your
12 option) any later version.
13 
14 The GNU MPFR Library is distributed in the hope that it will be useful, but
15 WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
17 License for more details.
18 
19 You should have received a copy of the GNU Lesser General Public License
20 along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
21 https://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
22 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
23 
24 #include "mpfr-impl.h"
25 
26 #ifndef MPFR_HAVE_GMP_IMPL
27 
28 const struct bases mpfr_bases[257] =
29 {
30  /* 0 */ {0.0},
31  /* 1 */ {1e37},
32  /* 2 */ {1.0000000000000000},
33  /* 3 */ {0.6309297535714574},
34  /* 4 */ {0.5000000000000000},
35  /* 5 */ {0.4306765580733931},
36  /* 6 */ {0.3868528072345416},
37  /* 7 */ {0.3562071871080222},
38  /* 8 */ {0.3333333333333333},
39  /* 9 */ {0.3154648767857287},
40  /* 10 */ {0.3010299956639812},
41  /* 11 */ {0.2890648263178878},
42  /* 12 */ {0.2789429456511298},
43  /* 13 */ {0.2702381544273197},
44  /* 14 */ {0.2626495350371935},
45  /* 15 */ {0.2559580248098155},
46  /* 16 */ {0.2500000000000000},
47  /* 17 */ {0.2446505421182260},
48  /* 18 */ {0.2398124665681314},
49  /* 19 */ {0.2354089133666382},
50  /* 20 */ {0.2313782131597592},
51  /* 21 */ {0.2276702486969530},
52  /* 22 */ {0.2242438242175754},
53  /* 23 */ {0.2210647294575037},
54  /* 24 */ {0.2181042919855316},
55  /* 25 */ {0.2153382790366965},
56  /* 26 */ {0.2127460535533632},
57  /* 27 */ {0.2103099178571525},
58  /* 28 */ {0.2080145976765095},
59  /* 29 */ {0.2058468324604344},
60  /* 30 */ {0.2037950470905062},
61  /* 31 */ {0.2018490865820999},
62  /* 32 */ {0.2000000000000000},
63  /* 33 */ {0.1982398631705605},
64  /* 34 */ {0.1965616322328226},
65  /* 35 */ {0.1949590218937863},
66  /* 36 */ {0.1934264036172708},
67  /* 37 */ {0.1919587200065601},
68  /* 38 */ {0.1905514124267734},
69  /* 39 */ {0.1892003595168700},
70  /* 40 */ {0.1879018247091076},
71  /* 41 */ {0.1866524112389434},
72  /* 42 */ {0.1854490234153689},
73  /* 43 */ {0.1842888331487062},
74  /* 44 */ {0.1831692509136336},
75  /* 45 */ {0.1820879004699383},
76  /* 46 */ {0.1810425967800402},
77  /* 47 */ {0.1800313266566926},
78  /* 48 */ {0.1790522317510414},
79  /* 49 */ {0.1781035935540111},
80  /* 50 */ {0.1771838201355579},
81  /* 51 */ {0.1762914343888821},
82  /* 52 */ {0.1754250635819545},
83  /* 53 */ {0.1745834300480449},
84  /* 54 */ {0.1737653428714400},
85  /* 55 */ {0.1729696904450771},
86  /* 56 */ {0.1721954337940981},
87  /* 57 */ {0.1714416005739134},
88  /* 58 */ {0.1707072796637201},
89  /* 59 */ {0.1699916162869140},
90  /* 60 */ {0.1692938075987814},
91  /* 61 */ {0.1686130986895011},
92  /* 62 */ {0.1679487789570419},
93  /* 63 */ {0.1673001788101741},
94  /* 64 */ {0.1666666666666667},
95  /* 65 */ {0.1660476462159378},
96  /* 66 */ {0.1654425539190583},
97  /* 67 */ {0.1648508567221603},
98  /* 68 */ {0.1642720499620502},
99  /* 69 */ {0.1637056554452156},
100  /* 70 */ {0.1631512196835108},
101  /* 71 */ {0.1626083122716342},
102  /* 72 */ {0.1620765243931223},
103  /* 73 */ {0.1615554674429964},
104  /* 74 */ {0.1610447717564444},
105  /* 75 */ {0.1605440854340214},
106  /* 76 */ {0.1600530732548213},
107  /* 77 */ {0.1595714156699382},
108  /* 78 */ {0.1590988078692941},
109  /* 79 */ {0.1586349589155960},
110  /* 80 */ {0.1581795909397823},
111  /* 81 */ {0.1577324383928644},
112  /* 82 */ {0.1572932473495469},
113  /* 83 */ {0.1568617748594410},
114  /* 84 */ {0.1564377883420715},
115  /* 85 */ {0.1560210650222250},
116  /* 86 */ {0.1556113914024939},
117  /* 87 */ {0.1552085627701551},
118  /* 88 */ {0.1548123827357682},
119  /* 89 */ {0.1544226628011101},
120  /* 90 */ {0.1540392219542636},
121  /* 91 */ {0.1536618862898642},
122  /* 92 */ {0.1532904886526781},
123  /* 93 */ {0.1529248683028321},
124  /* 94 */ {0.1525648706011593},
125  /* 95 */ {0.1522103467132434},
126  /* 96 */ {0.1518611533308632},
127  /* 97 */ {0.1515171524096389},
128  /* 98 */ {0.1511782109217764},
129  /* 99 */ {0.1508442006228941},
130  /* 100 */ {0.1505149978319906},
131  /* 101 */ {0.1501904832236880},
132  /* 102 */ {0.1498705416319474},
133  /* 103 */ {0.1495550618645152},
134  /* 104 */ {0.1492439365274121},
135  /* 105 */ {0.1489370618588283},
136  /* 106 */ {0.1486343375718350},
137  /* 107 */ {0.1483356667053617},
138  /* 108 */ {0.1480409554829326},
139  /* 109 */ {0.1477501131786861},
140  /* 110 */ {0.1474630519902391},
141  /* 111 */ {0.1471796869179852},
142  /* 112 */ {0.1468999356504447},
143  /* 113 */ {0.1466237184553111},
144  /* 114 */ {0.1463509580758620},
145  /* 115 */ {0.1460815796324244},
146  /* 116 */ {0.1458155105286054},
147  /* 117 */ {0.1455526803620167},
148  /* 118 */ {0.1452930208392429},
149  /* 119 */ {0.1450364656948130},
150  /* 120 */ {0.1447829506139581},
151  /* 121 */ {0.1445324131589439},
152  /* 122 */ {0.1442847926987864},
153  /* 123 */ {0.1440400303421672},
154  /* 124 */ {0.1437980688733776},
155  /* 125 */ {0.1435588526911310},
156  /* 126 */ {0.1433223277500932},
157  /* 127 */ {0.1430884415049874},
158  /* 128 */ {0.1428571428571428},
159  /* 129 */ {0.1426283821033600},
160  /* 130 */ {0.1424021108869747},
161  /* 131 */ {0.1421782821510107},
162  /* 132 */ {0.1419568500933153},
163  /* 133 */ {0.1417377701235801},
164  /* 134 */ {0.1415209988221527},
165  /* 135 */ {0.1413064939005528},
166  /* 136 */ {0.1410942141636095},
167  /* 137 */ {0.1408841194731412},
168  /* 138 */ {0.1406761707131039},
169  /* 139 */ {0.1404703297561400},
170  /* 140 */ {0.1402665594314587},
171  /* 141 */ {0.1400648234939879},
172  /* 142 */ {0.1398650865947379},
173  /* 143 */ {0.1396673142523192},
174  /* 144 */ {0.1394714728255649},
175  /* 145 */ {0.1392775294872041},
176  /* 146 */ {0.1390854521985406},
177  /* 147 */ {0.1388952096850913},
178  /* 148 */ {0.1387067714131417},
179  /* 149 */ {0.1385201075671774},
180  /* 150 */ {0.1383351890281539},
181  /* 151 */ {0.1381519873525671},
182  /* 152 */ {0.1379704747522905},
183  /* 153 */ {0.1377906240751463},
184  /* 154 */ {0.1376124087861776},
185  /* 155 */ {0.1374358029495937},
186  /* 156 */ {0.1372607812113589},
187  /* 157 */ {0.1370873187823978},
188  /* 158 */ {0.1369153914223921},
189  /* 159 */ {0.1367449754241439},
190  /* 160 */ {0.1365760475984821},
191  /* 161 */ {0.1364085852596902},
192  /* 162 */ {0.1362425662114337},
193  /* 163 */ {0.1360779687331669},
194  /* 164 */ {0.1359147715670014},
195  /* 165 */ {0.1357529539050150},
196  /* 166 */ {0.1355924953769864},
197  /* 167 */ {0.1354333760385373},
198  /* 168 */ {0.1352755763596663},
199  /* 169 */ {0.1351190772136599},
200  /* 170 */ {0.1349638598663645},
201  /* 171 */ {0.1348099059658080},
202  /* 172 */ {0.1346571975321549},
203  /* 173 */ {0.1345057169479844},
204  /* 174 */ {0.1343554469488779},
205  /* 175 */ {0.1342063706143054},
206  /* 176 */ {0.1340584713587979},
207  /* 177 */ {0.1339117329233981},
208  /* 178 */ {0.1337661393673756},
209  /* 179 */ {0.1336216750601996},
210  /* 180 */ {0.1334783246737591},
211  /* 181 */ {0.1333360731748201},
212  /* 182 */ {0.1331949058177136},
213  /* 183 */ {0.1330548081372441},
214  /* 184 */ {0.1329157659418126},
215  /* 185 */ {0.1327777653067443},
216  /* 186 */ {0.1326407925678156},
217  /* 187 */ {0.1325048343149731},
218  /* 188 */ {0.1323698773862368},
219  /* 189 */ {0.1322359088617821},
220  /* 190 */ {0.1321029160581950},
221  /* 191 */ {0.1319708865228925},
222  /* 192 */ {0.1318398080287045},
223  /* 193 */ {0.1317096685686114},
224  /* 194 */ {0.1315804563506306},
225  /* 195 */ {0.1314521597928493},
226  /* 196 */ {0.1313247675185968},
227  /* 197 */ {0.1311982683517524},
228  /* 198 */ {0.1310726513121843},
229  /* 199 */ {0.1309479056113158},
230  /* 200 */ {0.1308240206478128},
231  /* 201 */ {0.1307009860033912},
232  /* 202 */ {0.1305787914387386},
233  /* 203 */ {0.1304574268895465},
234  /* 204 */ {0.1303368824626505},
235  /* 205 */ {0.1302171484322746},
236  /* 206 */ {0.1300982152363760},
237  /* 207 */ {0.1299800734730872},
238  /* 208 */ {0.1298627138972530},
239  /* 209 */ {0.1297461274170591},
240  /* 210 */ {0.1296303050907487},
241  /* 211 */ {0.1295152381234257},
242  /* 212 */ {0.1294009178639407},
243  /* 213 */ {0.1292873358018581},
244  /* 214 */ {0.1291744835645007},
245  /* 215 */ {0.1290623529140715},
246  /* 216 */ {0.1289509357448472},
247  /* 217 */ {0.1288402240804449},
248  /* 218 */ {0.1287302100711566},
249  /* 219 */ {0.1286208859913518},
250  /* 220 */ {0.1285122442369443},
251  /* 221 */ {0.1284042773229231},
252  /* 222 */ {0.1282969778809442},
253  /* 223 */ {0.1281903386569819},
254  /* 224 */ {0.1280843525090381},
255  /* 225 */ {0.1279790124049077},
256  /* 226 */ {0.1278743114199984},
257  /* 227 */ {0.1277702427352035},
258  /* 228 */ {0.1276667996348261},
259  /* 229 */ {0.1275639755045533},
260  /* 230 */ {0.1274617638294791},
261  /* 231 */ {0.1273601581921740},
262  /* 232 */ {0.1272591522708010},
263  /* 233 */ {0.1271587398372755},
264  /* 234 */ {0.1270589147554692},
265  /* 235 */ {0.1269596709794558},
266  /* 236 */ {0.1268610025517973},
267  /* 237 */ {0.1267629036018709},
268  /* 238 */ {0.1266653683442337},
269  /* 239 */ {0.1265683910770258},
270  /* 240 */ {0.1264719661804097},
271  /* 241 */ {0.1263760881150453},
272  /* 242 */ {0.1262807514205999},
273  /* 243 */ {0.1261859507142915},
274  /* 244 */ {0.1260916806894653},
275  /* 245 */ {0.1259979361142023},
276  /* 246 */ {0.1259047118299582},
277  /* 247 */ {0.1258120027502338},
278  /* 248 */ {0.1257198038592741},
279  /* 249 */ {0.1256281102107963},
280  /* 250 */ {0.1255369169267456},
281  /* 251 */ {0.1254462191960791},
282  /* 252 */ {0.1253560122735751},
283  /* 253 */ {0.1252662914786691},
284  /* 254 */ {0.1251770521943144},
285  /* 255 */ {0.1250882898658681},
286  /* 256 */ {0.1250000000000000},
287 };
288 
291  const char *expr)
292 {
293  if (filename != NULL && filename[0] != '\0')
294  {
295  fprintf (stderr, "%s:", filename);
296  if (linenum != -1)
297  fprintf (stderr, "%d: ", linenum);
298  }
299  fprintf (stderr, "MPFR assertion failed: %s\n", expr);
300  abort();
301 }
302 
303 /* Performing a concentration for these indirect functions may be
304  good for performance since branch prediction for indirect calls
305  is not well supported by a lot of CPU's (typically they can only
306  predict a limited number of indirections). */
308 mpfr_allocate_func (size_t alloc_size)
309 {
310  void * (*allocate_func) (size_t);
311  void * (*reallocate_func) (void *, size_t, size_t);
312  void (*free_func) (void *, size_t);
313  /* Always calling with the 3 arguments smooths branch prediction. */
314  mp_get_memory_functions (&allocate_func, &reallocate_func, &free_func);
315  return (*allocate_func) (alloc_size);
316 }
317 
319 mpfr_reallocate_func (void * ptr, size_t old_size, size_t new_size)
320 {
321  void * (*allocate_func) (size_t);
322  void * (*reallocate_func) (void *, size_t, size_t);
323  void (*free_func) (void *, size_t);
324  /* Always calling with the 3 arguments smooths branch prediction. */
325  mp_get_memory_functions (&allocate_func, &reallocate_func, &free_func);
326  return (*reallocate_func) (ptr, old_size, new_size);
327 }
328 
330 mpfr_free_func (void *ptr, size_t size)
331 {
332  void * (*allocate_func) (size_t);
333  void * (*reallocate_func) (void *, size_t, size_t);
334  void (*free_func) (void *, size_t);
335  /* Always calling with the 3 arguments smooths branch prediction. */
336  mp_get_memory_functions (&allocate_func, &reallocate_func, &free_func);
337  (*free_func) (ptr, size);
338 }
339 
340 void *
342 {
343  struct tmp_marker *head;
344 
345  head = (struct tmp_marker *)
346  mpfr_allocate_func (sizeof (struct tmp_marker));
347  head->ptr = mpfr_allocate_func (size);
348  head->size = size;
349  head->next = *tmp_marker;
350  *tmp_marker = head;
351  return head->ptr;
352 }
353 
354 void
356 {
357  struct tmp_marker *t;
358 
359  while (tmp_marker != NULL)
360  {
361  t = tmp_marker;
362  mpfr_free_func (t->ptr, t->size);
363  tmp_marker = t->next;
364  mpfr_free_func (t, sizeof (struct tmp_marker));
365  }
366 }
367 
368 #endif /* Have gmp-impl.h */
#define head
Definition: aptex-macros.h:513
static void
Definition: fpif.c:118
#define t
Definition: afcover.h:96
#define mp_get_memory_functions
Definition: gmp.h:481
#define NULL
Definition: ftobjs.h:61
void(* free_func)()
Definition: zlib.h:64
#define fprintf
Definition: mendex.h:64
void abort()
int linenum
Definition: lacheck.l:182
#define size_t
Definition: glob.c:257
const struct bases mpfr_bases[257]
Definition: mpfr-gmp.c:28
void mpfr_free_func(void *ptr, size_t size)
Definition: mpfr-gmp.c:330
void * mpfr_reallocate_func(void *ptr, size_t old_size, size_t new_size)
Definition: mpfr-gmp.c:319
void mpfr_assert_fail(const char *filename, int linenum, const char *expr)
Definition: mpfr-gmp.c:290
void * mpfr_allocate_func(size_t alloc_size)
Definition: mpfr-gmp.c:308
void mpfr_tmp_free(struct tmp_marker *tmp_marker)
Definition: mpfr-gmp.c:355
void * mpfr_tmp_allocate(struct tmp_marker **tmp_marker, size_t size)
Definition: mpfr-gmp.c:341
#define MPFR_HOT_FUNCTION_ATTR
Definition: mpfr-impl.h:192
#define MPFR_COLD_FUNCTION_ATTR
Definition: mpfr-impl.h:200
char * filename[256]
Definition: pbmtopk.c:46
set set set set set set set set set set set set set set set set set set set set *set set set macro pixldst op &r &cond WK op &r &cond WK op &r &cond WK else op &m &cond &ia op &r &cond WK else op &m &cond &ia elseif elseif else error unsupported base if elseif elseif else error unsupported unaligned pixldst unaligned endm macro pixst base base else pixldst base endif endm macro PF ptr
static int size
Definition: ppmlabel.c:24
static void expr(LexState *ls, expdesc *v)
Definition: lparser.c:1079
Definition: ttf.h:354
Definition: dvips.h:235
struct t * next
Definition: dvips.h:237
static void new_size(int size, int block)
Definition: gc.c:702