diff options
| author | Xavier ASUS <xavi92psx@gmail.com> | 2019-10-18 00:31:54 +0200 |
|---|---|---|
| committer | Xavier ASUS <xavi92psx@gmail.com> | 2019-10-18 00:31:54 +0200 |
| commit | 268a53de823a6750d6256ee1fb1e7707b4b45740 (patch) | |
| tree | 42c1799a9a82b2f7d9790ee9fe181d72a7274751 /device/include/float.h | |
| download | sdcc-gas-268a53de823a6750d6256ee1fb1e7707b4b45740.tar.gz | |
sdcc-3.9.0 fork implementing GNU assembler syntax
This fork aims to provide better support for stm8-binutils
Diffstat (limited to 'device/include/float.h')
| -rw-r--r-- | device/include/float.h | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/device/include/float.h b/device/include/float.h new file mode 100644 index 0000000..ddc028c --- /dev/null +++ b/device/include/float.h @@ -0,0 +1,104 @@ +/*------------------------------------------------------------------------- + float.h - ANSI functions forward declarations + + Copyright (C) 1998, Sandeep Dutta . sandeep.dutta@usa.net + + This library is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 2, or (at your option) any + later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this library; see the file COPYING. If not, write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + MA 02110-1301, USA. + + As a special exception, if you link this library with other files, + some of which are compiled with SDCC, to produce an executable, + this library does not by itself cause the resulting executable to + be covered by the GNU General Public License. This exception does + not however invalidate any other reasons why the executable file + might be covered by the GNU General Public License. +-------------------------------------------------------------------------*/ + +#ifndef __SDC51_FLOAT_H +#define __SDC51_FLOAT_H 1 + +#include <limits.h> + +#define FLT_RADIX 2 +#define FLT_MANT_DIG 24 +#define FLT_EPSILON 1.192092896E-07F +#define FLT_DIG 6 +#define FLT_MIN_EXP (-125) +#define FLT_MIN 1.175494351E-38F +#define FLT_MIN_10_EXP (-37) +#define FLT_MAX_EXP (+128) +#define FLT_MAX 3.402823466E+38F +#define FLT_MAX_10_EXP (+38) + +/* the following deal with IEEE single-precision numbers */ +#if defined(__SDCC_FLOAT_LIB) +#define EXCESS 126 +#define SIGNBIT ((unsigned long)0x80000000) +#define __INFINITY ((unsigned long)0x7F800000) +#define HIDDEN (unsigned long)(1ul << 23) +#define SIGN(fp) (((unsigned long)(fp) >> (8*sizeof(fp)-1)) & 1) +#define EXP(fp) (((unsigned long)(fp) >> 23) & (unsigned int) 0x00FF) +#define MANT(fp) (((fp) & (unsigned long)0x007FFFFF) | HIDDEN) +#define NORM 0xff000000 +#define PACK(s,e,m) ((s) | ((unsigned long)(e) << 23) | (m)) +#endif + +float __uchar2fs (unsigned char); +float __schar2fs (signed char); +float __uint2fs (unsigned int); +float __sint2fs (signed int); +float __ulong2fs (unsigned long); +float __slong2fs (signed long); +unsigned char __fs2uchar (float); +signed char __fs2schar (float); +unsigned int __fs2uint (float); +signed int __fs2sint (float); +unsigned long __fs2ulong (float); +signed long __fs2slong (float); + +float __fsadd (float, float); +float __fssub (float, float); +float __fsmul (float, float); +float __fsdiv (float, float); + +char __fslt (float, float); +char __fseq (float, float); +char __fsgt (float, float); + + +#if defined(__SDCC_FLOAT_LIB) && defined(__SDCC_mcs51) && !defined(__SDCC_USE_XSTACK) && !defined(_SDCC_NO_ASM_LIB_FUNCS) + +#define FLOAT_ASM_MCS51 + +/* This adds extra code for proper round-off, in + an attempt to match the results from gcc. */ +#define FLOAT_FULL_ACCURACY + +/* This adds about 66 bytes to the code size and + significantly speeds up shift operations more + than 8 bits (common when subtracting numbers + of significantly different magnitude and scaling + to fixed point) */ +#define FLOAT_SHIFT_SPEEDUP + +#define sign_a psw.1 +#define sign_b psw.5 +#define exp_a dpl +#define exp_b dph +#endif /* using mcs51 assembly */ + + +#endif /* __SDC51_FLOAT_H */ + |
