1*5bf4abd5Sderaadt /* $OpenBSD: float.h,v 1.1 2012/06/26 16:16:16 deraadt Exp $ */ 2*5bf4abd5Sderaadt 3*5bf4abd5Sderaadt /* 4*5bf4abd5Sderaadt * Copyright (c) 1989 Regents of the University of California. 5*5bf4abd5Sderaadt * All rights reserved. 6*5bf4abd5Sderaadt * 7*5bf4abd5Sderaadt * Redistribution and use in source and binary forms, with or without 8*5bf4abd5Sderaadt * modification, are permitted provided that the following conditions 9*5bf4abd5Sderaadt * are met: 10*5bf4abd5Sderaadt * 1. Redistributions of source code must retain the above copyright 11*5bf4abd5Sderaadt * notice, this list of conditions and the following disclaimer. 12*5bf4abd5Sderaadt * 2. Redistributions in binary form must reproduce the above copyright 13*5bf4abd5Sderaadt * notice, this list of conditions and the following disclaimer in the 14*5bf4abd5Sderaadt * documentation and/or other materials provided with the distribution. 15*5bf4abd5Sderaadt * 3. Neither the name of the University nor the names of its contributors 16*5bf4abd5Sderaadt * may be used to endorse or promote products derived from this software 17*5bf4abd5Sderaadt * without specific prior written permission. 18*5bf4abd5Sderaadt * 19*5bf4abd5Sderaadt * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 20*5bf4abd5Sderaadt * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 21*5bf4abd5Sderaadt * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 22*5bf4abd5Sderaadt * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 23*5bf4abd5Sderaadt * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 24*5bf4abd5Sderaadt * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 25*5bf4abd5Sderaadt * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 26*5bf4abd5Sderaadt * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 27*5bf4abd5Sderaadt * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 28*5bf4abd5Sderaadt * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 29*5bf4abd5Sderaadt * SUCH DAMAGE. 30*5bf4abd5Sderaadt */ 31*5bf4abd5Sderaadt 32*5bf4abd5Sderaadt #ifndef _FLOAT_H_ 33*5bf4abd5Sderaadt #define _FLOAT_H_ 34*5bf4abd5Sderaadt 35*5bf4abd5Sderaadt #include <sys/cdefs.h> 36*5bf4abd5Sderaadt #include <machine/_float.h> 37*5bf4abd5Sderaadt 38*5bf4abd5Sderaadt __BEGIN_DECLS 39*5bf4abd5Sderaadt int __flt_rounds(void); 40*5bf4abd5Sderaadt __END_DECLS 41*5bf4abd5Sderaadt 42*5bf4abd5Sderaadt #define FLT_RADIX __FLT_RADIX /* b */ 43*5bf4abd5Sderaadt #define FLT_ROUNDS __FLT_ROUNDS 44*5bf4abd5Sderaadt 45*5bf4abd5Sderaadt #if __ISO_C_VISIBLE >= 1999 46*5bf4abd5Sderaadt #define FLT_EVAL_METHOD __FLT_EVAL_METHOD /* long double */ 47*5bf4abd5Sderaadt #endif 48*5bf4abd5Sderaadt 49*5bf4abd5Sderaadt #define FLT_MANT_DIG __FLT_MANT_DIG /* p */ 50*5bf4abd5Sderaadt #define FLT_EPSILON __FLT_EPSILON /* b**(1-p) */ 51*5bf4abd5Sderaadt #ifndef FLT_DIG 52*5bf4abd5Sderaadt #define FLT_DIG __FLT_DIG /* floor((p-1)*log10(b))+(b == 10) */ 53*5bf4abd5Sderaadt #endif 54*5bf4abd5Sderaadt #define FLT_MIN_EXP __FLT_MIN_EXP /* emin */ 55*5bf4abd5Sderaadt #ifndef FLT_MIN 56*5bf4abd5Sderaadt #define FLT_MIN __FLT_MIN /* b**(emin-1) */ 57*5bf4abd5Sderaadt #endif 58*5bf4abd5Sderaadt #define FLT_MIN_10_EXP __FLT_MIN_10_EXP /* ceil(log10(b**(emin-1))) */ 59*5bf4abd5Sderaadt #define FLT_MAX_EXP __FLT_MAX_EXP /* emax */ 60*5bf4abd5Sderaadt #ifndef FLT_MAX 61*5bf4abd5Sderaadt #define FLT_MAX __FLT_MAX /* (1-b**(-p))*b**emax */ 62*5bf4abd5Sderaadt #endif 63*5bf4abd5Sderaadt #define FLT_MAX_10_EXP __FLT_MAX_10_EXP /* floor(log10((1-b**(-p))*b**emax)) */ 64*5bf4abd5Sderaadt 65*5bf4abd5Sderaadt #define DBL_MANT_DIG __DBL_MANT_DIG 66*5bf4abd5Sderaadt #define DBL_EPSILON __DBL_EPSILON 67*5bf4abd5Sderaadt #ifndef DBL_DIG 68*5bf4abd5Sderaadt #define DBL_DIG __DBL_DIG 69*5bf4abd5Sderaadt #endif 70*5bf4abd5Sderaadt #define DBL_MIN_EXP __DBL_MIN_EXP 71*5bf4abd5Sderaadt #ifndef DBL_MIN 72*5bf4abd5Sderaadt #define DBL_MIN __DBL_MIN 73*5bf4abd5Sderaadt #endif 74*5bf4abd5Sderaadt #define DBL_MIN_10_EXP __DBL_MIN_10_EXP 75*5bf4abd5Sderaadt #define DBL_MAX_EXP __DBL_MAX_EXP 76*5bf4abd5Sderaadt #ifndef DBL_MAX 77*5bf4abd5Sderaadt #define DBL_MAX __DBL_MAX 78*5bf4abd5Sderaadt #endif 79*5bf4abd5Sderaadt #define DBL_MAX_10_EXP __DBL_MAX_10_EXP 80*5bf4abd5Sderaadt 81*5bf4abd5Sderaadt #define LDBL_MANT_DIG __LDBL_MANT_DIG 82*5bf4abd5Sderaadt #define LDBL_EPSILON __LDBL_EPSILON 83*5bf4abd5Sderaadt #define LDBL_DIG __LDBL_DIG 84*5bf4abd5Sderaadt #define LDBL_MIN_EXP __LDBL_MIN_EXP 85*5bf4abd5Sderaadt #define LDBL_MIN __LDBL_MIN 86*5bf4abd5Sderaadt #define LDBL_MIN_10_EXP __LDBL_MIN_10_EXP 87*5bf4abd5Sderaadt #define LDBL_MAX_EXP __LDBL_MAX_EXP 88*5bf4abd5Sderaadt #define LDBL_MAX __LDBL_MAX 89*5bf4abd5Sderaadt #define LDBL_MAX_10_EXP __LDBL_MAX_10_EXP 90*5bf4abd5Sderaadt 91*5bf4abd5Sderaadt #if __ISO_C_VISIBLE >= 1999 92*5bf4abd5Sderaadt #define DECIMAL_DIG __DECIMAL_DIG 93*5bf4abd5Sderaadt #endif 94*5bf4abd5Sderaadt 95*5bf4abd5Sderaadt #endif /* _FLOAT_H_ */ 96