epoc32/include/tools/stlport/float.h
branchSymbian3
changeset 4 837f303aceeb
parent 3 e1b950c65cb4
equal deleted inserted replaced
3:e1b950c65cb4 4:837f303aceeb
     1 /*-
     1 /*
     2  * Copyright (c) 1989 Regents of the University of California.
     2  * Copyright (c) 1999
     3  * All rights reserved.
     3  * Boris Fomitchev
     4  *
     4  *
     5  * Redistribution and use in source and binary forms, with or without
     5  * This material is provided "as is", with absolutely no warranty expressed
     6  * modification, are permitted provided that the following conditions
     6  * or implied. Any use is at your own risk.
     7  * are met:
       
     8  * 1. Redistributions of source code must retain the above copyright
       
     9  *    notice, this list of conditions and the following disclaimer.
       
    10  * 2. Redistributions in binary form must reproduce the above copyright
       
    11  *    notice, this list of conditions and the following disclaimer in the
       
    12  *    documentation and/or other materials provided with the distribution.
       
    13  * 4. Neither the name of the University nor the names of its contributors
       
    14  *    may be used to endorse or promote products derived from this software
       
    15  *    without specific prior written permission.
       
    16  *
     7  *
    17  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
     8  * Permission to use or copy this software for any purpose is hereby granted
    18  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     9  * without fee, provided the above notices are retained on all copies.
    19  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    10  * Permission to modify the code and to distribute modified code is granted,
    20  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
    11  * provided the above notices are retained, and a notice that the code was
    21  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
    12  * modified is included with the above copyright notice.
    22  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
       
    23  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
       
    24  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
       
    25  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
       
    26  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
       
    27  * SUCH DAMAGE.
       
    28  *
    13  *
    29  *	from: @(#)float.h	7.1 (Berkeley) 5/8/90
       
    30  * $FreeBSD: src/sys/arm/include/float.h,v 1.5 2005/03/20 00:34:24 cognet Exp $
       
    31  */
    14  */
    32 
    15 
    33 #ifndef _MACHINE_FLOAT_H_
    16 #if !defined (_STLP_OUTERMOST_HEADER_ID)
    34 #define _MACHINE_FLOAT_H_ 1
    17 #  define _STLP_OUTERMOST_HEADER_ID 0x203
       
    18 #  include <stl/_prolog.h>
       
    19 #elif (_STLP_OUTERMOST_HEADER_ID == 0x203) && !defined (_STLP_DONT_POP_HEADER_ID)
       
    20 #  define _STLP_DONT_POP_HEADER_ID
       
    21 #elif (_STLP_OUTERMOST_HEADER_ID == 0x203)
       
    22 #  error This header is only reentrant once, it should be modified if it has to be included more.
       
    23 #endif
    35 
    24 
    36 #include <sys/cdefs.h>
    25 #if defined (_STLP_WCE_EVC3)
       
    26 struct _exception;
       
    27 #endif
    37 
    28 
    38 __BEGIN_DECLS
    29 #include _STLP_NATIVE_C_HEADER(float.h)
    39 extern int __flt_rounds(void);
       
    40 __END_DECLS
       
    41 
    30 
    42 #define FLT_RADIX	2		/* b */
    31 #if defined(__BORLANDC__) && defined (__cplusplus) && (__BORLANDC__ >= 0x560)
    43 #define FLT_ROUNDS	-1
    32 _STLP_BEGIN_NAMESPACE
    44 #define	FLT_EVAL_METHOD	(-1)		/* XXX */
    33 using ::_max_dble;
    45 #define	DECIMAL_DIG	17		/* max precision in decimal digits */
    34 using ::_max_flt;
       
    35 using ::_max_ldble;
       
    36 using ::_tiny_ldble;
       
    37 _STLP_END_NAMESPACE
       
    38 #endif
    46 
    39 
    47 #define FLT_MANT_DIG	24		/* p */
    40 #if defined (__BORLANDC__) && defined (__cplusplus) && !defined (_STLP_BCC_FPU_BUG)
    48 #define FLT_EPSILON	1.19209290E-07F	/* b**(1-p) */
    41 #  define _STLP_BCC_FPU_BUG
    49 #define FLT_DIG		6		/* floor((p-1)*log10(b))+(b == 10) */
    42 // Ignore FPU exceptions, set FPU precision to 53 bits for floatio_test and cmath_test
    50 #define FLT_MIN_EXP	(-125)		/* emin */
    43 static unsigned int _bcc_fpu_bug = _control87(PC_53|MCW_EM, MCW_PC|MCW_EM);
    51 #define FLT_MIN		1.17549435E-38F	/* b**(emin-1) */
    44 template <class _Fp>
    52 #define FLT_MIN_10_EXP	(-37)		/* ceil(log10(b**(emin-1))) */
    45 int __fpclass(_Fp __val)
    53 #define FLT_MAX_EXP	128		/* emax */
    46 { int __f = _fpclass(__val); _control87(PC_53|MCW_EM, MCW_PC|MCW_EM); return __f; }
    54 #define FLT_MAX		3.40282347E+38F	/* (1-b**(-p))*b**emax */
    47 #  define _fpclass __fpclass
    55 #define FLT_MAX_10_EXP	38		/* floor(log10((1-b**(-p))*b**emax)) */
    48 #endif
    56 
    49 
    57 #define DBL_MANT_DIG	53
    50 #if (_STLP_OUTERMOST_HEADER_ID == 0x203)
    58 #define DBL_EPSILON	2.2204460492503131E-16
    51 #  if ! defined (_STLP_DONT_POP_HEADER_ID)
    59 #define DBL_DIG		15
    52 #    include <stl/_epilog.h>
    60 #define DBL_MIN_EXP	(-1021)
    53 #    undef  _STLP_OUTERMOST_HEADER_ID
    61 #define DBL_MIN		2.2250738585072014E-308
    54 #  endif
    62 #define DBL_MIN_10_EXP	(-307)
    55 #  undef  _STLP_DONT_POP_HEADER_ID
    63 #define DBL_MAX_EXP	1024
    56 #endif
    64 #define DBL_MAX		1.7976931348623157E+308
       
    65 #define DBL_MAX_10_EXP	308
       
    66 
       
    67 #define LDBL_MANT_DIG	DBL_MANT_DIG
       
    68 #define LDBL_EPSILON	DBL_EPSILON
       
    69 #define LDBL_DIG	DBL_DIG
       
    70 #define LDBL_MIN_EXP	DBL_MIN_EXP
       
    71 #define LDBL_MIN	DBL_MIN
       
    72 #define LDBL_MIN_10_EXP	DBL_MIN_10_EXP
       
    73 #define LDBL_MAX_EXP	DBL_MAX_EXP
       
    74 #define LDBL_MAX	DBL_MAX
       
    75 #define LDBL_MAX_10_EXP	DBL_MAX_10_EXP
       
    76 #endif /* _MACHINE_FLOAT_H_ */