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

📄 qtc_ep.h

📁 mips架构的bootloader,99左右的版本 但源代码现在没人更新了
💻 H
字号:
/*** qtc_ep.h ***//*** * $Header: /cs/MathLibrary/RCS_Directory/RCS_IEEE_emulation/qtc_ep.h,v 2.0 90/06/20 16:45:53 law Exp $***//*** * $Log:	qtc_ep.h,v $ * Revision 2.0  90/06/20  16:45:53  law * This is the version 2.0 standard. * ***//*** ----------------- QTC IEEE Emulation Library ----------------------- ********                                                                      ********  Copyright:                                                          ********      (c) 1988                                                        ********      (c) 1989                                                        ********      (c) 1990 Quantitative Technology Corporation.                   ********               8700 SW Creekside Place Suite D                        ********               Beaverton OR 97005                                     ********               (503) 626 3081                                         ********                                                                      ******** -------------------------------------------------------------------- ***/#ifdef MIPSEB#define MSH_FIRST#endif/******************************************************************************* Change the following value to adjust the binary precision of the         **** internal extended-precision value                                        *******************************************************************************/#define NUMBER_OF_BINARY_BITS 80  /*  Maximum binary precision in bits    *//******************************************************************************* Change the following values to adjust the acceptable range of exponents  **** for an internal extended-precision value                                 *******************************************************************************/#define MAX_BINARY_EXPONENT  32767#define MIN_BINARY_EXPONENT  (-MAX_BINARY_EXPONENT)/******************************************************************************* Change the following values to alter the number of decimal digits used   **** for conversion between internal extended-precision format and ASCII      **** string representations                                                   *******************************************************************************/#define NUMBER_OF_DECIMAL_DIGITS 25#define NUMBER_OF_EXPONENT_DIGITS 5/******************************************************************************* The remainder of the values in this file should not be altered from      **** their supplied values                                                    *******************************************************************************/#define BINARY_DIGIT_LENGTH 16#define SINGLE_EXP_UPPER_LIMIT        127#define DOUBLE_EXP_UPPER_LIMIT        1023#define IEEE_EXTENDED_EXP_UPPER_LIMIT 0x3FFF#define QUAD_EXP_UPPER_LIMIT          0x3FFF#define SINGLE_EXP_LOWER_LIMIT        -126#define DOUBLE_EXP_LOWER_LIMIT        -1022#define IEEE_EXTENDED_EXP_LOWER_LIMIT -0x3FFE#define QUAD_EXP_LOWER_LIMIT          -0x3FFE#define MANTISSA_LENGTH         ((NUMBER_OF_BINARY_BITS+BINARY_DIGIT_LENGTH-1)/BINARY_DIGIT_LENGTH)#define NUMBER_OF_BINARY_DIGITS (2*MANTISSA_LENGTH+1)#define NUMBER_OF_HEX_DIGITS    (4*MANTISSA_LENGTH)#define MAX_DECIMAL_EXPONENT MAX_BINARY_EXPONENT#define MIN_DECIMAL_EXPONENT (-MAX_DECIMAL_EXPONENT)#define INFINITY_EXPONENT (MAX_BINARY_EXPONENT+2)#define BINARY_OVERFLOW_EXPONENT (MAX_BINARY_EXPONENT+1)#define SINGLE_PRECISION        0#define DOUBLE_PRECISION        1#define EXTENDED_PRECISION      2#define IEEE_EXTENDED_PRECISION 3#define QUAD_PRECISION          4#define TRUE 1#define FALSE 0#define min(x,y) (((x)<=(y))?(x):(y))#define max(x,y) (((x)>=(y))?(x):(y))#define POSITIVE 0#define NEGATIVE 1#define ROUND_TO_NEAREST        0#define ROUND_TO_MINUS_INFINITY 1#define ROUND_TO_PLUS_INFINITY  2#define ROUND_TO_ZERO           3#define SINGLE_EXP_WIDTH       8#define SINGLE_FRACTION_WIDTH 23#define DOUBLE_EXP_WIDTH      11#define DOUBLE_FRACTION_WIDTH 52#define IEEE_EXTENDED_EXP_WIDTH      15#define IEEE_EXTENDED_FRACTION_WIDTH 80#define QUAD_EXP_WIDTH      15#define QUAD_FRACTION_WIDTH 96#define SINGLE_PLUS_INFINITY           0x7F800000L#define SINGLE_MINUS_INFINITY          0xFF800000L#define SINGLE_PLUS_INFINITY_MINUS_ONE 0x7F7FFFFFL#define SINGLE_MINUS_INFINITY_PLUS_ONE 0xFF7FFFFFL#define LESS_THAN        0#define GREATER_THAN     1#define EQUAL            2#define UNORDERED        3struct ep {   unsigned int sign;   long int exponent;   unsigned long int mant[MANTISSA_LENGTH];};typedef struct ep EP;#ifdef MSH_FIRST#define MSH(x) (*(unsigned long int*)&x)#define LSH(x) (*(((unsigned long int*)&x)+1))#else#define MSH(x) (*(((unsigned long int*)&x)+1))#define LSH(x) (*(unsigned long int*)&x)#endif/******* Make sure either UNDERFLOW_AFTER_ROUNDING or UNDERFLOW_BEFORE_ROUNDING** is defined*****/#ifndef UNDERFLOW_AFTER_ROUNDING#ifndef UNDERFLOW_BEFORE_ROUNDING#define UNDERFLOW_BEFORE_ROUNDING#endif#endif#define LONG(x) (*(unsigned long int*)&x)#ifndef INTEGER_ONLY#define DOUBLE(x) (*(double*)x)#define FLOAT(x) (*(float*)&x)#endifstruct internal_decimal_format {     unsigned int sign;                            /* Sign               */     long int exponent;                            /* Exponent           */     unsigned int digit[NUMBER_OF_DECIMAL_DIGITS]; /* Significand Digits */     } ;struct internal_binary_format {     unsigned int sign;                           /* Sign                  */     long int exponent;                           /* Exponent              */     unsigned int digit[NUMBER_OF_BINARY_DIGITS]; /* Bytes of Significand  */     } ;#define DECIMAL_BUFFER_LENGTH (NUMBER_OF_DECIMAL_DIGITS + \                               NUMBER_OF_EXPONENT_DIGITS + 5)#define DECIMAL_BUFFER_END    (DECIMAL_BUFFER_LENGTH-1)#define BINARY_BUFFER_LENGTH ( NUMBER_OF_BINARY_DIGITS + 4 )#define BINARY_BUFFER_END    (BINARY_BUFFER_LENGTH-1)typedef struct decimal_buffer DECIMAL_BUFFER;typedef struct binary_buffer BINARY_BUFFER;struct decimal_buffer {     int head;     int tail;     long int exponent;     unsigned int digit[DECIMAL_BUFFER_LENGTH];     } ;struct binary_buffer {     int head;     int tail;     long int exponent;     unsigned int digit[BINARY_BUFFER_LENGTH];     } ;typedef struct internal_decimal_format INTERNAL_DECIMAL_FORMAT;typedef struct internal_binary_format INTERNAL_BINARY_FORMAT;typedef struct integer_input_params INTEGER_INPUT_PARAMS;#define FUNCTION#ifndef INTEGER_ONLYextern void extended_to_ieee_dp();extern void extended_to_ieee_ep();extern void extended_to_ieee_qp();extern void extended_to_ieee_sp();#endifextern int ascii_to_decimal();extern int ascii_to_extended();extern int binary_increment();extern int binary_width();extern int extended_compare();extern int extended_compare_less_than();extern int extended_magnitude_compare();extern int is_ascii_infinity_or_nan();extern int is_binary_infinity_or_nan();extern int is_extended_NaN();extern int is_extended_infinity();extern int is_extended_positive();extern int is_extended_sNaN();extern int is_extended_zero();extern void binary_overflow();extern void binary_right_shift();extern void binary_round();extern void binary_times_10();extern void binary_times_2();extern void binary_to_decimal();extern void binary_to_extended();extern void binary_underflow();extern void convert_to_extended_qNaN();extern void create_extended_infinity();extern void create_extended_qNaN();extern void create_extended_zero();extern void decimal_overflow();extern void decimal_right_shift();extern void decimal_round();extern void decimal_times_2();extern void decimal_to_ascii();extern void decimal_to_binary();extern void decimal_underflow();extern void extended_copy();extern void extended_left_shift();extern void extended_right_shift();extern void extended_subtract();extern void extended_to_ascii();extern void extended_to_binary();extern void extended_to_integer ();extern void ieee_dp_to_extended();extern void ieee_ep_to_extended();extern void ieee_qp_to_extended();extern void ieee_sp_to_extended ();extern void integer_to_extended ();extern void qtc_ep_add();extern void qtc_ep_div();extern void qtc_ep_mul();extern void qtc_ep_postprocess();extern void qtc_ep_sub();extern void round_to_double();extern void round_to_extended();extern void round_to_IEEE_extended();extern void round_to_integer();extern void round_to_quad();extern void round_to_single();extern void set_Rounding_mode();extern void set_Target();extern void signal_divide_by_zero();extern void signal_domain_error();extern void signal_inexact();extern void signal_invalid_operation();extern void signal_overflow();extern void signal_reserved_operand();extern void signal_underflow();extern void zero_internal_buffers();extern INTERNAL_DECIMAL_FORMAT decimal_value;extern INTERNAL_BINARY_FORMAT  binary_value;extern char output_buffer[1024];extern unsigned int hex_buffer[NUMBER_OF_HEX_DIGITS];extern DECIMAL_BUFFER dec_buffer;extern BINARY_BUFFER  bin_buffer;extern int Rounding_mode;extern int Rounding_precision;extern int Target_exp_upper_limit;extern int Target_exp_lower_limit;extern int Conversion_underflow_flag;extern int Invalid_operation_flag;extern int Reserved_operand_flag;extern int Underflow_flag;extern int Overflow_flag;extern int Inexact_flag;extern int Divide_by_zero_flag;extern int Domain_error_flag;#ifdef NEWFP#undef NEWFP#endif#include "cop1.h"/*** end of qtc_ep.h ***/

⌨️ 快捷键说明

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