This repository has been archived on 2024-12-16. You can view files and clone it, but cannot push or open issues or pull requests.
CodeBlocksPortable/dm/include/float.h

189 lines
4.1 KiB
C

/* Copyright (C) 1986-2001 by Digital Mars. $Revision: 1.1.1.1 $ */
#if __SC__ || __RCC__
#pragma once
#endif
#ifndef __FLOAT_H
#define __FLOAT_H 1
#if __cplusplus
extern "C" {
#endif
/* Define _CRTAPI1 (for compatibility with the NT SDK) */
#ifndef _CRTAPI1
#define _CRTAPI1 __cdecl
#endif
/* Define _CRTAPI2 (for compatibility with the NT SDK) */
#ifndef _CRTAPI2
#define _CRTAPI2 __cdecl
#endif
/* Define CRTIMP */
#ifndef _CRTIMP
#if defined(_WIN32) && defined(_DLL)
#define _CRTIMP __declspec(dllimport)
#else
#define _CRTIMP
#endif
#endif
#if __OS2__ && __INTSIZE == 4
#define __CLIB __stdcall
#else
#define __CLIB __cdecl
#endif
#define DBL_DIG 15
#define DBL_EPSILON 0x1p-52
#define DBL_MANT_DIG 53
#define DBL_MAX_10_EXP 308
#define DBL_MAX_EXP 1024
#define DBL_MIN_10_EXP -307
#define DBL_MIN_EXP -1021
#define DBL_MAX 0x1.FFFFFFFFFFFFFp1023
#define DBL_MIN 0x1p-1022
#define FLT_MAX 0x1.FFFFFEp+127
#define FLT_MIN 0x1p-126
#define FLT_DIG 6
#define FLT_EPSILON 0x1p-23 /* 1.19209290e-7f */
#define FLT_MANT_DIG 24
#define FLT_MAX_10_EXP 38
#define FLT_MAX_EXP 128
#define FLT_MIN_10_EXP -37
#define FLT_MIN_EXP -125
#define FLT_RADIX 2
#define FLT_EVAL_METHOD 2
extern int __CLIB __flt_rounds(void);
#define FLT_ROUNDS (__flt_rounds())
#if _WIN32
#define LDBL_DIG 18
#define LDBL_EPSILON 0x1p-63L
#define LDBL_MANT_DIG 64
#define LDBL_MAX 0x1.FFFFFFFFFFFFFFFEp+16383L
#define LDBL_MAX_10_EXP 4932
#define LDBL_MAX_EXP 16384
#define LDBL_MIN 0x1p-16382L
#define LDBL_MIN_10_EXP -4932
#define LDBL_MIN_EXP -16381
#else
#define LDBL_DIG DBL_DIG
#define LDBL_EPSILON DBL_EPSILON
#define LDBL_MANT_DIG DBL_MANT_DIG
#define LDBL_MAX DBL_MAX
#define LDBL_MAX_10_EXP DBL_MAX_10_EXP
#define LDBL_MAX_EXP DBL_MAX_EXP
#define LDBL_MIN DBL_MIN
#define LDBL_MIN_10_EXP DBL_MIN_10_EXP
#define LDBL_MIN_EXP DBL_MIN_EXP
#endif
#ifndef __STDC__
extern int __cdecl _8087;
unsigned __CLIB _status87(void);
unsigned __CLIB _clear87(void);
unsigned __CLIB _control87(unsigned, unsigned);
void __CLIB _fpreset(void);
#define _MCW_EM 0x003f
#define _EM_INVALID 0x0001
#define _EM_DENORMAL 0x0002
#define _EM_ZERODIVIDE 0x0004
#define _EM_OVERFLOW 0x0008
#define _EM_UNDERFLOW 0x0010
#define _EM_INEXACT 0x0020
#define _MCW_IC 0x1000
#define _IC_AFFINE 0x1000
#define _IC_PROJECTIVE 0x0000
#define _MCW_RC 0x0c00
#define _RC_CHOP 0x0c00
#define _RC_UP 0x0800
#define _RC_DOWN 0x0400
#define _RC_NEAR 0x0000
#define _MCW_PC 0x0300
#define _PC_24 0x0000
#define _PC_53 0x0200
#define _PC_64 0x0300
#define _CW_DEFAULT (_RC_NEAR | _IC_AFFINE | _EM_DENORMAL | _EM_UNDERFLOW | _EM_INEXACT | _PC_64)
#endif
#if _WIN32
// 53 bits => 17, 64 bits => 21, 113 bits => 36
#define DECIMAL_DIG 21
#else
#define DECIMAL_DIG 17
#endif
/* Floating point error signals and return codes */
#define _FPE_DENORMAL 0x82
#define _FPE_ZERODIVIDE 0x83
#define _FPE_UNEMULATED 0x87
#define _FPE_UNDERFLOW 0x85
#define _FPE_STACKUNDERFLOW 0x8b
#define _FPE_STACKOVERFLOW 0x8a
#define _FPE_SQRTNEG 0x88
#define _FPE_OVERFLOW 0x84
#define _FPE_INVALID 0x81
#define _FPE_INEXACT 0x86
#define _FPE_EXPLICITGEN 0x8c /* occurs on an explicit raise */
/* Non-ANSI Names */
#if !__STDC__
#define MCW_EM _MCW_EM
#define EM_INVALID _EM_INVALID
#define EM_DENORMAL _EM_DENORMAL
#define EM_ZERODIVIDE _EM_ZERODIVIDE
#define EM_OVERFLOW _EM_OVERFLOW
#define EM_UNDERFLOW _EM_UNDERFLOW
#define EM_INEXACT _EM_INEXACT
#define MCW_IC _MCW_IC
#define IC_AFFINE _IC_AFFINE
#define IC_PROJECTIVE _IC_PROJECTIVE
#define MCW_RC _MCW_RC
#define RC_CHOP _RC_CHOP
#define RC_UP _RC_UP
#define RC_DOWN _RC_DOWN
#define RC_NEAR _RC_NEAR
#define MCW_PC _MCW_PC
#define PC_24 _PC_24
#define PC_53 _PC_53
#define PC_64 _PC_64
#define CW_DEFAULT _CW_DEFAULT
#define FPE_DENORMAL _FPE_DENORMAL
#define FPE_ZERODIVIDE _FPE_ZERODIVIDE
#define FPE_UNEMULATED _FPE_UNEMULATED
#define FPE_UNDERFLOW _FPE_UNDERFLOW
#define FPE_STACKUNDERFLOW _FPE_STACKUNDERFLOW
#define FPE_STACKOVERFLOW _FPE_STACKOVERFLOW
#define FPE_SQRTNEG _FPE_SQRTNEG
#define FPE_OVERFLOW _FPE_OVERFLOW
#define FPE_INVALID _FPE_INVALID
#define FPE_INEXACT _FPE_INEXACT
#define FPE_EXPLICITGEN _FPE_EXPLICITGEN
#endif
#if __cplusplus
}
#endif
#endif