tlog.c revision 1.1 1 1.1 mrg /* Test file for mpfr_log.
2 1.1 mrg
3 1.1 mrg Copyright 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
4 1.1 mrg Contributed by the Arenaire and Cacao projects, INRIA.
5 1.1 mrg
6 1.1 mrg This file is part of the GNU MPFR Library.
7 1.1 mrg
8 1.1 mrg The GNU MPFR Library is free software; you can redistribute it and/or modify
9 1.1 mrg it under the terms of the GNU Lesser General Public License as published by
10 1.1 mrg the Free Software Foundation; either version 3 of the License, or (at your
11 1.1 mrg option) any later version.
12 1.1 mrg
13 1.1 mrg The GNU MPFR Library is distributed in the hope that it will be useful, but
14 1.1 mrg WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
15 1.1 mrg or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
16 1.1 mrg License for more details.
17 1.1 mrg
18 1.1 mrg You should have received a copy of the GNU Lesser General Public License
19 1.1 mrg along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
20 1.1 mrg http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
21 1.1 mrg 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
22 1.1 mrg
23 1.1 mrg #include <stdio.h>
24 1.1 mrg #include <stdlib.h>
25 1.1 mrg
26 1.1 mrg #include "mpfr-test.h"
27 1.1 mrg
28 1.1 mrg #ifdef CHECK_EXTERNAL
29 1.1 mrg static int
30 1.1 mrg test_log (mpfr_ptr a, mpfr_srcptr b, mpfr_rnd_t rnd_mode)
31 1.1 mrg {
32 1.1 mrg int res;
33 1.1 mrg int ok = rnd_mode == MPFR_RNDN && mpfr_number_p (b) && mpfr_get_prec (a)>=53;
34 1.1 mrg if (ok)
35 1.1 mrg {
36 1.1 mrg mpfr_print_raw (b);
37 1.1 mrg }
38 1.1 mrg res = mpfr_log (a, b, rnd_mode);
39 1.1 mrg if (ok)
40 1.1 mrg {
41 1.1 mrg printf (" ");
42 1.1 mrg mpfr_print_raw (a);
43 1.1 mrg printf ("\n");
44 1.1 mrg }
45 1.1 mrg return res;
46 1.1 mrg }
47 1.1 mrg #else
48 1.1 mrg #define test_log mpfr_log
49 1.1 mrg #endif
50 1.1 mrg
51 1.1 mrg static void
52 1.1 mrg check2 (const char *as, mpfr_rnd_t rnd_mode, const char *res1s)
53 1.1 mrg {
54 1.1 mrg mpfr_t ta, tres;
55 1.1 mrg
56 1.1 mrg mpfr_inits2 (53, ta, tres, (mpfr_ptr) 0);
57 1.1 mrg mpfr_set_str1 (ta, as);
58 1.1 mrg test_log (tres, ta, rnd_mode);
59 1.1 mrg
60 1.1 mrg if (mpfr_cmp_str1 (tres, res1s))
61 1.1 mrg {
62 1.1 mrg printf ("mpfr_log failed for a=%s, rnd_mode=%s\n",
63 1.1 mrg as, mpfr_print_rnd_mode (rnd_mode));
64 1.1 mrg printf ("correct result is %s\n mpfr_log gives ",
65 1.1 mrg res1s);
66 1.1 mrg mpfr_out_str(stdout, 10, 0, tres, MPFR_RNDN);
67 1.1 mrg exit (1);
68 1.1 mrg }
69 1.1 mrg mpfr_clears (ta, tres, (mpfr_ptr) 0);
70 1.1 mrg }
71 1.1 mrg
72 1.1 mrg static void
73 1.1 mrg check3 (double d, unsigned long prec, mpfr_rnd_t rnd)
74 1.1 mrg {
75 1.1 mrg mpfr_t x, y;
76 1.1 mrg
77 1.1 mrg mpfr_init2 (x, prec);
78 1.1 mrg mpfr_init2 (y, prec);
79 1.1 mrg mpfr_set_d (x, d, rnd);
80 1.1 mrg test_log (y, x, rnd);
81 1.1 mrg mpfr_out_str (stdout, 10, 0, y, rnd);
82 1.1 mrg puts ("");
83 1.1 mrg mpfr_print_binary (y);
84 1.1 mrg puts ("");
85 1.1 mrg mpfr_clear (x);
86 1.1 mrg mpfr_clear (y);
87 1.1 mrg }
88 1.1 mrg
89 1.1 mrg /* examples from Jean-Michel Muller and Vincent Lefevre
90 1.1 mrg Cf http://www.ens-lyon.fr/~jmmuller/Intro-to-TMD.htm
91 1.1 mrg */
92 1.1 mrg
93 1.1 mrg static void
94 1.1 mrg check_worst_cases (void)
95 1.1 mrg {
96 1.1 mrg check2("1.00089971802309629645", MPFR_RNDD, "8.99313519443722736088e-04");
97 1.1 mrg check2("1.00089971802309629645", MPFR_RNDN, "8.99313519443722844508e-04");
98 1.1 mrg check2("1.00089971802309629645", MPFR_RNDU, "8.99313519443722844508e-04");
99 1.1 mrg
100 1.1 mrg check2("1.01979300812244555452", MPFR_RNDD, "1.95996734891603630047e-02");
101 1.1 mrg check2("1.01979300812244555452", MPFR_RNDN, "1.95996734891603664741e-02");
102 1.1 mrg check2("1.01979300812244555452", MPFR_RNDU, "1.95996734891603664741e-02");
103 1.1 mrg
104 1.1 mrg check2("1.02900871924604464525", MPFR_RNDD, "2.85959303301472726744e-02");
105 1.1 mrg check2("1.02900871924604464525", MPFR_RNDN, "2.85959303301472761438e-02");
106 1.1 mrg check2("1.02900871924604464525", MPFR_RNDU, "2.85959303301472761438e-02");
107 1.1 mrg
108 1.1 mrg check2("1.27832870030418943585", MPFR_RNDD, "2.45553521871417795852e-01");
109 1.1 mrg check2("1.27832870030418943585", MPFR_RNDN, "2.45553521871417823608e-01");
110 1.1 mrg check2("1.27832870030418943585", MPFR_RNDU, "2.45553521871417823608e-01");
111 1.1 mrg
112 1.1 mrg check2("1.31706530746788241792", MPFR_RNDD, "2.75406009586277422674e-01");
113 1.1 mrg check2("1.31706530746788241792", MPFR_RNDN, "2.75406009586277478185e-01");
114 1.1 mrg check2("1.31706530746788241792", MPFR_RNDU, "2.75406009586277478185e-01");
115 1.1 mrg
116 1.1 mrg check2("1.47116981099449883885", MPFR_RNDD, "3.86057874110010412760e-01");
117 1.1 mrg check2("1.47116981099449883885", MPFR_RNDN, "3.86057874110010412760e-01");
118 1.1 mrg check2("1.47116981099449883885", MPFR_RNDU, "3.86057874110010468272e-01");
119 1.1 mrg
120 1.1 mrg check2("1.58405446812987782401", MPFR_RNDD, "4.59987679246663727639e-01");
121 1.1 mrg check2("1.58405446812987782401", MPFR_RNDN, "4.59987679246663783150e-01");
122 1.1 mrg check2("1.58405446812987782401", MPFR_RNDU, "4.59987679246663783150e-01");
123 1.1 mrg
124 1.1 mrg check2("1.67192331263391547047", MPFR_RNDD, "5.13974647961076613889e-01");
125 1.1 mrg check2("1.67192331263391547047", MPFR_RNDN, "5.13974647961076724911e-01");
126 1.1 mrg check2("1.67192331263391547047", MPFR_RNDU, "5.13974647961076724911e-01");
127 1.1 mrg
128 1.1 mrg check2("1.71101198068990645318", MPFR_RNDD, "5.37084997042120315669e-01");
129 1.1 mrg check2("1.71101198068990645318", MPFR_RNDN, "5.37084997042120315669e-01");
130 1.1 mrg check2("1.71101198068990645318", MPFR_RNDU, "5.37084997042120426691e-01");
131 1.1 mrg
132 1.1 mrg check2("1.72634853551388700588", MPFR_RNDD, "5.46008504786553605648e-01");
133 1.1 mrg check2("1.72634853551388700588", MPFR_RNDN, "5.46008504786553716670e-01");
134 1.1 mrg check2("1.72634853551388700588", MPFR_RNDU, "5.46008504786553716670e-01");
135 1.1 mrg
136 1.1 mrg check2("2.00028876593004323325", MPFR_RNDD, "6.93291553102749702475e-01");
137 1.1 mrg check2("2.00028876593004323325", MPFR_RNDN, "6.93291553102749813497e-01");
138 1.1 mrg check2("2.00028876593004323325", MPFR_RNDU, "6.93291553102749813497e-01");
139 1.1 mrg
140 1.1 mrg check2("6.27593230200363105808", MPFR_RNDD, "1.83672204800630312072");
141 1.1 mrg check2("6.27593230200363105808", MPFR_RNDN, "1.83672204800630334276");
142 1.1 mrg check2("6.27593230200363105808", MPFR_RNDU, "1.83672204800630334276");
143 1.1 mrg
144 1.1 mrg check2("7.47216682321367997588", MPFR_RNDD, "2.01118502712453661729");
145 1.1 mrg check2("7.47216682321367997588", MPFR_RNDN, "2.01118502712453706138");
146 1.1 mrg check2("7.47216682321367997588", MPFR_RNDU, "2.01118502712453706138");
147 1.1 mrg
148 1.1 mrg check2("9.34589857718275318632", MPFR_RNDD, "2.23493759221664944903");
149 1.1 mrg check2("9.34589857718275318632", MPFR_RNDN, "2.23493759221664989312");
150 1.1 mrg check2("9.34589857718275318632", MPFR_RNDU, "2.23493759221664989312");
151 1.1 mrg
152 1.1 mrg check2("10.6856587560831854944", MPFR_RNDD, "2.36890253928838445674");
153 1.1 mrg check2("10.6856587560831854944", MPFR_RNDN, "2.36890253928838445674");
154 1.1 mrg check2("10.6856587560831854944", MPFR_RNDU, "2.36890253928838490083");
155 1.1 mrg
156 1.1 mrg check2("12.4646345033981766903", MPFR_RNDD, "2.52289539471636015122");
157 1.1 mrg check2("12.4646345033981766903", MPFR_RNDN, "2.52289539471636015122");
158 1.1 mrg check2("12.4646345033981766903", MPFR_RNDU, "2.52289539471636059531");
159 1.1 mrg
160 1.1 mrg check2("17.0953275851761752335", MPFR_RNDD, "2.83880518553861849185");
161 1.1 mrg check2("17.0953275851761752335", MPFR_RNDN, "2.83880518553861893594");
162 1.1 mrg check2("17.0953275851761752335", MPFR_RNDU, "2.83880518553861893594");
163 1.1 mrg
164 1.1 mrg check2("19.8509496207496916043", MPFR_RNDD, "2.98825184582516722998");
165 1.1 mrg check2("19.8509496207496916043", MPFR_RNDN, "2.98825184582516722998");
166 1.1 mrg check2("19.8509496207496916043", MPFR_RNDU, "2.98825184582516767406");
167 1.1 mrg
168 1.1 mrg check2("23.9512076062771335216", MPFR_RNDD, "3.17601874455977206679");
169 1.1 mrg check2("23.9512076062771335216", MPFR_RNDN, "3.17601874455977206679");
170 1.1 mrg check2("23.9512076062771335216", MPFR_RNDU, "3.17601874455977251088");
171 1.1 mrg
172 1.1 mrg check2("428.315247165198229595", MPFR_RNDD, "6.05985948325268264369");
173 1.1 mrg check2("428.315247165198229595", MPFR_RNDN, "6.05985948325268353187");
174 1.1 mrg check2("428.315247165198229595", MPFR_RNDU, "6.05985948325268353187");
175 1.1 mrg }
176 1.1 mrg
177 1.1 mrg static void
178 1.1 mrg special (void)
179 1.1 mrg {
180 1.1 mrg mpfr_t x, y;
181 1.1 mrg int inex;
182 1.1 mrg mpfr_exp_t emin, emax;
183 1.1 mrg
184 1.1 mrg emin = mpfr_get_emin ();
185 1.1 mrg emax = mpfr_get_emax ();
186 1.1 mrg
187 1.1 mrg mpfr_init2 (x, 53);
188 1.1 mrg mpfr_init2 (y, 53);
189 1.1 mrg
190 1.1 mrg /* Check special case: An overflow in const_pi could occurs! */
191 1.1 mrg set_emin (-125);
192 1.1 mrg set_emax (128);
193 1.1 mrg mpfr_set_prec (y, 24*2);
194 1.1 mrg mpfr_set_prec (x, 24);
195 1.1 mrg mpfr_set_str_binary (x, "0.111110101010101011110101E0");
196 1.1 mrg test_log (y, x, MPFR_RNDN);
197 1.1 mrg set_emin (emin);
198 1.1 mrg set_emax (emax);
199 1.1 mrg
200 1.1 mrg mpfr_set_prec (y, 53);
201 1.1 mrg mpfr_set_prec (x, 53);
202 1.1 mrg mpfr_set_ui (x, 3, MPFR_RNDD);
203 1.1 mrg test_log (y, x, MPFR_RNDD);
204 1.1 mrg if (mpfr_cmp_str1 (y, "1.09861228866810956"))
205 1.1 mrg {
206 1.1 mrg printf ("Error in mpfr_log(3) for MPFR_RNDD\n");
207 1.1 mrg exit (1);
208 1.1 mrg }
209 1.1 mrg
210 1.1 mrg /* check large precision */
211 1.1 mrg mpfr_set_prec (x, 3322);
212 1.1 mrg mpfr_set_prec (y, 3322);
213 1.1 mrg mpfr_set_ui (x, 3, MPFR_RNDN);
214 1.1 mrg mpfr_sqrt (x, x, MPFR_RNDN);
215 1.1 mrg test_log (y, x, MPFR_RNDN);
216 1.1 mrg
217 1.1 mrg /* negative argument */
218 1.1 mrg mpfr_set_si (x, -1, MPFR_RNDN);
219 1.1 mrg test_log (y, x, MPFR_RNDN);
220 1.1 mrg MPFR_ASSERTN(mpfr_nan_p (y));
221 1.1 mrg
222 1.1 mrg /* infinite loop when */
223 1.1 mrg set_emax (128);
224 1.1 mrg mpfr_set_prec (x, 251);
225 1.1 mrg mpfr_set_prec (y, 251);
226 1.1 mrg mpfr_set_str_binary (x, "0.10010111000000000001101E8");
227 1.1 mrg /* x = 4947981/32768, log(x) ~ 5.017282... */
228 1.1 mrg test_log (y, x, MPFR_RNDN);
229 1.1 mrg
230 1.1 mrg set_emax (emax);
231 1.1 mrg
232 1.1 mrg mpfr_set_ui (x, 0, MPFR_RNDN);
233 1.1 mrg inex = test_log (y, x, MPFR_RNDN);
234 1.1 mrg MPFR_ASSERTN (inex == 0);
235 1.1 mrg MPFR_ASSERTN (mpfr_inf_p (y));
236 1.1 mrg MPFR_ASSERTN (mpfr_sgn (y) < 0);
237 1.1 mrg
238 1.1 mrg mpfr_set_ui (x, 0, MPFR_RNDN);
239 1.1 mrg mpfr_neg (x, x, MPFR_RNDN);
240 1.1 mrg inex = test_log (y, x, MPFR_RNDN);
241 1.1 mrg MPFR_ASSERTN (inex == 0);
242 1.1 mrg MPFR_ASSERTN (mpfr_inf_p (y));
243 1.1 mrg MPFR_ASSERTN (mpfr_sgn (y) < 0);
244 1.1 mrg
245 1.1 mrg mpfr_clear (x);
246 1.1 mrg mpfr_clear (y);
247 1.1 mrg }
248 1.1 mrg
249 1.1 mrg static void
250 1.1 mrg x_near_one (void)
251 1.1 mrg {
252 1.1 mrg mpfr_t x, y;
253 1.1 mrg int inex;
254 1.1 mrg
255 1.1 mrg mpfr_init2 (x, 32);
256 1.1 mrg mpfr_init2 (y, 16);
257 1.1 mrg
258 1.1 mrg mpfr_set_ui (x, 1, MPFR_RNDN);
259 1.1 mrg mpfr_nextbelow (x);
260 1.1 mrg inex = mpfr_log (y, x, MPFR_RNDD);
261 1.1 mrg if (mpfr_cmp_str (y, "-0.1000000000000001E-31", 2, MPFR_RNDN)
262 1.1 mrg || inex >= 0)
263 1.1 mrg {
264 1.1 mrg printf ("Failure in x_near_one, got inex = %d and\ny = ", inex);
265 1.1 mrg mpfr_dump (y);
266 1.1 mrg }
267 1.1 mrg
268 1.1 mrg mpfr_clears (x, y, (mpfr_ptr) 0);
269 1.1 mrg }
270 1.1 mrg
271 1.1 mrg #define TEST_FUNCTION test_log
272 1.1 mrg #define TEST_RANDOM_POS 8
273 1.1 mrg #include "tgeneric.c"
274 1.1 mrg
275 1.1 mrg int
276 1.1 mrg main (int argc, char *argv[])
277 1.1 mrg {
278 1.1 mrg tests_start_mpfr ();
279 1.1 mrg
280 1.1 mrg if (argc==4)
281 1.1 mrg { /* tlog x prec rnd */
282 1.1 mrg check3 (atof(argv[1]), atoi(argv[2]), (mpfr_rnd_t) atoi(argv[3]));
283 1.1 mrg goto done;
284 1.1 mrg }
285 1.1 mrg
286 1.1 mrg special ();
287 1.1 mrg check_worst_cases();
288 1.1 mrg
289 1.1 mrg check2("1.01979300812244555452", MPFR_RNDN, "1.95996734891603664741e-02");
290 1.1 mrg check2("10.0",MPFR_RNDU,"2.30258509299404590110e+00");
291 1.1 mrg check2("6.0",MPFR_RNDU,"1.79175946922805517936");
292 1.1 mrg check2("1.0",MPFR_RNDZ,"0.0");
293 1.1 mrg check2("62.0",MPFR_RNDU,"4.12713438504509166905");
294 1.1 mrg check2("0.5",MPFR_RNDZ,"-6.93147180559945286226e-01");
295 1.1 mrg check2("3.0",MPFR_RNDZ,"1.09861228866810956006e+00");
296 1.1 mrg check2("234375765.0",MPFR_RNDU,"1.92724362186836231104e+01");
297 1.1 mrg check2("8.0",MPFR_RNDZ,"2.07944154167983574765e+00");
298 1.1 mrg check2("44.0",MPFR_RNDU,"3.78418963391826146392e+00");
299 1.1 mrg check2("1.01979300812244555452", MPFR_RNDN, "1.95996734891603664741e-02");
300 1.1 mrg
301 1.1 mrg /* bugs found by Vincent Lefe`vre */
302 1.1 mrg check2("0.99999599881598921769", MPFR_RNDN, "-0.0000040011920155404072924737977900999652547398000024259090423583984375");
303 1.1 mrg check2("9.99995576063808955247e-01",MPFR_RNDZ,"-4.42394597667932383816e-06");
304 1.1 mrg check2("9.99993687357856209097e-01",MPFR_RNDN,"-6.31266206860017342601e-06");
305 1.1 mrg check2("9.99995223520736886691e-01",MPFR_RNDN,"-4.77649067052670982220e-06");
306 1.1 mrg check2("9.99993025794720935551e-01",MPFR_RNDN,"-6.97422959894716163837e-06");
307 1.1 mrg check2("9.99987549017837484833e-01",MPFR_RNDN,"-1.24510596766369924330e-05");
308 1.1 mrg check2("9.99985901426543311032e-01",MPFR_RNDN,"-1.40986728425098585229e-05");
309 1.1 mrg check2("9.99986053947420794330e-01",MPFR_RNDN, "-0.000013946149826301084938555592540598837558718514628708362579345703125");
310 1.1 mrg check2("9.99971938247442126979e-01",MPFR_RNDN,"-2.80621462962173414790e-05");
311 1.1 mrg
312 1.1 mrg /* other bugs found by Vincent Lefe`vre */
313 1.1 mrg check2("1.18615436389927785905e+77",MPFR_RNDN,"1.77469768607706015473e+02");
314 1.1 mrg check2("9.48868723578399476187e+77",MPFR_RNDZ,"1.79549152432275803903e+02");
315 1.1 mrg check2("2.31822210096938820854e+89",MPFR_RNDN,"2.05770873832573869322e+02");
316 1.1 mrg
317 1.1 mrg /* further bugs found by Vincent Lefe`vre */
318 1.1 mrg check2("9.99999989485669482647e-01",MPFR_RNDZ,"-1.05143305726283042331e-08");
319 1.1 mrg check2("9.99999989237970177136e-01",MPFR_RNDZ,"-1.07620298807745377934e-08");
320 1.1 mrg check2("9.99999989239339082125e-01",MPFR_RNDN,"-1.07606609757704445430e-08");
321 1.1 mrg
322 1.1 mrg check2("7.3890560989306504",MPFR_RNDU,"2.0000000000000004"); /* exp(2.0) */
323 1.1 mrg check2("7.3890560989306495",MPFR_RNDU,"2.0"); /* exp(2.0) */
324 1.1 mrg check2("7.53428236571286402512e+34",MPFR_RNDZ,"8.03073567492226345621e+01");
325 1.1 mrg check2("6.18784121531737948160e+19",MPFR_RNDZ,"4.55717030391710693493e+01");
326 1.1 mrg check2("1.02560267603047283735e+00",MPFR_RNDD,"2.52804164149448735987e-02");
327 1.1 mrg check2("7.53428236571286402512e+34",MPFR_RNDZ,"8.03073567492226345621e+01");
328 1.1 mrg check2("1.42470900831881198052e+49",MPFR_RNDZ,"113.180637144887668910087086260318756103515625");
329 1.1 mrg
330 1.1 mrg check2("1.08013816255293777466e+11",MPFR_RNDN,"2.54055249841782604392e+01");
331 1.1 mrg check2("6.72783635300509015581e-37",MPFR_RNDU,"-8.32893948416799503320e+01");
332 1.1 mrg check2("2.25904918906057891180e-52",MPFR_RNDU,"-1.18919480823735682406e+02");
333 1.1 mrg check2("1.48901209246462951085e+00",MPFR_RNDD,"3.98112874867437460668e-01");
334 1.1 mrg check2("1.70322470467612341327e-01",MPFR_RNDN,"-1.77006175364294615626");
335 1.1 mrg check2("1.94572026316065240791e+01",MPFR_RNDD,"2.96821731676437838842");
336 1.1 mrg check2("4.01419512207026418764e+04",MPFR_RNDD,"1.06001772315501128218e+01");
337 1.1 mrg check2("9.47077365236487591672e-04",MPFR_RNDZ,"-6.96212977303956748187e+00");
338 1.1 mrg check2("3.95906157687589643802e-109",MPFR_RNDD,"-2.49605768114704119399e+02");
339 1.1 mrg check2("2.73874914516503004113e-02",MPFR_RNDD,"-3.59766888618655977794e+00");
340 1.1 mrg check2("9.18989072589566467669e-17",MPFR_RNDZ,"-3.69258425351464083519e+01");
341 1.1 mrg check2("7706036453608191045959753324430048151991964994788917248.0",MPFR_RNDZ,"126.3815989984199177342816255986690521240234375");
342 1.1 mrg check2("1.74827399630587801934e-23",MPFR_RNDZ,"-5.24008281254547156891e+01");
343 1.1 mrg check2("4.35302958401482307665e+22",MPFR_RNDD,"5.21277441046519527390e+01");
344 1.1 mrg check2("9.70791868689332915209e+00",MPFR_RNDD,"2.27294191194272210410e+00");
345 1.1 mrg check2("2.22183639799464011100e-01",MPFR_RNDN,"-1.50425103275253957413e+00");
346 1.1 mrg check2("2.27313466156682375540e+00",MPFR_RNDD,"8.21159787095675608448e-01");
347 1.1 mrg check2("6.58057413965851156767e-01",MPFR_RNDZ,"-4.18463096196088235600e-01");
348 1.1 mrg check2 ("7.34302197248998461006e+43",MPFR_RNDZ,"101.0049094695131799426235374994575977325439453125");
349 1.1 mrg check2("6.09969788341579732815e+00",MPFR_RNDD,"1.80823924264386204363e+00");
350 1.1 mrg
351 1.1 mrg x_near_one ();
352 1.1 mrg
353 1.1 mrg test_generic (2, 100, 40);
354 1.1 mrg
355 1.1 mrg data_check ("data/log", mpfr_log, "mpfr_log");
356 1.1 mrg bad_cases (mpfr_log, mpfr_exp, "mpfr_log", 256, -30, 30, 4, 128, 800, 50);
357 1.1 mrg
358 1.1 mrg done:
359 1.1 mrg tests_end_mpfr ();
360 1.1 mrg return 0;
361 1.1 mrg }
362