2021-07-25 10:33:20 +00:00
< head >
< title > RenderD7</ title >
</ head >
2021-07-24 21:48:15 +00:00
<!-- Generated by Doxygen 1.8.17 -->
</ div > <!-- top -->
< div id = "side-nav" class = "ui-resizable side-nav-resizable" >
< div id = "nav-tree" >
< div id = "nav-tree-contents" >
< div id = "nav-sync" class = "sync" ></ div >
</ div >
</ div >
< div id = "splitbar" style = "-moz-user-select:none;"
class = "ui-resizable-handle" >
</ div >
</ div >
< script type = "text/javascript" >
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
$ ( document ). ready ( function (){ initNavTree ( 'namespacenlohmann_1_1detail_1_1dtoa__impl.html' , '' ); initResizable (); });
/* @license-end */
</ script >
< div id = "doc-content" >
< div class = "header" >
< div class = "summary" >
< a href = "#func-members" > Functions</ a > </ div >
< div class = "headertitle" >
< div class = "title" > nlohmann::detail::dtoa_impl Namespace Reference</ div > </ div >
</ div > <!--header-->
< div class = "contents" >
< p > implements the Grisu2 algorithm for binary to decimal floating-point conversion.
< a href = "namespacenlohmann_1_1detail_1_1dtoa__impl.html#details" > More...</ a ></ p >
< table class = "memberdecls" >
< tr class = "heading" >< td colspan = "2" >< h2 class = "groupheader" >< a name = "func-members" ></ a >
Functions</ h2 ></ td ></ tr >
< tr class = "memitem:a22b6e37654ac93c6d0d9c06ec1bf5ded" >< td class = "memTemplParams" colspan = "2" > template< typename FloatType > </ td ></ tr >
< tr class = "memitem:a22b6e37654ac93c6d0d9c06ec1bf5ded" >< td class = "memTemplItemLeft" align = "right" valign = "top" > boundaries  </ td >< td class = "memTemplItemRight" valign = "bottom" >< a class = "el" href = "namespacenlohmann_1_1detail_1_1dtoa__impl.html#a22b6e37654ac93c6d0d9c06ec1bf5ded" > compute_boundaries</ a > (FloatType value)</ td ></ tr >
< tr class = "separator:a22b6e37654ac93c6d0d9c06ec1bf5ded" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:adbf329a18c5cf854a3477327afd2200b" >< td class = "memItemLeft" align = "right" valign = "top" > cached_power  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "namespacenlohmann_1_1detail_1_1dtoa__impl.html#adbf329a18c5cf854a3477327afd2200b" > get_cached_power_for_binary_exponent</ a > (int e)</ td ></ tr >
< tr class = "separator:adbf329a18c5cf854a3477327afd2200b" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:a36ded358763b5dbcea9867660fbe4e28" >< td class = "memItemLeft" align = "right" valign = "top" > int  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "namespacenlohmann_1_1detail_1_1dtoa__impl.html#a36ded358763b5dbcea9867660fbe4e28" > find_largest_pow10</ a > (const std::uint32_t n, std::uint32_t & pow10)</ td ></ tr >
< tr class = "separator:a36ded358763b5dbcea9867660fbe4e28" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:a9b899c72b0e1e3dd46d75c2b4e6bcdfb" >< td class = "memItemLeft" align = "right" valign = "top" > void  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "namespacenlohmann_1_1detail_1_1dtoa__impl.html#a9b899c72b0e1e3dd46d75c2b4e6bcdfb" > grisu2_digit_gen</ a > (char *buffer, int & length, int & decimal_exponent, diyfp M_minus, diyfp w, diyfp M_plus)</ td ></ tr >
< tr class = "separator:a9b899c72b0e1e3dd46d75c2b4e6bcdfb" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:a05b681dcb8569b9784c6dccfadb01633" >< td class = "memItemLeft" align = "right" valign = "top" > void  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "namespacenlohmann_1_1detail_1_1dtoa__impl.html#a05b681dcb8569b9784c6dccfadb01633" > grisu2</ a > (char *buf, int & len, int & decimal_exponent, diyfp m_minus, diyfp v, diyfp m_plus)</ td ></ tr >
< tr class = "separator:a05b681dcb8569b9784c6dccfadb01633" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:aab7a9670a4f4704a5d0347ad7588576b" >< td class = "memTemplParams" colspan = "2" > template< typename FloatType > </ td ></ tr >
< tr class = "memitem:aab7a9670a4f4704a5d0347ad7588576b" >< td class = "memTemplItemLeft" align = "right" valign = "top" > void  </ td >< td class = "memTemplItemRight" valign = "bottom" >< a class = "el" href = "namespacenlohmann_1_1detail_1_1dtoa__impl.html#aab7a9670a4f4704a5d0347ad7588576b" > grisu2</ a > (char *buf, int & len, int & decimal_exponent, FloatType value)</ td ></ tr >
< tr class = "separator:aab7a9670a4f4704a5d0347ad7588576b" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:ad90f19ed10d8133b727df4b9bc5ddf5c" >< td class = "memItemLeft" align = "right" valign = "top" > JSON_HEDLEY_RETURNS_NON_NULL char *  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "namespacenlohmann_1_1detail_1_1dtoa__impl.html#ad90f19ed10d8133b727df4b9bc5ddf5c" > append_exponent</ a > (char *buf, int e)</ td ></ tr >
< tr class = "memdesc:ad90f19ed10d8133b727df4b9bc5ddf5c" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > appends a decimal representation of e to buf < a href = "namespacenlohmann_1_1detail_1_1dtoa__impl.html#ad90f19ed10d8133b727df4b9bc5ddf5c" > More...</ a >< br /></ td ></ tr >
< tr class = "separator:ad90f19ed10d8133b727df4b9bc5ddf5c" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:ab441f2761e33839ca48bc2225e14a2a9" >< td class = "memItemLeft" align = "right" valign = "top" > JSON_HEDLEY_RETURNS_NON_NULL char *  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "namespacenlohmann_1_1detail_1_1dtoa__impl.html#ab441f2761e33839ca48bc2225e14a2a9" > format_buffer</ a > (char *buf, int len, int decimal_exponent, int min_exp, int max_exp)</ td ></ tr >
< tr class = "memdesc:ab441f2761e33839ca48bc2225e14a2a9" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > prettify v = buf * 10^decimal_exponent < a href = "namespacenlohmann_1_1detail_1_1dtoa__impl.html#ab441f2761e33839ca48bc2225e14a2a9" > More...</ a >< br /></ td ></ tr >
< tr class = "separator:ab441f2761e33839ca48bc2225e14a2a9" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
</ table >
< a name = "details" id = "details" ></ a >< h2 class = "groupheader" > Detailed Description</ h2 >
< div class = "textblock" >< p > implements the Grisu2 algorithm for binary to decimal floating-point conversion. </ p >
< p > This implementation is a slightly modified version of the reference implementation which may be obtained from < a href = "http://florian.loitsch.com/publications" > http://florian.loitsch.com/publications</ a > (bench.tar.gz).</ p >
< p > The code is distributed under the MIT license, Copyright (c) 2009 Florian Loitsch.</ p >
< p > For a detailed description of the algorithm see:</ p >
< p > [1] Loitsch, "Printing Floating-Point Numbers Quickly and Accurately with
Integers", Proceedings of the ACM SIGPLAN 2010 Conference on Programming Language Design and Implementation, PLDI 2010 [2] Burger, Dybvig, "Printing Floating-Point Numbers Quickly and Accurately", Proceedings of the ACM SIGPLAN 1996 Conference on Programming Language Design and Implementation, PLDI 1996 </ p >
</ div >< h2 class = "groupheader" > Function Documentation</ h2 >
< a id = "a22b6e37654ac93c6d0d9c06ec1bf5ded" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#a22b6e37654ac93c6d0d9c06ec1bf5ded" > ◆ </ a ></ span > compute_boundaries()</ h2 >
< div class = "memitem" >
< div class = "memproto" >
< div class = "memtemplate" >
template< typename FloatType > </ div >
< table class = "memname" >
< tr >
< td class = "memname" > boundaries nlohmann::detail::dtoa_impl::compute_boundaries </ td >
< td > (</ td >
< td class = "paramtype" > FloatType  </ td >
< td class = "paramname" >< em > value</ em ></ td >< td > )</ td >
< td ></ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Compute the (normalized) diyfp representing the input number 'value' and its boundaries.</ p >
< dl class = "section pre" >< dt > Precondition</ dt >< dd > value must be finite and positive </ dd ></ dl >
</ div >
</ div >
< a id = "adbf329a18c5cf854a3477327afd2200b" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#adbf329a18c5cf854a3477327afd2200b" > ◆ </ a ></ span > get_cached_power_for_binary_exponent()</ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "mlabels" >
< tr >
< td class = "mlabels-left" >
< table class = "memname" >
< tr >
< td class = "memname" > cached_power nlohmann::detail::dtoa_impl::get_cached_power_for_binary_exponent </ td >
< td > (</ td >
< td class = "paramtype" > int  </ td >
< td class = "paramname" >< em > e</ em ></ td >< td > )</ td >
< td ></ td >
</ tr >
</ table >
</ td >
< td class = "mlabels-right" >
< span class = "mlabels" >< span class = "mlabel" > inline</ span ></ span > </ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > For a normalized diyfp w = f * 2^e, this function returns a (normalized) cached power-of-ten c = f_c * 2^e_c, such that the exponent of the product w * c satisfies (Definition 3.2 from [1]) </ p >< pre class = "fragment" > alpha < = e_c + e + q < = gamma.
</ pre >
</ div >
</ div >
< a id = "a36ded358763b5dbcea9867660fbe4e28" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#a36ded358763b5dbcea9867660fbe4e28" > ◆ </ a ></ span > find_largest_pow10()</ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "mlabels" >
< tr >
< td class = "mlabels-left" >
< table class = "memname" >
< tr >
< td class = "memname" > int nlohmann::detail::dtoa_impl::find_largest_pow10 </ td >
< td > (</ td >
< td class = "paramtype" > const std::uint32_t  </ td >
< td class = "paramname" >< em > n</ em > , </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > std::uint32_t &  </ td >
< td class = "paramname" >< em > pow10</ em >   </ td >
</ tr >
< tr >
< td ></ td >
< td > )</ td >
< td ></ td >< td ></ td >
</ tr >
</ table >
</ td >
< td class = "mlabels-right" >
< span class = "mlabels" >< span class = "mlabel" > inline</ span ></ span > </ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > For n != 0, returns k, such that pow10 := 10^(k-1) < = n < 10^k. For n == 0, returns 1 and sets pow10 := 1. </ p >
</ div >
</ div >
< a id = "a9b899c72b0e1e3dd46d75c2b4e6bcdfb" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#a9b899c72b0e1e3dd46d75c2b4e6bcdfb" > ◆ </ a ></ span > grisu2_digit_gen()</ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "mlabels" >
< tr >
< td class = "mlabels-left" >
< table class = "memname" >
< tr >
< td class = "memname" > void nlohmann::detail::dtoa_impl::grisu2_digit_gen </ td >
< td > (</ td >
< td class = "paramtype" > char *  </ td >
< td class = "paramname" >< em > buffer</ em > , </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > int &  </ td >
< td class = "paramname" >< em > length</ em > , </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > int &  </ td >
< td class = "paramname" >< em > decimal_exponent</ em > , </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > diyfp  </ td >
< td class = "paramname" >< em > M_minus</ em > , </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > diyfp  </ td >
< td class = "paramname" >< em > w</ em > , </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > diyfp  </ td >
< td class = "paramname" >< em > M_plus</ em >   </ td >
</ tr >
< tr >
< td ></ td >
< td > )</ td >
< td ></ td >< td ></ td >
</ tr >
</ table >
</ td >
< td class = "mlabels-right" >
< span class = "mlabels" >< span class = "mlabel" > inline</ span ></ span > </ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Generates V = buffer * 10^decimal_exponent, such that M- < = V < = M+. M- and M+ must be normalized and share the same exponent -60 < = e < = -32. </ p >
</ div >
</ div >
< a id = "a05b681dcb8569b9784c6dccfadb01633" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#a05b681dcb8569b9784c6dccfadb01633" > ◆ </ a ></ span > grisu2() < span class = "overload" > [1/2]</ span ></ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "mlabels" >
< tr >
< td class = "mlabels-left" >
< table class = "memname" >
< tr >
< td class = "memname" > void nlohmann::detail::dtoa_impl::grisu2 </ td >
< td > (</ td >
< td class = "paramtype" > char *  </ td >
< td class = "paramname" >< em > buf</ em > , </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > int &  </ td >
< td class = "paramname" >< em > len</ em > , </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > int &  </ td >
< td class = "paramname" >< em > decimal_exponent</ em > , </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > diyfp  </ td >
< td class = "paramname" >< em > m_minus</ em > , </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > diyfp  </ td >
< td class = "paramname" >< em > v</ em > , </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > diyfp  </ td >
< td class = "paramname" >< em > m_plus</ em >   </ td >
</ tr >
< tr >
< td ></ td >
< td > )</ td >
< td ></ td >< td ></ td >
</ tr >
</ table >
</ td >
< td class = "mlabels-right" >
< span class = "mlabels" >< span class = "mlabel" > inline</ span ></ span > </ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > v = buf * 10^decimal_exponent len is the length of the buffer (number of decimal digits) The buffer must be large enough, i.e. > = max_digits10. </ p >
</ div >
</ div >
< a id = "aab7a9670a4f4704a5d0347ad7588576b" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#aab7a9670a4f4704a5d0347ad7588576b" > ◆ </ a ></ span > grisu2() < span class = "overload" > [2/2]</ span ></ h2 >
< div class = "memitem" >
< div class = "memproto" >
< div class = "memtemplate" >
template< typename FloatType > </ div >
< table class = "memname" >
< tr >
< td class = "memname" > void nlohmann::detail::dtoa_impl::grisu2 </ td >
< td > (</ td >
< td class = "paramtype" > char *  </ td >
< td class = "paramname" >< em > buf</ em > , </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > int &  </ td >
< td class = "paramname" >< em > len</ em > , </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > int &  </ td >
< td class = "paramname" >< em > decimal_exponent</ em > , </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > FloatType  </ td >
< td class = "paramname" >< em > value</ em >   </ td >
</ tr >
< tr >
< td ></ td >
< td > )</ td >
< td ></ td >< td ></ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > v = buf * 10^decimal_exponent len is the length of the buffer (number of decimal digits) The buffer must be large enough, i.e. > = max_digits10. </ p >
</ div >
</ div >
< a id = "ad90f19ed10d8133b727df4b9bc5ddf5c" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#ad90f19ed10d8133b727df4b9bc5ddf5c" > ◆ </ a ></ span > append_exponent()</ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "mlabels" >
< tr >
< td class = "mlabels-left" >
< table class = "memname" >
< tr >
< td class = "memname" > JSON_HEDLEY_RETURNS_NON_NULL char* nlohmann::detail::dtoa_impl::append_exponent </ td >
< td > (</ td >
< td class = "paramtype" > char *  </ td >
< td class = "paramname" >< em > buf</ em > , </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > int  </ td >
< td class = "paramname" >< em > e</ em >   </ td >
</ tr >
< tr >
< td ></ td >
< td > )</ td >
< td ></ td >< td ></ td >
</ tr >
</ table >
</ td >
< td class = "mlabels-right" >
< span class = "mlabels" >< span class = "mlabel" > inline</ span ></ span > </ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > appends a decimal representation of e to buf </ p >
< dl class = "section return" >< dt > Returns</ dt >< dd > a pointer to the element following the exponent. </ dd ></ dl >
< dl class = "section pre" >< dt > Precondition</ dt >< dd > -1000 < e < 1000 </ dd ></ dl >
</ div >
</ div >
< a id = "ab441f2761e33839ca48bc2225e14a2a9" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#ab441f2761e33839ca48bc2225e14a2a9" > ◆ </ a ></ span > format_buffer()</ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "mlabels" >
< tr >
< td class = "mlabels-left" >
< table class = "memname" >
< tr >
< td class = "memname" > JSON_HEDLEY_RETURNS_NON_NULL char* nlohmann::detail::dtoa_impl::format_buffer </ td >
< td > (</ td >
< td class = "paramtype" > char *  </ td >
< td class = "paramname" >< em > buf</ em > , </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > int  </ td >
< td class = "paramname" >< em > len</ em > , </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > int  </ td >
< td class = "paramname" >< em > decimal_exponent</ em > , </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > int  </ td >
< td class = "paramname" >< em > min_exp</ em > , </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > int  </ td >
< td class = "paramname" >< em > max_exp</ em >   </ td >
</ tr >
< tr >
< td ></ td >
< td > )</ td >
< td ></ td >< td ></ td >
</ tr >
</ table >
</ td >
< td class = "mlabels-right" >
< span class = "mlabels" >< span class = "mlabel" > inline</ span ></ span > </ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > prettify v = buf * 10^decimal_exponent </ p >
< p > If v is in the range [10^min_exp, 10^max_exp) it will be printed in fixed-point notation. Otherwise it will be printed in exponential notation.</ p >
< dl class = "section pre" >< dt > Precondition</ dt >< dd > min_exp < 0 </ dd >
< dd >
max_exp > 0 </ dd ></ dl >
</ div >
</ div >
</ div > <!-- contents -->
</ div > <!-- doc-content -->
2021-07-25 10:33:20 +00:00
< head >
< title > RenderD7 2020-2021 NPI-D7</ title >
</ head >