13 int val_digit(0), err_digit(0);
16 while( fabs(x.first) /
pow(10, val_digit) < 1 ) val_digit--;
17 while( fabs(x.first) /
pow(10, val_digit) > 10 )val_digit++;
20 while( x.second /
pow(10,err_digit) < 0.95 ) err_digit--;
21 while( x.second /
pow(10,err_digit) > 9.50 ) err_digit++;
24 if(val_digit<err_digit) val_digit=err_digit;
25 const bool scinot = (val_digit<-1 || err_digit>0);
28 s << std::fixed << std::setprecision( scinot? val_digit-err_digit : -err_digit)
29 << ( scinot? x.first/
pow(10,val_digit) : x.first )
31 <<
unsigned(x.second /
pow(10,err_digit) + 0.5) <<
")";
32 if(scinot) s<<
"e" << (val_digit>0 ?
"+" :
"") << val_digit;
Power< A, B >::type pow(const A &a, const B &b)
std::string operator()(const std::pair< T, T > x) const