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);
 }