2017-01-11 19:58:08 +00:00
<!doctype html>
< html >
< head >
< title > lib/dconv/dprint.cpp< / title >
< style type = "text/css" >
body { color:#000000; background-color:#ffffff }
body { font-family:Helvetica, sans-serif; font-size:10pt }
h1 { font-size:14pt }
.code { border-collapse:collapse; width:100%; }
.code { font-family: "Monospace", monospace; font-size:10pt }
.code { line-height: 1.2em }
.comment { color: green; font-style: oblique }
.keyword { color: blue }
.string_literal { color: red }
.directive { color: darkmagenta }
.expansion { display: none; }
.macro:hover .expansion { display: block; border: 2px solid #FF0000; padding: 2px; background-color:#FFF0F0; font-weight: normal; -webkit-border-radius:5px; -webkit-box-shadow:1px 1px 7px #000; position: absolute; top: -1em; left:10em; z-index: 1 }
.macro { color: darkmagenta; background-color:LemonChiffon; position: relative }
.num { width:2.5em; padding-right:2ex; background-color:#eeeeee }
.num { text-align:right; font-size:8pt }
.num { color:#444444 }
.line { padding-left: 1ex; border-left: 3px solid #ccc }
.line { white-space: pre }
.msg { -webkit-box-shadow:1px 1px 7px #000 }
.msg { -webkit-border-radius:5px }
.msg { font-family:Helvetica, sans-serif; font-size:8pt }
.msg { float:left }
.msg { padding:0.25em 1ex 0.25em 1ex }
.msg { margin-top:10px; margin-bottom:10px }
.msg { font-weight:bold }
.msg { max-width:60em; word-wrap: break-word; white-space: pre-wrap }
.msgT { padding:0x; spacing:0x }
.msgEvent { background-color:#fff8b4; color:#000000 }
.msgControl { background-color:#bbbbbb; color:#000000 }
.mrange { background-color:#dfddf3 }
.mrange { border-bottom:1px solid #6F9DBE }
.PathIndex { font-weight: bold; padding:0px 5px; margin-right:5px; }
.PathIndex { -webkit-border-radius:8px }
.PathIndexEvent { background-color:#bfba87 }
.PathIndexControl { background-color:#8c8c8c }
.PathNav a { text-decoration:none; font-size: larger }
.CodeInsertionHint { font-weight: bold; background-color: #10dd10 }
.CodeRemovalHint { background-color:#de1010 }
.CodeRemovalHint { border-bottom:1px solid #6F9DBE }
table.simpletable {
padding: 5px;
font-size:12pt;
margin:20px;
border-collapse: collapse; border-spacing: 0px;
}
td.rowname {
text-align:right; font-weight:bold; color:#444444;
padding-right:2ex; }
< / style >
< / head >
< body >
<!-- BUGDESC Value stored to 'bufferSize' is never read -->
<!-- BUGTYPE Dead increment -->
<!-- BUGCATEGORY Dead store -->
<!-- BUGFILE /home/carsten/amath/lib/dconv/dprint.cpp -->
<!-- FILENAME dprint.cpp -->
<!-- FUNCTIONNAME FormatScientific -->
<!-- ISSUEHASHCONTENTOFLINEINCONTEXT d5541a7b574f0a8d93eaf7eb0567128e -->
<!-- BUGLINE 385 -->
<!-- BUGCOLUMN 9 -->
<!-- BUGPATHLENGTH 1 -->
<!-- BUGMETAEND -->
<!-- REPORTHEADER -->
< h3 > Bug Summary< / h3 >
< table class = "simpletable" >
2017-01-28 21:14:35 +00:00
< tr > < td class = "rowname" > File:< / td > < td > dconv/dprint.cpp< / td > < / tr >
2017-01-11 19:58:08 +00:00
< tr > < td class = "rowname" > Location:< / td > < td > < a href = "#EndPath" > line 385, column 9< / a > < / td > < / tr >
< tr > < td class = "rowname" > Description:< / td > < td > Value stored to 'bufferSize' is never read< / td > < / tr >
< / table >
<!-- REPORTSUMMARYEXTRA -->
< h3 > Annotated Source Code< / h3 >
< table class = "code" >
< tr > < td class = "num" id = "LN1" > 1< / td > < td class = "line" > < span class = 'comment' > /******************************************************************************< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN2" > 2< / td > < td class = "line" > < span class = 'comment' > Copyright (c) 2014 Ryan Juckett< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN3" > 3< / td > < td class = "line" > < span class = 'comment' > http://www.ryanjuckett.com/< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN4" > 4< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN5" > 5< / td > < td class = "line" > < span class = 'comment' > This software is provided 'as-is', without any express or implied< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN6" > 6< / td > < td class = "line" > < span class = 'comment' > warranty. In no event will the authors be held liable for any damages< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN7" > 7< / td > < td class = "line" > < span class = 'comment' > arising from the use of this software.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN8" > 8< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN9" > 9< / td > < td class = "line" > < span class = 'comment' > Permission is granted to anyone to use this software for any purpose,< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN10" > 10< / td > < td class = "line" > < span class = 'comment' > including commercial applications, and to alter it and redistribute it< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN11" > 11< / td > < td class = "line" > < span class = 'comment' > freely, subject to the following restrictions:< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN12" > 12< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN13" > 13< / td > < td class = "line" > < span class = 'comment' > 1. The origin of this software must not be misrepresented; you must not< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN14" > 14< / td > < td class = "line" > < span class = 'comment' > claim that you wrote the original software. If you use this software< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN15" > 15< / td > < td class = "line" > < span class = 'comment' > in a product, an acknowledgment in the product documentation would be< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN16" > 16< / td > < td class = "line" > < span class = 'comment' > appreciated but is not required.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN17" > 17< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN18" > 18< / td > < td class = "line" > < span class = 'comment' > 2. Altered source versions must be plainly marked as such, and must not be< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN19" > 19< / td > < td class = "line" > < span class = 'comment' > misrepresented as being the original software.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN20" > 20< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN21" > 21< / td > < td class = "line" > < span class = 'comment' > 3. This notice may not be removed or altered from any source< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN22" > 22< / td > < td class = "line" > < span class = 'comment' > distribution.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN23" > 23< / td > < td class = "line" > < span class = 'comment' > *******************************************************************************< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN24" > 24< / td > < td class = "line" > < span class = 'comment' > Copyright (c) 2015-2017 Carsten Sonne Larsen < cs@innolan.dk> < / span > < / td > < / tr >
< tr > < td class = "num" id = "LN25" > 25< / td > < td class = "line" > < span class = 'comment' > All rights reserved.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN26" > 26< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN27" > 27< / td > < td class = "line" > < span class = 'comment' > Redistribution and use in source and binary forms, with or without< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN28" > 28< / td > < td class = "line" > < span class = 'comment' > modification, are permitted provided that the following conditions< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN29" > 29< / td > < td class = "line" > < span class = 'comment' > are met:< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN30" > 30< / td > < td class = "line" > < span class = 'comment' > 1. Redistributions of source code must retain the above copyright< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN31" > 31< / td > < td class = "line" > < span class = 'comment' > notice, this list of conditions and the following disclaimer.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN32" > 32< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN33" > 33< / td > < td class = "line" > < span class = 'comment' > 2. Redistributions in binary form must reproduce the above copyright< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN34" > 34< / td > < td class = "line" > < span class = 'comment' > notice, this list of conditions and the following disclaimer in the< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN35" > 35< / td > < td class = "line" > < span class = 'comment' > documentation and/or other materials provided with the distribution.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN36" > 36< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN37" > 37< / td > < td class = "line" > < span class = 'comment' > THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN38" > 38< / td > < td class = "line" > < span class = 'comment' > IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN39" > 39< / td > < td class = "line" > < span class = 'comment' > OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN40" > 40< / td > < td class = "line" > < span class = 'comment' > IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN41" > 41< / td > < td class = "line" > < span class = 'comment' > INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN42" > 42< / td > < td class = "line" > < span class = 'comment' > NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN43" > 43< / td > < td class = "line" > < span class = 'comment' > DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN44" > 44< / td > < td class = "line" > < span class = 'comment' > THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN45" > 45< / td > < td class = "line" > < span class = 'comment' > (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN46" > 46< / td > < td class = "line" > < span class = 'comment' > THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN47" > 47< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN48" > 48< / td > < td class = "line" > < span class = 'comment' > The origin source code can be obtained from:< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN49" > 49< / td > < td class = "line" > < span class = 'comment' > http://www.ryanjuckett.com/< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN50" > 50< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN51" > 51< / td > < td class = "line" > < span class = 'comment' > ******************************************************************************/< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN52" > 52< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN53" > 53< / td > < td class = "line" > < span class = 'directive' > #include "clib.h"< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN54" > 54< / td > < td class = "line" > < span class = 'directive' > #include "dmath.h"< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN55" > 55< / td > < td class = "line" > < span class = 'directive' > #include "dprint.h"< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN56" > 56< / td > < td class = "line" > < span class = 'directive' > #include "dragon4.h"< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN57" > 57< / td > < td class = "line" > < span class = 'directive' > #include < dstandard.h> < / span > < / td > < / tr >
< tr > < td class = "num" id = "LN58" > 58< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN59" > 59< / td > < td class = "line" > < span class = 'directive' > #define < span class = 'macro' > memcpy< span class = 'expansion' > MemCopy< / span > < / span > MemCopy< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN60" > 60< / td > < td class = "line" > < span class = 'directive' > #define < span class = 'macro' > memmove< span class = 'expansion' > MemCopy< / span > < / span > MemCopy< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN61" > 61< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN62" > 62< / td > < td class = "line" > < span class = 'comment' > //******************************************************************************< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN63" > 63< / td > < td class = "line" > < span class = 'comment' > // Helper union to decompose a 32-bit IEEE float.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN64" > 64< / td > < td class = "line" > < span class = 'comment' > // sign: 1 bit< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN65" > 65< / td > < td class = "line" > < span class = 'comment' > // exponent: 8 bits< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN66" > 66< / td > < td class = "line" > < span class = 'comment' > // mantissa: 23 bits< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN67" > 67< / td > < td class = "line" > < span class = 'comment' > //******************************************************************************< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN68" > 68< / td > < td class = "line" > < span class = 'keyword' > union< / span > tFloatUnion32< / td > < / tr >
< tr > < td class = "num" id = "LN69" > 69< / td > < td class = "line" > {< / td > < / tr >
< tr > < td class = "num" id = "LN70" > 70< / td > < td class = "line" > tB IsNegative() < span class = 'keyword' > const< / span > {< / td > < / tr >
< tr > < td class = "num" id = "LN71" > 71< / td > < td class = "line" > < span class = 'keyword' > return< / span > (m_integer > > 31) != 0;< / td > < / tr >
< tr > < td class = "num" id = "LN72" > 72< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN73" > 73< / td > < td class = "line" > tU32 GetExponent() < span class = 'keyword' > const< / span > {< / td > < / tr >
< tr > < td class = "num" id = "LN74" > 74< / td > < td class = "line" > < span class = 'keyword' > return< / span > (m_integer > > 23) & 0xFF;< / td > < / tr >
< tr > < td class = "num" id = "LN75" > 75< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN76" > 76< / td > < td class = "line" > tU32 GetMantissa() < span class = 'keyword' > const< / span > {< / td > < / tr >
< tr > < td class = "num" id = "LN77" > 77< / td > < td class = "line" > < span class = 'keyword' > return< / span > m_integer & 0x7FFFFF;< / td > < / tr >
< tr > < td class = "num" id = "LN78" > 78< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN79" > 79< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN80" > 80< / td > < td class = "line" > tF32 m_floatingPoint;< / td > < / tr >
< tr > < td class = "num" id = "LN81" > 81< / td > < td class = "line" > tU32 m_integer;< / td > < / tr >
< tr > < td class = "num" id = "LN82" > 82< / td > < td class = "line" > };< / td > < / tr >
< tr > < td class = "num" id = "LN83" > 83< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN84" > 84< / td > < td class = "line" > < span class = 'comment' > //******************************************************************************< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN85" > 85< / td > < td class = "line" > < span class = 'comment' > // Helper union to decompose a 64-bit IEEE float.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN86" > 86< / td > < td class = "line" > < span class = 'comment' > // sign: 1 bit< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN87" > 87< / td > < td class = "line" > < span class = 'comment' > // exponent: 11 bits< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN88" > 88< / td > < td class = "line" > < span class = 'comment' > // mantissa: 52 bits< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN89" > 89< / td > < td class = "line" > < span class = 'comment' > //******************************************************************************< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN90" > 90< / td > < td class = "line" > < span class = 'keyword' > union< / span > tFloatUnion64< / td > < / tr >
< tr > < td class = "num" id = "LN91" > 91< / td > < td class = "line" > {< / td > < / tr >
< tr > < td class = "num" id = "LN92" > 92< / td > < td class = "line" > tB IsNegative() < span class = 'keyword' > const< / span > {< / td > < / tr >
< tr > < td class = "num" id = "LN93" > 93< / td > < td class = "line" > < span class = 'keyword' > return< / span > (m_integer > > 63) != 0;< / td > < / tr >
< tr > < td class = "num" id = "LN94" > 94< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN95" > 95< / td > < td class = "line" > tU32 GetExponent() < span class = 'keyword' > const< / span > {< / td > < / tr >
< tr > < td class = "num" id = "LN96" > 96< / td > < td class = "line" > < span class = 'keyword' > return< / span > (m_integer > > 52) & 0x7FF;< / td > < / tr >
< tr > < td class = "num" id = "LN97" > 97< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN98" > 98< / td > < td class = "line" > tU64 GetMantissa() < span class = 'keyword' > const< / span > {< / td > < / tr >
< tr > < td class = "num" id = "LN99" > 99< / td > < td class = "line" > < span class = 'keyword' > return< / span > m_integer & 0xFFFFFFFFFFFFFull;< / td > < / tr >
< tr > < td class = "num" id = "LN100" > 100< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN101" > 101< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN102" > 102< / td > < td class = "line" > tF64 m_floatingPoint;< / td > < / tr >
< tr > < td class = "num" id = "LN103" > 103< / td > < td class = "line" > tU64 m_integer;< / td > < / tr >
< tr > < td class = "num" id = "LN104" > 104< / td > < td class = "line" > };< / td > < / tr >
< tr > < td class = "num" id = "LN105" > 105< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN106" > 106< / td > < td class = "line" > < span class = 'comment' > //******************************************************************************< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN107" > 107< / td > < td class = "line" > < span class = 'comment' > // Outputs the positive number with positional notation: ddddd.dddd< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN108" > 108< / td > < td class = "line" > < span class = 'comment' > // The output is always NUL terminated and the output length (not including the< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN109" > 109< / td > < td class = "line" > < span class = 'comment' > // NUL) is returned.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN110" > 110< / td > < td class = "line" > < span class = 'comment' > //******************************************************************************< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN111" > 111< / td > < td class = "line" > tU32 FormatPositional< / td > < / tr >
< tr > < td class = "num" id = "LN112" > 112< / td > < td class = "line" > (< / td > < / tr >
< tr > < td class = "num" id = "LN113" > 113< / td > < td class = "line" > tC8 * pOutBuffer, < span class = 'comment' > // buffer to output into< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN114" > 114< / td > < td class = "line" > tU32 bufferSize, < span class = 'comment' > // maximum characters that can be printed to pOutBuffer< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN115" > 115< / td > < td class = "line" > tU64 mantissa, < span class = 'comment' > // value significand< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN116" > 116< / td > < td class = "line" > tS32 exponent, < span class = 'comment' > // value exponent in base 2< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN117" > 117< / td > < td class = "line" > tU32 mantissaHighBitIdx, < span class = 'comment' > // index of the highest set mantissa bit< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN118" > 118< / td > < td class = "line" > tB hasUnequalMargins, < span class = 'comment' > // is the high margin twice as large as the low margin< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN119" > 119< / td > < td class = "line" > tS32 precision, < span class = 'comment' > // Negative prints as many digits as are needed for a unique< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN120" > 120< / td > < td class = "line" > tC8 decimalPoint < span class = 'comment' > // Character before the decimals< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN121" > 121< / td > < td class = "line" > < span class = 'comment' > // number. Positive specifies the maximum number of< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN122" > 122< / td > < td class = "line" > < span class = 'comment' > // significant digits to print past the decimal point.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN123" > 123< / td > < td class = "line" > )< / td > < / tr >
< tr > < td class = "num" id = "LN124" > 124< / td > < td class = "line" > {< / td > < / tr >
< tr > < td class = "num" id = "LN125" > 125< / td > < td class = "line" > RJ_ASSERT(bufferSize > 0);< / td > < / tr >
< tr > < td class = "num" id = "LN126" > 126< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN127" > 127< / td > < td class = "line" > tS32 printExponent;< / td > < / tr >
< tr > < td class = "num" id = "LN128" > 128< / td > < td class = "line" > tU32 numPrintDigits;< / td > < / tr >
< tr > < td class = "num" id = "LN129" > 129< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN130" > 130< / td > < td class = "line" > tU32 maxPrintLen = bufferSize - 1;< / td > < / tr >
< tr > < td class = "num" id = "LN131" > 131< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN132" > 132< / td > < td class = "line" > < span class = 'keyword' > if< / span > (precision < 0)< / td > < / tr >
< tr > < td class = "num" id = "LN133" > 133< / td > < td class = "line" > {< / td > < / tr >
< tr > < td class = "num" id = "LN134" > 134< / td > < td class = "line" > numPrintDigits = Dragon4( mantissa,< / td > < / tr >
< tr > < td class = "num" id = "LN135" > 135< / td > < td class = "line" > exponent,< / td > < / tr >
< tr > < td class = "num" id = "LN136" > 136< / td > < td class = "line" > mantissaHighBitIdx,< / td > < / tr >
< tr > < td class = "num" id = "LN137" > 137< / td > < td class = "line" > hasUnequalMargins,< / td > < / tr >
< tr > < td class = "num" id = "LN138" > 138< / td > < td class = "line" > CutoffMode_Unique,< / td > < / tr >
< tr > < td class = "num" id = "LN139" > 139< / td > < td class = "line" > 0,< / td > < / tr >
< tr > < td class = "num" id = "LN140" > 140< / td > < td class = "line" > pOutBuffer,< / td > < / tr >
< tr > < td class = "num" id = "LN141" > 141< / td > < td class = "line" > maxPrintLen,< / td > < / tr >
< tr > < td class = "num" id = "LN142" > 142< / td > < td class = "line" > & printExponent );< / td > < / tr >
< tr > < td class = "num" id = "LN143" > 143< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN144" > 144< / td > < td class = "line" > < span class = 'keyword' > else< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN145" > 145< / td > < td class = "line" > {< / td > < / tr >
< tr > < td class = "num" id = "LN146" > 146< / td > < td class = "line" > numPrintDigits = Dragon4( mantissa,< / td > < / tr >
< tr > < td class = "num" id = "LN147" > 147< / td > < td class = "line" > exponent,< / td > < / tr >
< tr > < td class = "num" id = "LN148" > 148< / td > < td class = "line" > mantissaHighBitIdx,< / td > < / tr >
< tr > < td class = "num" id = "LN149" > 149< / td > < td class = "line" > hasUnequalMargins,< / td > < / tr >
< tr > < td class = "num" id = "LN150" > 150< / td > < td class = "line" > CutoffMode_FractionLength,< / td > < / tr >
< tr > < td class = "num" id = "LN151" > 151< / td > < td class = "line" > precision,< / td > < / tr >
< tr > < td class = "num" id = "LN152" > 152< / td > < td class = "line" > pOutBuffer,< / td > < / tr >
< tr > < td class = "num" id = "LN153" > 153< / td > < td class = "line" > maxPrintLen,< / td > < / tr >
< tr > < td class = "num" id = "LN154" > 154< / td > < td class = "line" > & printExponent );< / td > < / tr >
< tr > < td class = "num" id = "LN155" > 155< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN156" > 156< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN157" > 157< / td > < td class = "line" > RJ_ASSERT( numPrintDigits > 0 );< / td > < / tr >
< tr > < td class = "num" id = "LN158" > 158< / td > < td class = "line" > RJ_ASSERT( numPrintDigits < = bufferSize );< / td > < / tr >
< tr > < td class = "num" id = "LN159" > 159< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN160" > 160< / td > < td class = "line" > < span class = 'comment' > // track the number of digits past the decimal point that have been printed< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN161" > 161< / td > < td class = "line" > tU32 numFractionDigits = 0;< / td > < / tr >
< tr > < td class = "num" id = "LN162" > 162< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN163" > 163< / td > < td class = "line" > < span class = 'comment' > // if output has a whole number< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN164" > 164< / td > < td class = "line" > < span class = 'keyword' > if< / span > (printExponent > = 0)< / td > < / tr >
< tr > < td class = "num" id = "LN165" > 165< / td > < td class = "line" > {< / td > < / tr >
< tr > < td class = "num" id = "LN166" > 166< / td > < td class = "line" > < span class = 'comment' > // leave the whole number at the start of the buffer< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN167" > 167< / td > < td class = "line" > tU32 numWholeDigits = printExponent+1;< / td > < / tr >
< tr > < td class = "num" id = "LN168" > 168< / td > < td class = "line" > < span class = 'keyword' > if< / span > (numPrintDigits < numWholeDigits)< / td > < / tr >
< tr > < td class = "num" id = "LN169" > 169< / td > < td class = "line" > {< / td > < / tr >
< tr > < td class = "num" id = "LN170" > 170< / td > < td class = "line" > < span class = 'comment' > // don't overflow the buffer< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN171" > 171< / td > < td class = "line" > < span class = 'keyword' > if< / span > (numWholeDigits > maxPrintLen)< / td > < / tr >
< tr > < td class = "num" id = "LN172" > 172< / td > < td class = "line" > numWholeDigits = maxPrintLen;< / td > < / tr >
< tr > < td class = "num" id = "LN173" > 173< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN174" > 174< / td > < td class = "line" > < span class = 'comment' > // add trailing zeros up to the decimal point< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN175" > 175< / td > < td class = "line" > < span class = 'keyword' > for< / span > ( ; numPrintDigits < numWholeDigits; ++numPrintDigits )< / td > < / tr >
< tr > < td class = "num" id = "LN176" > 176< / td > < td class = "line" > pOutBuffer[numPrintDigits] = '0';< / td > < / tr >
< tr > < td class = "num" id = "LN177" > 177< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN178" > 178< / td > < td class = "line" > < span class = 'comment' > // insert the decimal point prior to the fraction< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN179" > 179< / td > < td class = "line" > < span class = 'keyword' > else< / span > < span class = 'keyword' > if< / span > (numPrintDigits > (tU32)numWholeDigits)< / td > < / tr >
< tr > < td class = "num" id = "LN180" > 180< / td > < td class = "line" > {< / td > < / tr >
< tr > < td class = "num" id = "LN181" > 181< / td > < td class = "line" > numFractionDigits = numPrintDigits - numWholeDigits;< / td > < / tr >
< tr > < td class = "num" id = "LN182" > 182< / td > < td class = "line" > tU32 maxFractionDigits = maxPrintLen - numWholeDigits - 1;< / td > < / tr >
< tr > < td class = "num" id = "LN183" > 183< / td > < td class = "line" > < span class = 'keyword' > if< / span > (numFractionDigits > maxFractionDigits)< / td > < / tr >
< tr > < td class = "num" id = "LN184" > 184< / td > < td class = "line" > numFractionDigits = maxFractionDigits;< / td > < / tr >
< tr > < td class = "num" id = "LN185" > 185< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN186" > 186< / td > < td class = "line" > < span class = 'macro' > memmove< span class = 'expansion' > MemCopy< / span > < / span > (pOutBuffer + numWholeDigits + 1, pOutBuffer + numWholeDigits, numFractionDigits);< / td > < / tr >
< tr > < td class = "num" id = "LN187" > 187< / td > < td class = "line" > pOutBuffer[numWholeDigits] = decimalPoint;< / td > < / tr >
< tr > < td class = "num" id = "LN188" > 188< / td > < td class = "line" > numPrintDigits = numWholeDigits + 1 + numFractionDigits;< / td > < / tr >
< tr > < td class = "num" id = "LN189" > 189< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN190" > 190< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN191" > 191< / td > < td class = "line" > < span class = 'keyword' > else< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN192" > 192< / td > < td class = "line" > {< / td > < / tr >
< tr > < td class = "num" id = "LN193" > 193< / td > < td class = "line" > < span class = 'comment' > // shift out the fraction to make room for the leading zeros< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN194" > 194< / td > < td class = "line" > < span class = 'keyword' > if< / span > (maxPrintLen > 2)< / td > < / tr >
< tr > < td class = "num" id = "LN195" > 195< / td > < td class = "line" > {< / td > < / tr >
< tr > < td class = "num" id = "LN196" > 196< / td > < td class = "line" > tU32 numFractionZeros = (tU32)-printExponent - 1;< / td > < / tr >
< tr > < td class = "num" id = "LN197" > 197< / td > < td class = "line" > tU32 maxFractionZeros = maxPrintLen - 2;< / td > < / tr >
< tr > < td class = "num" id = "LN198" > 198< / td > < td class = "line" > < span class = 'keyword' > if< / span > (numFractionZeros > maxFractionZeros)< / td > < / tr >
< tr > < td class = "num" id = "LN199" > 199< / td > < td class = "line" > numFractionZeros = maxFractionZeros;< / td > < / tr >
< tr > < td class = "num" id = "LN200" > 200< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN201" > 201< / td > < td class = "line" > tU32 digitsStartIdx = 2 + numFractionZeros;< / td > < / tr >
< tr > < td class = "num" id = "LN202" > 202< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN203" > 203< / td > < td class = "line" > < span class = 'comment' > // shift the significant digits right such that there is room for leading zeros< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN204" > 204< / td > < td class = "line" > numFractionDigits = numPrintDigits;< / td > < / tr >
< tr > < td class = "num" id = "LN205" > 205< / td > < td class = "line" > tU32 maxFractionDigits = maxPrintLen - digitsStartIdx;< / td > < / tr >
< tr > < td class = "num" id = "LN206" > 206< / td > < td class = "line" > < span class = 'keyword' > if< / span > (numFractionDigits > maxFractionDigits)< / td > < / tr >
< tr > < td class = "num" id = "LN207" > 207< / td > < td class = "line" > numFractionDigits = maxFractionDigits;< / td > < / tr >
< tr > < td class = "num" id = "LN208" > 208< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN209" > 209< / td > < td class = "line" > < span class = 'macro' > memmove< span class = 'expansion' > MemCopy< / span > < / span > (pOutBuffer + digitsStartIdx, pOutBuffer, numFractionDigits);< / td > < / tr >
< tr > < td class = "num" id = "LN210" > 210< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN211" > 211< / td > < td class = "line" > < span class = 'comment' > // insert the leading zeros< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN212" > 212< / td > < td class = "line" > < span class = 'keyword' > for< / span > (tU32 i = 2; i < digitsStartIdx; ++i)< / td > < / tr >
< tr > < td class = "num" id = "LN213" > 213< / td > < td class = "line" > pOutBuffer[i] = '0';< / td > < / tr >
< tr > < td class = "num" id = "LN214" > 214< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN215" > 215< / td > < td class = "line" > < span class = 'comment' > // update the counts< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN216" > 216< / td > < td class = "line" > numFractionDigits += numFractionZeros;< / td > < / tr >
< tr > < td class = "num" id = "LN217" > 217< / td > < td class = "line" > numPrintDigits = numFractionDigits;< / td > < / tr >
< tr > < td class = "num" id = "LN218" > 218< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN219" > 219< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN220" > 220< / td > < td class = "line" > < span class = 'comment' > // add the decimal point< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN221" > 221< / td > < td class = "line" > < span class = 'keyword' > if< / span > (maxPrintLen > 1)< / td > < / tr >
< tr > < td class = "num" id = "LN222" > 222< / td > < td class = "line" > {< / td > < / tr >
< tr > < td class = "num" id = "LN223" > 223< / td > < td class = "line" > pOutBuffer[1] = decimalPoint;< / td > < / tr >
< tr > < td class = "num" id = "LN224" > 224< / td > < td class = "line" > numPrintDigits += 1;< / td > < / tr >
< tr > < td class = "num" id = "LN225" > 225< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN226" > 226< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN227" > 227< / td > < td class = "line" > < span class = 'comment' > // add the initial zero< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN228" > 228< / td > < td class = "line" > < span class = 'keyword' > if< / span > (maxPrintLen > 0)< / td > < / tr >
< tr > < td class = "num" id = "LN229" > 229< / td > < td class = "line" > {< / td > < / tr >
< tr > < td class = "num" id = "LN230" > 230< / td > < td class = "line" > pOutBuffer[0] = '0';< / td > < / tr >
< tr > < td class = "num" id = "LN231" > 231< / td > < td class = "line" > numPrintDigits += 1;< / td > < / tr >
< tr > < td class = "num" id = "LN232" > 232< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN233" > 233< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN234" > 234< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN235" > 235< / td > < td class = "line" > < span class = 'comment' > // add trailing zeros up to precision length< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN236" > 236< / td > < td class = "line" > < span class = 'keyword' > if< / span > (precision > (tS32)numFractionDigits & & numPrintDigits < maxPrintLen)< / td > < / tr >
< tr > < td class = "num" id = "LN237" > 237< / td > < td class = "line" > {< / td > < / tr >
< tr > < td class = "num" id = "LN238" > 238< / td > < td class = "line" > < span class = 'comment' > // add a decimal point if this is the first fractional digit we are printing< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN239" > 239< / td > < td class = "line" > < span class = 'keyword' > if< / span > (numFractionDigits == 0)< / td > < / tr >
< tr > < td class = "num" id = "LN240" > 240< / td > < td class = "line" > {< / td > < / tr >
< tr > < td class = "num" id = "LN241" > 241< / td > < td class = "line" > pOutBuffer[numPrintDigits++] = decimalPoint;< / td > < / tr >
< tr > < td class = "num" id = "LN242" > 242< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN243" > 243< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN244" > 244< / td > < td class = "line" > < span class = 'comment' > // compute the number of trailing zeros needed< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN245" > 245< / td > < td class = "line" > tU32 totalDigits = numPrintDigits + (precision - numFractionDigits);< / td > < / tr >
< tr > < td class = "num" id = "LN246" > 246< / td > < td class = "line" > < span class = 'keyword' > if< / span > (totalDigits > maxPrintLen)< / td > < / tr >
< tr > < td class = "num" id = "LN247" > 247< / td > < td class = "line" > totalDigits = maxPrintLen;< / td > < / tr >
< tr > < td class = "num" id = "LN248" > 248< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN249" > 249< / td > < td class = "line" > < span class = 'keyword' > for< / span > ( ; numPrintDigits < totalDigits; ++numPrintDigits )< / td > < / tr >
< tr > < td class = "num" id = "LN250" > 250< / td > < td class = "line" > pOutBuffer[numPrintDigits] = '0';< / td > < / tr >
< tr > < td class = "num" id = "LN251" > 251< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN252" > 252< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN253" > 253< / td > < td class = "line" > < span class = 'comment' > // terminate the buffer< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN254" > 254< / td > < td class = "line" > RJ_ASSERT( numPrintDigits < = maxPrintLen );< / td > < / tr >
< tr > < td class = "num" id = "LN255" > 255< / td > < td class = "line" > pOutBuffer[numPrintDigits] = '\0';< / td > < / tr >
< tr > < td class = "num" id = "LN256" > 256< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN257" > 257< / td > < td class = "line" > < span class = 'keyword' > return< / span > numPrintDigits;< / td > < / tr >
< tr > < td class = "num" id = "LN258" > 258< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN259" > 259< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN260" > 260< / td > < td class = "line" > < span class = 'comment' > //******************************************************************************< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN261" > 261< / td > < td class = "line" > < span class = 'comment' > // Outputs the positive number with scientific notation: d.dddde[sign]ddd< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN262" > 262< / td > < td class = "line" > < span class = 'comment' > // The output is always NUL terminated and the output length (not including the< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN263" > 263< / td > < td class = "line" > < span class = 'comment' > // NUL) is returned.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN264" > 264< / td > < td class = "line" > < span class = 'comment' > //******************************************************************************< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN265" > 265< / td > < td class = "line" > tU32 FormatScientific< / td > < / tr >
< tr > < td class = "num" id = "LN266" > 266< / td > < td class = "line" > (< / td > < / tr >
< tr > < td class = "num" id = "LN267" > 267< / td > < td class = "line" > tC8 * pOutBuffer, < span class = 'comment' > // buffer to output into< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN268" > 268< / td > < td class = "line" > tU32 bufferSize, < span class = 'comment' > // maximum characters that can be printed to pOutBuffer< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN269" > 269< / td > < td class = "line" > tU64 mantissa, < span class = 'comment' > // value significand< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN270" > 270< / td > < td class = "line" > tS32 exponent, < span class = 'comment' > // value exponent in base 2< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN271" > 271< / td > < td class = "line" > tU32 mantissaHighBitIdx, < span class = 'comment' > // index of the highest set mantissa bit< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN272" > 272< / td > < td class = "line" > tB hasUnequalMargins, < span class = 'comment' > // is the high margin twice as large as the low margin< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN273" > 273< / td > < td class = "line" > tS32 precision, < span class = 'comment' > // Negative prints as many digits as are needed for a unique< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN274" > 274< / td > < td class = "line" > tC8 decimalPoint < span class = 'comment' > // Character before the decimals< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN275" > 275< / td > < td class = "line" > < span class = 'comment' > // number. Positive specifies the maximum number of< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN276" > 276< / td > < td class = "line" > < span class = 'comment' > // significant digits to print past the decimal point.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN277" > 277< / td > < td class = "line" > )< / td > < / tr >
< tr > < td class = "num" id = "LN278" > 278< / td > < td class = "line" > {< / td > < / tr >
< tr > < td class = "num" id = "LN279" > 279< / td > < td class = "line" > RJ_ASSERT(bufferSize > 0);< / td > < / tr >
< tr > < td class = "num" id = "LN280" > 280< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN281" > 281< / td > < td class = "line" > tS32 printExponent;< / td > < / tr >
< tr > < td class = "num" id = "LN282" > 282< / td > < td class = "line" > tU32 numPrintDigits;< / td > < / tr >
< tr > < td class = "num" id = "LN283" > 283< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN284" > 284< / td > < td class = "line" > < span class = 'keyword' > if< / span > (precision < 0)< / td > < / tr >
< tr > < td class = "num" id = "LN285" > 285< / td > < td class = "line" > {< / td > < / tr >
< tr > < td class = "num" id = "LN286" > 286< / td > < td class = "line" > numPrintDigits = Dragon4( mantissa,< / td > < / tr >
< tr > < td class = "num" id = "LN287" > 287< / td > < td class = "line" > exponent,< / td > < / tr >
< tr > < td class = "num" id = "LN288" > 288< / td > < td class = "line" > mantissaHighBitIdx,< / td > < / tr >
< tr > < td class = "num" id = "LN289" > 289< / td > < td class = "line" > hasUnequalMargins,< / td > < / tr >
< tr > < td class = "num" id = "LN290" > 290< / td > < td class = "line" > CutoffMode_Unique,< / td > < / tr >
< tr > < td class = "num" id = "LN291" > 291< / td > < td class = "line" > 0,< / td > < / tr >
< tr > < td class = "num" id = "LN292" > 292< / td > < td class = "line" > pOutBuffer,< / td > < / tr >
< tr > < td class = "num" id = "LN293" > 293< / td > < td class = "line" > bufferSize,< / td > < / tr >
< tr > < td class = "num" id = "LN294" > 294< / td > < td class = "line" > & printExponent );< / td > < / tr >
< tr > < td class = "num" id = "LN295" > 295< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN296" > 296< / td > < td class = "line" > < span class = 'keyword' > else< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN297" > 297< / td > < td class = "line" > {< / td > < / tr >
< tr > < td class = "num" id = "LN298" > 298< / td > < td class = "line" > numPrintDigits = Dragon4( mantissa,< / td > < / tr >
< tr > < td class = "num" id = "LN299" > 299< / td > < td class = "line" > exponent,< / td > < / tr >
< tr > < td class = "num" id = "LN300" > 300< / td > < td class = "line" > mantissaHighBitIdx,< / td > < / tr >
< tr > < td class = "num" id = "LN301" > 301< / td > < td class = "line" > hasUnequalMargins,< / td > < / tr >
< tr > < td class = "num" id = "LN302" > 302< / td > < td class = "line" > CutoffMode_TotalLength,< / td > < / tr >
< tr > < td class = "num" id = "LN303" > 303< / td > < td class = "line" > precision + 1,< / td > < / tr >
< tr > < td class = "num" id = "LN304" > 304< / td > < td class = "line" > pOutBuffer,< / td > < / tr >
< tr > < td class = "num" id = "LN305" > 305< / td > < td class = "line" > bufferSize,< / td > < / tr >
< tr > < td class = "num" id = "LN306" > 306< / td > < td class = "line" > & printExponent );< / td > < / tr >
< tr > < td class = "num" id = "LN307" > 307< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN308" > 308< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN309" > 309< / td > < td class = "line" > RJ_ASSERT( numPrintDigits > 0 );< / td > < / tr >
< tr > < td class = "num" id = "LN310" > 310< / td > < td class = "line" > RJ_ASSERT( numPrintDigits < = bufferSize );< / td > < / tr >
< tr > < td class = "num" id = "LN311" > 311< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN312" > 312< / td > < td class = "line" > tC8 * pCurOut = pOutBuffer;< / td > < / tr >
< tr > < td class = "num" id = "LN313" > 313< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN314" > 314< / td > < td class = "line" > < span class = 'comment' > // keep the whole number as the first digit< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN315" > 315< / td > < td class = "line" > < span class = 'keyword' > if< / span > (bufferSize > 1)< / td > < / tr >
< tr > < td class = "num" id = "LN316" > 316< / td > < td class = "line" > {< / td > < / tr >
< tr > < td class = "num" id = "LN317" > 317< / td > < td class = "line" > pCurOut += 1;< / td > < / tr >
< tr > < td class = "num" id = "LN318" > 318< / td > < td class = "line" > bufferSize -= 1;< / td > < / tr >
< tr > < td class = "num" id = "LN319" > 319< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN320" > 320< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN321" > 321< / td > < td class = "line" > < span class = 'comment' > // insert the decimal point prior to the fractional number< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN322" > 322< / td > < td class = "line" > tU32 numFractionDigits = numPrintDigits-1;< / td > < / tr >
< tr > < td class = "num" id = "LN323" > 323< / td > < td class = "line" > < span class = 'keyword' > if< / span > (numFractionDigits > 0 & & bufferSize > 1)< / td > < / tr >
< tr > < td class = "num" id = "LN324" > 324< / td > < td class = "line" > {< / td > < / tr >
< tr > < td class = "num" id = "LN325" > 325< / td > < td class = "line" > tU32 maxFractionDigits = bufferSize-2;< / td > < / tr >
< tr > < td class = "num" id = "LN326" > 326< / td > < td class = "line" > < span class = 'keyword' > if< / span > (numFractionDigits > maxFractionDigits)< / td > < / tr >
< tr > < td class = "num" id = "LN327" > 327< / td > < td class = "line" > numFractionDigits = maxFractionDigits;< / td > < / tr >
< tr > < td class = "num" id = "LN328" > 328< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN329" > 329< / td > < td class = "line" > < span class = 'macro' > memmove< span class = 'expansion' > MemCopy< / span > < / span > (pCurOut + 1, pCurOut, numFractionDigits);< / td > < / tr >
< tr > < td class = "num" id = "LN330" > 330< / td > < td class = "line" > pCurOut[0] = decimalPoint;< / td > < / tr >
< tr > < td class = "num" id = "LN331" > 331< / td > < td class = "line" > pCurOut += (1 + numFractionDigits);< / td > < / tr >
< tr > < td class = "num" id = "LN332" > 332< / td > < td class = "line" > bufferSize -= (1 + numFractionDigits);< / td > < / tr >
< tr > < td class = "num" id = "LN333" > 333< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN334" > 334< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN335" > 335< / td > < td class = "line" > < span class = 'comment' > // add trailing zeros up to precision length< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN336" > 336< / td > < td class = "line" > < span class = 'keyword' > if< / span > (precision > (tS32)numFractionDigits & & bufferSize > 1)< / td > < / tr >
< tr > < td class = "num" id = "LN337" > 337< / td > < td class = "line" > {< / td > < / tr >
< tr > < td class = "num" id = "LN338" > 338< / td > < td class = "line" > < span class = 'comment' > // add a decimal point if this is the first fractional digit we are printing< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN339" > 339< / td > < td class = "line" > < span class = 'keyword' > if< / span > (numFractionDigits == 0)< / td > < / tr >
< tr > < td class = "num" id = "LN340" > 340< / td > < td class = "line" > {< / td > < / tr >
< tr > < td class = "num" id = "LN341" > 341< / td > < td class = "line" > *pCurOut = decimalPoint;< / td > < / tr >
< tr > < td class = "num" id = "LN342" > 342< / td > < td class = "line" > ++pCurOut;< / td > < / tr >
< tr > < td class = "num" id = "LN343" > 343< / td > < td class = "line" > --bufferSize;< / td > < / tr >
< tr > < td class = "num" id = "LN344" > 344< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN345" > 345< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN346" > 346< / td > < td class = "line" > < span class = 'comment' > // compute the number of trailing zeros needed< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN347" > 347< / td > < td class = "line" > tU32 numZeros = (precision - numFractionDigits);< / td > < / tr >
< tr > < td class = "num" id = "LN348" > 348< / td > < td class = "line" > < span class = 'keyword' > if< / span > (numZeros > bufferSize-1)< / td > < / tr >
< tr > < td class = "num" id = "LN349" > 349< / td > < td class = "line" > numZeros = bufferSize-1;< / td > < / tr >
< tr > < td class = "num" id = "LN350" > 350< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN351" > 351< / td > < td class = "line" > < span class = 'keyword' > for< / span > (tC8 * pEnd = pCurOut + numZeros; pCurOut < pEnd; ++pCurOut )< / td > < / tr >
< tr > < td class = "num" id = "LN352" > 352< / td > < td class = "line" > *pCurOut = '0';< / td > < / tr >
< tr > < td class = "num" id = "LN353" > 353< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN354" > 354< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN355" > 355< / td > < td class = "line" > < span class = 'comment' > // print the exponent into a local buffer and copy into output buffer< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN356" > 356< / td > < td class = "line" > < span class = 'keyword' > if< / span > (bufferSize > 1)< / td > < / tr >
< tr > < td class = "num" id = "LN357" > 357< / td > < td class = "line" > {< / td > < / tr >
< tr > < td class = "num" id = "LN358" > 358< / td > < td class = "line" > tC8 exponentBuffer[5];< / td > < / tr >
< tr > < td class = "num" id = "LN359" > 359< / td > < td class = "line" > exponentBuffer[0] = 'e';< / td > < / tr >
< tr > < td class = "num" id = "LN360" > 360< / td > < td class = "line" > < span class = 'keyword' > if< / span > (printExponent > = 0)< / td > < / tr >
< tr > < td class = "num" id = "LN361" > 361< / td > < td class = "line" > {< / td > < / tr >
< tr > < td class = "num" id = "LN362" > 362< / td > < td class = "line" > exponentBuffer[1] = '+';< / td > < / tr >
< tr > < td class = "num" id = "LN363" > 363< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN364" > 364< / td > < td class = "line" > < span class = 'keyword' > else< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN365" > 365< / td > < td class = "line" > {< / td > < / tr >
< tr > < td class = "num" id = "LN366" > 366< / td > < td class = "line" > exponentBuffer[1] = '-';< / td > < / tr >
< tr > < td class = "num" id = "LN367" > 367< / td > < td class = "line" > printExponent = -printExponent;< / td > < / tr >
< tr > < td class = "num" id = "LN368" > 368< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN369" > 369< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN370" > 370< / td > < td class = "line" > RJ_ASSERT(printExponent < 1000);< / td > < / tr >
< tr > < td class = "num" id = "LN371" > 371< / td > < td class = "line" > tU32 hundredsPlace = printExponent / 100;< / td > < / tr >
< tr > < td class = "num" id = "LN372" > 372< / td > < td class = "line" > tU32 tensPlace = (printExponent - hundredsPlace*100) / 10;< / td > < / tr >
< tr > < td class = "num" id = "LN373" > 373< / td > < td class = "line" > tU32 onesPlace = (printExponent - hundredsPlace*100 - tensPlace*10);< / td > < / tr >
< tr > < td class = "num" id = "LN374" > 374< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN375" > 375< / td > < td class = "line" > exponentBuffer[2] = (tC8)('0' + hundredsPlace);< / td > < / tr >
< tr > < td class = "num" id = "LN376" > 376< / td > < td class = "line" > exponentBuffer[3] = (tC8)('0' + tensPlace);< / td > < / tr >
< tr > < td class = "num" id = "LN377" > 377< / td > < td class = "line" > exponentBuffer[4] = (tC8)('0' + onesPlace);< / td > < / tr >
< tr > < td class = "num" id = "LN378" > 378< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN379" > 379< / td > < td class = "line" > < span class = 'comment' > // copy the exponent buffer into the output< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN380" > 380< / td > < td class = "line" > tU32 maxExponentSize = bufferSize-1;< / td > < / tr >
< tr > < td class = "num" id = "LN381" > 381< / td > < td class = "line" > tU32 exponentSize = (5 < maxExponentSize) ? 5 : maxExponentSize;< / td > < / tr >
< tr > < td class = "num" id = "LN382" > 382< / td > < td class = "line" > < span class = 'macro' > memcpy< span class = 'expansion' > MemCopy< / span > < / span > ( pCurOut, exponentBuffer, exponentSize );< / td > < / tr >
< tr > < td class = "num" id = "LN383" > 383< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN384" > 384< / td > < td class = "line" > pCurOut += exponentSize;< / td > < / tr >
< tr > < td class = "num" id = "LN385" > 385< / td > < td class = "line" > bufferSize -= < span class = "mrange" > exponentSize< / span > ;< / td > < / tr >
< tr > < td class = "num" > < / td > < td class = "line" > < div id = "EndPath" class = "msg msgEvent" style = "margin-left:9ex" > Value stored to 'bufferSize' is never read< / div > < / td > < / tr >
< tr > < td class = "num" id = "LN386" > 386< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN387" > 387< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN388" > 388< / td > < td class = "line" > RJ_ASSERT( bufferSize > 0 );< / td > < / tr >
< tr > < td class = "num" id = "LN389" > 389< / td > < td class = "line" > pCurOut[0] = '\0';< / td > < / tr >
< tr > < td class = "num" id = "LN390" > 390< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN391" > 391< / td > < td class = "line" > < span class = 'keyword' > return< / span > pCurOut - pOutBuffer;< / td > < / tr >
< tr > < td class = "num" id = "LN392" > 392< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN393" > 393< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN394" > 394< / td > < td class = "line" > < span class = 'comment' > //******************************************************************************< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN395" > 395< / td > < td class = "line" > < span class = 'comment' > // Print a hexadecimal value with a given width.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN396" > 396< / td > < td class = "line" > < span class = 'comment' > // The output string is always NUL terminated and the string length (not< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN397" > 397< / td > < td class = "line" > < span class = 'comment' > // including the NUL) is returned.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN398" > 398< / td > < td class = "line" > < span class = 'comment' > //******************************************************************************< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN399" > 399< / td > < td class = "line" > < span class = 'keyword' > static< / span > tU32 PrintHex(tC8 * pOutBuffer, tU32 bufferSize, tU64 value, tU32 width)< / td > < / tr >
< tr > < td class = "num" id = "LN400" > 400< / td > < td class = "line" > {< / td > < / tr >
< tr > < td class = "num" id = "LN401" > 401< / td > < td class = "line" > < span class = 'keyword' > const< / span > tC8 digits[] = < span class = 'string_literal' > "0123456789abcdef"< / span > ;< / td > < / tr >
< tr > < td class = "num" id = "LN402" > 402< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN403" > 403< / td > < td class = "line" > RJ_ASSERT(bufferSize > 0);< / td > < / tr >
< tr > < td class = "num" id = "LN404" > 404< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN405" > 405< / td > < td class = "line" > tU32 maxPrintLen = bufferSize-1;< / td > < / tr >
< tr > < td class = "num" id = "LN406" > 406< / td > < td class = "line" > < span class = 'keyword' > if< / span > (width > maxPrintLen)< / td > < / tr >
< tr > < td class = "num" id = "LN407" > 407< / td > < td class = "line" > width = maxPrintLen;< / td > < / tr >
< tr > < td class = "num" id = "LN408" > 408< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN409" > 409< / td > < td class = "line" > tC8 * pCurOut = pOutBuffer;< / td > < / tr >
< tr > < td class = "num" id = "LN410" > 410< / td > < td class = "line" > < span class = 'keyword' > while< / span > (width > 0)< / td > < / tr >
< tr > < td class = "num" id = "LN411" > 411< / td > < td class = "line" > {< / td > < / tr >
< tr > < td class = "num" id = "LN412" > 412< / td > < td class = "line" > --width;< / td > < / tr >
< tr > < td class = "num" id = "LN413" > 413< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN414" > 414< / td > < td class = "line" > tU8 digit = (tU8)((value > > 4ull*(tU64)width) & 0xF);< / td > < / tr >
< tr > < td class = "num" id = "LN415" > 415< / td > < td class = "line" > *pCurOut = digits[digit];< / td > < / tr >
< tr > < td class = "num" id = "LN416" > 416< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN417" > 417< / td > < td class = "line" > ++pCurOut;< / td > < / tr >
< tr > < td class = "num" id = "LN418" > 418< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN419" > 419< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN420" > 420< / td > < td class = "line" > *pCurOut = '\0';< / td > < / tr >
< tr > < td class = "num" id = "LN421" > 421< / td > < td class = "line" > < span class = 'keyword' > return< / span > pCurOut - pOutBuffer;< / td > < / tr >
< tr > < td class = "num" id = "LN422" > 422< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN423" > 423< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN424" > 424< / td > < td class = "line" > < span class = 'comment' > //******************************************************************************< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN425" > 425< / td > < td class = "line" > < span class = 'comment' > // Print special case values for infinities and NaNs.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN426" > 426< / td > < td class = "line" > < span class = 'comment' > // The output string is always NUL terminated and the string length (not< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN427" > 427< / td > < td class = "line" > < span class = 'comment' > // including the NUL) is returned.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN428" > 428< / td > < td class = "line" > < span class = 'comment' > //******************************************************************************< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN429" > 429< / td > < td class = "line" > < span class = 'keyword' > static< / span > tU32 PrintInfNan(tC8 * pOutBuffer, tU32 bufferSize, tU64 mantissa, tU32 mantissaHexWidth)< / td > < / tr >
< tr > < td class = "num" id = "LN430" > 430< / td > < td class = "line" > {< / td > < / tr >
< tr > < td class = "num" id = "LN431" > 431< / td > < td class = "line" > RJ_ASSERT(bufferSize > 0);< / td > < / tr >
< tr > < td class = "num" id = "LN432" > 432< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN433" > 433< / td > < td class = "line" > tU32 maxPrintLen = bufferSize-1;< / td > < / tr >
< tr > < td class = "num" id = "LN434" > 434< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN435" > 435< / td > < td class = "line" > < span class = 'comment' > // Check for infinity< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN436" > 436< / td > < td class = "line" > < span class = 'keyword' > if< / span > (mantissa == 0)< / td > < / tr >
< tr > < td class = "num" id = "LN437" > 437< / td > < td class = "line" > {< / td > < / tr >
< tr > < td class = "num" id = "LN438" > 438< / td > < td class = "line" > < span class = 'comment' > // copy and make sure the buffer is terminated< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN439" > 439< / td > < td class = "line" > tU32 printLen = (3 < maxPrintLen) ? 3 : maxPrintLen;< / td > < / tr >
< tr > < td class = "num" id = "LN440" > 440< / td > < td class = "line" > ::< span class = 'macro' > memcpy< span class = 'expansion' > MemCopy< / span > < / span > ( pOutBuffer, < span class = 'string_literal' > "Inf"< / span > , printLen );< / td > < / tr >
< tr > < td class = "num" id = "LN441" > 441< / td > < td class = "line" > pOutBuffer[printLen] = '\0';< / td > < / tr >
< tr > < td class = "num" id = "LN442" > 442< / td > < td class = "line" > < span class = 'keyword' > return< / span > printLen;< / td > < / tr >
< tr > < td class = "num" id = "LN443" > 443< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN444" > 444< / td > < td class = "line" > < span class = 'keyword' > else< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN445" > 445< / td > < td class = "line" > {< / td > < / tr >
< tr > < td class = "num" id = "LN446" > 446< / td > < td class = "line" > < span class = 'comment' > // copy and make sure the buffer is terminated< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN447" > 447< / td > < td class = "line" > tU32 printLen = (3 < maxPrintLen) ? 3 : maxPrintLen;< / td > < / tr >
< tr > < td class = "num" id = "LN448" > 448< / td > < td class = "line" > ::< span class = 'macro' > memcpy< span class = 'expansion' > MemCopy< / span > < / span > ( pOutBuffer, < span class = 'string_literal' > "NaN"< / span > , printLen );< / td > < / tr >
< tr > < td class = "num" id = "LN449" > 449< / td > < td class = "line" > pOutBuffer[printLen] = '\0';< / td > < / tr >
< tr > < td class = "num" id = "LN450" > 450< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN451" > 451< / td > < td class = "line" > < span class = 'comment' > // append HEX value< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN452" > 452< / td > < td class = "line" > < span class = 'keyword' > if< / span > (maxPrintLen > 3)< / td > < / tr >
< tr > < td class = "num" id = "LN453" > 453< / td > < td class = "line" > printLen += PrintHex(pOutBuffer+3, bufferSize-3, mantissa, mantissaHexWidth);< / td > < / tr >
< tr > < td class = "num" id = "LN454" > 454< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN455" > 455< / td > < td class = "line" > < span class = 'keyword' > return< / span > printLen;< / td > < / tr >
< tr > < td class = "num" id = "LN456" > 456< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN457" > 457< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN458" > 458< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN459" > 459< / td > < td class = "line" > < span class = 'comment' > //******************************************************************************< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN460" > 460< / td > < td class = "line" > < span class = 'comment' > // Print a 32-bit floating-point number as a decimal string.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN461" > 461< / td > < td class = "line" > < span class = 'comment' > // The output string is always NUL terminated and the string length (not< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN462" > 462< / td > < td class = "line" > < span class = 'comment' > // including the NUL) is returned.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN463" > 463< / td > < td class = "line" > < span class = 'comment' > //******************************************************************************< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN464" > 464< / td > < td class = "line" > tU32 PrintFloat32< / td > < / tr >
< tr > < td class = "num" id = "LN465" > 465< / td > < td class = "line" > (< / td > < / tr >
< tr > < td class = "num" id = "LN466" > 466< / td > < td class = "line" > tC8 * pOutBuffer, < span class = 'comment' > // buffer to output into< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN467" > 467< / td > < td class = "line" > tU32 bufferSize, < span class = 'comment' > // size of pOutBuffer< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN468" > 468< / td > < td class = "line" > tF32 value, < span class = 'comment' > // value to print< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN469" > 469< / td > < td class = "line" > tPrintFloatFormat format, < span class = 'comment' > // format to print with< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN470" > 470< / td > < td class = "line" > tS32 precision, < span class = 'comment' > // If negative, the minimum number of digits to represent a< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN471" > 471< / td > < td class = "line" > tC8 decimalPoint < span class = 'comment' > // Character before the decimals< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN472" > 472< / td > < td class = "line" > < span class = 'comment' > // unique 32-bit floating point value is output. Otherwise,< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN473" > 473< / td > < td class = "line" > < span class = 'comment' > // this is the number of digits to print past the decimal point.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN474" > 474< / td > < td class = "line" > )< / td > < / tr >
< tr > < td class = "num" id = "LN475" > 475< / td > < td class = "line" > {< / td > < / tr >
< tr > < td class = "num" id = "LN476" > 476< / td > < td class = "line" > < span class = 'keyword' > if< / span > (bufferSize == 0)< / td > < / tr >
< tr > < td class = "num" id = "LN477" > 477< / td > < td class = "line" > < span class = 'keyword' > return< / span > 0;< / td > < / tr >
< tr > < td class = "num" id = "LN478" > 478< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN479" > 479< / td > < td class = "line" > < span class = 'keyword' > if< / span > (bufferSize == 1)< / td > < / tr >
< tr > < td class = "num" id = "LN480" > 480< / td > < td class = "line" > {< / td > < / tr >
< tr > < td class = "num" id = "LN481" > 481< / td > < td class = "line" > pOutBuffer[0] = '\0';< / td > < / tr >
< tr > < td class = "num" id = "LN482" > 482< / td > < td class = "line" > < span class = 'keyword' > return< / span > 1;< / td > < / tr >
< tr > < td class = "num" id = "LN483" > 483< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN484" > 484< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN485" > 485< / td > < td class = "line" > < span class = 'comment' > // deconstruct the floating point value< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN486" > 486< / td > < td class = "line" > tFloatUnion32 floatUnion;< / td > < / tr >
< tr > < td class = "num" id = "LN487" > 487< / td > < td class = "line" > floatUnion.m_floatingPoint = value;< / td > < / tr >
< tr > < td class = "num" id = "LN488" > 488< / td > < td class = "line" > tU32 floatExponent = floatUnion.GetExponent();< / td > < / tr >
< tr > < td class = "num" id = "LN489" > 489< / td > < td class = "line" > tU32 floatMantissa = floatUnion.GetMantissa();< / td > < / tr >
< tr > < td class = "num" id = "LN490" > 490< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN491" > 491< / td > < td class = "line" > < span class = 'comment' > // output the sign< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN492" > 492< / td > < td class = "line" > < span class = 'keyword' > if< / span > (floatUnion.IsNegative())< / td > < / tr >
< tr > < td class = "num" id = "LN493" > 493< / td > < td class = "line" > {< / td > < / tr >
< tr > < td class = "num" id = "LN494" > 494< / td > < td class = "line" > pOutBuffer[0] = '-';< / td > < / tr >
< tr > < td class = "num" id = "LN495" > 495< / td > < td class = "line" > ++pOutBuffer;< / td > < / tr >
< tr > < td class = "num" id = "LN496" > 496< / td > < td class = "line" > --bufferSize;< / td > < / tr >
< tr > < td class = "num" id = "LN497" > 497< / td > < td class = "line" > RJ_ASSERT(bufferSize > 0);< / td > < / tr >
< tr > < td class = "num" id = "LN498" > 498< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN499" > 499< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN500" > 500< / td > < td class = "line" > < span class = 'comment' > // if this is a special value< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN501" > 501< / td > < td class = "line" > < span class = 'keyword' > if< / span > (floatExponent == 0xFF)< / td > < / tr >
< tr > < td class = "num" id = "LN502" > 502< / td > < td class = "line" > {< / td > < / tr >
< tr > < td class = "num" id = "LN503" > 503< / td > < td class = "line" > < span class = 'keyword' > return< / span > PrintInfNan(pOutBuffer, bufferSize, floatMantissa, 6);< / td > < / tr >
< tr > < td class = "num" id = "LN504" > 504< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN505" > 505< / td > < td class = "line" > < span class = 'comment' > // else this is a number< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN506" > 506< / td > < td class = "line" > < span class = 'keyword' > else< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN507" > 507< / td > < td class = "line" > {< / td > < / tr >
< tr > < td class = "num" id = "LN508" > 508< / td > < td class = "line" > < span class = 'comment' > // factor the value into its parts< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN509" > 509< / td > < td class = "line" > tU32 mantissa;< / td > < / tr >
< tr > < td class = "num" id = "LN510" > 510< / td > < td class = "line" > tS32 exponent;< / td > < / tr >
< tr > < td class = "num" id = "LN511" > 511< / td > < td class = "line" > tU32 mantissaHighBitIdx;< / td > < / tr >
< tr > < td class = "num" id = "LN512" > 512< / td > < td class = "line" > tB hasUnequalMargins;< / td > < / tr >
< tr > < td class = "num" id = "LN513" > 513< / td > < td class = "line" > < span class = 'keyword' > if< / span > (floatExponent != 0)< / td > < / tr >
< tr > < td class = "num" id = "LN514" > 514< / td > < td class = "line" > {< / td > < / tr >
< tr > < td class = "num" id = "LN515" > 515< / td > < td class = "line" > < span class = 'comment' > // normalized< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN516" > 516< / td > < td class = "line" > < span class = 'comment' > // The floating point equation is:< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN517" > 517< / td > < td class = "line" > < span class = 'comment' > // value = (1 + mantissa/2^23) * 2 ^ (exponent-127)< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN518" > 518< / td > < td class = "line" > < span class = 'comment' > // We convert the integer equation by factoring a 2^23 out of the exponent< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN519" > 519< / td > < td class = "line" > < span class = 'comment' > // value = (1 + mantissa/2^23) * 2^23 * 2 ^ (exponent-127-23)< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN520" > 520< / td > < td class = "line" > < span class = 'comment' > // value = (2^23 + mantissa) * 2 ^ (exponent-127-23)< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN521" > 521< / td > < td class = "line" > < span class = 'comment' > // Because of the implied 1 in front of the mantissa we have 24 bits of precision.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN522" > 522< / td > < td class = "line" > < span class = 'comment' > // m = (2^23 + mantissa)< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN523" > 523< / td > < td class = "line" > < span class = 'comment' > // e = (exponent-127-23)< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN524" > 524< / td > < td class = "line" > mantissa = (1UL < < 23) | floatMantissa;< / td > < / tr >
< tr > < td class = "num" id = "LN525" > 525< / td > < td class = "line" > exponent = floatExponent - 127 - 23;< / td > < / tr >
< tr > < td class = "num" id = "LN526" > 526< / td > < td class = "line" > mantissaHighBitIdx = 23;< / td > < / tr >
< tr > < td class = "num" id = "LN527" > 527< / td > < td class = "line" > hasUnequalMargins = (floatExponent != 1) & & (floatMantissa == 0);< / td > < / tr >
< tr > < td class = "num" id = "LN528" > 528< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN529" > 529< / td > < td class = "line" > < span class = 'keyword' > else< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN530" > 530< / td > < td class = "line" > {< / td > < / tr >
< tr > < td class = "num" id = "LN531" > 531< / td > < td class = "line" > < span class = 'comment' > // denormalized< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN532" > 532< / td > < td class = "line" > < span class = 'comment' > // The floating point equation is:< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN533" > 533< / td > < td class = "line" > < span class = 'comment' > // value = (mantissa/2^23) * 2 ^ (1-127)< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN534" > 534< / td > < td class = "line" > < span class = 'comment' > // We convert the integer equation by factoring a 2^23 out of the exponent< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN535" > 535< / td > < td class = "line" > < span class = 'comment' > // value = (mantissa/2^23) * 2^23 * 2 ^ (1-127-23)< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN536" > 536< / td > < td class = "line" > < span class = 'comment' > // value = mantissa * 2 ^ (1-127-23)< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN537" > 537< / td > < td class = "line" > < span class = 'comment' > // We have up to 23 bits of precision.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN538" > 538< / td > < td class = "line" > < span class = 'comment' > // m = (mantissa)< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN539" > 539< / td > < td class = "line" > < span class = 'comment' > // e = (1-127-23)< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN540" > 540< / td > < td class = "line" > mantissa = floatMantissa;< / td > < / tr >
< tr > < td class = "num" id = "LN541" > 541< / td > < td class = "line" > exponent = 1 - 127 - 23;< / td > < / tr >
< tr > < td class = "num" id = "LN542" > 542< / td > < td class = "line" > mantissaHighBitIdx = LogBase2(mantissa);< / td > < / tr >
< tr > < td class = "num" id = "LN543" > 543< / td > < td class = "line" > hasUnequalMargins = < span class = 'keyword' > false< / span > ;< / td > < / tr >
< tr > < td class = "num" id = "LN544" > 544< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN545" > 545< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN546" > 546< / td > < td class = "line" > < span class = 'comment' > // format the value< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN547" > 547< / td > < td class = "line" > < span class = 'keyword' > switch< / span > (format)< / td > < / tr >
< tr > < td class = "num" id = "LN548" > 548< / td > < td class = "line" > {< / td > < / tr >
< tr > < td class = "num" id = "LN549" > 549< / td > < td class = "line" > < span class = 'keyword' > case< / span > PrintFloatFormat_Positional:< / td > < / tr >
< tr > < td class = "num" id = "LN550" > 550< / td > < td class = "line" > < span class = 'keyword' > return< / span > FormatPositional( pOutBuffer,< / td > < / tr >
< tr > < td class = "num" id = "LN551" > 551< / td > < td class = "line" > bufferSize,< / td > < / tr >
< tr > < td class = "num" id = "LN552" > 552< / td > < td class = "line" > mantissa,< / td > < / tr >
< tr > < td class = "num" id = "LN553" > 553< / td > < td class = "line" > exponent,< / td > < / tr >
< tr > < td class = "num" id = "LN554" > 554< / td > < td class = "line" > mantissaHighBitIdx,< / td > < / tr >
< tr > < td class = "num" id = "LN555" > 555< / td > < td class = "line" > hasUnequalMargins,< / td > < / tr >
< tr > < td class = "num" id = "LN556" > 556< / td > < td class = "line" > precision,< / td > < / tr >
< tr > < td class = "num" id = "LN557" > 557< / td > < td class = "line" > decimalPoint );< / td > < / tr >
< tr > < td class = "num" id = "LN558" > 558< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN559" > 559< / td > < td class = "line" > < span class = 'keyword' > case< / span > PrintFloatFormat_Scientific:< / td > < / tr >
< tr > < td class = "num" id = "LN560" > 560< / td > < td class = "line" > < span class = 'keyword' > return< / span > FormatScientific( pOutBuffer,< / td > < / tr >
< tr > < td class = "num" id = "LN561" > 561< / td > < td class = "line" > bufferSize,< / td > < / tr >
< tr > < td class = "num" id = "LN562" > 562< / td > < td class = "line" > mantissa,< / td > < / tr >
< tr > < td class = "num" id = "LN563" > 563< / td > < td class = "line" > exponent,< / td > < / tr >
< tr > < td class = "num" id = "LN564" > 564< / td > < td class = "line" > mantissaHighBitIdx,< / td > < / tr >
< tr > < td class = "num" id = "LN565" > 565< / td > < td class = "line" > hasUnequalMargins,< / td > < / tr >
< tr > < td class = "num" id = "LN566" > 566< / td > < td class = "line" > precision,< / td > < / tr >
< tr > < td class = "num" id = "LN567" > 567< / td > < td class = "line" > decimalPoint );< / td > < / tr >
< tr > < td class = "num" id = "LN568" > 568< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN569" > 569< / td > < td class = "line" > < span class = 'keyword' > default< / span > :< / td > < / tr >
< tr > < td class = "num" id = "LN570" > 570< / td > < td class = "line" > pOutBuffer[0] = '\0';< / td > < / tr >
< tr > < td class = "num" id = "LN571" > 571< / td > < td class = "line" > < span class = 'keyword' > return< / span > 0;< / td > < / tr >
< tr > < td class = "num" id = "LN572" > 572< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN573" > 573< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN574" > 574< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN575" > 575< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN576" > 576< / td > < td class = "line" > < span class = 'comment' > //******************************************************************************< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN577" > 577< / td > < td class = "line" > < span class = 'comment' > // Print a 64-bit floating-point number as a decimal string.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN578" > 578< / td > < td class = "line" > < span class = 'comment' > // The output string is always NUL terminated and the string length (not< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN579" > 579< / td > < td class = "line" > < span class = 'comment' > // including the NUL) is returned.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN580" > 580< / td > < td class = "line" > < span class = 'comment' > //******************************************************************************< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN581" > 581< / td > < td class = "line" > tU32 PrintFloat64< / td > < / tr >
< tr > < td class = "num" id = "LN582" > 582< / td > < td class = "line" > (< / td > < / tr >
< tr > < td class = "num" id = "LN583" > 583< / td > < td class = "line" > tC8 * pOutBuffer, < span class = 'comment' > // buffer to output into< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN584" > 584< / td > < td class = "line" > tU32 bufferSize, < span class = 'comment' > // size of pOutBuffer< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN585" > 585< / td > < td class = "line" > tF64 value, < span class = 'comment' > // value to print< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN586" > 586< / td > < td class = "line" > tPrintFloatFormat format, < span class = 'comment' > // format to print with< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN587" > 587< / td > < td class = "line" > tS32 precision, < span class = 'comment' > // If negative, the minimum number of digits to represent a< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN588" > 588< / td > < td class = "line" > tC8 decimalPoint < span class = 'comment' > // Character before the decimals< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN589" > 589< / td > < td class = "line" > < span class = 'comment' > // unique 64-bit floating point value is output. Otherwise,< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN590" > 590< / td > < td class = "line" > < span class = 'comment' > // this is the number of digits to print past the decimal point.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN591" > 591< / td > < td class = "line" > )< / td > < / tr >
< tr > < td class = "num" id = "LN592" > 592< / td > < td class = "line" > {< / td > < / tr >
< tr > < td class = "num" id = "LN593" > 593< / td > < td class = "line" > < span class = 'keyword' > if< / span > (bufferSize == 0)< / td > < / tr >
< tr > < td class = "num" id = "LN594" > 594< / td > < td class = "line" > < span class = 'keyword' > return< / span > 0;< / td > < / tr >
< tr > < td class = "num" id = "LN595" > 595< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN596" > 596< / td > < td class = "line" > < span class = 'keyword' > if< / span > (bufferSize == 1)< / td > < / tr >
< tr > < td class = "num" id = "LN597" > 597< / td > < td class = "line" > {< / td > < / tr >
< tr > < td class = "num" id = "LN598" > 598< / td > < td class = "line" > pOutBuffer[0] = '\0';< / td > < / tr >
< tr > < td class = "num" id = "LN599" > 599< / td > < td class = "line" > < span class = 'keyword' > return< / span > 1;< / td > < / tr >
< tr > < td class = "num" id = "LN600" > 600< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN601" > 601< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN602" > 602< / td > < td class = "line" > < span class = 'comment' > // deconstruct the floating point value< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN603" > 603< / td > < td class = "line" > tFloatUnion64 floatUnion;< / td > < / tr >
< tr > < td class = "num" id = "LN604" > 604< / td > < td class = "line" > floatUnion.m_floatingPoint = value;< / td > < / tr >
< tr > < td class = "num" id = "LN605" > 605< / td > < td class = "line" > tU32 floatExponent = floatUnion.GetExponent();< / td > < / tr >
< tr > < td class = "num" id = "LN606" > 606< / td > < td class = "line" > tU64 floatMantissa = floatUnion.GetMantissa();< / td > < / tr >
< tr > < td class = "num" id = "LN607" > 607< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN608" > 608< / td > < td class = "line" > < span class = 'comment' > // output the sign< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN609" > 609< / td > < td class = "line" > < span class = 'keyword' > if< / span > (floatUnion.IsNegative())< / td > < / tr >
< tr > < td class = "num" id = "LN610" > 610< / td > < td class = "line" > {< / td > < / tr >
< tr > < td class = "num" id = "LN611" > 611< / td > < td class = "line" > pOutBuffer[0] = '-';< / td > < / tr >
< tr > < td class = "num" id = "LN612" > 612< / td > < td class = "line" > ++pOutBuffer;< / td > < / tr >
< tr > < td class = "num" id = "LN613" > 613< / td > < td class = "line" > --bufferSize;< / td > < / tr >
< tr > < td class = "num" id = "LN614" > 614< / td > < td class = "line" > RJ_ASSERT(bufferSize > 0);< / td > < / tr >
< tr > < td class = "num" id = "LN615" > 615< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN616" > 616< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN617" > 617< / td > < td class = "line" > < span class = 'comment' > // if this is a special value< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN618" > 618< / td > < td class = "line" > < span class = 'keyword' > if< / span > (floatExponent == 0x7FF)< / td > < / tr >
< tr > < td class = "num" id = "LN619" > 619< / td > < td class = "line" > {< / td > < / tr >
< tr > < td class = "num" id = "LN620" > 620< / td > < td class = "line" > < span class = 'keyword' > return< / span > PrintInfNan(pOutBuffer, bufferSize, floatMantissa, 13);< / td > < / tr >
< tr > < td class = "num" id = "LN621" > 621< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN622" > 622< / td > < td class = "line" > < span class = 'comment' > // else this is a number< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN623" > 623< / td > < td class = "line" > < span class = 'keyword' > else< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN624" > 624< / td > < td class = "line" > {< / td > < / tr >
< tr > < td class = "num" id = "LN625" > 625< / td > < td class = "line" > < span class = 'comment' > // factor the value into its parts< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN626" > 626< / td > < td class = "line" > tU64 mantissa;< / td > < / tr >
< tr > < td class = "num" id = "LN627" > 627< / td > < td class = "line" > tS32 exponent;< / td > < / tr >
< tr > < td class = "num" id = "LN628" > 628< / td > < td class = "line" > tU32 mantissaHighBitIdx;< / td > < / tr >
< tr > < td class = "num" id = "LN629" > 629< / td > < td class = "line" > tB hasUnequalMargins;< / td > < / tr >
< tr > < td class = "num" id = "LN630" > 630< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN631" > 631< / td > < td class = "line" > < span class = 'keyword' > if< / span > (floatExponent != 0)< / td > < / tr >
< tr > < td class = "num" id = "LN632" > 632< / td > < td class = "line" > {< / td > < / tr >
< tr > < td class = "num" id = "LN633" > 633< / td > < td class = "line" > < span class = 'comment' > // normal< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN634" > 634< / td > < td class = "line" > < span class = 'comment' > // The floating point equation is:< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN635" > 635< / td > < td class = "line" > < span class = 'comment' > // value = (1 + mantissa/2^52) * 2 ^ (exponent-1023)< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN636" > 636< / td > < td class = "line" > < span class = 'comment' > // We convert the integer equation by factoring a 2^52 out of the exponent< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN637" > 637< / td > < td class = "line" > < span class = 'comment' > // value = (1 + mantissa/2^52) * 2^52 * 2 ^ (exponent-1023-52)< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN638" > 638< / td > < td class = "line" > < span class = 'comment' > // value = (2^52 + mantissa) * 2 ^ (exponent-1023-52)< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN639" > 639< / td > < td class = "line" > < span class = 'comment' > // Because of the implied 1 in front of the mantissa we have 53 bits of precision.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN640" > 640< / td > < td class = "line" > < span class = 'comment' > // m = (2^52 + mantissa)< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN641" > 641< / td > < td class = "line" > < span class = 'comment' > // e = (exponent-1023+1-53)< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN642" > 642< / td > < td class = "line" > mantissa = (1ull < < 52) | floatMantissa;< / td > < / tr >
< tr > < td class = "num" id = "LN643" > 643< / td > < td class = "line" > exponent = floatExponent - 1023 - 52;< / td > < / tr >
< tr > < td class = "num" id = "LN644" > 644< / td > < td class = "line" > mantissaHighBitIdx = 52;< / td > < / tr >
< tr > < td class = "num" id = "LN645" > 645< / td > < td class = "line" > hasUnequalMargins = (floatExponent != 1) & & (floatMantissa == 0);< / td > < / tr >
< tr > < td class = "num" id = "LN646" > 646< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN647" > 647< / td > < td class = "line" > < span class = 'keyword' > else< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN648" > 648< / td > < td class = "line" > {< / td > < / tr >
< tr > < td class = "num" id = "LN649" > 649< / td > < td class = "line" > < span class = 'comment' > // subnormal< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN650" > 650< / td > < td class = "line" > < span class = 'comment' > // The floating point equation is:< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN651" > 651< / td > < td class = "line" > < span class = 'comment' > // value = (mantissa/2^52) * 2 ^ (1-1023)< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN652" > 652< / td > < td class = "line" > < span class = 'comment' > // We convert the integer equation by factoring a 2^52 out of the exponent< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN653" > 653< / td > < td class = "line" > < span class = 'comment' > // value = (mantissa/2^52) * 2^52 * 2 ^ (1-1023-52)< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN654" > 654< / td > < td class = "line" > < span class = 'comment' > // value = mantissa * 2 ^ (1-1023-52)< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN655" > 655< / td > < td class = "line" > < span class = 'comment' > // We have up to 52 bits of precision.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN656" > 656< / td > < td class = "line" > < span class = 'comment' > // m = (mantissa)< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN657" > 657< / td > < td class = "line" > < span class = 'comment' > // e = (1-1023-52)< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN658" > 658< / td > < td class = "line" > mantissa = floatMantissa;< / td > < / tr >
< tr > < td class = "num" id = "LN659" > 659< / td > < td class = "line" > exponent = 1 - 1023 - 52;< / td > < / tr >
< tr > < td class = "num" id = "LN660" > 660< / td > < td class = "line" > mantissaHighBitIdx = LogBase2(mantissa);< / td > < / tr >
< tr > < td class = "num" id = "LN661" > 661< / td > < td class = "line" > hasUnequalMargins = < span class = 'keyword' > false< / span > ;< / td > < / tr >
< tr > < td class = "num" id = "LN662" > 662< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN663" > 663< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN664" > 664< / td > < td class = "line" > < span class = 'comment' > // format the value< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN665" > 665< / td > < td class = "line" > < span class = 'keyword' > switch< / span > (format)< / td > < / tr >
< tr > < td class = "num" id = "LN666" > 666< / td > < td class = "line" > {< / td > < / tr >
< tr > < td class = "num" id = "LN667" > 667< / td > < td class = "line" > < span class = 'keyword' > case< / span > PrintFloatFormat_Positional:< / td > < / tr >
< tr > < td class = "num" id = "LN668" > 668< / td > < td class = "line" > < span class = 'keyword' > return< / span > FormatPositional( pOutBuffer,< / td > < / tr >
< tr > < td class = "num" id = "LN669" > 669< / td > < td class = "line" > bufferSize,< / td > < / tr >
< tr > < td class = "num" id = "LN670" > 670< / td > < td class = "line" > mantissa,< / td > < / tr >
< tr > < td class = "num" id = "LN671" > 671< / td > < td class = "line" > exponent,< / td > < / tr >
< tr > < td class = "num" id = "LN672" > 672< / td > < td class = "line" > mantissaHighBitIdx,< / td > < / tr >
< tr > < td class = "num" id = "LN673" > 673< / td > < td class = "line" > hasUnequalMargins,< / td > < / tr >
< tr > < td class = "num" id = "LN674" > 674< / td > < td class = "line" > precision,< / td > < / tr >
< tr > < td class = "num" id = "LN675" > 675< / td > < td class = "line" > decimalPoint );< / td > < / tr >
< tr > < td class = "num" id = "LN676" > 676< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN677" > 677< / td > < td class = "line" > < span class = 'keyword' > case< / span > PrintFloatFormat_Scientific:< / td > < / tr >
< tr > < td class = "num" id = "LN678" > 678< / td > < td class = "line" > < span class = 'keyword' > return< / span > FormatScientific( pOutBuffer,< / td > < / tr >
< tr > < td class = "num" id = "LN679" > 679< / td > < td class = "line" > bufferSize,< / td > < / tr >
< tr > < td class = "num" id = "LN680" > 680< / td > < td class = "line" > mantissa,< / td > < / tr >
< tr > < td class = "num" id = "LN681" > 681< / td > < td class = "line" > exponent,< / td > < / tr >
< tr > < td class = "num" id = "LN682" > 682< / td > < td class = "line" > mantissaHighBitIdx,< / td > < / tr >
< tr > < td class = "num" id = "LN683" > 683< / td > < td class = "line" > hasUnequalMargins,< / td > < / tr >
< tr > < td class = "num" id = "LN684" > 684< / td > < td class = "line" > precision,< / td > < / tr >
< tr > < td class = "num" id = "LN685" > 685< / td > < td class = "line" > decimalPoint );< / td > < / tr >
< tr > < td class = "num" id = "LN686" > 686< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN687" > 687< / td > < td class = "line" > < span class = 'keyword' > default< / span > :< / td > < / tr >
< tr > < td class = "num" id = "LN688" > 688< / td > < td class = "line" > pOutBuffer[0] = '\0';< / td > < / tr >
< tr > < td class = "num" id = "LN689" > 689< / td > < td class = "line" > < span class = 'keyword' > return< / span > 0;< / td > < / tr >
< tr > < td class = "num" id = "LN690" > 690< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN691" > 691< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN692" > 692< / td > < td class = "line" > }< / td > < / tr >
< / table > < / body > < / html >