blob: be6e718ac2282a863524acf8724dcec96e30286d [file] [log] [blame]
Bjorn Reese45029602001-08-21 09:23:53 +00001/*************************************************************************
2 *
3 * $Id$
4 *
5 * Copyright (C) 2001 Bjorn Reese <breese@users.sourceforge.net>
6 *
7 * Permission to use, copy, modify, and distribute this software for any
8 * purpose with or without fee is hereby granted, provided that the above
9 * copyright notice and this permission notice appear in all copies.
10 *
11 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
12 * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
13 * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND
14 * CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER.
15 *
16 ************************************************************************/
17
Bjorn Reese026d29f2002-01-19 15:40:18 +000018#ifndef TRIO_NAN_H
19#define TRIO_NAN_H
20
21#include "triodef.h"
Bjorn Reese45029602001-08-21 09:23:53 +000022
23#ifdef __cplusplus
24extern "C" {
25#endif
Daniel Veillard21458c82002-03-27 16:12:22 +000026
27enum {
28 TRIO_FP_INFINITE,
29 TRIO_FP_NAN,
30 TRIO_FP_NORMAL,
31 TRIO_FP_SUBNORMAL,
32 TRIO_FP_ZERO
33};
34
Bjorn Reese45029602001-08-21 09:23:53 +000035/*
36 * Return NaN (Not-a-Number).
37 */
Daniel Veillardb7c29c32002-09-25 22:44:43 +000038TRIO_PUBLIC double trio_nan TRIO_PROTO((void));
Bjorn Reese45029602001-08-21 09:23:53 +000039
40/*
41 * Return positive infinity.
42 */
Daniel Veillardb7c29c32002-09-25 22:44:43 +000043TRIO_PUBLIC double trio_pinf TRIO_PROTO((void));
Bjorn Reese45029602001-08-21 09:23:53 +000044
45/*
46 * Return negative infinity.
47 */
Daniel Veillardb7c29c32002-09-25 22:44:43 +000048TRIO_PUBLIC double trio_ninf TRIO_PROTO((void));
Daniel Veillardf8e3db02012-09-11 13:26:36 +080049
Bjorn Reese45029602001-08-21 09:23:53 +000050/*
Daniel Veillardb7c29c32002-09-25 22:44:43 +000051 * Return negative zero.
52 */
53TRIO_PUBLIC double trio_nzero TRIO_PROTO((TRIO_NOARGS));
54
55/*
Bjorn Reese45029602001-08-21 09:23:53 +000056 * If number is a NaN return non-zero, otherwise return zero.
57 */
Daniel Veillardb7c29c32002-09-25 22:44:43 +000058TRIO_PUBLIC int trio_isnan TRIO_PROTO((double number));
Bjorn Reese45029602001-08-21 09:23:53 +000059
60/*
61 * If number is positive infinity return 1, if number is negative
62 * infinity return -1, otherwise return 0.
63 */
Daniel Veillardb7c29c32002-09-25 22:44:43 +000064TRIO_PUBLIC int trio_isinf TRIO_PROTO((double number));
Bjorn Reese45029602001-08-21 09:23:53 +000065
Daniel Veillard21458c82002-03-27 16:12:22 +000066/*
67 * If number is finite return non-zero, otherwise return zero.
68 */
William M. Bracka71a8ef2003-08-06 04:43:55 +000069#if 0
70 /* Temporary fix - these 2 routines not used in libxml */
Daniel Veillardb7c29c32002-09-25 22:44:43 +000071TRIO_PUBLIC int trio_isfinite TRIO_PROTO((double number));
Daniel Veillard21458c82002-03-27 16:12:22 +000072
Daniel Veillardb7c29c32002-09-25 22:44:43 +000073TRIO_PUBLIC int trio_fpclassify TRIO_PROTO((double number));
William M. Bracka71a8ef2003-08-06 04:43:55 +000074#endif
75
76TRIO_PUBLIC int trio_signbit TRIO_PROTO((double number));
Daniel Veillard21458c82002-03-27 16:12:22 +000077
Daniel Veillardb7c29c32002-09-25 22:44:43 +000078TRIO_PUBLIC int trio_fpclassify_and_signbit TRIO_PROTO((double number, int *is_negative));
Daniel Veillard21458c82002-03-27 16:12:22 +000079
Bjorn Reese45029602001-08-21 09:23:53 +000080#ifdef __cplusplus
81}
82#endif
83
Bjorn Reese026d29f2002-01-19 15:40:18 +000084#endif /* TRIO_NAN_H */