1*9403c583SJens Wiklander 2*9403c583SJens Wiklander<HTML> 3*9403c583SJens Wiklander 4*9403c583SJens Wiklander<HEAD> 5*9403c583SJens Wiklander<TITLE>Berkeley SoftFloat History</TITLE> 6*9403c583SJens Wiklander</HEAD> 7*9403c583SJens Wiklander 8*9403c583SJens Wiklander<BODY> 9*9403c583SJens Wiklander 10*9403c583SJens Wiklander<H1>History of Berkeley SoftFloat, to Release 3a</H1> 11*9403c583SJens Wiklander 12*9403c583SJens Wiklander<P> 13*9403c583SJens WiklanderJohn R. Hauser<BR> 14*9403c583SJens Wiklander2015 October 23<BR> 15*9403c583SJens Wiklander</P> 16*9403c583SJens Wiklander 17*9403c583SJens Wiklander 18*9403c583SJens Wiklander<H3>Release 3a (2015 October)</H3> 19*9403c583SJens Wiklander 20*9403c583SJens Wiklander<UL> 21*9403c583SJens Wiklander 22*9403c583SJens Wiklander<LI> 23*9403c583SJens WiklanderReplaced the license text supplied by the University of California, Berkeley. 24*9403c583SJens Wiklander 25*9403c583SJens Wiklander</UL> 26*9403c583SJens Wiklander 27*9403c583SJens Wiklander 28*9403c583SJens Wiklander<H3>Release 3 (2015 February)</H3> 29*9403c583SJens Wiklander 30*9403c583SJens Wiklander<UL> 31*9403c583SJens Wiklander 32*9403c583SJens Wiklander<LI> 33*9403c583SJens WiklanderComplete rewrite, funded by the University of California, Berkeley, and 34*9403c583SJens Wiklanderconsequently having a different use license than earlier releases. 35*9403c583SJens WiklanderMajor changes included renaming most types and functions, upgrading some 36*9403c583SJens Wiklanderalgorithms, restructuring the source files, and making SoftFloat into a true 37*9403c583SJens Wiklanderlibrary. 38*9403c583SJens Wiklander 39*9403c583SJens Wiklander<LI> 40*9403c583SJens WiklanderAdded functions to convert between floating-point and unsigned integers, both 41*9403c583SJens Wiklander<NOBR>32-bit</NOBR> and <NOBR>64-bit</NOBR> (<CODE>uint32_t</CODE> and 42*9403c583SJens Wiklander<CODE>uint64_t</CODE>). 43*9403c583SJens Wiklander 44*9403c583SJens Wiklander<LI> 45*9403c583SJens WiklanderAdded functions for fused multiply-add, for all supported floating-point 46*9403c583SJens Wiklanderformats except <NOBR>80-bit</NOBR> double-extended-precision. 47*9403c583SJens Wiklander 48*9403c583SJens Wiklander<LI> 49*9403c583SJens WiklanderAdded support for a fifth rounding mode, <CODE>near_maxMag</CODE> (round to 50*9403c583SJens Wiklandernearest, with ties to maximum magnitude, away from zero). 51*9403c583SJens Wiklander 52*9403c583SJens Wiklander<LI> 53*9403c583SJens WiklanderDropped the <CODE>timesoftfloat</CODE> program (now part of the Berkeley 54*9403c583SJens WiklanderTestFloat package). 55*9403c583SJens Wiklander 56*9403c583SJens Wiklander</UL> 57*9403c583SJens Wiklander 58*9403c583SJens Wiklander 59*9403c583SJens Wiklander<H3>Release 2c (2015 January)</H3> 60*9403c583SJens Wiklander 61*9403c583SJens Wiklander<UL> 62*9403c583SJens Wiklander 63*9403c583SJens Wiklander<LI> 64*9403c583SJens WiklanderFixed mistakes affecting some <NOBR>64-bit</NOBR> processors. 65*9403c583SJens Wiklander 66*9403c583SJens Wiklander<LI> 67*9403c583SJens WiklanderFurther improved the documentation and the wording for the legal restrictions 68*9403c583SJens Wiklanderon using SoftFloat releases <NOBR>through 2c</NOBR> (not applicable to 69*9403c583SJens Wiklander<NOBR>Release 3</NOBR> or later). 70*9403c583SJens Wiklander 71*9403c583SJens Wiklander</UL> 72*9403c583SJens Wiklander 73*9403c583SJens Wiklander 74*9403c583SJens Wiklander<H3>Release 2b (2002 May)</H3> 75*9403c583SJens Wiklander 76*9403c583SJens Wiklander<UL> 77*9403c583SJens Wiklander 78*9403c583SJens Wiklander<LI> 79*9403c583SJens WiklanderMade minor updates to the documentation, including improved wording for the 80*9403c583SJens Wiklanderlegal restrictions on using SoftFloat. 81*9403c583SJens Wiklander 82*9403c583SJens Wiklander</UL> 83*9403c583SJens Wiklander 84*9403c583SJens Wiklander 85*9403c583SJens Wiklander<H3>Release 2a (1998 December)</H3> 86*9403c583SJens Wiklander 87*9403c583SJens Wiklander<UL> 88*9403c583SJens Wiklander 89*9403c583SJens Wiklander<LI> 90*9403c583SJens WiklanderAdded functions to convert between <NOBR>64-bit</NOBR> integers 91*9403c583SJens Wiklander(<CODE>int64</CODE>) and all supported floating-point formats. 92*9403c583SJens Wiklander 93*9403c583SJens Wiklander<LI> 94*9403c583SJens WiklanderFixed a bug in all <NOBR>64-bit</NOBR>-version square root functions except 95*9403c583SJens Wiklander<CODE>float32_sqrt</CODE> that caused the result sometimes to be off by 96*9403c583SJens Wiklander<NOBR>1 unit</NOBR> in the last place (<NOBR>1 ulp</NOBR>) from what it should 97*9403c583SJens Wiklanderbe. 98*9403c583SJens Wiklander(Bug discovered by Paul Donahue.) 99*9403c583SJens Wiklander 100*9403c583SJens Wiklander<LI> 101*9403c583SJens WiklanderImproved the Makefiles. 102*9403c583SJens Wiklander</UL> 103*9403c583SJens Wiklander 104*9403c583SJens Wiklander 105*9403c583SJens Wiklander<H3>Release 2 (1997 June)</H3> 106*9403c583SJens Wiklander 107*9403c583SJens Wiklander<UL> 108*9403c583SJens Wiklander 109*9403c583SJens Wiklander<LI> 110*9403c583SJens WiklanderCreated the <NOBR>64-bit</NOBR> (<CODE>bits64</CODE>) version, adding the 111*9403c583SJens Wiklander<CODE>floatx80</CODE> and <CODE>float128</CODE> formats. 112*9403c583SJens Wiklander 113*9403c583SJens Wiklander<LI> 114*9403c583SJens WiklanderChanged the source directory structure, splitting the sources into a 115*9403c583SJens Wiklander<CODE>bits32</CODE> and a <CODE>bits64</CODE> version. 116*9403c583SJens WiklanderRenamed <CODE>environment.h</CODE> to <CODE>milieu.h</CODE> to avoid confusion 117*9403c583SJens Wiklanderwith environment variables. 118*9403c583SJens Wiklander 119*9403c583SJens Wiklander<LI> 120*9403c583SJens WiklanderFixed a small error that caused <CODE>float64_round_to_int</CODE> often to 121*9403c583SJens Wiklanderround the wrong way in nearest/even mode when the operand was between 122*9403c583SJens Wiklander2<SUP>20</SUP> and 2<SUP>21</SUP> and halfway between two integers. 123*9403c583SJens Wiklander 124*9403c583SJens Wiklander</UL> 125*9403c583SJens Wiklander 126*9403c583SJens Wiklander 127*9403c583SJens Wiklander<H3>Release 1a (1996 July)</H3> 128*9403c583SJens Wiklander 129*9403c583SJens Wiklander<UL> 130*9403c583SJens Wiklander 131*9403c583SJens Wiklander<LI> 132*9403c583SJens WiklanderCorrected a mistake that caused borderline underflow cases not to raise the 133*9403c583SJens Wiklanderunderflow flag when they should have. 134*9403c583SJens Wiklander(Problem reported by Doug Priest.) 135*9403c583SJens Wiklander 136*9403c583SJens Wiklander<LI> 137*9403c583SJens WiklanderAdded the <CODE>float_detect_tininess</CODE> variable to control whether 138*9403c583SJens Wiklandertininess is detected before or after rounding. 139*9403c583SJens Wiklander 140*9403c583SJens Wiklander</UL> 141*9403c583SJens Wiklander 142*9403c583SJens Wiklander 143*9403c583SJens Wiklander<H3>Release 1 (1996 July)</H3> 144*9403c583SJens Wiklander 145*9403c583SJens Wiklander<UL> 146*9403c583SJens Wiklander 147*9403c583SJens Wiklander<LI> 148*9403c583SJens WiklanderOriginal release, based on work done for the International Computer Science 149*9403c583SJens WiklanderInstitute (ICSI) in Berkeley, California. 150*9403c583SJens Wiklander 151*9403c583SJens Wiklander</UL> 152*9403c583SJens Wiklander 153*9403c583SJens Wiklander 154*9403c583SJens Wiklander</BODY> 155*9403c583SJens Wiklander 156