Finalized documentation for SoftFloat Release 3.
diff --git a/COPYING.txt b/COPYING.txt
index e4c3cc9..75ac327 100644
--- a/COPYING.txt
+++ b/COPYING.txt
@@ -2,7 +2,7 @@
 License for Berkeley SoftFloat Release 3
 
 John R. Hauser
-2014 ________
+2014 Dec 17
 
 The following applies to the whole of SoftFloat Release 3 as well as to each
 source file individually.
diff --git a/README.html b/README.html
index 6f9eadd..c0d5eb1 100644
--- a/README.html
+++ b/README.html
@@ -11,7 +11,7 @@
 
 <P>
 John R. Hauser<BR>
-2014 ________<BR>
+2014 Dec 17<BR>
 </P>
 
 <P>
@@ -19,7 +19,8 @@
 conforms to the IEEE Standard for Floating-Point Arithmetic.
 SoftFloat is distributed in the form of C source code.
 Building the SoftFloat sources generates a library file (typically
-<CODE>"softfloat.a"</CODE>) containing the floating-point subroutines.
+<CODE>softfloat.a</CODE> or <CODE>libsoftfloat.a</CODE>) containing the
+floating-point subroutines.
 </P>
 
 <P>
diff --git a/README.txt b/README.txt
index beafe32..3deb817 100644
--- a/README.txt
+++ b/README.txt
@@ -2,13 +2,13 @@
 Package Overview for Berkeley SoftFloat Release 3
 
 John R. Hauser
-2014 ________
+2014 Dec 17
 
 Berkeley SoftFloat is a software implementation of binary floating-point
 that conforms to the IEEE Standard for Floating-Point Arithmetic.  SoftFloat
 is distributed in the form of C source code.  Building the SoftFloat sources
-generates a library file (typically "softfloat.a") containing the floating-
-point subroutines.
+generates a library file (typically "softfloat.a" or "libsoftfloat.a")
+containing the floating-point subroutines.
 
 The SoftFloat package is documented in the following files in the "doc"
 subdirectory:
diff --git a/doc/SoftFloat-history.html b/doc/SoftFloat-history.html
index b78f658..65e3ca2 100644
--- a/doc/SoftFloat-history.html
+++ b/doc/SoftFloat-history.html
@@ -11,11 +11,7 @@
 
 <P>
 John R. Hauser<BR>
-2014 _____<BR>
-</P>
-
-<P>
-*** CONTENT DONE.
+2014 Dec 17<BR>
 </P>
 
 
@@ -24,7 +20,8 @@
 <UL>
 
 <LI>
-Complete rewrite, funded by the University of California, Berkeley.
+Complete rewrite, funded by the University of California, Berkeley, and
+consequently having a different use license than earlier releases.
 Major changes included renaming most types and functions, upgrading some
 algorithms, restructuring the source files, and making SoftFloat into a true
 library.
@@ -54,8 +51,9 @@
 <UL>
 
 <LI>
-Further improved wording for the legal restrictions on using SoftFloat releases
-<NOBR>through 2c</NOBR>.
+Further improved the wording for the legal restrictions on using SoftFloat
+releases <NOBR>through 2c</NOBR> (not applicable to <NOBR>Release 3</NOBR> or
+later).
 
 </UL>
 
@@ -134,7 +132,8 @@
 <UL>
 
 <LI>
-Original release.
+Original release, based on work done for the International Computer Science
+Institute (ICSI) in Berkely, California.
 
 </UL>
 
diff --git a/doc/SoftFloat-source.html b/doc/SoftFloat-source.html
index 89a90de..bb39cb0 100644
--- a/doc/SoftFloat-source.html
+++ b/doc/SoftFloat-source.html
@@ -11,36 +11,39 @@
 
 <P>
 John R. Hauser<BR>
-2014 _____<BR>
-</P>
-
-<P>
-*** REPLACE QUOTATION MARKS.
+2014 Dec 17<BR>
 </P>
 
 
 <H2>Contents</H2>
 
-<P>
-*** CHECK.<BR>
-*** FIX FORMATTING.
-</P>
-
-<PRE>
-    Introduction
-    Limitations
-    Acknowledgments and License
-    SoftFloat Package Directory Structure
-    Issues for Porting SoftFloat to a New Target
-        Standard Headers &lt;stdbool.h&gt; and &lt;stdint.h&gt;
-        Specializing Floating-Point Behavior
-        Macros for Build Options
-        Adapting a Template Target Directory
-        Target-Specific Optimization of Primitive Functions
-    Testing SoftFloat
-    Providing SoftFloat as a Common Library for Applications
-    Contact Information
-</PRE>
+<BLOCKQUOTE>
+<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
+<COL WIDTH=25>
+<COL WIDTH=*>
+<TR><TD COLSPAN=2>1. Introduction</TD></TR>
+<TR><TD COLSPAN=2>2. Limitations</TD></TR>
+<TR><TD COLSPAN=2>3. Acknowledgments and License</TD></TR>
+<TR><TD COLSPAN=2>4. SoftFloat Package Directory Structure</TD></TR>
+<TR><TD COLSPAN=2>5. Issues for Porting SoftFloat to a New Target</TD></TR>
+<TR>
+  <TD></TD>
+  <TD>5.1. Standard Headers <CODE>&lt;stdbool.h&gt;</CODE> and
+    <CODE>&lt;stdint.h&gt;</CODE></TD>
+</TR>
+<TR><TD></TD><TD>5.2. Specializing Floating-Point Behavior</TD></TR>
+<TR><TD></TD><TD>5.3. Macros for Build Options</TD></TR>
+<TR><TD></TD><TD>5.4. Adapting a Template Target Directory</TD></TR>
+<TR>
+  <TD></TD><TD>5.5. Target-Specific Optimization of Primitive Functions</TD>
+</TR>
+<TR><TD COLSPAN=2>6. Testing SoftFloat</TD></TR>
+<TR>
+  <TD COLSPAN=2>7. Providing SoftFloat as a Common Library for Applications</TD>
+</TR>
+<TR><TD COLSPAN=2>8. Contact Information</TD></TR>
+</TABLE>
+</BLOCKQUOTE>
 
 
 <H2>1. Introduction</H2>
@@ -98,7 +101,7 @@
 integer types.
 If these headers are not supplied with the C compiler, minimal substitutes must
 be provided.
-SoftFloat's dependence on these headers is detailed later in
+SoftFloat&rsquo;s dependence on these headers is detailed later in
 <NOBR>section 5.1</NOBR>, <I>Standard Headers &lt;stdbool.h&gt; and
 &lt;stdint.h&gt;</I>.
 </P>
@@ -110,15 +113,20 @@
 The SoftFloat package was written by me, <NOBR>John R.</NOBR> Hauser.
 <NOBR>Release 3</NOBR> of SoftFloat is a completely new implementation
 supplanting earlier releases.
-This project was done in the employ of the University of California, Berkeley,
-within the Department of Electrical Engineering and Computer Sciences, first
-for the Parallel Computing Laboratory (Par Lab) and then for the ASPIRE Lab.
+This project (<NOBR>Release 3</NOBR> only, not earlier releases) was done in
+the employ of the University of California, Berkeley, within the Department of
+Electrical Engineering and Computer Sciences, first for the Parallel Computing
+Laboratory (Par Lab) and then for the ASPIRE Lab.
 The work was officially overseen by Prof. Krste Asanovic, with funding provided
 by these sources:
 <BLOCKQUOTE>
 <TABLE>
+<COL WIDTH=*>
+<COL WIDTH=10>
+<COL WIDTH=*>
 <TR>
-<TD><NOBR>Par Lab:</NOBR></TD>
+<TD VALIGN=TOP><NOBR>Par Lab:</NOBR></TD>
+<TD></TD>
 <TD>
 Microsoft (Award #024263), Intel (Award #024894), and U.C. Discovery
 (Award #DIG07-10227), with additional support from Par Lab affiliates Nokia,
@@ -126,7 +134,8 @@
 </TD>
 </TR>
 <TR>
-<TD><NOBR>ASPIRE Lab:</NOBR></TD>
+<TD VALIGN=TOP><NOBR>ASPIRE Lab:</NOBR></TD>
+<TD></TD>
 <TD>
 DARPA PERFECT program (Award #HR0011-12-2-0016), with additional support from
 ASPIRE industrial sponsor Intel and ASPIRE affiliates Google, Nokia, NVIDIA,
@@ -185,27 +194,40 @@
 slightly scattered between target-specific and target-independent directories
 and files.
 The supplied directory structure is as follows:
+<BLOCKQUOTE>
 <PRE>
-     doc
-     source
-         include
-         8086
-     build
-         template-FAST_INT64
-         template-not-FAST_INT64
-         Linux-386-GCC
-         Linux-x86_64-GCC
-         Win32-MinGW
-         Win64-MinGW-w64
+doc
+source
+    include
+    8086
+    8086-SSE
+build
+    template-FAST_INT64
+    template-not-FAST_INT64
+    Linux-386-GCC
+    Linux-386-SSE2-GCC
+    Linux-x86_64-GCC
+    Win32-MinGW
+    Win32-SSE2-MinGW
+    Win64-MinGW-w64
 </PRE>
+</BLOCKQUOTE>
 The majority of the SoftFloat sources are provided in the <CODE>source</CODE>
 directory.
 The <CODE>include</CODE> subdirectory of <CODE>source</CODE> contains several
-header files (unsurprisingly), while the <CODE>8086</CODE> subdirectory
-contains source files that specialize the floating-point behavior to match the
-Intel x86 line of processors.
+header files (unsurprisingly), while the <CODE>8086</CODE> and
+<NOBR><CODE>8086-SSE</CODE></NOBR> subdirectories contain source files that
+specialize the floating-point behavior to match the Intel x86 line of
+processors.
+The files in directory <CODE>8086</CODE> give floating-point behavior
+consistent solely with Intel&rsquo;s older, 8087-derived floating-point, while
+those in <NOBR><CODE>8086-SSE</CODE></NOBR> update the behavior of the
+non-extended formats (<CODE>float32_t</CODE>, <CODE>float64_t</CODE>, and
+<CODE>float128_t</CODE>) to mirror Intel&rsquo;s more recent Streaming SIMD
+Extensions (SSE) and other compatible extensions.
 If other specializations are attempted, these would be expected to be other
-subdirectories of <CODE>source</CODE> alongside <CODE>8086</CODE>.
+subdirectories of <CODE>source</CODE> alongside <CODE>8086</CODE> and
+<NOBR><CODE>8086-SSE</CODE></NOBR>.
 Specialization is covered later, in <NOBR>section 5.2</NOBR>, <I>Specializing
 Floating-Point Behavior</I>.
 </P>
@@ -213,9 +235,9 @@
 <P>
 The <CODE>build</CODE> directory is intended to contain a subdirectory for each
 target platform for which a build of the SoftFloat library may be created.
-For each build target, the target's subdirectory is where all derived object
-files and the completed SoftFloat library (typically <CODE>softfloat.a</CODE>
-or <CODE>libsoftfloat.a</CODE>) are created.
+For each build target, the target&rsquo;s subdirectory is where all derived
+object files and the completed SoftFloat library (typically
+<CODE>softfloat.a</CODE> or <CODE>libsoftfloat.a</CODE>) are created.
 The two <CODE>template</CODE> subdirectories are not actual build targets but
 contain sample files for creating new target directories.
 (The meaning of <CODE>FAST_INT64</CODE> will be explained later.)
@@ -227,18 +249,21 @@
 <NOBR><CODE>&lt;execution-environment&gt;-&lt;compiler&gt;</CODE></NOBR>.
 For the example targets,
 <NOBR><CODE>&lt;execution-environment&gt;</CODE></NOBR> is
-<NOBR><CODE>Linux-386</CODE></NOBR>, <NOBR><CODE>Linux-x86_64</CODE></NOBR>,
-<CODE>Win32</CODE>, or <CODE>Win64</CODE>, and
+<NOBR><CODE>Linux-386</CODE></NOBR>, <NOBR><CODE>Linux-386-SSE2</CODE></NOBR>,
+<NOBR><CODE>Linux-x86_64</CODE></NOBR>, <CODE>Win32</CODE>,
+<NOBR><CODE>Win32-SSE2</CODE></NOBR>, or <CODE>Win64</CODE>, and
 <NOBR><CODE>&lt;compiler&gt;</CODE></NOBR> is <CODE>GCC</CODE>,
 <CODE>MinGW</CODE>, or <NOBR><CODE>MinGW-w64</CODE></NOBR>.
 </P>
 
 <P>
 As supplied, each target directory contains two files:
+<BLOCKQUOTE>
 <PRE>
-     Makefile
-     platform.h
+Makefile
+platform.h
 </PRE>
+</BLOCKQUOTE>
 The provided <CODE>Makefile</CODE> is written for GNU <CODE>make</CODE>.
 A build of SoftFloat for the specific target is begun by executing the
 <CODE>make</CODE> command with the target directory as the current directory.
@@ -258,10 +283,10 @@
 <CODE>#include</CODE>) declarations for numerous target-specific optimizations.
 Such possibilities are discussed in the next section, <I>Issues for Porting
 SoftFloat to a New Target</I>.
-If the target's compiler or library has bugs or other shortcomings, workarounds
-for these issues may also be possible with target-specific declarations in
-<CODE>platform.h</CODE>, avoiding the need to modify the main SoftFloat
-sources.
+If the target&rsquo;s compiler or library has bugs or other shortcomings,
+workarounds for these issues may also be possible with target-specific
+declarations in <CODE>platform.h</CODE>, avoiding the need to modify the main
+SoftFloat sources.
 </P>
 
 
@@ -280,30 +305,34 @@
 <CODE>&lt;stdbool.h&gt;</CODE> and <CODE>&lt;stdint.h&gt;</CODE> may need to be
 created.
 SoftFloat depends on these names from <CODE>&lt;stdbool.h&gt;</CODE>:
+<BLOCKQUOTE>
 <PRE>
-     bool
-     true
-     false
+bool
+true
+false
 </PRE>
+</BLOCKQUOTE>
 and on these names from <CODE>&lt;stdint.h&gt;</CODE>:
+<BLOCKQUOTE>
 <PRE>
-     uint16_t
-     uint32_t
-     uint64_t
-     int32_t
-     int64_t
-     UINT64_C
-     INT64_C
-     uint_least8_t
-     uint_fast8_t
-     uint_fast16_t
-     uint_fast32_t
-     uint_fast64_t
-     int_fast8_t
-     int_fast16_t
-     int_fast32_t
-     int_fast64_t
+uint16_t
+uint32_t
+uint64_t
+int32_t
+int64_t
+UINT64_C
+INT64_C
+uint_least8_t
+uint_fast8_t
+uint_fast16_t
+uint_fast32_t
+uint_fast64_t
+int_fast8_t
+int_fast16_t
+int_fast32_t
+int_fast64_t
 </PRE>
+</BLOCKQUOTE>
 </P>
 
 
@@ -312,12 +341,12 @@
 <P>
 The IEEE Floating-Point Standard allows for some flexibility in a conforming
 implementation, particularly concerning NaNs.
-The SoftFloat <CODE>source</CODE> directory is supplied with one or more
+The SoftFloat <CODE>source</CODE> directory is supplied with some
 <I>specialization</I> subdirectories containing possible definitions for this
 implementation-specific behavior.
-For example, the <CODE>8086</CODE> subdirectory has source files that
-specialize SoftFloat's behavior to match that of Intel's x86 line of
-processors.
+For example, the <CODE>8086</CODE> and <NOBR><CODE>8086-SSE</CODE></NOBR>
+subdirectories have source files that specialize SoftFloat&rsquo;s behavior to
+match that of Intel&rsquo;s x86 line of processors.
 The files in a specialization subdirectory must determine:
 <UL>
 <LI>
@@ -343,8 +372,9 @@
 </P>
 
 <P>
-A new build target may use an existing specialization, such as the one provided
-by the <CODE>8086</CODE> subdirectory.
+A new build target may use an existing specialization, such as the ones
+provided by the <CODE>8086</CODE> and <NOBR><CODE>8086-SSE</CODE></NOBR>
+subdirectories.
 If a build target needs a new specialization, different from any existing ones,
 it is recommended that a new specialization subdirectory be created in the
 <CODE>source</CODE> directory for this purpose.
@@ -367,18 +397,18 @@
 machines.
 <DT><CODE>SOFTFLOAT_FAST_INT64</CODE>
 <DD>
-Can be defined to indicate that the build target's implementation of
-<CODE>64-bit</CODE> arithmetic is efficient.
-For newer <CODE>64-bit</CODE> processors, this macro should usually be defined.
-For very small microprocessors whose buses and registers are <CODE>8-bit</CODE>
-or <CODE>16-bit</CODE> in size, this macro should usually not be defined.
-Whether this macro should be defined for a <CODE>32-bit</CODE> processor may
+Can be defined to indicate that the build target&rsquo;s implementation of
+<NOBR>64-bit</NOBR> arithmetic is efficient.
+For newer <NOBR>64-bit</NOBR> processors, this macro should usually be defined.
+For very small microprocessors whose buses and registers are <NOBR>8-bit</NOBR>
+or <NOBR>16-bit</NOBR> in size, this macro should usually not be defined.
+Whether this macro should be defined for a <NOBR>32-bit</NOBR> processor may
 depend on the target machine and the applications that will use SoftFloat.
 <DT><CODE>SOFTFLOAT_FAST_DIV64TO32</CODE>
 <DD>
-Can be defined to indicate that the target's division operator
+Can be defined to indicate that the target&rsquo;s division operator
 <NOBR>in C</NOBR> (written as <CODE>/</CODE>) is reasonably efficient for
-dividing a <CODE>64-bit</CODE> unsigned integer by a <CODE>32-bit</CODE>
+dividing a <NOBR>64-bit</NOBR> unsigned integer by a <NOBR>32-bit</NOBR>
 unsigned integer.
 Setting this macro may affect the performance of division, remainder, and
 square root operations.
@@ -411,16 +441,16 @@
 Following the usual custom <NOBR>for C</NOBR>, for the first three macros (all
 except <CODE>INLINE_LEVEL</CODE> and <CODE>INLINE</CODE>), the content of any
 definition is irrelevant;
-what matters is a macro's effect on <CODE>#ifdef</CODE> directives.
+what matters is a macro&rsquo;s effect on <CODE>#ifdef</CODE> directives.
 </P>
 
 <P>
 It is recommended that any definitions of macros <CODE>LITTLEENDIAN</CODE> and
-<CODE>INLINE</CODE> be made in a build target's <CODE>platform.h</CODE> header
-file, because these macros are expected to be determined inflexibly by the
-target machine and compiler.
+<CODE>INLINE</CODE> be made in a build target&rsquo;s <CODE>platform.h</CODE>
+header file, because these macros are expected to be determined inflexibly by
+the target machine and compiler.
 The other three macros control optimization and might be better located in the
-target's Makefile (or its equivalent).
+target&rsquo;s Makefile (or its equivalent).
 </P>
 
 
@@ -433,8 +463,9 @@
 SoftFloat library depending on whether macro <CODE>SOFTFLOAT_FAST_INT64</CODE>
 is defined.
 If macro <CODE>SOFTFLOAT_FAST_INT64</CODE> will be defined,
-<CODE>template-FAST_INT64</CODE> is the template to use;
-otherwise, <CODE>template-not-FAST_INT64</CODE> is the appropriate template.
+<NOBR><CODE>template-FAST_INT64</CODE></NOBR> is the template to use;
+otherwise, <NOBR><CODE>template-not-FAST_INT64</CODE></NOBR> is the appropriate
+template.
 A new target directory can be created by copying the correct template directory
 and editing the files inside.
 To avoid confusion, it would be wise to refrain from editing the files within a
@@ -447,12 +478,12 @@
 <P>
 Header file <CODE>primitives.h</CODE> (in directory
 <CODE>source/include</CODE>) declares macros and functions for numerous
-underlying arithmetic operations upon which many of SoftFloat's floating-point
-functions are ultimately built.
+underlying arithmetic operations upon which many of SoftFloat&rsquo;s
+floating-point functions are ultimately built.
 The SoftFloat sources include implementations of all of these functions/macros,
 written as standard C code, so a complete and correct SoftFloat library can be
 built using only the supplied code for all functions.
-However, for many targets, SoftFloat's performance can be improved by
+However, for many targets, SoftFloat&rsquo;s performance can be improved by
 substituting target-specific implementations of some of the functions/macros
 declared in <CODE>primitives.h</CODE>.
 </P>
@@ -461,7 +492,7 @@
 For example, <CODE>primitives.h</CODE> declares a function called
 <CODE>softfloat_countLeadingZeros32</CODE> that takes an unsigned
 <NOBR>32-bit</NOBR> integer as an argument and returns the maximal number of
-the integer's most-significant bits that are all zeros.
+the integer&rsquo;s most-significant bits that are all zeros.
 While the SoftFloat sources include an implementation of this function written
 in <NOBR>standard C</NOBR>, many processors can perform this same function
 directly in only one or two machine instructions.
@@ -473,19 +504,22 @@
 <P>
 A build target can replace the supplied version of any function or macro of
 <CODE>primitives.h</CODE> by defining a macro with the same name in the
-target's <CODE>platform.h</CODE> header file.
+target&rsquo;s <CODE>platform.h</CODE> header file.
 For this purpose, it may be helpful for <CODE>platform.h</CODE> to
 <CODE>#include</CODE> header file <CODE>primitiveTypes.h</CODE>, which defines
 types used for arguments and results of functions declared in
 <CODE>primitives.h</CODE>.
 When a desired replacement implementation is a function, not a macro, it is
 sufficient for <CODE>platform.h</CODE> to include the line
+<BLOCKQUOTE>
 <PRE>
-     #define &lt;function-name&gt; &lt;function-name&gt;
+#define &lt;function-name&gt; &lt;function-name&gt;
 </PRE>
-where <CODE>&lt;function-name&gt;</CODE> is the name of the function.
-This technically defines <CODE>&lt;function-name&gt;</CODE> as a macro, but one
-that resolves to the same name, which may then be a function.
+</BLOCKQUOTE>
+where <NOBR><CODE>&lt;function-name&gt;</CODE></NOBR> is the name of the
+function.
+This technically defines <NOBR><CODE>&lt;function-name&gt;</CODE></NOBR> as a
+macro, but one that resolves to the same name, which may then be a function.
 (A preprocessor conforming to the C Standard must limit recursive macro
 expansion from being applied more than once.)
 </P>
@@ -500,46 +534,34 @@
 page
 <A HREF="http://www.jhauser.us/arithmetic/TestFloat.html"><CODE>http://www.jhauser.us/arithmetic/TestFloat.html</CODE></A>.
 The TestFloat package also has a program called <CODE>timesoftfloat</CODE> that
-measures the speed of SoftFloat's floating-point functions.
+measures the speed of SoftFloat&rsquo;s floating-point functions.
 </P>
 
 
 <H2>7. Providing SoftFloat as a Common Library for Applications</H2>
 
 <P>
-Supplied <CODE>softfloat.h</CODE> depends on <CODE>softfloat_types.h</CODE>.
+Header file <CODE>softfloat.h</CODE> defines the SoftFloat interface as seen by
+clients.
+If the SoftFloat library will be made a common library for programs on a
+particular system, the supplied <CODE>softfloat.h</CODE> has a couple of
+deficiencies for this purpose:
+<UL>
+<LI>
+As supplied, <CODE>softfloat.h</CODE> depends on another header,
+<CODE>softfloat_types.h</CODE>, that is not intended for public use but which
+must also be visible to the programmer&rsquo;s compiler.
+<LI>
+More troubling, at the time <CODE>softfloat.h</CODE> is included in a C
+source file, macro <CODE>SOFTFLOAT_FAST_INT64</CODE> must be defined, or not
+defined, consistent with whether this macro was defined when the SoftFloat
+library was built.
+</UL>
+In the situation that new programs may regularly <CODE>#include</CODE> header
+file <CODE>softfloat.h</CODE>, it is recommended that a custom, self-contained
+version of this header file be created that eliminates these issues.
 </P>
 
-<PRE>
-The target-specific `softfloat.h' header file defines the SoftFloat
-interface as seen by clients.
-
-Unlike the actual function definitions in `softfloat.c', the declarations
-in `softfloat.h' do not use any of the types defined by the `processors'
-header file.  This is done so that clients will not have to include the
-`processors' header file in order to use SoftFloat.  Nevertheless, the
-target-specific declarations in `softfloat.h' must match what `softfloat.c'
-expects.  For example, if `int32' is defined as `int' in the `processors'
-header file, then in `softfloat.h' the output of `float32_to_int32' should
-be stated as `int', although in `softfloat.c' it is given in target-
-independent form as `int32'.
-</PRE>
-
-<PRE>
-*** HERE
-
-Porting and/or compiling SoftFloat involves the following steps:
-
-4. In the target-specific subdirectory, edit the files `softfloat-specialize'
-   and `softfloat.h' to define the desired exception handling functions
-   and mode control values.  In the `softfloat.h' header file, ensure also
-   that all declarations give the proper target-specific type (such as
-   `int' or `long') corresponding to the target-independent type used in
-   `softfloat.c' (such as `int32').  None of the type names declared in the
-   `processors' header file should appear in `softfloat.h'.
-
-</PRE>
-
 
 <H2>8. Contact Information</H2>
 
diff --git a/doc/SoftFloat.html b/doc/SoftFloat.html
index fa3919a..d406d91 100644
--- a/doc/SoftFloat.html
+++ b/doc/SoftFloat.html
@@ -11,66 +11,59 @@
 
 <P>
 John R. Hauser<BR>
-2014 ______<BR>
-</P>
-
-<P>
-*** CONTENT DONE.
-</P>
-
-<P>
-*** REPLACE QUOTATION MARKS.
-<BR>
-*** REPLACE APOSTROPHES.
-<BR>
-*** REPLACE EM DASH.
+2014 Dec 17<BR>
 </P>
 
 
 <H2>Contents</H2>
 
-<P>
-*** CHECK.<BR>
-*** FIX FORMATTING.
-</P>
-
-<PRE>
-    Introduction
-    Limitations
-    Acknowledgments and License
-    Types and Functions
-        Boolean and Integer Types
-        Floating-Point Types
-        Supported Floating-Point Functions
-        Non-canonical Representations in extFloat80_t
-        Conventions for Passing Arguments and Results
-    Reserved Names
-    Mode Variables
-        Rounding Mode
-        Underflow Detection
-        Rounding Precision for 80-Bit Extended Format
-    Exceptions and Exception Flags
-    Function Details
-        Conversions from Integer to Floating-Point
-        Conversions from Floating-Point to Integer
-        Conversions Among Floating-Point Types
-        Basic Arithmetic Functions
-        Fused Multiply-Add Functions
-        Remainder Functions
-        Round-to-Integer Functions
-        Comparison Functions
-        Signaling NaN Test Functions
-        Raise-Exception Function
-    Changes from SoftFloat Release 2
-        Name Changes
-        Changes to Function Arguments
-        Added Capabilities
-        Better Compatibility with the C Language
-        New Organization as a Library
-        Optimization Gains (and Losses)
-    Future Directions
-    Contact Information
-</PRE>
+<BLOCKQUOTE>
+<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
+<COL WIDTH=25>
+<COL WIDTH=*>
+<TR><TD COLSPAN=2>1. Introduction</TD></TR>
+<TR><TD COLSPAN=2>2. Limitations</TD></TR>
+<TR><TD COLSPAN=2>3. Acknowledgments and License</TD></TR>
+<TR><TD COLSPAN=2>4. Types and Functions</TD></TR>
+<TR><TD></TD><TD>4.1. Boolean and Integer Types</TD></TR>
+<TR><TD></TD><TD>4.2. Floating-Point Types</TD></TR>
+<TR><TD></TD><TD>4.3. Supported Floating-Point Functions</TD></TR>
+<TR>
+  <TD></TD>
+  <TD>4.4. Non-canonical Representations in <CODE>extFloat80_t</CODE></TD>
+</TR>
+<TR><TD></TD><TD>4.5. Conventions for Passing Arguments and Results</TD></TR>
+<TR><TD COLSPAN=2>5. Reserved Names</TD></TR>
+<TR><TD COLSPAN=2>6. Mode Variables</TD></TR>
+<TR><TD></TD><TD>6.1. Rounding Mode</TD></TR>
+<TR><TD></TD><TD>6.2. Underflow Detection</TD></TR>
+<TR>
+  <TD></TD>
+  <TD>6.3. Rounding Precision for the <NOBR>80-Bit</NOBR> Extended Format</TD>
+</TR>
+<TR><TD COLSPAN=2>7. Exceptions and Exception Flags</TD></TR>
+<TR><TD COLSPAN=2>8. Function Details</TD></TR>
+<TR><TD></TD><TD>8.1. Conversions from Integer to Floating-Point</TD></TR>
+<TR><TD></TD><TD>8.2. Conversions from Floating-Point to Integer</TD></TR>
+<TR><TD></TD><TD>8.3. Conversions Among Floating-Point Types</TD></TR>
+<TR><TD></TD><TD>8.4. Basic Arithmetic Functions</TD></TR>
+<TR><TD></TD><TD>8.5. Fused Multiply-Add Functions</TD></TR>
+<TR><TD></TD><TD>8.6. Remainder Functions</TD></TR>
+<TR><TD></TD><TD>8.7. Round-to-Integer Functions</TD></TR>
+<TR><TD></TD><TD>8.8. Comparison Functions</TD></TR>
+<TR><TD></TD><TD>8.9. Signaling NaN Test Functions</TD></TR>
+<TR><TD></TD><TD>8.10. Raise-Exception Function</TD></TR>
+<TR><TD COLSPAN=2>9. Changes from SoftFloat <NOBR>Release 2</NOBR></TD></TR>
+<TR><TD></TD><TD>9.1. Name Changes</TD></TR>
+<TR><TD></TD><TD>9.2. Changes to Function Arguments</TD></TR>
+<TR><TD></TD><TD>9.3. Added Capabilities</TD></TR>
+<TR><TD></TD><TD>9.4. Better Compatibility with the C Language</TD></TR>
+<TR><TD></TD><TD>9.5. New Organization as a Library</TD></TR>
+<TR><TD></TD><TD>9.6. Optimization Gains (and Losses)</TD></TR>
+<TR><TD COLSPAN=2>10. Future Directions</TD></TR>
+<TR><TD COLSPAN=2>11. Contact Information</TD></TR>
+</TABLE>
+</BLOCKQUOTE>
 
 
 <H2>1. Introduction</H2>
@@ -156,15 +149,20 @@
 The SoftFloat package was written by me, <NOBR>John R.</NOBR> Hauser.
 <NOBR>Release 3</NOBR> of SoftFloat is a completely new implementation
 supplanting earlier releases.
-This project was done in the employ of the University of California, Berkeley,
-within the Department of Electrical Engineering and Computer Sciences, first
-for the Parallel Computing Laboratory (Par Lab) and then for the ASPIRE Lab.
+This project (<NOBR>Release 3</NOBR> only, not earlier releases) was done in
+the employ of the University of California, Berkeley, within the Department of
+Electrical Engineering and Computer Sciences, first for the Parallel Computing
+Laboratory (Par Lab) and then for the ASPIRE Lab.
 The work was officially overseen by Prof. Krste Asanovic, with funding provided
 by these sources:
 <BLOCKQUOTE>
 <TABLE>
+<COL WIDTH=*>
+<COL WIDTH=10>
+<COL WIDTH=*>
 <TR>
-<TD><NOBR>Par Lab:</NOBR></TD>
+<TD VALIGN=TOP><NOBR>Par Lab:</NOBR></TD>
+<TD></TD>
 <TD>
 Microsoft (Award #024263), Intel (Award #024894), and U.C. Discovery
 (Award #DIG07-10227), with additional support from Par Lab affiliates Nokia,
@@ -172,7 +170,8 @@
 </TD>
 </TR>
 <TR>
-<TD><NOBR>ASPIRE Lab:</NOBR></TD>
+<TD VALIGN=TOP><NOBR>ASPIRE Lab:</NOBR></TD>
+<TD></TD>
 <TD>
 DARPA PERFECT program (Award #HR0011-12-2-0016), with additional support from
 ASPIRE industrial sponsor Intel and ASPIRE affiliates Google, Nokia, NVIDIA,
@@ -245,16 +244,18 @@
 Header <CODE>softfloat.h</CODE> depends only on the name <CODE>bool</CODE> from
 <CODE>&lt;stdbool.h&gt;</CODE> and on these type names from
 <CODE>&lt;stdint.h&gt;</CODE>:
+<BLOCKQUOTE>
 <PRE>
-     uint16_t
-     uint32_t
-     uint64_t
-     int32_t
-     int64_t
-     uint_fast8_t
-     uint_fast32_t
-     uint_fast64_t
+uint16_t
+uint32_t
+uint64_t
+int32_t
+int64_t
+uint_fast8_t
+uint_fast32_t
+uint_fast64_t
 </PRE>
+</BLOCKQUOTE>
 </P>
 
 
@@ -263,26 +264,22 @@
 <P>
 The <CODE>softfloat.h</CODE> header defines four floating-point types:
 <BLOCKQUOTE>
-<TABLE>
+<TABLE CELLSPACING=0 CELLPADDING=0>
 <TR>
 <TD><CODE>float32_t</CODE></TD>
-<TD>&nbsp;</TD>
 <TD><NOBR>32-bit</NOBR> single-precision binary format</TD>
 </TR>
 <TR>
 <TD><CODE>float64_t</CODE></TD>
-<TD>&nbsp;</TD>
 <TD><NOBR>64-bit</NOBR> double-precision binary format</TD>
 </TR>
 <TR>
-<TD><CODE>extFloat80_t</CODE></TD>
-<TD>&nbsp;</TD>
+<TD><CODE>extFloat80_t&nbsp;&nbsp;&nbsp;</CODE></TD>
 <TD><NOBR>80-bit</NOBR> double-extended-precision binary format (old Intel or
 Motorola format)</TD>
 </TR>
 <TR>
 <TD><CODE>float128_t</CODE></TD>
-<TD>&nbsp;</TD>
 <TD><NOBR>128-bit</NOBR> quadruple-precision binary format</TD>
 </TR>
 </TABLE>
@@ -304,10 +301,10 @@
 This structure is the same size as type <CODE>extFloat80_t</CODE> and contains
 at least these two fields (not necessarily in this order):
 <BLOCKQUOTE>
-<TABLE>
-<TR><TD><CODE>uint16_t signExp;</CODE></TD></TR>
-<TR><TD><CODE>uint64_t signif;</CODE></TD></TR>
-</TABLE>
+<PRE>
+uint16_t signExp;
+uint64_t signif;
+</PRE>
 </BLOCKQUOTE>
 Field <CODE>signExp</CODE> contains the sign and exponent of the floating-point
 value, with the sign in the most significant bit (<NOBR>bit 15</NOBR>) and the
@@ -339,8 +336,8 @@
 for each format, the floating-point remainder operation defined by the IEEE
 Standard;
 <LI>
-for each format, a ``round to integer'' operation that rounds to the nearest
-integer value in the same format; and
+for each format, a &ldquo;round to integer&rdquo; operation that rounds to the
+nearest integer value in the same format; and
 <LI>
 comparisons between two values in the same floating-point format.
 </UL>
@@ -357,12 +354,12 @@
 conversions between floating-point formats and decimal or hexadecimal character
 sequences;
 <LI>
-all ``quiet-computation'' operations (<B>copy</B>, <B>negate</B>, <B>abs</B>,
-and <B>copySign</B>, which all involve only simple copying and/or manipulation
-of the floating-point sign bit); and
+all &ldquo;quiet-computation&rdquo; operations (<B>copy</B>, <B>negate</B>,
+<B>abs</B>, and <B>copySign</B>, which all involve only simple copying and/or
+manipulation of the floating-point sign bit); and
 <LI>
-all ``non-computational'' operations other than <B>isSignaling</B> (which is
-supported).
+all &ldquo;non-computational&rdquo; operations other than <B>isSignaling</B>
+(which is supported).
 </UL>
 </P>
 
@@ -393,9 +390,9 @@
 For <NOBR>Release 3</NOBR> of SoftFloat, functions are not guaranteed to
 operate as expected when inputs of type <CODE>extFloat80_t</CODE> are
 non-canonical.
-Assuming all of a function's <CODE>extFloat80_t</CODE> inputs (if any) are
-canonical, function outputs of type <CODE>extFloat80_t</CODE> will always be
-canonical.
+Assuming all of a function&rsquo;s <CODE>extFloat80_t</CODE> inputs (if any)
+are canonical, function outputs of type <CODE>extFloat80_t</CODE> will always
+be canonical.
 </P>
 
 <H3>4.5. Conventions for Passing Arguments and Results</H3>
@@ -426,8 +423,8 @@
 The first two arguments point to the values to be added, and the last argument
 points to the location where the sum will be stored.
 The <CODE>M</CODE> in the name <CODE>f128M_add</CODE> is mnemonic for the fact
-that the <NOBR>128-bit</NOBR> inputs and outputs are ``in memory'', pointed to
-by pointer arguments.
+that the <NOBR>128-bit</NOBR> inputs and outputs are &ldquo;in memory&rdquo;,
+pointed to by pointer arguments.
 </P>
 
 <P>
@@ -464,10 +461,11 @@
 <P>
 In addition to the variables and functions documented here, SoftFloat defines
 some symbol names for its own private use.
-These private names always begin with the prefix `<CODE>softfloat_</CODE>'.
+These private names always begin with the prefix
+&lsquo;<CODE>softfloat_</CODE>&rsquo;.
 When a program includes header <CODE>softfloat.h</CODE> or links with the
-SoftFloat library, all names with prefix `<CODE>softfloat_</CODE>' are reserved
-for possible use by SoftFloat.
+SoftFloat library, all names with prefix &lsquo;<CODE>softfloat_</CODE>&rsquo;
+are reserved for possible use by SoftFloat.
 Applications that use SoftFloat should not define their own names with this
 prefix, and should reference only such names as are documented.
 </P>
@@ -477,7 +475,7 @@
 
 <P>
 The following variables control rounding mode, underflow detection, and the
-<NOBR>80-bit</NOBR> extended format's rounding precision:
+<NOBR>80-bit</NOBR> extended format&rsquo;s rounding precision:
 <BLOCKQUOTE>
 <CODE>softfloat_roundingMode</CODE><BR>
 <CODE>softfloat_detectTininess</CODE><BR>
@@ -497,30 +495,25 @@
 </BLOCKQUOTE>
 This variable may be set to one of the values
 <BLOCKQUOTE>
-<TABLE>
+<TABLE CELLSPACING=0 CELLPADDING=0>
 <TR>
 <TD><CODE>softfloat_round_near_even</CODE></TD>
-<TD>&nbsp;</TD>
 <TD>round to nearest, with ties to even</TD>
 </TR>
 <TR>
-<TD><CODE>softfloat_round_near_maxMag</CODE></TD>
-<TD>&nbsp;</TD>
+<TD><CODE>softfloat_round_near_maxMag&nbsp;&nbsp;</CODE></TD>
 <TD>round to nearest, with ties to maximum magnitude (away from zero)</TD>
 </TR>
 <TR>
 <TD><CODE>softfloat_round_minMag</CODE></TD>
-<TD>&nbsp;</TD>
 <TD>round to minimum magnitude (toward zero)</TD>
 </TR>
 <TR>
 <TD><CODE>softfloat_round_min</CODE></TD>
-<TD>&nbsp;</TD>
 <TD>round to minimum (down)</TD>
 </TR>
 <TR>
 <TD><CODE>softfloat_round_max</CODE></TD>
-<TD>&nbsp;</TD>
 <TD>round to maximum (up)</TD>
 </TR>
 </TABLE>
@@ -550,7 +543,7 @@
 always detects loss of accuracy for underflow as an inexact result.
 </P>
 
-<H3>6.3. Rounding Precision for 80-Bit Extended Format</H3>
+<H3>6.3. Rounding Precision for the <NOBR>80-Bit</NOBR> Extended Format</H3>
 
 <P>
 For <CODE>extFloat80_t</CODE> only, the rounding precision of the basic
@@ -639,7 +632,7 @@
 In this section, <CODE>&lt;<I>float</I>&gt;</CODE> appears in function names as
 a substitute for one of these abbreviations:
 <BLOCKQUOTE>
-<TABLE>
+<TABLE CELLSPACING=0 CELLPADDING=0>
 <TR>
 <TD><CODE>f32</CODE></TD>
 <TD>indicates <CODE>float32_t</CODE>, passed by value</TD>
@@ -696,11 +689,14 @@
 one output.
 The following illustrates the signatures of these functions in cases when the
 floating-point result is passed either by value or via pointers:
+<BLOCKQUOTE>
 <PRE>
-     float64_t i32_to_f64( int32_t <I>a</I> );
-
-     void i32_to_f128M( int32_t <I>a</I>, float128_t *<I>destPtr</I> );
+float64_t i32_to_f64( int32_t <I>a</I> );
 </PRE>
+<PRE>
+void i32_to_f128M( int32_t <I>a</I>, float128_t *<I>destPtr</I> );
+</PRE>
+</BLOCKQUOTE>
 </P>
 
 <H3>8.2. Conversions from Floating-Point to Integer</H3>
@@ -717,12 +713,15 @@
 </BLOCKQUOTE>
 The functions have signatures as follows, depending on whether the
 floating-point input is passed by value or via pointers:
+<BLOCKQUOTE>
 <PRE>
-     int32_t f64_to_i32( float64_t <I>a</I>, uint_fast8_t <I>roundingMode</I>, bool <I>exact</I> );
-
-     int32_t
-      f128M_to_i32( const float128_t *<I>aPtr</I>, uint_fast8_t <I>roundingMode</I>, bool <I>exact</I> );
+int32_t f64_to_i32( float64_t <I>a</I>, uint_fast8_t <I>roundingMode</I>, bool <I>exact</I> );
 </PRE>
+<PRE>
+int32_t
+ f128M_to_i32( const float128_t *<I>aPtr</I>, uint_fast8_t <I>roundingMode</I>, bool <I>exact</I> );
+</PRE>
+</BLOCKQUOTE>
 The <CODE><I>roundingMode</I></CODE> argument specifies the rounding mode for
 the conversion.
 The variable that usually indicates rounding mode,
@@ -768,12 +767,14 @@
 These functions round only toward zero (to minimum magnitude).
 The signatures for these functions are the same as above without the redundant
 <CODE><I>roundingMode</I></CODE> argument:
+<BLOCKQUOTE>
 <PRE>
-     int32_t f64_to_i32_r_minMag( float64_t <I>a</I>, bool <I>exact</I> );
+int32_t f64_to_i32_r_minMag( float64_t <I>a</I>, bool <I>exact</I> );
 </PRE>
 <PRE>
-     int32_t f128M_to_i32_r_minMag( const float128_t *<I>aPtr</I>, bool <I>exact</I> );
+int32_t f128M_to_i32_r_minMag( const float128_t *<I>aPtr</I>, bool <I>exact</I> );
 </PRE>
+</BLOCKQUOTE>
 </P>
 
 <H3>8.3. Conversions Among Floating-Point Types</H3>
@@ -789,18 +790,20 @@
 There are four different styles of signature for these functions, depending on
 whether the input and the output floating-point values are passed by value or
 via pointers:
+<BLOCKQUOTE>
 <PRE>
-     float32_t f64_to_f32( float64_t <I>a</I> );
+float32_t f64_to_f32( float64_t <I>a</I> );
 </PRE>
 <PRE>
-     float32_t f128M_to_f32( const float128_t *<I>aPtr</I> );
+float32_t f128M_to_f32( const float128_t *<I>aPtr</I> );
 </PRE>
 <PRE>
-     void f32_to_f128M( float32_t <I>a</I>, float128_t *<I>destPtr</I> );
+void f32_to_f128M( float32_t <I>a</I>, float128_t *<I>destPtr</I> );
 </PRE>
 <PRE>
-     void extF80M_to_f128M( const extFloat80_t *<I>aPtr</I>, float128_t *<I>destPtr</I> );
+void extF80M_to_f128M( const extFloat80_t *<I>aPtr</I>, float128_t *<I>destPtr</I> );
 </PRE>
+</BLOCKQUOTE>
 </P>
 
 <P>
@@ -823,22 +826,22 @@
 (square root) which takes only one.
 The operands and result are all of the same floating-point format.
 Signatures for these functions take the following forms:
+<BLOCKQUOTE>
 <PRE>
-     float64_t f64_add( float64_t <I>a</I>, float64_t <I>b</I> );
+float64_t f64_add( float64_t <I>a</I>, float64_t <I>b</I> );
 </PRE>
 <PRE>
-     void
-      f128M_add(
-          const float128_t *<I>aPtr</I>, const float128_t *<I>bPtr</I>, float128_t *<I>destPtr</I> );
-</PRE>
-</P>
-<P>
-<PRE>
-     float64_t f64_sqrt( float64_t <I>a</I> );
+void
+ f128M_add(
+     const float128_t *<I>aPtr</I>, const float128_t *<I>bPtr</I>, float128_t *<I>destPtr</I> );
 </PRE>
 <PRE>
-     void f128M_sqrt( const float128_t *<I>aPtr</I>, float128_t *<I>destPtr</I> );
+float64_t f64_sqrt( float64_t <I>a</I> );
 </PRE>
+<PRE>
+void f128M_sqrt( const float128_t *<I>aPtr</I>, float128_t *<I>destPtr</I> );
+</PRE>
+</BLOCKQUOTE>
 When floating-point values are passed indirectly through pointers, arguments
 <CODE><I>aPtr</I></CODE> and <CODE><I>bPtr</I></CODE> point to the input
 operands, and the last argument, <CODE><I>destPtr</I></CODE>, points to the
@@ -850,7 +853,7 @@
 (<CODE>extFloat80_t</CODE>) functions is affected by variable
 <CODE>extF80_roundingPrecision</CODE>, as explained earlier in
 <NOBR>section 6.3</NOBR>,
-<I>Rounding Precision for <NOBR>80-Bit</NOBR> Extended Format</I>.
+<I>Rounding Precision for the <NOBR>80-Bit</NOBR> Extended Format</I>.
 </P>
 
 <H3>8.5. Fused Multiply-Add Functions</H3>
@@ -873,18 +876,20 @@
 <P>
 Depending on whether floating-point values are passed by value or via pointers,
 the fused multiply-add functions have signatures of these forms:
+<BLOCKQUOTE>
 <PRE>
-     float64_t f64_mulAdd( float64_t <I>a</I>, float64_t <I>b</I>, float64_t <I>c</I> );
+float64_t f64_mulAdd( float64_t <I>a</I>, float64_t <I>b</I>, float64_t <I>c</I> );
 </PRE>
 <PRE>
-     void
-      f128M_mulAdd(
-          const float128_t *<I>aPtr</I>,
-          const float128_t *<I>bPtr</I>,
-          const float128_t *<I>cPtr</I>,
-          float128_t *<I>destPtr</I>
-      );
+void
+ f128M_mulAdd(
+     const float128_t *<I>aPtr</I>,
+     const float128_t *<I>bPtr</I>,
+     const float128_t *<I>cPtr</I>,
+     float128_t *<I>destPtr</I>
+ );
 </PRE>
+</BLOCKQUOTE>
 The functions compute
 <NOBR>(<CODE><I>a</I></CODE> &times; <CODE><I>b</I></CODE>)
  + <CODE><I>c</I></CODE></NOBR>
@@ -915,14 +920,16 @@
 and returns a result in the same format.
 Depending on whether floating-point values are passed by value or via pointers,
 the remainder functions have signatures of these forms:
+<BLOCKQUOTE>
 <PRE>
-     float64_t f64_rem( float64_t <I>a</I>, float64_t <I>b</I> );
+float64_t f64_rem( float64_t <I>a</I>, float64_t <I>b</I> );
 </PRE>
 <PRE>
-     void
-      f128M_rem(
-          const float128_t *<I>aPtr</I>, const float128_t *<I>bPtr</I>, float128_t *<I>destPtr</I> );
+void
+ f128M_rem(
+     const float128_t *<I>aPtr</I>, const float128_t *<I>bPtr</I>, float128_t *<I>destPtr</I> );
 </PRE>
+</BLOCKQUOTE>
 When floating-point values are passed indirectly through pointers, arguments
 <CODE><I>aPtr</I></CODE> and <CODE><I>bPtr</I></CODE> point to operands
 <CODE><I>a</I></CODE> and <CODE><I>b</I></CODE> respectively, and
@@ -938,8 +945,8 @@
 If <NOBR><CODE><I>a</I></CODE> &divide; <CODE><I>b</I></CODE></NOBR> is exactly
 halfway between two integers, <I>n</I> is the <EM>even</EM> integer closest to
 <NOBR><CODE><I>a</I></CODE> &divide; <CODE><I>b</I></CODE></NOBR>.
-The IEEE Standard's remainder operation is always exact and so requires no
-rounding.
+The IEEE Standard&rsquo;s remainder operation is always exact and so requires
+no rounding.
 </P>
 
 <P>
@@ -968,18 +975,20 @@
 <P>
 The signatures of the round-to-integer functions are similar to those for
 conversions to an integer type:
+<BLOCKQUOTE>
 <PRE>
-     float64_t f64_roundToInt( float64_t <I>a</I>, uint_fast8_t <I>roundingMode</I>, bool <I>exact</I> );
+float64_t f64_roundToInt( float64_t <I>a</I>, uint_fast8_t <I>roundingMode</I>, bool <I>exact</I> );
 </PRE>
 <PRE>
-     void
-      f128M_roundToInt(
-          const float128_t *<I>aPtr</I>,
-          uint_fast8_t <I>roundingMode</I>,
-          bool <I>exact</I>,
-          float128_t *<I>destPtr</I>
-      );
+void
+ f128M_roundToInt(
+     const float128_t *<I>aPtr</I>,
+     uint_fast8_t <I>roundingMode</I>,
+     bool <I>exact</I>,
+     float128_t *<I>destPtr</I>
+ );
 </PRE>
+</BLOCKQUOTE>
 The <CODE><I>roundingMode</I></CODE> argument specifies the rounding mode to
 apply.
 The variable that usually indicates rounding mode,
@@ -1005,17 +1014,19 @@
 <CODE>&lt;<I>float</I>&gt;_lt</CODE>
 </BLOCKQUOTE>
 Each comparison takes two operands of the same type and returns a Boolean.
-The abbreviation <CODE>eq</CODE> stands for ``equal'' (=);
-<CODE>le</CODE> stands for ``less than or equal'' (&le;);
-and <CODE>lt</CODE> stands for ``less than'' (&lt;).
+The abbreviation <CODE>eq</CODE> stands for &ldquo;equal&rdquo; (=);
+<CODE>le</CODE> stands for &ldquo;less than or equal&rdquo; (&le;);
+and <CODE>lt</CODE> stands for &ldquo;less than&rdquo; (&lt;).
 Depending on whether the floating-point operands are passed by value or via
 pointers, the comparison functions have signatures of these forms:
+<BLOCKQUOTE>
 <PRE>
-     bool f64_eq( float64_t <I>a</I>, float64_t <I>b</I> );
+bool f64_eq( float64_t <I>a</I>, float64_t <I>b</I> );
 </PRE>
 <PRE>
-     bool f128M_eq( const float128_t *<I>aPtr</I>, const float128_t *<I>bPtr</I> );
+bool f128M_eq( const float128_t *<I>aPtr</I>, const float128_t *<I>bPtr</I> );
 </PRE>
+</BLOCKQUOTE>
 </P>
 
 <P>
@@ -1058,21 +1069,25 @@
 The functions take one floating-point operand and return a Boolean indicating
 whether the operand is a signaling NaN.
 Accordingly, the functions have the forms
+<BLOCKQUOTE>
 <PRE>
-     bool f64_isSignalingNaN( float64_t <I>a</I> );
+bool f64_isSignalingNaN( float64_t <I>a</I> );
 </PRE>
 <PRE>
-     bool f128M_isSignalingNaN( const float128_t *<I>aPtr</I> );
+bool f128M_isSignalingNaN( const float128_t *<I>aPtr</I> );
 </PRE>
+</BLOCKQUOTE>
 </P>
 
 <H3>8.10. Raise-Exception Function</H3>
 
 <P>
 SoftFloat provides a single function for raising floating-point exceptions:
+<BLOCKQUOTE>
 <PRE>
-     void softfloat_raise( uint_fast8_t <I>exceptions</I> );
+void softfloat_raise( uint_fast8_t <I>exceptions</I> );
 </PRE>
+</BLOCKQUOTE>
 The <CODE><I>exceptions</I></CODE> argument is a mask indicating the set of
 exceptions to raise.
 (See earlier section 7, <I>Exceptions and Exception Flags</I>.)
@@ -1084,6 +1099,11 @@
 
 <H2>9. Changes from SoftFloat <NOBR>Release 2</NOBR></H2>
 
+<P>
+Apart from the change in the legal use license, there are numerous technical
+differences between <NOBR>Release 3</NOBR> of SoftFloat and earlier releases.
+</P>
+
 <H3>9.1. Name Changes</H3>
 
 <P>
@@ -1214,17 +1234,17 @@
 <TR>
 <TD><CODE>_round_to_zero</CODE></TD>
 <TD><CODE>_r_minMag</CODE></TD>
-<TD>conversions from floating-point to integer, section 8.2</TD>
+<TD>conversions from floating-point to integer (<NOBR>section 8.2</NOBR>)</TD>
 </TR>
 <TR>
 <TD><CODE>round_to_int</CODE></TD>
 <TD><CODE>roundToInt</CODE></TD>
-<TD>round-to-integer functions, section 8.7</TD>
+<TD>round-to-integer functions (<NOBR>section 8.7</NOBR>)</TD>
 </TR>
 <TR>
 <TD><CODE>is_signaling_nan&nbsp;&nbsp;&nbsp;&nbsp;</CODE></TD>
 <TD><CODE>isSignalingNaN</CODE></TD>
-<TD>signaling NaN test functions, section 8.9</TD>
+<TD>signaling NaN test functions (<NOBR>section 8.9</NOBR>)</TD>
 </TR>
 </TABLE>
 </BLOCKQUOTE>
@@ -1296,7 +1316,7 @@
 <P>
 With <NOBR>Release 3</NOBR>, a port of SoftFloat can now define any of the
 floating-point types <CODE>float32_t</CODE>, <CODE>float64_t</CODE>,
-<CODE>extFloat80_t</CODE>, and <CODE>float128_t</CODE> as aliases for C's
+<CODE>extFloat80_t</CODE>, and <CODE>float128_t</CODE> as aliases for C&rsquo;s
 standard floating-point types <CODE>float</CODE>, <CODE>double</CODE>, and
 <CODE>long</CODE> <CODE>double</CODE>, using either <CODE>#define</CODE> or
 <CODE>typedef</CODE>.
@@ -1304,9 +1324,9 @@
 </P>
 
 <P>
-(Note, however, that there may be a performance cost to defining SoftFloat's
-floating-point types this way, depending on the platform and the applications
-using SoftFloat.
+(Note, however, that there may be a performance cost to defining
+SoftFloat&rsquo;s floating-point types this way, depending on the platform and
+the applications using SoftFloat.
 Ports of SoftFloat may choose to forgo the convenience in favor of better
 speed.)
 </P>
@@ -1338,7 +1358,7 @@
 
 <P>
 <NOBR>Release 3</NOBR> of SoftFloat is written to conform better to the ISO C
-Standard's rules for portability.
+Standard&rsquo;s rules for portability.
 For example, older releases of SoftFloat employed type conversions in ways
 that, while commonly practiced, are not fully defined by the C Standard.
 Such problematic type conversions have generally been replaced by the use of
@@ -1387,8 +1407,8 @@
 The following improvements are anticipated for future releases of SoftFloat:
 <UL>
 <LI>
-support for the common <NOBR>16-bit</NOBR> ``half-precision'' floating-point
-format;
+support for the common <NOBR>16-bit</NOBR> &ldquo;half-precision&rdquo;
+floating-point format;
 <LI>
 more functions from the 2008 version of the IEEE Floating-Point Standard;
 <LI>