⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 float.h

📁 这个linux源代码是很全面的~基本完整了~使用c编译的~由于时间问题我没有亲自测试~但就算用来做参考资料也是非常好的
💻 H
📖 第 1 页 / 共 2 页
字号:
#define Dexthiddenoverflow(object) Bitfield_extract( 10,  1,object)#define Is_dexthiddenoverflow(object) Bitfield_mask( 10,  1,object)#define Deposit_dextlowp4(object,value) Bitfield_deposit(value,31,1,object)/* * Declare the basic structures for the 3 different * fixed-point precisions. *         * Single number   * +-------+-------+-------+-------+-------+-------+-------+-------+ * |s|                    integer                                  | * +-------+-------+-------+-------+-------+-------+-------+-------+ */typedef int sgl_integer;/*  * Double number. * +-------+-------+-------+-------+-------+-------+-------+-------+ * |s|                     high integer                            | * +-------+-------+-------+-------+-------+-------+-------+-------+ * * +-------+-------+-------+-------+-------+-------+-------+-------+ * |                       low integer                             | * +-------+-------+-------+-------+-------+-------+-------+-------+ */struct dint {        int  wd0;        unsigned int wd1;};struct dblwd {        unsigned int wd0;        unsigned int wd1;};/*  * Quad number. * +-------+-------+-------+-------+-------+-------+-------+-------+ * |s|                  integer part1                              | * +-------+-------+-------+-------+-------+-------+-------+-------+ * * +-------+-------+-------+-------+-------+-------+-------+-------+ * |                    integer part 2                             | * +-------+-------+-------+-------+-------+-------+-------+-------+ * * +-------+-------+-------+-------+-------+-------+-------+-------+ * |                    integer part 3                             | * +-------+-------+-------+-------+-------+-------+-------+-------+ * * +-------+-------+-------+-------+-------+-------+-------+-------+ * |                    integer part 4                             | * +-------+-------+-------+-------+-------+-------+-------+-------+ */struct quadwd {        int  wd0;        unsigned int wd1;        unsigned int wd2;        unsigned int wd3;};typedef struct quadwd quad_integer;/* useful typedefs */typedef unsigned int sgl_floating_point;typedef struct dblwd dbl_floating_point;typedef struct dint dbl_integer;typedef struct dblwd dbl_unsigned;/*  * Define the different precisions' parameters. */#define SGL_BITLENGTH 32#define SGL_EMAX 127#define SGL_EMIN (-126)#define SGL_BIAS 127#define SGL_WRAP 192#define SGL_INFINITY_EXPONENT (SGL_EMAX+SGL_BIAS+1)#define SGL_THRESHOLD 32#define SGL_EXP_LENGTH 8#define SGL_P 24#define DBL_BITLENGTH 64#define DBL_EMAX 1023#define DBL_EMIN (-1022)#define DBL_BIAS 1023#define DBL_WRAP 1536#define DBL_INFINITY_EXPONENT (DBL_EMAX+DBL_BIAS+1)#define DBL_THRESHOLD 64#define DBL_EXP_LENGTH 11#define DBL_P 53#define QUAD_BITLENGTH 128#define QUAD_EMAX 16383#define QUAD_EMIN (-16382)#define QUAD_BIAS 16383#define QUAD_WRAP 24576#define QUAD_INFINITY_EXPONENT (QUAD_EMAX+QUAD_BIAS+1)#define QUAD_P 113/* Boolean Values etc. */#define FALSE 0#define TRUE (!FALSE)#define NOT !#define XOR ^/* other constants */#undef NULL#define NULL 0#define NIL 0#define SGL 0#define DBL 1#define BADFMT 2#define QUAD 3/* Types */typedef int boolean;typedef int FORMAT;typedef int VOID;/* Declare status register equivalent to FPUs architecture. * *  0 1 2 3 4 5 6 7 8 910 1 2 3 4 5 6 7 8 920 1 2 3 4 5 6 7 8 930 1 * +-------+-------+-------+-------+-------+-------+-------+-------+ * |V|Z|O|U|I|C|  rsv  |  model    | version |RM |rsv|T|r|V|Z|O|U|I| * +-------+-------+-------+-------+-------+-------+-------+-------+ */#define Cbit(object) Bitfield_extract( 5, 1,object)#define Tbit(object) Bitfield_extract( 25, 1,object)#define Roundingmode(object) Bitfield_extract( 21, 2,object)#define Invalidtrap(object) Bitfield_extract( 27, 1,object)#define Divisionbyzerotrap(object) Bitfield_extract( 28, 1,object)#define Overflowtrap(object) Bitfield_extract( 29, 1,object)#define Underflowtrap(object) Bitfield_extract( 30, 1,object)#define Inexacttrap(object) Bitfield_extract( 31, 1,object)#define Invalidflag(object) Bitfield_extract( 0, 1,object)#define Divisionbyzeroflag(object) Bitfield_extract( 1, 1,object)#define Overflowflag(object) Bitfield_extract( 2, 1,object)#define Underflowflag(object) Bitfield_extract( 3, 1,object)#define Inexactflag(object) Bitfield_extract( 4, 1,object)#define Allflags(object) Bitfield_extract( 0, 5,object)/* Definitions relevant to the status register *//* Rounding Modes */#define ROUNDNEAREST 0#define ROUNDZERO    1#define ROUNDPLUS    2#define ROUNDMINUS   3/* Exceptions */#define NOEXCEPTION		0x0#define INVALIDEXCEPTION	0x20#define DIVISIONBYZEROEXCEPTION	0x10#define OVERFLOWEXCEPTION	0x08#define UNDERFLOWEXCEPTION	0x04#define INEXACTEXCEPTION	0x02#define UNIMPLEMENTEDEXCEPTION	0x01/* New exceptions for the 2E Opcode */#define OPC_2E_INVALIDEXCEPTION     0x30#define OPC_2E_OVERFLOWEXCEPTION    0x18#define OPC_2E_UNDERFLOWEXCEPTION   0x0c#define OPC_2E_INEXACTEXCEPTION     0x12/* Declare exception registers equivalent to FPUs architecture  * *  0 1 2 3 4 5 6 7 8 910 1 2 3 4 5 6 7 8 920 1 2 3 4 5 6 7 8 930 1 * +-------+-------+-------+-------+-------+-------+-------+-------+ * |excepttype |  r1     | r2/ext  |  operation  |parm |n| t/cond  | * +-------+-------+-------+-------+-------+-------+-------+-------+ */#define Allexception(object) (object)#define Exceptiontype(object) Bitfield_extract( 0, 6,object)#define Instructionfield(object) Bitfield_mask( 6,26,object)#define Parmfield(object) Bitfield_extract( 23, 3,object)#define Rabit(object) Bitfield_extract( 24, 1,object)#define Ibit(object) Bitfield_extract( 25, 1,object)#define Set_exceptiontype(object,value) Bitfield_deposit(value, 0, 6,object)#define Set_parmfield(object,value) Bitfield_deposit(value, 23, 3,object)#define Set_exceptiontype_and_instr_field(exception,instruction,object) \    object = exception << 26 | instruction/* Declare the condition field * *  0 1 2 3 4 5 6 7 8 910 1 2 3 4 5 6 7 8 920 1 2 3 4 5 6 7 8 930 1 * +-------+-------+-------+-------+-------+-------+-------+-------+ * |                                                     |G|L|E|U|X| * +-------+-------+-------+-------+-------+-------+-------+-------+ */#define Allexception(object) (object)#define Greaterthanbit(object) Bitfield_extract( 27, 1,object)#define Lessthanbit(object) Bitfield_extract( 28, 1,object)#define Equalbit(object) Bitfield_extract( 29, 1,object)#define Unorderedbit(object) Bitfield_extract( 30, 1,object)#define Exceptionbit(object) Bitfield_extract( 31, 1,object)/* An alias name for the status register */#define Fpustatus_register (*status)/************************************************** * Status register referencing and manipulation.  * **************************************************//* Rounding mode */#define Rounding_mode()  Roundingmode(Fpustatus_register)#define Is_rounding_mode(rmode) \    (Roundingmode(Fpustatus_register) == rmode)#define Set_rounding_mode(value) \    Bitfield_deposit(value,21,2,Fpustatus_register)/* Boolean testing of the trap enable bits */#define Is_invalidtrap_enabled() Invalidtrap(Fpustatus_register)#define Is_divisionbyzerotrap_enabled() Divisionbyzerotrap(Fpustatus_register)#define Is_overflowtrap_enabled() Overflowtrap(Fpustatus_register)#define Is_underflowtrap_enabled() Underflowtrap(Fpustatus_register)#define Is_inexacttrap_enabled() Inexacttrap(Fpustatus_register)/* Set the indicated flags in the status register */#define Set_invalidflag() Bitfield_deposit(1,0,1,Fpustatus_register)#define Set_divisionbyzeroflag() Bitfield_deposit(1,1,1,Fpustatus_register)#define Set_overflowflag() Bitfield_deposit(1,2,1,Fpustatus_register)#define Set_underflowflag() Bitfield_deposit(1,3,1,Fpustatus_register)#define Set_inexactflag() Bitfield_deposit(1,4,1,Fpustatus_register)#define Clear_all_flags() Bitfield_deposit(0,0,5,Fpustatus_register)/* Manipulate the trap and condition code bits (tbit and cbit) */#define Set_tbit() Bitfield_deposit(1,25,1,Fpustatus_register)#define Clear_tbit() Bitfield_deposit(0,25,1,Fpustatus_register)#define Is_tbit_set() Tbit(Fpustatus_register)#define Is_cbit_set() Cbit(Fpustatus_register)#define Set_status_cbit(value)  \        Bitfield_deposit(value,5,1,Fpustatus_register)/******************************* * Condition field referencing * *******************************/#define Unordered(cond) Unorderedbit(cond)#define Equal(cond) Equalbit(cond)#define Lessthan(cond) Lessthanbit(cond)#define Greaterthan(cond) Greaterthanbit(cond)#define Exception(cond) Exceptionbit(cond)/* Defines for the extension */#define Ext_isone_sign(extent) (Extsign(extent))#define Ext_isnotzero(extent) \    (Extall(extent))#define Ext_isnotzero_lower(extent) \    (Extlow31(extent))#define Ext_leftshiftby1(extent) \    Extall(extent) <<= 1#define Ext_negate(extent) \    (int )Extall(extent) = 0 - (int )Extall(extent)#define Ext_setone_low(extent) Bitfield_deposit(1,31,1,extent)#define Ext_setzero(extent) Extall(extent) = 0typedef int operation;/* error messages */#define		NONE		0#define		UNDEFFPINST	1/* Function definitions: opcode, opclass */#define FTEST	(1<<2) | 0#define FCPY	(2<<2) | 0#define FABS	(3<<2) | 0#define FSQRT   (4<<2) | 0#define FRND    (5<<2) | 0#define FCNVFF	(0<<2) | 1#define FCNVXF	(1<<2) | 1#define FCNVFX	(2<<2) | 1#define FCNVFXT	(3<<2) | 1#define FCMP    (0<<2) | 2#define FADD	(0<<2) | 3#define FSUB	(1<<2) | 3#define FMPY	(2<<2) | 3#define FDIV	(3<<2) | 3#define FREM	(4<<2) | 3

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -