Fixes #5675. Adds tests on #5675.

Updates #5660. Updates performance section of documentation

[SVN r72954]
This commit is contained in:
Antony Polukhin
2011-07-07 11:31:25 +00:00
parent 6a8c22d5c3
commit 0e2235dc75
3 changed files with 16 additions and 8 deletions

View File

@@ -798,12 +798,8 @@ namespace boost
if (begin == end) return false;
}
if ( *begin < czero || *begin >= czero + 10 ) {
return false;
}
bool found_decimal = false;
bool found_number_before_exp = false;
int pow_of_10 = 0;
mantissa_type mantissa=0;
bool is_mantissa_full = false;
@@ -830,6 +826,8 @@ namespace boost
-- pow_of_10;
mantissa = tmp_mantissa;
mantissa += *begin - zero;
found_number_before_exp = true;
} else {
if (*begin >= czero && *begin < czero + 10) {
@@ -851,6 +849,7 @@ namespace boost
++ pow_of_10;
}
found_number_before_exp = true;
++ length_since_last_delim;
} else if ( *begin == decimal_point || *begin == lowercase_e || *begin == capital_e) {
#ifndef BOOST_LEXICAL_CAST_ASSUME_C_LOCALE
@@ -874,7 +873,10 @@ namespace boost
++ begin;
found_decimal = true;
continue;
}else break;
}else {
if (!found_number_before_exp) return false;
break;
}
}
#ifndef BOOST_LEXICAL_CAST_ASSUME_C_LOCALE
else if (grouping_size && *begin == thousands_sep){

View File

@@ -331,7 +331,7 @@ This table shows the execution time in milliseconds for 100000 calls of the foll
<tr><td>string->int</td><td bgcolor="#00C000">7</td><td>115</td><td>23</td><td>18</td></tr>
<tr><td>string->unsigned int</td><td bgcolor="#00C000">7</td><td>117</td><td>22</td><td>17</td></tr>
<tr><td>string->bool</td><td bgcolor="#00C000"><1</td><td>104</td><td>19</td><td>10</td></tr>
<tr><td>string->float</td><td>85</td><td>172</td><td>60</td><td bgcolor="#00C000">33</td></tr>
<tr><td>string->float</td><td bgcolor="#00C000">13</td><td>172</td><td>60</td><td>33</td></tr>
<tr><td>char->string</td><td bgcolor="#00C000">7</td><td>105</td><td>16</td><td>12</td></tr>
<tr><td>int->string</td><td bgcolor="#00C000">15</td><td>131</td><td>21</td><td>17</td></tr>
<tr><td>unsigned int->string</td><td bgcolor="#00C000">14</td><td>125</td><td>21</td><td>17</td></tr>

View File

@@ -194,7 +194,9 @@ void test_converion_to_float_types()
CHECK_CLOSE_ABS_DIFF(0.0E-1, test_t);
CHECK_CLOSE_ABS_DIFF(-1.0E-1, test_t);
CHECK_CLOSE_ABS_DIFF(.0E-1, test_t);
CHECK_CLOSE_ABS_DIFF(.0E-1, test_t);
CHECK_CLOSE_ABS_DIFF(-.0E-1, test_t);
CHECK_CLOSE_ABS_DIFF(10.0, test_t);
CHECK_CLOSE_ABS_DIFF(00.0, test_t);
@@ -235,6 +237,10 @@ void test_converion_to_float_types()
CHECK_CLOSE_ABS_DIFF(-10101.0E-011, test_t);
CHECK_CLOSE_ABS_DIFF(-10101093, test_t);
CHECK_CLOSE_ABS_DIFF(10101093, test_t);
CHECK_CLOSE_ABS_DIFF(-.34, test_t);
CHECK_CLOSE_ABS_DIFF(.34, test_t);
CHECK_CLOSE_ABS_DIFF(.34e10, test_t);
// BOOST_CHECK(lexical_cast<test_t>("-inf") == -std::numeric_limits<test_t>::infinity() );
// BOOST_CHECK(lexical_cast<test_t>("-INF") == -std::numeric_limits<test_t>::infinity() );