Annotation of previous_trunk/src/softfloat/softfloat.h, revision 1.1.1.1

1.1       root        1: 
                      2: /*============================================================================
                      3: 
                      4: This C header file is part of the SoftFloat IEC/IEEE Floating-point Arithmetic
                      5: Package, Release 2b.
                      6: 
                      7: Written by John R. Hauser.  This work was made possible in part by the
                      8: International Computer Science Institute, located at Suite 600, 1947 Center
                      9: Street, Berkeley, California 94704.  Funding was partially provided by the
                     10: National Science Foundation under grant MIP-9311980.  The original version
                     11: of this code was written as part of a project to build a fixed-point vector
                     12: processor in collaboration with the University of California at Berkeley,
                     13: overseen by Profs. Nelson Morgan and John Wawrzynek.  More information
                     14: is available through the Web page `http://www.cs.berkeley.edu/~jhauser/
                     15: arithmetic/SoftFloat.html'.
                     16: 
                     17: THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE.  Although reasonable effort has
                     18: been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT TIMES
                     19: RESULT IN INCORRECT BEHAVIOR.  USE OF THIS SOFTWARE IS RESTRICTED TO PERSONS
                     20: AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ALL LOSSES,
                     21: COSTS, OR OTHER PROBLEMS THEY INCUR DUE TO THE SOFTWARE, AND WHO FURTHERMORE
                     22: EFFECTIVELY INDEMNIFY JOHN HAUSER AND THE INTERNATIONAL COMPUTER SCIENCE
                     23: INSTITUTE (possibly via similar legal warning) AGAINST ALL LOSSES, COSTS, OR
                     24: OTHER PROBLEMS INCURRED BY THEIR CUSTOMERS AND CLIENTS DUE TO THE SOFTWARE.
                     25: 
                     26: Derivative works are acceptable, even for commercial purposes, so long as
                     27: (1) the source code for the derivative work includes prominent notice that
                     28: the work is derivative, and (2) the source code includes prominent notice with
                     29: these four paragraphs for those parts of this code that are retained.
                     30: 
                     31: =============================================================================*/
                     32: 
                     33: #ifndef SOFTFLOAT_H
                     34: #define SOFTFLOAT_H
                     35: /*----------------------------------------------------------------------------
                     36: | The macro `FLOATX80' must be defined to enable the extended double-precision
                     37: | floating-point format `floatx80'.  If this macro is not defined, the
                     38: | `floatx80' type will not be defined, and none of the functions that either
                     39: | input or output the `floatx80' type will be defined.  The same applies to
                     40: | the `FLOAT128' macro and the quadruple-precision format `float128'.
                     41: *----------------------------------------------------------------------------*/
                     42: #define FLOATX80
                     43: #define FLOAT128
                     44: 
                     45: /*----------------------------------------------------------------------------
                     46: | Software IEC/IEEE floating-point types.
                     47: *----------------------------------------------------------------------------*/
                     48: 
                     49: #include "mamesf.h"
                     50: 
                     51: typedef bits32 float32;
                     52: typedef bits64 float64;
                     53: #ifdef FLOATX80
                     54: typedef struct {
                     55:        bits16 high;
                     56:        bits64 low;
                     57: } floatx80;
                     58: #endif
                     59: #ifdef FLOAT128
                     60: typedef struct {
                     61:        bits64 high, low;
                     62: } float128;
                     63: #endif
                     64: 
                     65: /*----------------------------------------------------------------------------
                     66: | Primitive arithmetic functions, including multi-word arithmetic, and
                     67: | division and square root approximations.  (Can be specialized to target if
                     68: | desired.)
                     69: *----------------------------------------------------------------------------*/
                     70: #include "softfloat-macros.h"
                     71: 
                     72: /*----------------------------------------------------------------------------
                     73: | Software IEC/IEEE floating-point underflow tininess-detection mode.
                     74: *----------------------------------------------------------------------------*/
                     75: #if 0
                     76: extern int8 float_detect_tininess;
                     77: #endif
                     78: enum {
                     79:        float_tininess_after_rounding  = 0,
                     80:        float_tininess_before_rounding = 1
                     81: };
                     82: 
                     83: /*----------------------------------------------------------------------------
                     84: | Software IEC/IEEE floating-point rounding mode.
                     85: *----------------------------------------------------------------------------*/
                     86: #if 0
                     87: extern int8 float_rounding_mode;
                     88: #ifdef SOFTFLOAT_I860
                     89: extern int8 float_rounding_mode2;
                     90: #endif
                     91: #endif
                     92: enum {
                     93:        float_round_nearest_even = 0,
                     94:        float_round_to_zero      = 1,
                     95:        float_round_down         = 2,
                     96:        float_round_up           = 3
                     97: };
                     98: 
                     99: /*----------------------------------------------------------------------------
                    100: | Software IEC/IEEE floating-point exception flags.
                    101: *----------------------------------------------------------------------------*/
                    102: #if 0
                    103: extern int8 float_exception_flags;
                    104: #ifdef SOFTFLOAT_I860
                    105: extern int8 float_exception_flags2;
                    106: #endif
                    107: #endif
                    108: enum {
                    109:        float_flag_invalid = 0x01, float_flag_denormal = 0x02, float_flag_divbyzero = 0x04, float_flag_overflow = 0x08,
                    110:     float_flag_underflow = 0x10, float_flag_inexact = 0x20, float_flag_signaling = 0x40, float_flag_decimal = 0x80
                    111: };
                    112: 
                    113: /*----------------------------------------------------------------------------
                    114:  | Variables for storing sign, exponent and significand of internal extended 
                    115:  | double-precision floating-point value for external use.
                    116:  *----------------------------------------------------------------------------*/
                    117: #if 0
                    118: extern flag floatx80_internal_sign;
                    119: extern int32 floatx80_internal_exp;
                    120: extern bits64 floatx80_internal_sig0;
                    121: extern bits64 floatx80_internal_sig1;
                    122: extern int8 floatx80_internal_precision;
                    123: extern int8 floatx80_internal_mode;
                    124: #endif
                    125: 
                    126: 
                    127: typedef struct {
                    128:     int8 float_detect_tininess;
                    129:     int8 float_exception_flags;
                    130:     int8 float_rounding_mode;
                    131: #ifdef FLOATX80
                    132:     int8 floatx80_rounding_precision;
                    133:     flag floatx80_internal_sign;
                    134:     int32 floatx80_internal_exp;
                    135:     bits64 floatx80_internal_sig0;
                    136:     bits64 floatx80_internal_sig1;
                    137:     int8 floatx80_internal_precision;
                    138:     int8 floatx80_internal_mode;
                    139: #endif
                    140: } float_ctrl;
                    141: 
                    142: void float_init( float_ctrl* c );
                    143: int8 get_float_rounding_mode( float_ctrl* c );
                    144: void set_float_rounding_mode( int8 mode, float_ctrl* c );
                    145: int8 get_float_rounding_precision( float_ctrl* c );
                    146: void set_float_rounding_precision( int8 precision, float_ctrl* c );
                    147: int8 get_float_exception_flags( float_ctrl* c );
                    148: void set_float_exception_flags( int8 flags, float_ctrl* c );
                    149: int8 get_float_detect_tininess( float_ctrl* c );
                    150: void set_float_detect_tininess( int8 mode, float_ctrl* c );
                    151: 
                    152: /*----------------------------------------------------------------------------
                    153:  | Function for getting sign, exponent and significand of extended
                    154:  | double-precision floating-point intermediate result for external use.
                    155:  *----------------------------------------------------------------------------*/
                    156: floatx80 getFloatInternalOverflow( float_ctrl* c );
                    157: floatx80 getFloatInternalUnderflow( float_ctrl* c );
                    158: floatx80 getFloatInternalRoundedAll( float_ctrl* c );
                    159: floatx80 getFloatInternalRoundedSome( float_ctrl* c );
                    160: floatx80 getFloatInternalUnrounded( float_ctrl* c );
                    161: floatx80 getFloatInternalFloatx80( float_ctrl* c );
                    162: bits64 getFloatInternalGRS( float_ctrl* c );
                    163: 
                    164: /*----------------------------------------------------------------------------
                    165: | Routine to raise any or all of the software IEC/IEEE floating-point
                    166: | exception flags.
                    167: *----------------------------------------------------------------------------*/
                    168: void float_raise( int8, float_ctrl* c );
                    169: #if 0
                    170: #ifdef SOFTFLOAT_I860
                    171: void float_raise2( int8 );
                    172: #endif
                    173: #endif
                    174: 
                    175: /*----------------------------------------------------------------------------
                    176:  | The pattern for a default generated single-precision NaN.
                    177:  *----------------------------------------------------------------------------*/
                    178: #define float32_default_nan 0x7FFFFFFF
                    179: 
                    180: /*----------------------------------------------------------------------------
                    181:  | The pattern for a default generated double-precision NaN.
                    182:  *----------------------------------------------------------------------------*/
                    183: #define float64_default_nan LIT64( 0x7FFFFFFFFFFFFFFF )
                    184: 
                    185: #ifdef FLOATX80
                    186: /*----------------------------------------------------------------------------
                    187:  | The pattern for a default generated extended double-precision NaN.  The
                    188:  | `high' and `low' values hold the most- and least-significant bits,
                    189:  | respectively.
                    190:  *----------------------------------------------------------------------------*/
                    191: #define floatx80_default_nan_high 0x7FFF
                    192: #define floatx80_default_nan_low  LIT64( 0xFFFFFFFFFFFFFFFF )
                    193: #endif
                    194: #ifdef FLOAT128
                    195: /*----------------------------------------------------------------------------
                    196:  | The pattern for a default generated quadruple-precision NaN.  The `high' and
                    197:  | `low' values hold the most- and least-significant bits, respectively.
                    198:  *----------------------------------------------------------------------------*/
                    199: #define float128_default_nan_high LIT64( 0x7FFFFFFFFFFFFFFF )
                    200: #define float128_default_nan_low  LIT64( 0xFFFFFFFFFFFFFFFF )
                    201: #endif
                    202: #ifdef FLOATX80
                    203: /*----------------------------------------------------------------------------
                    204:  | The pattern for a default generated extended double-precision infinity.
                    205:  *----------------------------------------------------------------------------*/
                    206: #define floatx80_default_infinity_low  LIT64( 0x0000000000000000 )
                    207: #endif
                    208: 
                    209: /*----------------------------------------------------------------------------
                    210: | Software IEC/IEEE integer-to-floating-point conversion routines.
                    211: *----------------------------------------------------------------------------*/
                    212: float32 int32_to_float32( int32, float_ctrl* );
                    213: float64 int32_to_float64( int32 );
                    214: #ifdef FLOATX80
                    215: floatx80 int32_to_floatx80( int32 );
                    216: #endif
                    217: #ifdef FLOAT128
                    218: float128 int32_to_float128( int32 );
                    219: #endif
                    220: float32 int64_to_float32( int64, float_ctrl* );
                    221: float64 int64_to_float64( int64, float_ctrl* );
                    222: #ifdef FLOATX80
                    223: floatx80 int64_to_floatx80( int64 );
                    224: #endif
                    225: #ifdef FLOAT128
                    226: float128 int64_to_float128( int64 );
                    227: #endif
                    228: 
                    229: /*----------------------------------------------------------------------------
                    230: | Software IEC/IEEE single-precision conversion routines.
                    231: *----------------------------------------------------------------------------*/
                    232: int32 float32_to_int32( float32, float_ctrl* );
                    233: int32 float32_to_int32_round_to_zero( float32, float_ctrl* );
                    234: int64 float32_to_int64( float32, float_ctrl* );
                    235: int64 float32_to_int64_round_to_zero( float32, float_ctrl* );
                    236: float64 float32_to_float64( float32, float_ctrl* );
                    237: #ifdef FLOATX80
                    238: floatx80 float32_to_floatx80( float32, float_ctrl* );
                    239: floatx80 float32_to_floatx80_allowunnormal( float32 );
                    240: #endif
                    241: #ifdef FLOAT128
                    242: float128 float32_to_float128( float32, float_ctrl* );
                    243: #endif
                    244: 
                    245: /*----------------------------------------------------------------------------
                    246: | Software IEC/IEEE single-precision operations.
                    247: *----------------------------------------------------------------------------*/
                    248: float32 float32_round_to_int( float32, float_ctrl* );
                    249: float32 float32_add( float32, float32, float_ctrl* );
                    250: float32 float32_sub( float32, float32, float_ctrl* );
                    251: float32 float32_mul( float32, float32, float_ctrl* );
                    252: float32 float32_div( float32, float32, float_ctrl* );
                    253: float32 float32_rem( float32, float32, float_ctrl* );
                    254: float32 float32_sqrt( float32, float_ctrl* );
                    255: flag float32_eq( float32, float32, float_ctrl* );
                    256: flag float32_le( float32, float32, float_ctrl* );
                    257: flag float32_lt( float32, float32, float_ctrl* );
                    258: #ifdef SOFTFLOAT_I860
                    259: flag float32_gt( float32, float32, float_ctrl* );
                    260: #endif
                    261: flag float32_eq_signaling( float32, float32, float_ctrl* );
                    262: flag float32_le_quiet( float32, float32, float_ctrl* );
                    263: flag float32_lt_quiet( float32, float32, float_ctrl* );
                    264: flag float32_is_signaling_nan( float32 );
                    265: 
                    266: /*----------------------------------------------------------------------------
                    267: | Software IEC/IEEE double-precision conversion routines.
                    268: *----------------------------------------------------------------------------*/
                    269: int32 float64_to_int32( float64, float_ctrl* );
                    270: int32 float64_to_int32_round_to_zero( float64, float_ctrl* );
                    271: int64 float64_to_int64( float64, float_ctrl* );
                    272: int64 float64_to_int64_round_to_zero( float64, float_ctrl* );
                    273: float32 float64_to_float32( float64, float_ctrl* );
                    274: #ifdef FLOATX80
                    275: floatx80 float64_to_floatx80( float64, float_ctrl* );
                    276: floatx80 float64_to_floatx80_allowunnormal( float64 );
                    277: #endif
                    278: #ifdef FLOAT128
                    279: float128 float64_to_float128( float64, float_ctrl* );
                    280: #endif
                    281: 
                    282: /*----------------------------------------------------------------------------
                    283: | Software IEC/IEEE double-precision operations.
                    284: *----------------------------------------------------------------------------*/
                    285: float64 float64_round_to_int( float64, float_ctrl* );
                    286: float64 float64_add( float64, float64, float_ctrl* );
                    287: float64 float64_sub( float64, float64, float_ctrl* );
                    288: float64 float64_mul( float64, float64, float_ctrl* );
                    289: float64 float64_div( float64, float64, float_ctrl* );
                    290: float64 float64_rem( float64, float64, float_ctrl* );
                    291: float64 float64_sqrt( float64, float_ctrl* );
                    292: flag float64_eq( float64, float64, float_ctrl* );
                    293: flag float64_le( float64, float64, float_ctrl* );
                    294: flag float64_lt( float64, float64, float_ctrl* );
                    295: #ifdef SOFTFLOAT_I860
                    296: flag float64_gt( float64, float64, float_ctrl* );
                    297: #endif
                    298: flag float64_eq_signaling( float64, float64, float_ctrl* );
                    299: flag float64_le_quiet( float64, float64, float_ctrl* );
                    300: flag float64_lt_quiet( float64, float64, float_ctrl* );
                    301: flag float64_is_signaling_nan( float64 );
                    302: 
                    303: #ifdef FLOATX80
                    304: 
                    305: /*----------------------------------------------------------------------------
                    306: | Software IEC/IEEE extended double-precision conversion routines.
                    307: *----------------------------------------------------------------------------*/
                    308: int32 floatx80_to_int32( floatx80, float_ctrl* );
                    309: #ifdef SOFTFLOAT_68K
                    310: int16 floatx80_to_int16( floatx80, float_ctrl* );
                    311: int8 floatx80_to_int8( floatx80, float_ctrl* );
                    312: #endif
                    313: int32 floatx80_to_int32_round_to_zero( floatx80, float_ctrl* );
                    314: int64 floatx80_to_int64( floatx80, float_ctrl* );
                    315: int64 floatx80_to_int64_round_to_zero( floatx80, float_ctrl* );
                    316: float32 floatx80_to_float32( floatx80, float_ctrl* );
                    317: float64 floatx80_to_float64( floatx80, float_ctrl* );
                    318: #ifdef SOFTFLOAT_68K
                    319: floatx80 floatx80_to_floatx80( floatx80, float_ctrl* );
                    320: floatx80 floatdecimal_to_floatx80( floatx80, float_ctrl* );
                    321: floatx80 floatx80_to_floatdecimal( floatx80, int32*, float_ctrl* );
                    322: #endif
                    323: #ifdef FLOAT128
                    324: float128 floatx80_to_float128( floatx80, float_ctrl* );
                    325: #endif
                    326: bits64 extractFloatx80Frac( floatx80 a );
                    327: int32 extractFloatx80Exp( floatx80 a );
                    328: flag extractFloatx80Sign( floatx80 a );
                    329: 
                    330: /*----------------------------------------------------------------------------
                    331: | Software IEC/IEEE extended double-precision rounding precision.  Valid
                    332: | values are 32, 64, and 80.
                    333: *----------------------------------------------------------------------------*/
                    334: #if 0
                    335: extern int8 floatx80_rounding_precision;
                    336: #endif
                    337: 
                    338: /*----------------------------------------------------------------------------
                    339: | Software IEC/IEEE extended double-precision operations.
                    340: *----------------------------------------------------------------------------*/
                    341: floatx80 floatx80_round_to_int( floatx80, float_ctrl* );
                    342: #ifdef SOFTFLOAT_68K
                    343: floatx80 floatx80_round_to_int_toward_zero( floatx80, float_ctrl* );
                    344: floatx80 floatx80_round_to_float32( floatx80, float_ctrl* );
                    345: floatx80 floatx80_round_to_float64( floatx80, float_ctrl* );
                    346: floatx80 floatx80_round32( floatx80, float_ctrl* );
                    347: floatx80 floatx80_round64( floatx80, float_ctrl* );
                    348: floatx80 floatx80_normalize( floatx80 );
                    349: floatx80 floatx80_denormalize( floatx80, flag );
                    350: #endif
                    351: floatx80 floatx80_add( floatx80, floatx80, float_ctrl* );
                    352: floatx80 floatx80_sub( floatx80, floatx80, float_ctrl* );
                    353: floatx80 floatx80_mul( floatx80, floatx80, float_ctrl* );
                    354: floatx80 floatx80_div( floatx80, floatx80, float_ctrl* );
                    355: #ifndef SOFTFLOAT_68K
                    356: floatx80 floatx80_rem( floatx80, floatx80, float_ctrl* );
                    357: #endif
                    358: floatx80 floatx80_sqrt( floatx80, float_ctrl* );
                    359: 
                    360: flag floatx80_eq( floatx80, floatx80, float_ctrl* );
                    361: flag floatx80_le( floatx80, floatx80, float_ctrl* );
                    362: flag floatx80_lt( floatx80, floatx80, float_ctrl* );
                    363: flag floatx80_eq_signaling( floatx80, floatx80, float_ctrl* );
                    364: flag floatx80_le_quiet( floatx80, floatx80, float_ctrl* );
                    365: flag floatx80_lt_quiet( floatx80, floatx80, float_ctrl* );
                    366: 
                    367: flag floatx80_is_signaling_nan( floatx80 );
                    368: flag floatx80_is_nan( floatx80 );
                    369: #ifdef SOFTFLOAT_68K
                    370: flag floatx80_is_zero( floatx80 );
                    371: flag floatx80_is_infinity( floatx80 );
                    372: flag floatx80_is_negative( floatx80 );
                    373: flag floatx80_is_denormal( floatx80 );
                    374: flag floatx80_is_unnormal( floatx80 );
                    375: flag floatx80_is_normal( floatx80 );
                    376: 
                    377: // functions are in softfloat.c
                    378: floatx80 floatx80_move( floatx80 a, float_ctrl* c );
                    379: floatx80 floatx80_abs( floatx80 a, float_ctrl* c );
                    380: floatx80 floatx80_neg( floatx80 a, float_ctrl* c );
                    381: floatx80 floatx80_getexp( floatx80 a, float_ctrl* c );
                    382: floatx80 floatx80_getman( floatx80 a, float_ctrl* c );
                    383: floatx80 floatx80_scale(floatx80 a, floatx80 b, float_ctrl* c );
                    384: floatx80 floatx80_rem( floatx80 a, floatx80 b, bits64 *q, flag *s, float_ctrl* c );
                    385: floatx80 floatx80_mod( floatx80 a, floatx80 b, bits64 *q, flag *s, float_ctrl* c );
                    386: floatx80 floatx80_sglmul( floatx80 a, floatx80 b, float_ctrl* c );
                    387: floatx80 floatx80_sgldiv( floatx80 a, floatx80 b, float_ctrl* c );
                    388: floatx80 floatx80_cmp( floatx80 a, floatx80 b, float_ctrl* c );
                    389: floatx80 floatx80_tst( floatx80 a, float_ctrl* c );
                    390: 
                    391: // functions are in softfloat_fpsp.c
                    392: floatx80 floatx80_acos(floatx80 a, float_ctrl* c);
                    393: floatx80 floatx80_asin(floatx80 a, float_ctrl* c);
                    394: floatx80 floatx80_atan(floatx80 a, float_ctrl* c);
                    395: floatx80 floatx80_atanh(floatx80 a, float_ctrl* c);
                    396: floatx80 floatx80_cos(floatx80 a, float_ctrl* c);
                    397: floatx80 floatx80_cosh(floatx80 a, float_ctrl* c);
                    398: floatx80 floatx80_etox(floatx80 a, float_ctrl* c);
                    399: floatx80 floatx80_etoxm1(floatx80 a, float_ctrl* c);
                    400: floatx80 floatx80_log10(floatx80 a, float_ctrl* c);
                    401: floatx80 floatx80_log2(floatx80 a, float_ctrl* c);
                    402: floatx80 floatx80_logn(floatx80 a, float_ctrl* c);
                    403: floatx80 floatx80_lognp1(floatx80 a, float_ctrl* c);
                    404: floatx80 floatx80_sin(floatx80 a, float_ctrl* c);
                    405: floatx80 floatx80_sinh(floatx80 a, float_ctrl* c);
                    406: floatx80 floatx80_tan(floatx80 a, float_ctrl* c);
                    407: floatx80 floatx80_tanh(floatx80 a, float_ctrl* c);
                    408: floatx80 floatx80_tentox(floatx80 a, float_ctrl* c);
                    409: floatx80 floatx80_twotox(floatx80 a, float_ctrl* c);
                    410: #endif
                    411: 
                    412: // functions originally internal to softfloat.c
                    413: void normalizeFloatx80Subnormal( bits64 aSig, int32 *zExpPtr, bits64 *zSigPtr );
                    414: floatx80 packFloatx80( flag zSign, int32 zExp, bits64 zSig );
                    415: floatx80 roundAndPackFloatx80( int8 roundingPrecision, flag zSign, int32 zExp, bits64 zSig0, bits64 zSig1, float_ctrl* c );
                    416: 
                    417: // functions are in softfloat-specialize.h
                    418: floatx80 propagateFloatx80NaNOneArg( floatx80 a, float_ctrl* c );
                    419: floatx80 propagateFloatx80NaN( floatx80 a, floatx80 b, float_ctrl* c );
                    420: 
                    421: #endif
                    422: 
                    423: #ifdef FLOAT128
                    424: 
                    425: /*----------------------------------------------------------------------------
                    426: | Software IEC/IEEE quadruple-precision conversion routines.
                    427: *----------------------------------------------------------------------------*/
                    428: int32 float128_to_int32( float128, float_ctrl* );
                    429: int32 float128_to_int32_round_to_zero( float128, float_ctrl* );
                    430: int64 float128_to_int64( float128, float_ctrl* );
                    431: int64 float128_to_int64_round_to_zero( float128, float_ctrl* );
                    432: float32 float128_to_float32( float128, float_ctrl* );
                    433: float64 float128_to_float64( float128, float_ctrl* );
                    434: #ifdef FLOATX80
                    435: floatx80 float128_to_floatx80( float128, float_ctrl* );
                    436: #endif
                    437: 
                    438: /*----------------------------------------------------------------------------
                    439: | Software IEC/IEEE quadruple-precision operations.
                    440: *----------------------------------------------------------------------------*/
                    441: float128 float128_round_to_int( float128, float_ctrl* );
                    442: float128 float128_add( float128, float128, float_ctrl* );
                    443: float128 float128_sub( float128, float128, float_ctrl* );
                    444: float128 float128_mul( float128, float128, float_ctrl* );
                    445: float128 float128_div( float128, float128, float_ctrl* );
                    446: float128 float128_rem( float128, float128, float_ctrl* );
                    447: float128 float128_sqrt( float128, float_ctrl* );
                    448: flag float128_eq( float128, float128, float_ctrl* );
                    449: flag float128_le( float128, float128, float_ctrl* );
                    450: flag float128_lt( float128, float128, float_ctrl* );
                    451: flag float128_eq_signaling( float128, float128, float_ctrl* );
                    452: flag float128_le_quiet( float128, float128, float_ctrl* );
                    453: flag float128_lt_quiet( float128, float128, float_ctrl* );
                    454: flag float128_is_signaling_nan( float128 );
                    455: 
                    456: // functions originally internal to softfloat.c
                    457: float128 packFloat128( flag zSign, int32 zExp, bits64 zSig0, bits64 zSig1 );
                    458: float128 roundAndPackFloat128( flag zSign, int32 zExp, bits64 zSig0, bits64 zSig1, bits64 zSig2, float_ctrl* c );
                    459: float128 normalizeRoundAndPackFloat128( flag zSign, int32 zExp, bits64 zSig0, bits64 zSig1, float_ctrl* c );
                    460: 
                    461: #endif
                    462: 
                    463: #endif //SOFTFLOAT_H

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.