Mercurial > octave
diff libinterp/corefcn/pr-flt-fmt.cc @ 24784:4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
* pr-flt-fmt.h, pr-flt-fmt.cc (Voutput_max_field_width,
output_max_field_width): Delete. Eliminate all uses.
(set_output_prec): Rename from set_output_prec_and_fw. Change all uses.
(Foutput_max_field_width): Always return 20. Don't do anything with
input. Document new behavior.
(Foutput_precision): Limit value to be in the range 0 to 16.
(class float_format): Always set width to 0.
* pr-output.h, pr-output.cc (pr_output_traits): New template.
(make_real_format): Limit output precision.
(octave_print_real_matrix_internal,
octave_print_real_diag_matrix_internal,
octave_print_complex_matrix_internal,
octave_print_complex_diag_matrix_internal): New template functions.
Use them to define float and double versions of octave_print_internal
for real and complex matrix and diag matrix functions.
(octave_print_internal): Define separate versions for float and float
complex N-d arrays.
(Fformat): Update doc string.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Wed, 21 Feb 2018 08:24:41 -0500 |
parents | 56f889d66b7c |
children | 0b9e7fcaab91 |
line wrap: on
line diff
--- a/libinterp/corefcn/pr-flt-fmt.cc Wed Feb 21 11:51:32 2018 -0500 +++ b/libinterp/corefcn/pr-flt-fmt.cc Wed Feb 21 08:24:41 2018 -0500 @@ -29,49 +29,30 @@ #include "pr-flt-fmt.h" #include "variables.h" -// The maximum field width for a number printed by the default output -// routines. -static int Voutput_max_field_width = 10; - // The precision of the numbers printed by the default output // routines. static int Voutput_precision = 5; int -output_max_field_width (void) -{ - return Voutput_max_field_width; -} - -int output_precision (void) { return Voutput_precision; } void -set_output_prec_and_fw (int prec, int fw) +set_output_prec (int prec) { Voutput_precision = prec; - Voutput_max_field_width = fw; } -DEFUN (output_max_field_width, args, nargout, +DEFUN (output_max_field_width, , , doc: /* -*- texinfo -*- -@deftypefn {} {@var{val} =} output_max_field_width () -@deftypefnx {} {@var{old_val} =} output_max_field_width (@var{new_val}) -@deftypefnx {} {} output_max_field_width (@var{new_val}, "local") -Query or set the internal variable that specifies the maximum width -of a numeric output field. - -When called from inside a function with the @qcode{"local"} option, the -variable is changed locally for the function and any subroutines it calls. -The original variable value is restored when exiting the function. -@seealso{format, fixed_point_format, output_precision} +@deftypefn {} {} output_max_field_width +This function is obsolete and will be removed from a future version +of Octave. @end deftypefn */) { - return SET_INTERNAL_VARIABLE_WITH_LIMITS (output_max_field_width, 0, - std::numeric_limits<int>::max ()); + return octave_value (20); } DEFUN (output_precision, args, nargout, @@ -82,12 +63,16 @@ Query or set the internal variable that specifies the minimum number of significant figures to display for numeric output. +Note that regardless of the value set for @code{output_precision}, the +number of digits of precision displayed is limited to 16 for double +precision values and 7 for single precision values. + When called from inside a function with the @qcode{"local"} option, the variable is changed locally for the function and any subroutines it calls. The original variable value is restored when exiting the function. -@seealso{format, fixed_point_format, output_max_field_width} + +@seealso{format, fixed_point_format} @end deftypefn */) { - return SET_INTERNAL_VARIABLE_WITH_LIMITS (output_precision, -1, - std::numeric_limits<int>::max ()); + return SET_INTERNAL_VARIABLE_WITH_LIMITS (output_precision, 0, 16); }