Mercurial > octave
changeset 27451:ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
* pr-output.cc (make_real_format): Change "if (digits > 0)/else" to
"if (digits > 0)/else if (digits < 0)/else" tree where final else handles
special case of digits==0.
* pr-output.cc (make_real_matrix_format, make_complex_format,
make_complex_matrix_format, make_range_format): Change if/else to if/else
if/else tree when examining x_max and x_min. Final else clause provides
special behavior for x_max or x_min == 0.
author | Rik <rik@octave.org> |
---|---|
date | Fri, 27 Sep 2019 13:57:11 -0700 |
parents | c3ea5c772a84 |
children | 1aa7568aa139 |
files | libinterp/corefcn/pr-output.cc |
diffstat | 1 files changed, 62 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/libinterp/corefcn/pr-output.cc Fri Sep 27 16:08:41 2019 -0400 +++ b/libinterp/corefcn/pr-output.cc Fri Sep 27 13:57:11 2019 -0700 @@ -403,10 +403,15 @@ ld = digits; rd = (prec > digits ? prec - digits : prec); } + else if (digits < 0) + { + ld = 1; + rd = (prec > digits ? prec - digits : prec); + } else { ld = 1; - rd = (prec > digits ? prec - digits : prec); + rd = (prec > digits ? prec - 1 : prec); } fw = 1 + ld + 1 + rd; @@ -546,12 +551,18 @@ rd_max = (prec > x_max ? prec - x_max : prec); x_max++; } - else + else if (x_max < 0) { ld_max = 1; rd_max = (prec > x_max ? prec - x_max : prec); x_max = -x_max + 1; } + else + { + ld_max = 1; + rd_max = (prec > 1 ? prec - 1 : prec); + x_max = 1; + } int ld_min, rd_min; if (x_min > 0) @@ -560,12 +571,18 @@ rd_min = (prec > x_min ? prec - x_min : prec); x_min++; } - else + else if (x_min < 0) { ld_min = 1; rd_min = (prec > x_min ? prec - x_min : prec); x_min = -x_min + 1; } + else + { + ld_min = 1; + rd_min = (prec > 1 ? prec - 1 : prec); + x_min = 1; + } ld = (ld_max > ld_min ? ld_max : ld_min); rd = (rd_max > rd_min ? rd_max : rd_min); @@ -721,12 +738,18 @@ rd_max = (prec > x_max ? prec - x_max : prec); x_max++; } - else + else if (x_max < 0) { ld_max = 1; rd_max = (prec > x_max ? prec - x_max : prec); x_max = -x_max + 1; } + else + { + ld_max = 1; + rd_max = (prec > 1 ? prec - 1 : prec); + x_max = 1; + } int ld_min, rd_min; if (x_min > 0) @@ -735,12 +758,18 @@ rd_min = (prec > x_min ? prec - x_min : prec); x_min++; } - else + else if (x_min < 0) { ld_min = 1; rd_min = (prec > x_min ? prec - x_min : prec); x_min = -x_min + 1; } + else + { + ld_min = 1; + rd_min = (prec > 1 ? prec - 1 : prec); + x_min = 1; + } ld = (ld_max > ld_min ? ld_max : ld_min); rd = (rd_max > rd_min ? rd_max : rd_min); @@ -940,12 +969,18 @@ rd_max = (prec > x_max ? prec - x_max : prec); x_max++; } - else + else if (x_max < 0) { ld_max = 1; rd_max = (prec > x_max ? prec - x_max : prec); x_max = -x_max + 1; } + else + { + ld_max = 1; + rd_max = (prec > 1 ? prec - 1 : prec); + x_max = 1; + } int ld_min, rd_min; if (x_min > 0) @@ -954,12 +989,18 @@ rd_min = (prec > x_min ? prec - x_min : prec); x_min++; } - else + else if (x_min < 0) { ld_min = 1; rd_min = (prec > x_min ? prec - x_min : prec); x_min = -x_min + 1; } + else + { + ld_min = 1; + rd_min = (prec > 1 ? prec - 1 : prec); + x_min = 1; + } ld = (ld_max > ld_min ? ld_max : ld_min); rd = (rd_max > rd_min ? rd_max : rd_min); @@ -1154,12 +1195,18 @@ rd_max = (prec > x_max ? prec - x_max : prec); x_max++; } - else + else if (x_max < 0) { ld_max = 1; rd_max = (prec > x_max ? prec - x_max : prec); x_max = -x_max + 1; } + else + { + ld_max = 1; + rd_max = (prec > 1 ? prec - 1 : prec); + x_max = 1; + } int ld_min, rd_min; if (x_min > 0) @@ -1168,12 +1215,18 @@ rd_min = (prec > x_min ? prec - x_min : prec); x_min++; } - else + else if (x_min < 0) { ld_min = 1; rd_min = (prec > x_min ? prec - x_min : prec); x_min = -x_min + 1; } + else + { + ld_min = 1; + rd_min = (prec > 1 ? prec - 1 : prec); + x_min = 1; + } ld = (ld_max > ld_min ? ld_max : ld_min); rd = (rd_max > rd_min ? rd_max : rd_min);