Annotation of OpenXM_contrib/gmp/mpfr/tests/thyperbolic.c, Revision 1.1.1.1
1.1 ohara 1: /* Test file for hyperbolic function : mpfr_cosh, mpfr_sinh, mpfr_tanh, mpfr_acosh, mpfr_asinh, mpfr_atanh.
2:
3: Copyright 2001, 2002 Free Software Foundation, Inc.
4:
5: This file is part of the MPFR Library.
6:
7: The MPFR 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
9: by
10: the Free Software Foundation; either version 2.1 of the License, or (at youroption) any later version.
11:
12: The MPFR Library is distributed in the hope that it will be useful, but
13: WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITYor FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
14: License for more details.
15:
16: You should have received a copy of the GNU Lesser General Public License
17: along with the MPFR Library; see the file COPYING.LIB. If not, write to
18: the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
19: MA 02111-1307, USA. */
20:
21: #include <stdio.h>
22: #include "gmp.h"
23: #include "gmp-impl.h"
24: #include "mpfr.h"
25: #include "mpfr-impl.h"
26:
27:
28: int check_O _PROTO((void));
29: int check_NAN _PROTO((void));
30: int check_zero _PROTO((void));
31: int check_INF _PROTO((void));
32:
33:
34:
35: int
36: check_NAN (void)
37: {
38:
39: mpfr_t t, ch,sh,th,ach,ash,ath;
40: int tester;
41:
42: mpfr_init2(t,200);
43: mpfr_init2(ch,200);
44: mpfr_init2(sh,200);
45: mpfr_init2(th,200);
46: mpfr_init2(ach,200);
47: mpfr_init2(ash,200);
48: mpfr_init2(ath,200);
49:
50: MPFR_SET_NAN(t);
51:
52: /******cosh********/
53:
54: tester=mpfr_cosh(ch,t,GMP_RNDD);
55: if (!MPFR_IS_NAN(ch) || tester!=0 )
56: {
57: printf("cosh NAN \n");
58: mpfr_clear(t);
59: mpfr_clear(ch);
60: mpfr_clear(sh);
61: mpfr_clear(th);
62: mpfr_clear(ach);
63: mpfr_clear(ash);
64: mpfr_clear(ath);
65: return(1);
66: }
67:
68: /******sinh********/
69:
70: tester=mpfr_sinh(sh,t,GMP_RNDD);
71: if (!MPFR_IS_NAN(sh) || tester!=0 )
72: {
73: printf("sinh NAN \n");
74: mpfr_clear(t);
75: mpfr_clear(ch);
76: mpfr_clear(sh);
77: mpfr_clear(th);
78: mpfr_clear(ach);
79: mpfr_clear(ash);
80: mpfr_clear(ath);
81: return(1);
82: }
83:
84: /******tanh********/
85:
86: tester=mpfr_tanh(th,t,GMP_RNDD);
87: if (!MPFR_IS_NAN(th) || tester!=0 )
88: {
89: printf("tanh NAN \n");
90: mpfr_clear(t);
91: mpfr_clear(ch);
92: mpfr_clear(sh);
93: mpfr_clear(th);
94: mpfr_clear(ach);
95: mpfr_clear(ash);
96: mpfr_clear(ath);
97: return(1);
98: }
99:
100: /******acosh********/
101:
102: tester=mpfr_acosh(ach,t,GMP_RNDD);
103: if (!MPFR_IS_NAN(ach) || tester!=0 )
104: {
105: printf("acosh NAN \n");
106: return(1);
107: }
108:
109: /******asinh********/
110:
111: tester=mpfr_asinh(ash,t,GMP_RNDD);
112: if (!MPFR_IS_NAN(ash) || tester!=0 )
113: {
114: printf("asinh NAN \n");
115: mpfr_clear(t);
116: mpfr_clear(ch);
117: mpfr_clear(sh);
118: mpfr_clear(th);
119: mpfr_clear(ach);
120: mpfr_clear(ash);
121: mpfr_clear(ath);
122: return(1);
123: }
124:
125: /******atanh********/
126:
127: tester=mpfr_atanh(ath,t,GMP_RNDD);
128: if (!MPFR_IS_NAN(ath) || tester!=0 )
129: {
130: printf("atanh NAN \n");
131: mpfr_clear(t);
132: mpfr_clear(ch);
133: mpfr_clear(sh);
134: mpfr_clear(th);
135: mpfr_clear(ach);
136: mpfr_clear(ash);
137: mpfr_clear(ath);
138: return(1);
139: }
140:
141: mpfr_clear(t);
142: mpfr_clear(ch);
143: mpfr_clear(sh);
144: mpfr_clear(th);
145: mpfr_clear(ach);
146: mpfr_clear(ash);
147: mpfr_clear(ath);
148:
149: return(0);
150:
151: }
152: int
153: check_zero (void)
154: {
155:
156: mpfr_t t, ch,sh,th,ach,ash,ath;
157: int tester;
158:
159: mpfr_init2(t,200);
160: mpfr_init2(ch,200);
161: mpfr_init2(sh,200);
162: mpfr_init2(th,200);
163: mpfr_init2(ach,200);
164: mpfr_init2(ash,200);
165: mpfr_init2(ath,200);
166:
167:
168: mpfr_set_ui(t,0,GMP_RNDD);
169:
170: /******cosh********/
171:
172: tester=mpfr_cosh(ch,t,GMP_RNDD);
173: if (!mpfr_cmp_ui(ch,1) || !tester )
174: {
175: printf("cosh(0) \n");
176: mpfr_clear(t);
177: mpfr_clear(ch);
178: mpfr_clear(sh);
179: mpfr_clear(th);
180: mpfr_clear(ach);
181: mpfr_clear(ash);
182: mpfr_clear(ath);
183: return(1);
184: }
185:
186: /******sinh********/
187:
188: tester=mpfr_sinh(sh,t,GMP_RNDD);
189: if (!MPFR_IS_ZERO(sh) || !tester )
190: {
191: printf("sinh(0) \n");
192: mpfr_clear(t);
193: mpfr_clear(ch);
194: mpfr_clear(sh);
195: mpfr_clear(th);
196: mpfr_clear(ach);
197: mpfr_clear(ash);
198: mpfr_clear(ath);
199: return(1);
200: }
201:
202: /******tanh********/
203:
204: tester=mpfr_tanh(th,t,GMP_RNDD);
205: if (!MPFR_IS_ZERO(th) || !tester )
206: {
207: printf("tanh(0) \n");
208: mpfr_clear(t);
209: mpfr_clear(ch);
210: mpfr_clear(sh);
211: mpfr_clear(th);
212: mpfr_clear(ach);
213: mpfr_clear(ash);
214: mpfr_clear(ath);
215: return(1);
216: }
217:
218: /******acosh********/
219:
220: tester=mpfr_acosh(ach,t,GMP_RNDD);
221: if (!MPFR_IS_NAN(ach) || tester != -1 )
222: {
223: printf("acosh(0) \n");
224: mpfr_clear(t);
225: mpfr_clear(ch);
226: mpfr_clear(sh);
227: mpfr_clear(th);
228: mpfr_clear(ach);
229: mpfr_clear(ash);
230: mpfr_clear(ath);
231: return(1);
232: }
233:
234: /******asinh********/
235:
236: tester=mpfr_asinh(ash,t,GMP_RNDD);
237: if (!MPFR_IS_ZERO(ash) || !tester )
238: {
239: printf("asinh(0) \n");
240: mpfr_clear(t);
241: mpfr_clear(ch);
242: mpfr_clear(sh);
243: mpfr_clear(th);
244: mpfr_clear(ach);
245: mpfr_clear(ash);
246: mpfr_clear(ath);
247: return(1);
248: }
249:
250: /******atanh********/
251:
252: tester=mpfr_atanh(ath,t,GMP_RNDD);
253: if (!MPFR_IS_ZERO(ath) || !tester )
254: {
255: printf("atanh(0) \n");
256: mpfr_clear(t);
257: mpfr_clear(ch);
258: mpfr_clear(sh);
259: mpfr_clear(th);
260: mpfr_clear(ach);
261: mpfr_clear(ash);
262: mpfr_clear(ath);
263: return(1);
264: }
265:
266: mpfr_clear(t);
267: mpfr_clear(ch);
268: mpfr_clear(sh);
269: mpfr_clear(th);
270: mpfr_clear(ach);
271: mpfr_clear(ash);
272: mpfr_clear(ath);
273:
274: return(0);
275:
276: }
277:
278: int
279: check_INF (void)
280: {
281:
282: mpfr_t t, ch,sh,th,ach,ash,ath;
283: int tester;
284:
285:
286: mpfr_init2(t,200);
287: mpfr_init2(ch,200);
288: mpfr_init2(sh,200);
289: mpfr_init2(th,200);
290: mpfr_init2(ach,200);
291: mpfr_init2(ash,200);
292: mpfr_init2(ath,200);
293:
294: MPFR_CLEAR_NAN(t);
295: MPFR_SET_INF(t);
296:
297: if(MPFR_SIGN(t)<0)
298: MPFR_CHANGE_SIGN(t);
299:
300: /******cosh********/
301:
302: tester = mpfr_cosh(ch,t,GMP_RNDD);
303: if (!MPFR_IS_INF(ch) || MPFR_SIGN(ch) < 0 || tester!=0 )
304: {
305: printf("cosh(INF) \n");
306: mpfr_clear(t);
307: mpfr_clear(ch);
308: mpfr_clear(sh);
309: mpfr_clear(th);
310: mpfr_clear(ach);
311: mpfr_clear(ash);
312: mpfr_clear(ath);
313: return(1);
314: }
315:
316: /******sinh********/
317:
318: tester=mpfr_sinh(sh,t,GMP_RNDD);
319: if (!MPFR_IS_INF(sh) || MPFR_SIGN(sh) < 0 || tester!=0 )
320: {
321: printf("sinh(INF) \n");
322: mpfr_clear(t);
323: mpfr_clear(ch);
324: mpfr_clear(sh);
325: mpfr_clear(th);
326: mpfr_clear(ach);
327: mpfr_clear(ash);
328: mpfr_clear(ath);
329: return(1);
330: }
331:
332: /******tanh********/
333:
334: tester=mpfr_tanh(th,t,GMP_RNDD);
335: if (mpfr_cmp_ui(th,1) != 0 || tester!=0 )
336: {
337: printf("tanh(INF) \n");
338: mpfr_clear(t);
339: mpfr_clear(ch);
340: mpfr_clear(sh);
341: mpfr_clear(th);
342: mpfr_clear(ach);
343: mpfr_clear(ash);
344: mpfr_clear(ath);
345: return(1);
346: }
347:
348: /******acosh********/
349:
350: tester=mpfr_acosh(ach,t,GMP_RNDD);
351: if (!MPFR_IS_INF(ach) || MPFR_SIGN(ach) < 0 || tester!=0 )
352: {
353: printf("acosh(INF) \n");
354: mpfr_clear(t);
355: mpfr_clear(ch);
356: mpfr_clear(sh);
357: mpfr_clear(th);
358: mpfr_clear(ach);
359: mpfr_clear(ash);
360: mpfr_clear(ath);
361: return(1);
362: }
363:
364: /******asinh********/
365:
366: tester=mpfr_asinh(ash,t,GMP_RNDD);
367: if (!MPFR_IS_INF(ash) || MPFR_SIGN(ash) < 0 || tester!=0 )
368: {
369: printf("asinh(INF) \n");
370: mpfr_clear(t);
371: mpfr_clear(ch);
372: mpfr_clear(sh);
373: mpfr_clear(th);
374: mpfr_clear(ach);
375: mpfr_clear(ash);
376: mpfr_clear(ath);
377: return(1);
378: }
379:
380: /******atanh********/
381:
382: tester=mpfr_atanh(ath,t,GMP_RNDD);
383: if (!MPFR_IS_INF(ath) || tester != 0)
384: {
385: printf("atanh(INF) \n");
386: mpfr_clear(t);
387: mpfr_clear(ch);
388: mpfr_clear(sh);
389: mpfr_clear(th);
390: mpfr_clear(ach);
391: mpfr_clear(ash);
392: mpfr_clear(ath);
393: return(1);
394: }
395:
396: MPFR_CHANGE_SIGN(t);
397:
398: /******cosh********/
399:
400: tester=mpfr_cosh(ch,t,GMP_RNDD);
401: if (!MPFR_IS_INF(ch) || MPFR_SIGN(ch) < 0 || tester!=0 )
402: {
403: printf("cosh(-INF) \n");
404: mpfr_clear(t);
405: mpfr_clear(ch);
406: mpfr_clear(sh);
407: mpfr_clear(th);
408: mpfr_clear(ach);
409: mpfr_clear(ash);
410: mpfr_clear(ath);
411: return(1);
412: }
413:
414: /******sinh********/
415:
416: tester=mpfr_sinh(sh,t,GMP_RNDD);
417: if (!MPFR_IS_INF(sh) || MPFR_SIGN(sh) > 0 || tester!=0 )
418: {
419: printf("sinh(-INF) \n");
420: mpfr_clear(t);
421: mpfr_clear(ch);
422: mpfr_clear(sh);
423: mpfr_clear(th);
424: mpfr_clear(ach);
425: mpfr_clear(ash);
426: mpfr_clear(ath);
427: return(1);
428: }
429:
430: /******tanh********/
431:
432: tester=mpfr_tanh(th,t,GMP_RNDD);
433: if (!mpfr_cmp_ui(th,-1) || tester!=0 )
434: {
435: printf("tanh(-INF) \n");
436: mpfr_clear(t);
437: mpfr_clear(ch);
438: mpfr_clear(sh);
439: mpfr_clear(th);
440: mpfr_clear(ach);
441: mpfr_clear(ash);
442: mpfr_clear(ath);
443: return(1);
444: }
445:
446: /******acosh********/
447:
448: tester=mpfr_acosh(ach,t,GMP_RNDD);
449: if (!MPFR_IS_INF(ach) || MPFR_SIGN(ach) < 0 || tester!=0 )
450: {
451: printf("acosh(-INF) \n");
452: mpfr_clear(t);
453: mpfr_clear(ch);
454: mpfr_clear(sh);
455: mpfr_clear(th);
456: mpfr_clear(ach);
457: mpfr_clear(ash);
458: mpfr_clear(ath);
459: return(1);
460: }
461:
462: /******asinh********/
463:
464: tester=mpfr_asinh(ash,t,GMP_RNDD);
465: if (!MPFR_IS_INF(ash) || MPFR_SIGN(ash) > 0 || tester!=0 )
466: {
467: printf("asinh(-INF) \n");
468: mpfr_clear(t);
469: mpfr_clear(ch);
470: mpfr_clear(sh);
471: mpfr_clear(th);
472: mpfr_clear(ach);
473: mpfr_clear(ash);
474: mpfr_clear(ath);
475: return(1);
476: }
477:
478: /******atanh********/
479:
480: tester=mpfr_atanh(ath,t,GMP_RNDD);
481: if (!MPFR_IS_INF(ath) || MPFR_SIGN(ath) > 0 || tester != 0 )
482: {
483: printf("atanh(-INF) \n");
484: mpfr_clear(t);
485: mpfr_clear(ch);
486: mpfr_clear(sh);
487: mpfr_clear(th);
488: mpfr_clear(ach);
489: mpfr_clear(ash);
490: mpfr_clear(ath);
491: return(1);
492: }
493:
494: mpfr_clear(t);
495: mpfr_clear(ch);
496: mpfr_clear(sh);
497: mpfr_clear(th);
498: mpfr_clear(ach);
499: mpfr_clear(ash);
500: mpfr_clear(ath);
501:
502:
503: return(0);
504:
505: }
506:
507: int
508: check_O (void)
509: {
510:
511: mpfr_t t, ch,sh,th,ach,ash,ath;
512:
513: mpfr_init2(t,20);
514: mpfr_init2(ch,40);
515: mpfr_init2(sh,40);
516: mpfr_init2(th,40);
517: mpfr_init2(ach,40);
518: mpfr_init2(ash,40);
519: mpfr_init2(ath,40);
520:
521: mpfr_set_ui(t,2,GMP_RNDD);
522:
523: /******acosh o cosh********/
524:
525: mpfr_cosh(ch,t,GMP_RNDN);
526: mpfr_acosh(ach,ch,GMP_RNDN);
527: if(mpfr_cmp_ui(ach,2)!=0)
528: {
529: printf("cosh o acosh \n");
530: mpfr_clear(t);
531: mpfr_clear(ch);
532: mpfr_clear(sh);
533: mpfr_clear(th);
534: mpfr_clear(ach);
535: mpfr_clear(ash);
536: mpfr_clear(ath);
537: return(1);
538: }
539:
540: /******asinh o sinh********/
541:
542: mpfr_sinh(sh,t,GMP_RNDN);
543: mpfr_asinh(ash,sh,GMP_RNDN);
544: if(mpfr_cmp_ui(ash,2)!=0)
545: {
546: printf("sinh o asinh \n");
547: mpfr_clear(t);
548: mpfr_clear(ch);
549: mpfr_clear(sh);
550: mpfr_clear(th);
551: mpfr_clear(ach);
552: mpfr_clear(ash);
553: mpfr_clear(ath);
554: return(1);
555: }
556:
557:
558: /******atanh o tanh********/
559:
560: mpfr_tanh(th,t,GMP_RNDN);
561: mpfr_atanh(ath,th,GMP_RNDU);
562:
563: /*
564: mpfr_out_str(stdout, 2,40,th,GMP_RNDN);
565: putchar('\n');
566:
567: mpfr_out_str(stdout, 2,40,ath,GMP_RNDU);
568: putchar('\n');
569: */
570:
571: if(mpfr_cmp_ui(ath,2)!=0)
572: {
573: printf("tanh o atanh \n");
574: mpfr_clear(t);
575: mpfr_clear(ch);
576: mpfr_clear(sh);
577: mpfr_clear(th);
578: mpfr_clear(ach);
579: mpfr_clear(ash);
580: mpfr_clear(ath);
581: return(1);
582: }
583:
584: mpfr_clear(t);
585: mpfr_clear(ch);
586: mpfr_clear(sh);
587: mpfr_clear(th);
588: mpfr_clear(ach);
589: mpfr_clear(ash);
590: mpfr_clear(ath);
591:
592: return(0);
593:
594: }
595:
596: int
597: main(void)
598: {
599:
600: if (check_INF())printf("Error in evaluation of INF\n");
601: if (check_NAN())printf("Error in evaluation of NAN\n");
602: /*if (check_O())printf("Error in evaluation of composition hyperbolic function\n");*/
603:
604: return(0);
605:
606:
607: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>