comparison libinterp/corefcn/pr-output.cc @ 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 251056aeba5d
children 05f84e5cb08a
comparison
equal deleted inserted replaced
27450:c3ea5c772a84 27451:ce0399fa017a
401 if (digits > 0) 401 if (digits > 0)
402 { 402 {
403 ld = digits; 403 ld = digits;
404 rd = (prec > digits ? prec - digits : prec); 404 rd = (prec > digits ? prec - digits : prec);
405 } 405 }
406 else 406 else if (digits < 0)
407 { 407 {
408 ld = 1; 408 ld = 1;
409 rd = (prec > digits ? prec - digits : prec); 409 rd = (prec > digits ? prec - digits : prec);
410 }
411 else
412 {
413 ld = 1;
414 rd = (prec > digits ? prec - 1 : prec);
410 } 415 }
411 416
412 fw = 1 + ld + 1 + rd; 417 fw = 1 + ld + 1 + rd;
413 } 418 }
414 419
544 { 549 {
545 ld_max = x_max; 550 ld_max = x_max;
546 rd_max = (prec > x_max ? prec - x_max : prec); 551 rd_max = (prec > x_max ? prec - x_max : prec);
547 x_max++; 552 x_max++;
548 } 553 }
549 else 554 else if (x_max < 0)
550 { 555 {
551 ld_max = 1; 556 ld_max = 1;
552 rd_max = (prec > x_max ? prec - x_max : prec); 557 rd_max = (prec > x_max ? prec - x_max : prec);
553 x_max = -x_max + 1; 558 x_max = -x_max + 1;
554 } 559 }
560 else
561 {
562 ld_max = 1;
563 rd_max = (prec > 1 ? prec - 1 : prec);
564 x_max = 1;
565 }
555 566
556 int ld_min, rd_min; 567 int ld_min, rd_min;
557 if (x_min > 0) 568 if (x_min > 0)
558 { 569 {
559 ld_min = x_min; 570 ld_min = x_min;
560 rd_min = (prec > x_min ? prec - x_min : prec); 571 rd_min = (prec > x_min ? prec - x_min : prec);
561 x_min++; 572 x_min++;
562 } 573 }
563 else 574 else if (x_min < 0)
564 { 575 {
565 ld_min = 1; 576 ld_min = 1;
566 rd_min = (prec > x_min ? prec - x_min : prec); 577 rd_min = (prec > x_min ? prec - x_min : prec);
567 x_min = -x_min + 1; 578 x_min = -x_min + 1;
579 }
580 else
581 {
582 ld_min = 1;
583 rd_min = (prec > 1 ? prec - 1 : prec);
584 x_min = 1;
568 } 585 }
569 586
570 ld = (ld_max > ld_min ? ld_max : ld_min); 587 ld = (ld_max > ld_min ? ld_max : ld_min);
571 rd = (rd_max > rd_min ? rd_max : rd_min); 588 rd = (rd_max > rd_min ? rd_max : rd_min);
572 589
719 { 736 {
720 ld_max = x_max; 737 ld_max = x_max;
721 rd_max = (prec > x_max ? prec - x_max : prec); 738 rd_max = (prec > x_max ? prec - x_max : prec);
722 x_max++; 739 x_max++;
723 } 740 }
724 else 741 else if (x_max < 0)
725 { 742 {
726 ld_max = 1; 743 ld_max = 1;
727 rd_max = (prec > x_max ? prec - x_max : prec); 744 rd_max = (prec > x_max ? prec - x_max : prec);
728 x_max = -x_max + 1; 745 x_max = -x_max + 1;
729 } 746 }
747 else
748 {
749 ld_max = 1;
750 rd_max = (prec > 1 ? prec - 1 : prec);
751 x_max = 1;
752 }
730 753
731 int ld_min, rd_min; 754 int ld_min, rd_min;
732 if (x_min > 0) 755 if (x_min > 0)
733 { 756 {
734 ld_min = x_min; 757 ld_min = x_min;
735 rd_min = (prec > x_min ? prec - x_min : prec); 758 rd_min = (prec > x_min ? prec - x_min : prec);
736 x_min++; 759 x_min++;
737 } 760 }
738 else 761 else if (x_min < 0)
739 { 762 {
740 ld_min = 1; 763 ld_min = 1;
741 rd_min = (prec > x_min ? prec - x_min : prec); 764 rd_min = (prec > x_min ? prec - x_min : prec);
742 x_min = -x_min + 1; 765 x_min = -x_min + 1;
766 }
767 else
768 {
769 ld_min = 1;
770 rd_min = (prec > 1 ? prec - 1 : prec);
771 x_min = 1;
743 } 772 }
744 773
745 ld = (ld_max > ld_min ? ld_max : ld_min); 774 ld = (ld_max > ld_min ? ld_max : ld_min);
746 rd = (rd_max > rd_min ? rd_max : rd_min); 775 rd = (rd_max > rd_min ? rd_max : rd_min);
747 776
938 { 967 {
939 ld_max = x_max; 968 ld_max = x_max;
940 rd_max = (prec > x_max ? prec - x_max : prec); 969 rd_max = (prec > x_max ? prec - x_max : prec);
941 x_max++; 970 x_max++;
942 } 971 }
943 else 972 else if (x_max < 0)
944 { 973 {
945 ld_max = 1; 974 ld_max = 1;
946 rd_max = (prec > x_max ? prec - x_max : prec); 975 rd_max = (prec > x_max ? prec - x_max : prec);
947 x_max = -x_max + 1; 976 x_max = -x_max + 1;
948 } 977 }
978 else
979 {
980 ld_max = 1;
981 rd_max = (prec > 1 ? prec - 1 : prec);
982 x_max = 1;
983 }
949 984
950 int ld_min, rd_min; 985 int ld_min, rd_min;
951 if (x_min > 0) 986 if (x_min > 0)
952 { 987 {
953 ld_min = x_min; 988 ld_min = x_min;
954 rd_min = (prec > x_min ? prec - x_min : prec); 989 rd_min = (prec > x_min ? prec - x_min : prec);
955 x_min++; 990 x_min++;
956 } 991 }
957 else 992 else if (x_min < 0)
958 { 993 {
959 ld_min = 1; 994 ld_min = 1;
960 rd_min = (prec > x_min ? prec - x_min : prec); 995 rd_min = (prec > x_min ? prec - x_min : prec);
961 x_min = -x_min + 1; 996 x_min = -x_min + 1;
997 }
998 else
999 {
1000 ld_min = 1;
1001 rd_min = (prec > 1 ? prec - 1 : prec);
1002 x_min = 1;
962 } 1003 }
963 1004
964 ld = (ld_max > ld_min ? ld_max : ld_min); 1005 ld = (ld_max > ld_min ? ld_max : ld_min);
965 rd = (rd_max > rd_min ? rd_max : rd_min); 1006 rd = (rd_max > rd_min ? rd_max : rd_min);
966 1007
1152 { 1193 {
1153 ld_max = x_max; 1194 ld_max = x_max;
1154 rd_max = (prec > x_max ? prec - x_max : prec); 1195 rd_max = (prec > x_max ? prec - x_max : prec);
1155 x_max++; 1196 x_max++;
1156 } 1197 }
1157 else 1198 else if (x_max < 0)
1158 { 1199 {
1159 ld_max = 1; 1200 ld_max = 1;
1160 rd_max = (prec > x_max ? prec - x_max : prec); 1201 rd_max = (prec > x_max ? prec - x_max : prec);
1161 x_max = -x_max + 1; 1202 x_max = -x_max + 1;
1162 } 1203 }
1204 else
1205 {
1206 ld_max = 1;
1207 rd_max = (prec > 1 ? prec - 1 : prec);
1208 x_max = 1;
1209 }
1163 1210
1164 int ld_min, rd_min; 1211 int ld_min, rd_min;
1165 if (x_min > 0) 1212 if (x_min > 0)
1166 { 1213 {
1167 ld_min = x_min; 1214 ld_min = x_min;
1168 rd_min = (prec > x_min ? prec - x_min : prec); 1215 rd_min = (prec > x_min ? prec - x_min : prec);
1169 x_min++; 1216 x_min++;
1170 } 1217 }
1171 else 1218 else if (x_min < 0)
1172 { 1219 {
1173 ld_min = 1; 1220 ld_min = 1;
1174 rd_min = (prec > x_min ? prec - x_min : prec); 1221 rd_min = (prec > x_min ? prec - x_min : prec);
1175 x_min = -x_min + 1; 1222 x_min = -x_min + 1;
1223 }
1224 else
1225 {
1226 ld_min = 1;
1227 rd_min = (prec > 1 ? prec - 1 : prec);
1228 x_min = 1;
1176 } 1229 }
1177 1230
1178 ld = (ld_max > ld_min ? ld_max : ld_min); 1231 ld = (ld_max > ld_min ? ld_max : ld_min);
1179 rd = (rd_max > rd_min ? rd_max : rd_min); 1232 rd = (rd_max > rd_min ? rd_max : rd_min);
1180 1233