Mercurial > octave
annotate libinterp/corefcn/pr-output.cc @ 31009:a0c8c28c38cb
maint: Merge stable to default.
author | Markus Mützel <markus.muetzel@gmx.de> |
---|---|
date | Sun, 22 May 2022 19:36:01 +0200 |
parents | 4ef25c610433 4d74446020ad |
children | 96f751f8392c |
rev | line source |
---|---|
27923
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
1 //////////////////////////////////////////////////////////////////////// |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
2 // |
30564
796f54d4ddbf
update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents:
30390
diff
changeset
|
3 // Copyright (C) 1993-2022 The Octave Project Developers |
27923
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
4 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
5 // See the file COPYRIGHT.md in the top-level directory of this |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
6 // distribution or <https://octave.org/copyright/>. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
7 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
8 // This file is part of Octave. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
9 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
10 // Octave is free software: you can redistribute it and/or modify it |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
11 // under the terms of the GNU General Public License as published by |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
12 // the Free Software Foundation, either version 3 of the License, or |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
13 // (at your option) any later version. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
14 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
15 // Octave is distributed in the hope that it will be useful, but |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
16 // WITHOUT ANY WARRANTY; without even the implied warranty of |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
17 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
18 // GNU General Public License for more details. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
19 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
20 // You should have received a copy of the GNU General Public License |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
21 // along with Octave; see the file COPYING. If not, see |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
22 // <https://www.gnu.org/licenses/>. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
23 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
24 //////////////////////////////////////////////////////////////////////// |
1 | 25 |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21662
diff
changeset
|
26 #if defined (HAVE_CONFIG_H) |
21301
40de9f8f23a6
Use '#include "config.h"' rather than <config.h>.
Rik <rik@octave.org>
parents:
21200
diff
changeset
|
27 # include "config.h" |
1 | 28 #endif |
29 | |
23662
bd77ab816e43
eliminate obsolete file lo-math.h
John W. Eaton <jwe@octave.org>
parents:
23619
diff
changeset
|
30 #include <cmath> |
1343 | 31 |
3503 | 32 #include <iomanip> |
23455
73ff72d3d603
maint: Eliminate <cfloat.h> header from libinterp files
Rik <rik@octave.org>
parents:
23450
diff
changeset
|
33 #include <limits> |
73ff72d3d603
maint: Eliminate <cfloat.h> header from libinterp files
Rik <rik@octave.org>
parents:
23450
diff
changeset
|
34 #include <list> |
5765 | 35 #include <sstream> |
1728 | 36 #include <string> |
37 | |
4655 | 38 #include "Array-util.h" |
453 | 39 #include "CMatrix.h" |
1 | 40 #include "Range.h" |
2926 | 41 #include "cmd-edit.h" |
1352 | 42 #include "dMatrix.h" |
2891 | 43 #include "lo-mappers.h" |
2317 | 44 #include "mach-info.h" |
1651 | 45 #include "oct-cmplx.h" |
26111
3e44ed9d50b6
Move rational_approx to liboctave (patch #9084).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26009
diff
changeset
|
46 #include "oct-string.h" |
4153 | 47 #include "quit.h" |
1 | 48 |
3933 | 49 #include "Cell.h" |
1352 | 50 #include "defun.h" |
51 #include "error.h" | |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21066
diff
changeset
|
52 #include "errwarn.h" |
20940
48b2ad5ee801
maint: Rename oct-obj.[cc|h] to ovl.[cc|h] for clarity.
Rik <rik@octave.org>
parents:
20939
diff
changeset
|
53 #include "ovl.h" |
3685 | 54 #include "oct-stream.h" |
20925
667861ffffab
Extracted header class octave-preserve-stream-state from utils.{cc/h}.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
20915
diff
changeset
|
55 #include "octave-preserve-stream-state.h" |
1352 | 56 #include "pager.h" |
22898
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
57 #include "parse.h" |
24667
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
58 #include "pr-flt-fmt.h" |
1352 | 59 #include "pr-output.h" |
1282 | 60 #include "sysdep.h" |
6803 | 61 #include "unwind-prot.h" |
1 | 62 #include "utils.h" |
1352 | 63 #include "variables.h" |
1 | 64 |
15466
d174210ce1ec
use ' instead of ` in error messages, warnings and most comments
John W. Eaton <jwe@octave.org>
parents:
14138
diff
changeset
|
65 // TRUE means use a scaled fixed point format for 'format long' and |
d174210ce1ec
use ' instead of ` in error messages, warnings and most comments
John W. Eaton <jwe@octave.org>
parents:
14138
diff
changeset
|
66 // 'format short'. |
5794 | 67 static bool Vfixed_point_format = false; |
3105 | 68 |
5360 | 69 // TRUE means that the dimensions of empty objects should be printed |
2165 | 70 // like this: x = [](2x0). |
5794 | 71 bool Vprint_empty_dimensions = true; |
2165 | 72 |
73 // TRUE means that the rows of big matrices should be split into | |
74 // smaller slices that fit on the screen. | |
5794 | 75 static bool Vsplit_long_rows = true; |
2165 | 76 |
3018 | 77 // TRUE means don't do any fancy formatting. |
2387 | 78 static bool free_format = false; |
1 | 79 |
3018 | 80 // TRUE means print plus sign for nonzero, blank for zero. |
2387 | 81 static bool plus_format = false; |
1 | 82 |
4632 | 83 // First char for > 0, second for < 0, third for == 0. |
19232
97eea1e2d9ff
pr-output.cc: fix default chars for "format +" for Matlab compatibility
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18433
diff
changeset
|
84 static std::string plus_format_chars = "+- "; |
4632 | 85 |
6788 | 86 // TRUE means always print in a rational approximation |
87 static bool rat_format = false; | |
88 | |
89 // Used to force the length of the rational approximation string for Frats | |
90 static int rat_string_len = -1; | |
91 | |
3018 | 92 // TRUE means always print like dollars and cents. |
2387 | 93 static bool bank_format = false; |
1282 | 94 |
3018 | 95 // TRUE means print data in hexadecimal format. |
3608 | 96 static int hex_format = 0; |
1282 | 97 |
3018 | 98 // TRUE means print data in binary-bit-pattern format. |
1309 | 99 static int bit_format = 0; |
100 | |
3018 | 101 // TRUE means don't put newlines around the column number headers. |
13112
969ed305dde5
Remove all blank lines with "format compact"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13102
diff
changeset
|
102 bool Vcompact_format = false; |
1186 | 103 |
3018 | 104 // TRUE means use an e format. |
2387 | 105 static bool print_e = false; |
1 | 106 |
4509 | 107 // TRUE means use a g format. |
108 static bool print_g = false; | |
109 | |
27491
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
110 // TRUE means print uppercase E in exponent field and A-F in hex format. |
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
111 static bool uppercase_format = false; |
1 | 112 |
10741
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
113 // TRUE means use an engineering format. |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
114 static bool print_eng = false; |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
115 |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
116 static int |
10771
82d9efde7e96
pr-output.cc: Avoid use of % operator on negative operands
Rik <octave@nomad.inbox5.com>
parents:
10741
diff
changeset
|
117 calc_scale_exp (const int& x) |
10741
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
118 { |
10771
82d9efde7e96
pr-output.cc: Avoid use of % operator on negative operands
Rik <octave@nomad.inbox5.com>
parents:
10741
diff
changeset
|
119 if (! print_eng) |
82d9efde7e96
pr-output.cc: Avoid use of % operator on negative operands
Rik <octave@nomad.inbox5.com>
parents:
10741
diff
changeset
|
120 return x; |
82d9efde7e96
pr-output.cc: Avoid use of % operator on negative operands
Rik <octave@nomad.inbox5.com>
parents:
10741
diff
changeset
|
121 else |
82d9efde7e96
pr-output.cc: Avoid use of % operator on negative operands
Rik <octave@nomad.inbox5.com>
parents:
10741
diff
changeset
|
122 return x - 3*static_cast<int> (x/3); |
20946 | 123 |
124 // The expression above is equivalent to x - (x % 3). | |
125 | |
126 // According to the ISO specification for C++ the modulo operator is | |
127 // compiler dependent if any of the arguments are negative. Since | |
128 // this function will need to work on negative arguments, and we want | |
129 // to avoid portability issues, we re-implement the modulo function to | |
27454
43ece0b8318b
Fix display of complex values when fixed_point_format is true (bug #56961).
Rik <rik@octave.org>
parents:
27453
diff
changeset
|
130 // the desired behavior (truncation). There may be a gnulib replacement. |
20946 | 131 |
132 // ISO/IEC 14882:2003 : Programming languages -- C++. 5.6.4: ISO, | |
133 // IEC. 2003 . "the binary % operator yields the remainder from the | |
134 // division of the first expression by the second. .... If both | |
135 // operands are nonnegative then the remainder is nonnegative; if not, | |
136 // the sign of the remainder is implementation-defined". | |
10741
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
137 } |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
138 |
24770
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
139 template <typename T> |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
140 static inline int |
24770
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
141 engineering_exponent (T x) |
10741
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
142 { |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
143 int ex = 0; |
24667
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
144 |
10741
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
145 if (x != 0) |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
146 { |
24770
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
147 T absval = (x < 0 ? -x : x); |
21942
aab79a1885cc
limit gnulib headers to liboctave/wrappers directory
John W. Eaton <jwe@octave.org>
parents:
21782
diff
changeset
|
148 int logabsval = static_cast<int> (std::floor (log10 (absval))); |
24667
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
149 |
20946 | 150 // Avoid using modulo function with negative arguments for |
151 // portability. See extended comment at calc_scale_exp | |
24667
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
152 |
24770
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
153 if (logabsval < 0) |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11572
diff
changeset
|
154 ex = logabsval - 2 + ((-logabsval + 2) % 3); |
10741
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
155 else |
10771
82d9efde7e96
pr-output.cc: Avoid use of % operator on negative operands
Rik <octave@nomad.inbox5.com>
parents:
10741
diff
changeset
|
156 ex = logabsval - (logabsval % 3); |
10741
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
157 } |
24667
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
158 |
10741
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
159 return ex; |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
160 } |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
161 |
24770
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
162 template <typename T> |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
163 static inline int |
24770
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
164 num_digits (T x) |
10741
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
165 { |
11450
5eb10763069f
substitute and use LAPACK_LIBS in mkoctfile script
John W. Eaton <jwe@octave.org>
parents:
10987
diff
changeset
|
166 return 1 + (print_eng |
5eb10763069f
substitute and use LAPACK_LIBS in mkoctfile script
John W. Eaton <jwe@octave.org>
parents:
10987
diff
changeset
|
167 ? engineering_exponent (x) |
21942
aab79a1885cc
limit gnulib headers to liboctave/wrappers directory
John W. Eaton <jwe@octave.org>
parents:
21782
diff
changeset
|
168 : static_cast<int> (std::floor (log10 (x)))); |
10741
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
169 } |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
170 |
24770
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
171 template <typename T> |
24667
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
172 int |
24770
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
173 pr_engineering_float<T>::exponent (void) const |
10741
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
174 { |
24667
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
175 return engineering_exponent (m_val); |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
176 } |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
177 |
24770
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
178 template <typename T> |
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
179 T |
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
180 pr_engineering_float<T>::mantissa (void) const |
24667
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
181 { |
24770
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
182 return m_val / std::pow (static_cast<T> (10), exponent ()); |
24667
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
183 } |
10741
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
184 |
24770
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
185 template <typename T> |
10741
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
186 std::ostream& |
24770
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
187 operator << (std::ostream& os, const pr_engineering_float<T>& pef) |
10741
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
188 { |
23675
f71c0195b19d
move octave_preserve_stream_state to octave namespace
John W. Eaton <jwe@octave.org>
parents:
23662
diff
changeset
|
189 octave::preserve_stream_state stream_state (os); |
17818
f1b59ef34eda
attempt to avoid setting persistent state on i/o streams (bug #40396)
John W. Eaton <jwe@octave.org>
parents:
17787
diff
changeset
|
190 |
24667
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
191 float_format real_fmt = pef.m_ff; |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
192 |
27183
2d9decd77e58
revamp float_format object
John W. Eaton <jwe@octave.org>
parents:
27156
diff
changeset
|
193 if (real_fmt.width () >= 0) |
2d9decd77e58
revamp float_format object
John W. Eaton <jwe@octave.org>
parents:
27156
diff
changeset
|
194 os << std::setw (real_fmt.width () - real_fmt.exponent_width ()); |
2d9decd77e58
revamp float_format object
John W. Eaton <jwe@octave.org>
parents:
27156
diff
changeset
|
195 |
2d9decd77e58
revamp float_format object
John W. Eaton <jwe@octave.org>
parents:
27156
diff
changeset
|
196 if (real_fmt.precision () >= 0) |
2d9decd77e58
revamp float_format object
John W. Eaton <jwe@octave.org>
parents:
27156
diff
changeset
|
197 os << std::setprecision (real_fmt.precision ()); |
2d9decd77e58
revamp float_format object
John W. Eaton <jwe@octave.org>
parents:
27156
diff
changeset
|
198 |
2d9decd77e58
revamp float_format object
John W. Eaton <jwe@octave.org>
parents:
27156
diff
changeset
|
199 os.flags (real_fmt.format_flags ()); |
10771
82d9efde7e96
pr-output.cc: Avoid use of % operator on negative operands
Rik <octave@nomad.inbox5.com>
parents:
10741
diff
changeset
|
200 |
82d9efde7e96
pr-output.cc: Avoid use of % operator on negative operands
Rik <octave@nomad.inbox5.com>
parents:
10741
diff
changeset
|
201 os << pef.mantissa (); |
82d9efde7e96
pr-output.cc: Avoid use of % operator on negative operands
Rik <octave@nomad.inbox5.com>
parents:
10741
diff
changeset
|
202 |
82d9efde7e96
pr-output.cc: Avoid use of % operator on negative operands
Rik <octave@nomad.inbox5.com>
parents:
10741
diff
changeset
|
203 int ex = pef.exponent (); |
10741
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
204 if (ex < 0) |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
205 { |
27491
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
206 if (uppercase_format) |
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
207 os << std::setw (0) << "E-"; |
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
208 else |
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
209 os << std::setw (0) << "e-"; |
10741
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
210 ex = -ex; |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
211 } |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
212 else |
27491
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
213 { |
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
214 if (uppercase_format) |
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
215 os << std::setw (0) << "E+"; |
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
216 else |
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
217 os << std::setw (0) << "e+"; |
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
218 } |
10741
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
219 |
27183
2d9decd77e58
revamp float_format object
John W. Eaton <jwe@octave.org>
parents:
27156
diff
changeset
|
220 os << std::setw (real_fmt.exponent_width () - 2) |
2d9decd77e58
revamp float_format object
John W. Eaton <jwe@octave.org>
parents:
27156
diff
changeset
|
221 << std::setfill ('0') << ex; |
10741
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
222 |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
223 return os; |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
224 } |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
225 |
24770
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
226 template <typename T> |
3608 | 227 std::ostream& |
24770
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
228 operator << (std::ostream& os, const pr_formatted_float<T>& pff) |
3608 | 229 { |
23675
f71c0195b19d
move octave_preserve_stream_state to octave namespace
John W. Eaton <jwe@octave.org>
parents:
23662
diff
changeset
|
230 octave::preserve_stream_state stream_state (os); |
17818
f1b59ef34eda
attempt to avoid setting persistent state on i/o streams (bug #40396)
John W. Eaton <jwe@octave.org>
parents:
17787
diff
changeset
|
231 |
24667
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
232 float_format real_fmt = pff.m_ff; |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
233 |
27183
2d9decd77e58
revamp float_format object
John W. Eaton <jwe@octave.org>
parents:
27156
diff
changeset
|
234 if (real_fmt.width () >= 0) |
2d9decd77e58
revamp float_format object
John W. Eaton <jwe@octave.org>
parents:
27156
diff
changeset
|
235 os << std::setw (real_fmt.width ()); |
2d9decd77e58
revamp float_format object
John W. Eaton <jwe@octave.org>
parents:
27156
diff
changeset
|
236 |
2d9decd77e58
revamp float_format object
John W. Eaton <jwe@octave.org>
parents:
27156
diff
changeset
|
237 if (real_fmt.precision () >= 0) |
2d9decd77e58
revamp float_format object
John W. Eaton <jwe@octave.org>
parents:
27156
diff
changeset
|
238 os << std::setprecision (real_fmt.precision ()); |
2d9decd77e58
revamp float_format object
John W. Eaton <jwe@octave.org>
parents:
27156
diff
changeset
|
239 |
2d9decd77e58
revamp float_format object
John W. Eaton <jwe@octave.org>
parents:
27156
diff
changeset
|
240 os.flags (real_fmt.format_flags ()); |
24667
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
241 |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
242 os << pff.m_val; |
3608 | 243 |
244 return os; | |
245 } | |
246 | |
24770
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
247 template <typename T> |
6788 | 248 std::ostream& |
24770
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
249 operator << (std::ostream& os, const pr_rational_float<T>& prf) |
6788 | 250 { |
23675
f71c0195b19d
move octave_preserve_stream_state to octave namespace
John W. Eaton <jwe@octave.org>
parents:
23662
diff
changeset
|
251 octave::preserve_stream_state stream_state (os); |
17818
f1b59ef34eda
attempt to avoid setting persistent state on i/o streams (bug #40396)
John W. Eaton <jwe@octave.org>
parents:
17787
diff
changeset
|
252 |
24667
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
253 float_format real_fmt = prf.m_ff; |
27473
d503426130bf
Display '*' rather than '0' for small rational approximations (bug #56941)
Rik <rik@octave.org>
parents:
27466
diff
changeset
|
254 bool have_neg_sign = prf.m_val < 0; |
24667
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
255 |
27183
2d9decd77e58
revamp float_format object
John W. Eaton <jwe@octave.org>
parents:
27156
diff
changeset
|
256 int fw = (rat_string_len > 0 ? rat_string_len : real_fmt.width ()); |
27473
d503426130bf
Display '*' rather than '0' for small rational approximations (bug #56941)
Rik <rik@octave.org>
parents:
27466
diff
changeset
|
257 std::string s; |
d503426130bf
Display '*' rather than '0' for small rational approximations (bug #56941)
Rik <rik@octave.org>
parents:
27466
diff
changeset
|
258 |
d503426130bf
Display '*' rather than '0' for small rational approximations (bug #56941)
Rik <rik@octave.org>
parents:
27466
diff
changeset
|
259 if (have_neg_sign) |
d503426130bf
Display '*' rather than '0' for small rational approximations (bug #56941)
Rik <rik@octave.org>
parents:
27466
diff
changeset
|
260 s = rational_approx (prf.m_val, fw); |
d503426130bf
Display '*' rather than '0' for small rational approximations (bug #56941)
Rik <rik@octave.org>
parents:
27466
diff
changeset
|
261 else |
d503426130bf
Display '*' rather than '0' for small rational approximations (bug #56941)
Rik <rik@octave.org>
parents:
27466
diff
changeset
|
262 s = rational_approx (prf.m_val, fw-1); |
6788 | 263 |
264 if (fw >= 0) | |
265 os << std::setw (fw); | |
266 | |
27183
2d9decd77e58
revamp float_format object
John W. Eaton <jwe@octave.org>
parents:
27156
diff
changeset
|
267 os.flags (real_fmt.format_flags ()); |
24667
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
268 |
27473
d503426130bf
Display '*' rather than '0' for small rational approximations (bug #56941)
Rik <rik@octave.org>
parents:
27466
diff
changeset
|
269 if (s == "0") |
d503426130bf
Display '*' rather than '0' for small rational approximations (bug #56941)
Rik <rik@octave.org>
parents:
27466
diff
changeset
|
270 s = '*'; |
d503426130bf
Display '*' rather than '0' for small rational approximations (bug #56941)
Rik <rik@octave.org>
parents:
27466
diff
changeset
|
271 else if (fw > 0) |
d503426130bf
Display '*' rather than '0' for small rational approximations (bug #56941)
Rik <rik@octave.org>
parents:
27466
diff
changeset
|
272 { |
d503426130bf
Display '*' rather than '0' for small rational approximations (bug #56941)
Rik <rik@octave.org>
parents:
27466
diff
changeset
|
273 if (s.find ('/') != std::string::npos) |
d503426130bf
Display '*' rather than '0' for small rational approximations (bug #56941)
Rik <rik@octave.org>
parents:
27466
diff
changeset
|
274 { |
d503426130bf
Display '*' rather than '0' for small rational approximations (bug #56941)
Rik <rik@octave.org>
parents:
27466
diff
changeset
|
275 if (s.length () > (static_cast<unsigned int> (fw))) |
d503426130bf
Display '*' rather than '0' for small rational approximations (bug #56941)
Rik <rik@octave.org>
parents:
27466
diff
changeset
|
276 s = '*'; |
d503426130bf
Display '*' rather than '0' for small rational approximations (bug #56941)
Rik <rik@octave.org>
parents:
27466
diff
changeset
|
277 } |
d503426130bf
Display '*' rather than '0' for small rational approximations (bug #56941)
Rik <rik@octave.org>
parents:
27466
diff
changeset
|
278 else |
d503426130bf
Display '*' rather than '0' for small rational approximations (bug #56941)
Rik <rik@octave.org>
parents:
27466
diff
changeset
|
279 { |
d503426130bf
Display '*' rather than '0' for small rational approximations (bug #56941)
Rik <rik@octave.org>
parents:
27466
diff
changeset
|
280 if (have_neg_sign) |
d503426130bf
Display '*' rather than '0' for small rational approximations (bug #56941)
Rik <rik@octave.org>
parents:
27466
diff
changeset
|
281 { |
d503426130bf
Display '*' rather than '0' for small rational approximations (bug #56941)
Rik <rik@octave.org>
parents:
27466
diff
changeset
|
282 if (s.length () > (static_cast<unsigned int> (fw) - 2)) |
d503426130bf
Display '*' rather than '0' for small rational approximations (bug #56941)
Rik <rik@octave.org>
parents:
27466
diff
changeset
|
283 s = '*'; |
d503426130bf
Display '*' rather than '0' for small rational approximations (bug #56941)
Rik <rik@octave.org>
parents:
27466
diff
changeset
|
284 } |
d503426130bf
Display '*' rather than '0' for small rational approximations (bug #56941)
Rik <rik@octave.org>
parents:
27466
diff
changeset
|
285 else |
d503426130bf
Display '*' rather than '0' for small rational approximations (bug #56941)
Rik <rik@octave.org>
parents:
27466
diff
changeset
|
286 { |
d503426130bf
Display '*' rather than '0' for small rational approximations (bug #56941)
Rik <rik@octave.org>
parents:
27466
diff
changeset
|
287 if (s.length () > (static_cast<unsigned int> (fw) - 3)) |
d503426130bf
Display '*' rather than '0' for small rational approximations (bug #56941)
Rik <rik@octave.org>
parents:
27466
diff
changeset
|
288 s = '*'; |
d503426130bf
Display '*' rather than '0' for small rational approximations (bug #56941)
Rik <rik@octave.org>
parents:
27466
diff
changeset
|
289 } |
d503426130bf
Display '*' rather than '0' for small rational approximations (bug #56941)
Rik <rik@octave.org>
parents:
27466
diff
changeset
|
290 } |
d503426130bf
Display '*' rather than '0' for small rational approximations (bug #56941)
Rik <rik@octave.org>
parents:
27466
diff
changeset
|
291 } |
d503426130bf
Display '*' rather than '0' for small rational approximations (bug #56941)
Rik <rik@octave.org>
parents:
27466
diff
changeset
|
292 |
d503426130bf
Display '*' rather than '0' for small rational approximations (bug #56941)
Rik <rik@octave.org>
parents:
27466
diff
changeset
|
293 os << s; |
6788 | 294 |
295 return os; | |
296 } | |
297 | |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
298 template <typename T> |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
299 static inline T |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
300 pr_max_internal (const MArray<T>& m) |
1 | 301 { |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
302 // We expect a 2-d array. |
30723
08b08b7f05b2
Replace direct calls to C library assert() with Octave specialty functions in libinterp/ (bug #61753)
Arun Giridhar <arungiridhar@gmail.com> and Rik <rik@octave.org>
parents:
30588
diff
changeset
|
303 error_unless (m.ndims () == 2); |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
304 |
5275 | 305 octave_idx_type nr = m.rows (); |
306 octave_idx_type nc = m.columns (); | |
1 | 307 |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
308 T result = std::numeric_limits<T>::lowest (); |
1 | 309 |
5748 | 310 bool all_inf_or_nan = true; |
311 | |
5275 | 312 for (octave_idx_type j = 0; j < nc; j++) |
313 for (octave_idx_type i = 0; i < nr; i++) | |
1 | 314 { |
30390
a61e1a0f6024
maint: style check C++ files in libinterp/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
30329
diff
changeset
|
315 T val = m(i, j); |
23564
7049da1648c0
Deprecate octave::math::finite in favor of octave::math::isfinite.
Rik <rik@octave.org>
parents:
23534
diff
changeset
|
316 if (! octave::math::isfinite (val)) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
317 continue; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
318 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
319 all_inf_or_nan = false; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
320 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
321 if (val > result) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
322 result = val; |
1 | 323 } |
3608 | 324 |
5748 | 325 if (all_inf_or_nan) |
24770
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
326 result = 0; |
5748 | 327 |
1 | 328 return result; |
329 } | |
330 | |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
331 template <typename T> |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
332 static inline T |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
333 pr_min_internal (const MArray<T>& m) |
1 | 334 { |
5275 | 335 octave_idx_type nr = m.rows (); |
336 octave_idx_type nc = m.columns (); | |
1 | 337 |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
338 T result = std::numeric_limits<T>::max (); |
1 | 339 |
5748 | 340 bool all_inf_or_nan = true; |
341 | |
5275 | 342 for (octave_idx_type j = 0; j < nc; j++) |
343 for (octave_idx_type i = 0; i < nr; i++) | |
1 | 344 { |
30390
a61e1a0f6024
maint: style check C++ files in libinterp/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
30329
diff
changeset
|
345 T val = m(i, j); |
23564
7049da1648c0
Deprecate octave::math::finite in favor of octave::math::isfinite.
Rik <rik@octave.org>
parents:
23534
diff
changeset
|
346 if (! octave::math::isfinite (val)) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
347 continue; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
348 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
349 all_inf_or_nan = false; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
350 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
351 if (val < result) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
352 result = val; |
1 | 353 } |
3608 | 354 |
5748 | 355 if (all_inf_or_nan) |
24770
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
356 result = 0; |
5748 | 357 |
1 | 358 return result; |
359 } | |
360 | |
24784
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
361 template <typename> |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
362 struct pr_output_traits |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
363 { |
30216
c2132e0147ff
maint: use ALL_CAPS for static const variables used as constants.
Rik <rik@octave.org>
parents:
30001
diff
changeset
|
364 static const int DIGITS10; |
c2132e0147ff
maint: use ALL_CAPS for static const variables used as constants.
Rik <rik@octave.org>
parents:
30001
diff
changeset
|
365 static const int MAX_FIELD_WIDTH; |
24784
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
366 }; |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
367 |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
368 template <> |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
369 struct pr_output_traits<double> |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
370 { |
30216
c2132e0147ff
maint: use ALL_CAPS for static const variables used as constants.
Rik <rik@octave.org>
parents:
30001
diff
changeset
|
371 static const int DIGITS10; |
c2132e0147ff
maint: use ALL_CAPS for static const variables used as constants.
Rik <rik@octave.org>
parents:
30001
diff
changeset
|
372 static const int MAX_FIELD_WIDTH; |
24784
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
373 }; |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
374 |
30216
c2132e0147ff
maint: use ALL_CAPS for static const variables used as constants.
Rik <rik@octave.org>
parents:
30001
diff
changeset
|
375 const int pr_output_traits<double>::DIGITS10 = 16; |
c2132e0147ff
maint: use ALL_CAPS for static const variables used as constants.
Rik <rik@octave.org>
parents:
30001
diff
changeset
|
376 const int pr_output_traits<double>::MAX_FIELD_WIDTH = 21; |
24784
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
377 |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
378 template <> |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
379 struct pr_output_traits<float> |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
380 { |
30216
c2132e0147ff
maint: use ALL_CAPS for static const variables used as constants.
Rik <rik@octave.org>
parents:
30001
diff
changeset
|
381 static const int DIGITS10; |
c2132e0147ff
maint: use ALL_CAPS for static const variables used as constants.
Rik <rik@octave.org>
parents:
30001
diff
changeset
|
382 static const int MAX_FIELD_WIDTH; |
24784
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
383 }; |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
384 |
30216
c2132e0147ff
maint: use ALL_CAPS for static const variables used as constants.
Rik <rik@octave.org>
parents:
30001
diff
changeset
|
385 const int pr_output_traits<float>::DIGITS10 = 8; |
c2132e0147ff
maint: use ALL_CAPS for static const variables used as constants.
Rik <rik@octave.org>
parents:
30001
diff
changeset
|
386 const int pr_output_traits<float>::MAX_FIELD_WIDTH = 13; |
24784
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
387 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
388 // FIXME: it would be nice to share more code among these functions,.. |
1658 | 389 |
24784
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
390 // Works for double and float. |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
391 |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
392 template <typename T> |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
393 static inline float_display_format |
24787
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
394 make_real_format (int digits, bool inf_or_nan, bool int_only) |
1 | 395 { |
24667
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
396 float_format fmt; |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
397 |
30216
c2132e0147ff
maint: use ALL_CAPS for static const variables used as constants.
Rik <rik@octave.org>
parents:
30001
diff
changeset
|
398 int prec = std::min (output_precision (), pr_output_traits<T>::DIGITS10); |
1 | 399 |
24789
a4d4ec566fd7
improve formatting of large values in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24788
diff
changeset
|
400 int fw = 0, ld = 0, rd = 0; |
1 | 401 |
6788 | 402 if (rat_format) |
403 { | |
404 fw = 0; | |
405 rd = 0; | |
406 } | |
407 else if (bank_format) | |
1 | 408 { |
27458
2f4e8dce06da
Don't print leading spaces before scalar values in interpeter (bug #56939)
Rik <rik@octave.org>
parents:
27454
diff
changeset
|
409 fw = (digits < 0 ? 4 : digits + 3); |
2f4e8dce06da
Don't print leading spaces before scalar values in interpeter (bug #56939)
Rik <rik@octave.org>
parents:
27454
diff
changeset
|
410 if (inf_or_nan) |
2f4e8dce06da
Don't print leading spaces before scalar values in interpeter (bug #56939)
Rik <rik@octave.org>
parents:
27454
diff
changeset
|
411 fw = 3; |
1 | 412 rd = 2; |
413 } | |
1282 | 414 else if (hex_format) |
415 { | |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
416 fw = 2 * sizeof (T); |
1282 | 417 rd = 0; |
418 } | |
1309 | 419 else if (bit_format) |
420 { | |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
421 fw = 8 * sizeof (T); |
1309 | 422 rd = 0; |
423 } | |
27458
2f4e8dce06da
Don't print leading spaces before scalar values in interpeter (bug #56939)
Rik <rik@octave.org>
parents:
27454
diff
changeset
|
424 else if (inf_or_nan) |
1 | 425 { |
27458
2f4e8dce06da
Don't print leading spaces before scalar values in interpeter (bug #56939)
Rik <rik@octave.org>
parents:
27454
diff
changeset
|
426 fw = 3; |
2f4e8dce06da
Don't print leading spaces before scalar values in interpeter (bug #56939)
Rik <rik@octave.org>
parents:
27454
diff
changeset
|
427 } |
2f4e8dce06da
Don't print leading spaces before scalar values in interpeter (bug #56939)
Rik <rik@octave.org>
parents:
27454
diff
changeset
|
428 else if (int_only) |
2f4e8dce06da
Don't print leading spaces before scalar values in interpeter (bug #56939)
Rik <rik@octave.org>
parents:
27454
diff
changeset
|
429 { |
2f4e8dce06da
Don't print leading spaces before scalar values in interpeter (bug #56939)
Rik <rik@octave.org>
parents:
27454
diff
changeset
|
430 fw = digits; |
2f4e8dce06da
Don't print leading spaces before scalar values in interpeter (bug #56939)
Rik <rik@octave.org>
parents:
27454
diff
changeset
|
431 ld = digits; |
2f4e8dce06da
Don't print leading spaces before scalar values in interpeter (bug #56939)
Rik <rik@octave.org>
parents:
27454
diff
changeset
|
432 rd = 0; |
1 | 433 } |
434 else | |
435 { | |
436 if (digits > 0) | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
437 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
438 ld = digits; |
23450
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23433
diff
changeset
|
439 rd = (prec > digits ? prec - digits : prec); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
440 } |
27451
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
441 else if (digits < 0) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
442 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
443 ld = 1; |
23450
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23433
diff
changeset
|
444 rd = (prec > digits ? prec - digits : prec); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
445 } |
1 | 446 else |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
447 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
448 ld = 1; |
27451
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
449 rd = (prec > digits ? prec - 1 : prec); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
450 } |
1 | 451 |
27458
2f4e8dce06da
Don't print leading spaces before scalar values in interpeter (bug #56939)
Rik <rik@octave.org>
parents:
27454
diff
changeset
|
452 fw = ld + 1 + rd; |
1 | 453 } |
454 | |
6788 | 455 if (! (rat_format || bank_format || hex_format || bit_format) |
24785
504869574c89
restore auto switch to E formats octave_print_internal functions
John W. Eaton <jwe@octave.org>
parents:
24784
diff
changeset
|
456 && (print_e || print_g || print_eng |
30216
c2132e0147ff
maint: use ALL_CAPS for static const variables used as constants.
Rik <rik@octave.org>
parents:
30001
diff
changeset
|
457 || ld + rd > pr_output_traits<T>::DIGITS10 |
c2132e0147ff
maint: use ALL_CAPS for static const variables used as constants.
Rik <rik@octave.org>
parents:
30001
diff
changeset
|
458 || fw > pr_output_traits<T>::MAX_FIELD_WIDTH |
27466
6e8dac65d405
Switch to scientific notation for format short when values are large or small (bug #56971).
Rik <rik@octave.org>
parents:
27459
diff
changeset
|
459 || ld + rd > (1.5 * prec))) |
1 | 460 { |
4509 | 461 if (print_g) |
27458
2f4e8dce06da
Don't print leading spaces before scalar values in interpeter (bug #56939)
Rik <rik@octave.org>
parents:
27454
diff
changeset
|
462 fmt = float_format (prec, prec); |
4509 | 463 else |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
464 { |
16339
0c340bf413d7
allow exponent in output to always have 3 digits
John W. Eaton <jwe@octave.org>
parents:
16169
diff
changeset
|
465 // e+ddd |
0c340bf413d7
allow exponent in output to always have 3 digits
John W. Eaton <jwe@octave.org>
parents:
16169
diff
changeset
|
466 int ex = 5; |
10741
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
467 |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
468 if (print_eng) |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
469 { |
16339
0c340bf413d7
allow exponent in output to always have 3 digits
John W. Eaton <jwe@octave.org>
parents:
16169
diff
changeset
|
470 // -ddd. |
27458
2f4e8dce06da
Don't print leading spaces before scalar values in interpeter (bug #56939)
Rik <rik@octave.org>
parents:
27454
diff
changeset
|
471 fw = 1 + prec + ex; |
2f4e8dce06da
Don't print leading spaces before scalar values in interpeter (bug #56939)
Rik <rik@octave.org>
parents:
27454
diff
changeset
|
472 if (inf_or_nan) |
2f4e8dce06da
Don't print leading spaces before scalar values in interpeter (bug #56939)
Rik <rik@octave.org>
parents:
27454
diff
changeset
|
473 { |
2f4e8dce06da
Don't print leading spaces before scalar values in interpeter (bug #56939)
Rik <rik@octave.org>
parents:
27454
diff
changeset
|
474 fw = 3; |
2f4e8dce06da
Don't print leading spaces before scalar values in interpeter (bug #56939)
Rik <rik@octave.org>
parents:
27454
diff
changeset
|
475 ex = 0; |
2f4e8dce06da
Don't print leading spaces before scalar values in interpeter (bug #56939)
Rik <rik@octave.org>
parents:
27454
diff
changeset
|
476 } |
10741
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
477 fmt = float_format (fw, ex, prec - 1, std::ios::fixed); |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
478 } |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
479 else |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
480 { |
16339
0c340bf413d7
allow exponent in output to always have 3 digits
John W. Eaton <jwe@octave.org>
parents:
16169
diff
changeset
|
481 // -d. |
27458
2f4e8dce06da
Don't print leading spaces before scalar values in interpeter (bug #56939)
Rik <rik@octave.org>
parents:
27454
diff
changeset
|
482 fw = prec + ex; |
2f4e8dce06da
Don't print leading spaces before scalar values in interpeter (bug #56939)
Rik <rik@octave.org>
parents:
27454
diff
changeset
|
483 if (inf_or_nan) |
2f4e8dce06da
Don't print leading spaces before scalar values in interpeter (bug #56939)
Rik <rik@octave.org>
parents:
27454
diff
changeset
|
484 { |
2f4e8dce06da
Don't print leading spaces before scalar values in interpeter (bug #56939)
Rik <rik@octave.org>
parents:
27454
diff
changeset
|
485 fw = 3; |
2f4e8dce06da
Don't print leading spaces before scalar values in interpeter (bug #56939)
Rik <rik@octave.org>
parents:
27454
diff
changeset
|
486 ex = 0; |
2f4e8dce06da
Don't print leading spaces before scalar values in interpeter (bug #56939)
Rik <rik@octave.org>
parents:
27454
diff
changeset
|
487 } |
16339
0c340bf413d7
allow exponent in output to always have 3 digits
John W. Eaton <jwe@octave.org>
parents:
16169
diff
changeset
|
488 fmt = float_format (fw, ex, prec - 1, std::ios::scientific); |
10741
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
489 } |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
490 } |
1 | 491 } |
5086 | 492 else if (! bank_format && (inf_or_nan || int_only)) |
24789
a4d4ec566fd7
improve formatting of large values in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24788
diff
changeset
|
493 fmt = float_format (fw, ld); |
1 | 494 else |
3608 | 495 fmt = float_format (fw, rd, std::ios::fixed); |
1 | 496 |
27491
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
497 if (uppercase_format) |
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
498 fmt.uppercase (); |
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
499 |
24667
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
500 return float_display_format (fmt); |
1 | 501 } |
502 | |
24784
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
503 // Works for double and float. |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
504 |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
505 template <typename T> |
24667
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
506 float_display_format |
24786
0aeef407b04e
don't pass field width as separate argument in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24785
diff
changeset
|
507 make_scalar_format (const T& val) |
1658 | 508 { |
509 if (free_format) | |
24667
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
510 return float_display_format (); |
1658 | 511 |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
512 bool inf_or_nan = (octave::math::isinf (val) || octave::math::isnan (val)); |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
513 |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
514 bool int_only = (! inf_or_nan && octave::math::x_nint (val) == val); |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
515 |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
516 T val_abs = (val < 0 ? -val : val); |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
517 |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
518 int digits = (inf_or_nan || val_abs == 0) ? 0 : num_digits (val_abs); |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
519 |
24786
0aeef407b04e
don't pass field width as separate argument in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24785
diff
changeset
|
520 return make_real_format<T> (digits, inf_or_nan, int_only); |
0aeef407b04e
don't pass field width as separate argument in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24785
diff
changeset
|
521 } |
0aeef407b04e
don't pass field width as separate argument in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24785
diff
changeset
|
522 |
0aeef407b04e
don't pass field width as separate argument in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24785
diff
changeset
|
523 template <> |
0aeef407b04e
don't pass field width as separate argument in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24785
diff
changeset
|
524 float_display_format |
0aeef407b04e
don't pass field width as separate argument in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24785
diff
changeset
|
525 make_format (const double& d) |
0aeef407b04e
don't pass field width as separate argument in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24785
diff
changeset
|
526 { |
0aeef407b04e
don't pass field width as separate argument in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24785
diff
changeset
|
527 return make_scalar_format (d); |
0aeef407b04e
don't pass field width as separate argument in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24785
diff
changeset
|
528 } |
0aeef407b04e
don't pass field width as separate argument in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24785
diff
changeset
|
529 |
0aeef407b04e
don't pass field width as separate argument in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24785
diff
changeset
|
530 template <> |
0aeef407b04e
don't pass field width as separate argument in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24785
diff
changeset
|
531 float_display_format |
0aeef407b04e
don't pass field width as separate argument in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24785
diff
changeset
|
532 make_format (const float& f) |
0aeef407b04e
don't pass field width as separate argument in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24785
diff
changeset
|
533 { |
0aeef407b04e
don't pass field width as separate argument in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24785
diff
changeset
|
534 return make_scalar_format (f); |
1 | 535 } |
536 | |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
537 template <typename T> |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
538 static inline float_display_format |
24667
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
539 make_real_matrix_format (int x_max, int x_min, bool inf_or_nan, |
24786
0aeef407b04e
don't pass field width as separate argument in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24785
diff
changeset
|
540 int int_or_inf_or_nan) |
1 | 541 { |
24787
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
542 T scale = ((x_max == 0 || int_or_inf_or_nan) |
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
543 ? 1 : std::pow (10.0, calc_scale_exp (x_max - 1))); |
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
544 |
24667
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
545 float_format fmt; |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
546 |
30216
c2132e0147ff
maint: use ALL_CAPS for static const variables used as constants.
Rik <rik@octave.org>
parents:
30001
diff
changeset
|
547 int prec = std::min (output_precision (), pr_output_traits<T>::DIGITS10); |
1 | 548 |
24789
a4d4ec566fd7
improve formatting of large values in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24788
diff
changeset
|
549 int fw = 0, ld = 0, rd = 0; |
1 | 550 |
6788 | 551 if (rat_format) |
552 { | |
553 fw = 9; | |
554 rd = 0; | |
555 } | |
556 else if (bank_format) | |
1 | 557 { |
23450
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23433
diff
changeset
|
558 int digits = (x_max > x_min ? x_max : x_min); |
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23433
diff
changeset
|
559 fw = (digits <= 0 ? 5 : digits + 4); |
1 | 560 rd = 2; |
561 } | |
1282 | 562 else if (hex_format) |
563 { | |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
564 fw = 2 * sizeof (T); |
1282 | 565 rd = 0; |
566 } | |
1309 | 567 else if (bit_format) |
568 { | |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
569 fw = 8 * sizeof (T); |
1309 | 570 rd = 0; |
571 } | |
4509 | 572 else if (Vfixed_point_format && ! print_g) |
3268 | 573 { |
27453
05f84e5cb08a
Display correct number of digits with "format long" and fixed_point_format (bug #56938).
Rik <rik@octave.org>
parents:
27451
diff
changeset
|
574 rd = prec - 1; |
24737
5be92b26ef8f
Fix alignment of numbers in fixed_point_format display (bug #53083).
Rik <rik@octave.org>
parents:
24673
diff
changeset
|
575 fw = rd + 3; |
5748 | 576 if (inf_or_nan && fw < 4) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
577 fw = 4; |
3268 | 578 } |
1715 | 579 else if (int_or_inf_or_nan) |
1 | 580 { |
23450
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23433
diff
changeset
|
581 int digits = (x_max > x_min ? x_max : x_min); |
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23433
diff
changeset
|
582 fw = (digits <= 0 ? 2 : digits + 1); |
5748 | 583 if (inf_or_nan && fw < 4) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
584 fw = 4; |
3682 | 585 rd = fw; |
1 | 586 } |
587 else | |
588 { | |
589 int ld_max, rd_max; | |
590 if (x_max > 0) | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
591 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
592 ld_max = x_max; |
23450
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23433
diff
changeset
|
593 rd_max = (prec > x_max ? prec - x_max : prec); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
594 x_max++; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
595 } |
27451
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
596 else if (x_max < 0) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
597 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
598 ld_max = 1; |
23450
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23433
diff
changeset
|
599 rd_max = (prec > x_max ? prec - x_max : prec); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
600 x_max = -x_max + 1; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
601 } |
27451
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
602 else |
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
603 { |
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
604 ld_max = 1; |
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
605 rd_max = (prec > 1 ? prec - 1 : prec); |
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
606 x_max = 1; |
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
607 } |
1 | 608 |
609 int ld_min, rd_min; | |
610 if (x_min > 0) | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
611 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
612 ld_min = x_min; |
23450
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23433
diff
changeset
|
613 rd_min = (prec > x_min ? prec - x_min : prec); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
614 x_min++; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
615 } |
27451
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
616 else if (x_min < 0) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
617 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
618 ld_min = 1; |
23450
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23433
diff
changeset
|
619 rd_min = (prec > x_min ? prec - x_min : prec); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
620 x_min = -x_min + 1; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
621 } |
27451
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
622 else |
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
623 { |
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
624 ld_min = 1; |
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
625 rd_min = (prec > 1 ? prec - 1 : prec); |
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
626 x_min = 1; |
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
627 } |
1 | 628 |
23450
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23433
diff
changeset
|
629 ld = (ld_max > ld_min ? ld_max : ld_min); |
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23433
diff
changeset
|
630 rd = (rd_max > rd_min ? rd_max : rd_min); |
1 | 631 |
5832 | 632 fw = 1 + ld + 1 + rd; |
5748 | 633 if (inf_or_nan && fw < 4) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
634 fw = 4; |
1 | 635 } |
636 | |
6788 | 637 if (! (rat_format || bank_format || hex_format || bit_format) |
24785
504869574c89
restore auto switch to E formats octave_print_internal functions
John W. Eaton <jwe@octave.org>
parents:
24784
diff
changeset
|
638 && (print_e || print_eng || print_g |
504869574c89
restore auto switch to E formats octave_print_internal functions
John W. Eaton <jwe@octave.org>
parents:
24784
diff
changeset
|
639 || (! Vfixed_point_format |
30216
c2132e0147ff
maint: use ALL_CAPS for static const variables used as constants.
Rik <rik@octave.org>
parents:
30001
diff
changeset
|
640 && (ld + rd > pr_output_traits<T>::DIGITS10 |
c2132e0147ff
maint: use ALL_CAPS for static const variables used as constants.
Rik <rik@octave.org>
parents:
30001
diff
changeset
|
641 || fw > pr_output_traits<T>::MAX_FIELD_WIDTH |
27466
6e8dac65d405
Switch to scientific notation for format short when values are large or small (bug #56971).
Rik <rik@octave.org>
parents:
27459
diff
changeset
|
642 || ld + rd > (1.5 * prec))))) |
1 | 643 { |
4509 | 644 if (print_g) |
27439
251056aeba5d
Align negative numbers correctly with g format (bug #56940).
Rik <rik@octave.org>
parents:
27434
diff
changeset
|
645 fmt = float_format (prec+6, prec); |
4509 | 646 else |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
647 { |
10741
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
648 int ex = 4; |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
649 if (x_max > 100 || x_min > 100) |
10741
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
650 ex++; |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
651 |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
652 if (print_eng) |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
653 { |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
654 fw = 4 + prec + ex; |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
655 if (inf_or_nan && fw < 6) |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
656 fw = 6; |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
657 fmt = float_format (fw, ex, prec - 1, std::ios::fixed); |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
658 } |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
659 else |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
660 { |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
661 fw = 2 + prec + ex; |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
662 if (inf_or_nan && fw < 4) |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
663 fw = 4; |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
664 fmt = float_format (fw, prec - 1, std::ios::scientific); |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
665 } |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
666 } |
1 | 667 } |
5086 | 668 else if (! bank_format && int_or_inf_or_nan) |
3611 | 669 fmt = float_format (fw, rd); |
1 | 670 else |
3608 | 671 fmt = float_format (fw, rd, std::ios::fixed); |
1 | 672 |
27491
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
673 if (uppercase_format) |
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
674 fmt.uppercase (); |
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
675 |
24787
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
676 return float_display_format (scale, fmt); |
1 | 677 } |
678 | |
24787
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
679 template <typename MT> |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
680 static inline float_display_format |
24787
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
681 make_matrix_format (const MT& m) |
1658 | 682 { |
30723
08b08b7f05b2
Replace direct calls to C library assert() with Octave specialty functions in libinterp/ (bug #61753)
Arun Giridhar <arungiridhar@gmail.com> and Rik <rik@octave.org>
parents:
30588
diff
changeset
|
683 error_unless (m.ndims () == 2); |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
684 |
1658 | 685 if (free_format) |
24667
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
686 return float_display_format (); |
1658 | 687 |
2387 | 688 bool inf_or_nan = m.any_element_is_inf_or_nan (); |
1658 | 689 |
2387 | 690 bool int_or_inf_or_nan = m.all_elements_are_int_or_inf_or_nan (); |
1658 | 691 |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
692 MT m_abs = m.abs (); |
24787
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
693 |
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
694 typedef typename MT::element_type ELT_T; |
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
695 |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
696 ELT_T max_abs = pr_max_internal (m_abs); |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
697 ELT_T min_abs = pr_min_internal (m_abs); |
1658 | 698 |
24770
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
699 int x_max = (max_abs == 0 ? 0 : num_digits (max_abs)); |
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
700 |
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
701 int x_min = (min_abs == 0 ? 0 : num_digits (min_abs)); |
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
702 |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
703 return make_real_matrix_format<ELT_T> (x_max, x_min, inf_or_nan, |
24786
0aeef407b04e
don't pass field width as separate argument in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24785
diff
changeset
|
704 int_or_inf_or_nan); |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
705 } |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
706 |
24787
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
707 template <> |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
708 float_display_format |
24787
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
709 make_format (const Matrix& m) |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
710 { |
24787
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
711 return make_matrix_format (m); |
1 | 712 } |
713 | |
24787
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
714 template <> |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
715 float_display_format |
24787
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
716 make_format (const FloatMatrix& m) |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
717 { |
24787
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
718 return make_matrix_format (m); |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
719 } |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
720 |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
721 template <typename T> |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
722 static inline float_display_format |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
723 make_complex_format (int x_max, int x_min, int r_x, |
24786
0aeef407b04e
don't pass field width as separate argument in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24785
diff
changeset
|
724 bool inf_or_nan, int int_only) |
1 | 725 { |
24667
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
726 float_format r_fmt; |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
727 float_format i_fmt; |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
728 |
30216
c2132e0147ff
maint: use ALL_CAPS for static const variables used as constants.
Rik <rik@octave.org>
parents:
30001
diff
changeset
|
729 int prec = std::min (output_precision (), pr_output_traits<T>::DIGITS10); |
1 | 730 |
24789
a4d4ec566fd7
improve formatting of large values in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24788
diff
changeset
|
731 int i_fw = 0, r_fw = 0, ld = 0, rd = 0; |
1 | 732 |
6788 | 733 if (rat_format) |
734 { | |
735 i_fw = 0; | |
736 r_fw = 0; | |
737 rd = 0; | |
738 } | |
739 else if (bank_format) | |
1 | 740 { |
741 int digits = r_x; | |
742 i_fw = 0; | |
23450
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23433
diff
changeset
|
743 r_fw = (digits <= 0 ? 5 : digits + 4); |
1 | 744 rd = 2; |
745 } | |
1282 | 746 else if (hex_format) |
747 { | |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
748 r_fw = 2 * sizeof (T); |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
749 i_fw = 2 * sizeof (T); |
1282 | 750 rd = 0; |
751 } | |
1309 | 752 else if (bit_format) |
753 { | |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
754 r_fw = 8 * sizeof (T); |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
755 i_fw = 8 * sizeof (T); |
1309 | 756 rd = 0; |
757 } | |
1658 | 758 else if (inf_or_nan || int_only) |
1 | 759 { |
23450
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23433
diff
changeset
|
760 int digits = (x_max > x_min ? x_max : x_min); |
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23433
diff
changeset
|
761 i_fw = (digits <= 0 ? 1 : digits); |
5945 | 762 r_fw = i_fw + 1; |
763 if (inf_or_nan && i_fw < 3) | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
764 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
765 i_fw = 3; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
766 r_fw = 4; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
767 } |
24789
a4d4ec566fd7
improve formatting of large values in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24788
diff
changeset
|
768 |
a4d4ec566fd7
improve formatting of large values in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24788
diff
changeset
|
769 if (int_only) |
a4d4ec566fd7
improve formatting of large values in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24788
diff
changeset
|
770 { |
a4d4ec566fd7
improve formatting of large values in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24788
diff
changeset
|
771 ld = digits; |
a4d4ec566fd7
improve formatting of large values in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24788
diff
changeset
|
772 rd = 0; |
a4d4ec566fd7
improve formatting of large values in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24788
diff
changeset
|
773 } |
1 | 774 } |
775 else | |
776 { | |
777 int ld_max, rd_max; | |
778 if (x_max > 0) | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
779 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
780 ld_max = x_max; |
23450
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23433
diff
changeset
|
781 rd_max = (prec > x_max ? prec - x_max : prec); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
782 x_max++; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
783 } |
27451
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
784 else if (x_max < 0) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
785 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
786 ld_max = 1; |
23450
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23433
diff
changeset
|
787 rd_max = (prec > x_max ? prec - x_max : prec); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
788 x_max = -x_max + 1; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
789 } |
27451
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
790 else |
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
791 { |
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
792 ld_max = 1; |
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
793 rd_max = (prec > 1 ? prec - 1 : prec); |
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
794 x_max = 1; |
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
795 } |
1 | 796 |
797 int ld_min, rd_min; | |
798 if (x_min > 0) | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
799 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
800 ld_min = x_min; |
23450
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23433
diff
changeset
|
801 rd_min = (prec > x_min ? prec - x_min : prec); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
802 x_min++; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
803 } |
27451
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
804 else if (x_min < 0) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
805 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
806 ld_min = 1; |
23450
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23433
diff
changeset
|
807 rd_min = (prec > x_min ? prec - x_min : prec); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
808 x_min = -x_min + 1; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
809 } |
27451
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
810 else |
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
811 { |
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
812 ld_min = 1; |
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
813 rd_min = (prec > 1 ? prec - 1 : prec); |
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
814 x_min = 1; |
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
815 } |
1 | 816 |
23450
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23433
diff
changeset
|
817 ld = (ld_max > ld_min ? ld_max : ld_min); |
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23433
diff
changeset
|
818 rd = (rd_max > rd_min ? rd_max : rd_min); |
1 | 819 |
5945 | 820 i_fw = ld + 1 + rd; |
821 r_fw = i_fw + 1; | |
1 | 822 } |
823 | |
6788 | 824 if (! (rat_format || bank_format || hex_format || bit_format) |
24785
504869574c89
restore auto switch to E formats octave_print_internal functions
John W. Eaton <jwe@octave.org>
parents:
24784
diff
changeset
|
825 && (print_e || print_eng || print_g |
30216
c2132e0147ff
maint: use ALL_CAPS for static const variables used as constants.
Rik <rik@octave.org>
parents:
30001
diff
changeset
|
826 || ld + rd > pr_output_traits<T>::DIGITS10 |
c2132e0147ff
maint: use ALL_CAPS for static const variables used as constants.
Rik <rik@octave.org>
parents:
30001
diff
changeset
|
827 || r_fw > pr_output_traits<T>::MAX_FIELD_WIDTH |
c2132e0147ff
maint: use ALL_CAPS for static const variables used as constants.
Rik <rik@octave.org>
parents:
30001
diff
changeset
|
828 || i_fw > pr_output_traits<T>::MAX_FIELD_WIDTH |
27466
6e8dac65d405
Switch to scientific notation for format short when values are large or small (bug #56971).
Rik <rik@octave.org>
parents:
27459
diff
changeset
|
829 || ld + rd > (1.5 * prec))) |
1 | 830 { |
4509 | 831 if (print_g) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
832 { |
27439
251056aeba5d
Align negative numbers correctly with g format (bug #56940).
Rik <rik@octave.org>
parents:
27434
diff
changeset
|
833 int width = prec + 6; |
27429
e0134184c1fd
Fix regression with display of "format g" (bug #55919).
Rik <rik@octave.org>
parents:
27277
diff
changeset
|
834 r_fmt = float_format (width, prec); |
e0134184c1fd
Fix regression with display of "format g" (bug #55919).
Rik <rik@octave.org>
parents:
27277
diff
changeset
|
835 i_fmt = float_format (width, prec); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
836 } |
4509 | 837 else |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
838 { |
10741
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
839 int ex = 4; |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
840 if (x_max > 100 || x_min > 100) |
10741
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
841 ex++; |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
842 |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
843 if (print_eng) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
844 { |
21568
3d60ed163b70
maint: Eliminate bad spacing around '='.
Rik <rik@octave.org>
parents:
21547
diff
changeset
|
845 i_fw = 3 + prec + ex; |
10741
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
846 r_fw = i_fw + 1; |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
847 if (inf_or_nan && i_fw < 5) |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
848 { |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
849 i_fw = 5; |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
850 r_fw = 6; |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
851 } |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
852 r_fmt = float_format (r_fw, ex, prec - 1, std::ios::fixed); |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
853 i_fmt = float_format (i_fw, ex, prec - 1, std::ios::fixed); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
854 } |
10741
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
855 else |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
856 { |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
857 i_fw = 1 + prec + ex; |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
858 r_fw = i_fw + 1; |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
859 if (inf_or_nan && i_fw < 3) |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
860 { |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
861 i_fw = 3; |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
862 r_fw = 4; |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
863 } |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
864 r_fmt = float_format (r_fw, prec - 1, std::ios::scientific); |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
865 i_fmt = float_format (i_fw, prec - 1, std::ios::scientific); |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
866 } |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
867 } |
3608 | 868 |
27491
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
869 if (uppercase_format) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
870 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
871 r_fmt.uppercase (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
872 i_fmt.uppercase (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
873 } |
1 | 874 } |
5086 | 875 else if (! bank_format && (inf_or_nan || int_only)) |
3611 | 876 { |
24789
a4d4ec566fd7
improve formatting of large values in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24788
diff
changeset
|
877 r_fmt = float_format (r_fw, ld); |
a4d4ec566fd7
improve formatting of large values in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24788
diff
changeset
|
878 i_fmt = float_format (i_fw, ld); |
3611 | 879 } |
1 | 880 else |
881 { | |
3608 | 882 r_fmt = float_format (r_fw, rd, std::ios::fixed); |
883 i_fmt = float_format (i_fw, rd, std::ios::fixed); | |
1 | 884 } |
885 | |
24667
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
886 return float_display_format (r_fmt, i_fmt); |
1 | 887 } |
888 | |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
889 template <typename T> |
24667
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
890 float_display_format |
24786
0aeef407b04e
don't pass field width as separate argument in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24785
diff
changeset
|
891 make_complex_scalar_format (const std::complex<T>& c) |
1658 | 892 { |
893 if (free_format) | |
24667
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
894 return float_display_format (); |
1658 | 895 |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
896 T rp = c.real (); |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
897 T ip = c.imag (); |
1658 | 898 |
21782
2aef506f3fec
use namespace for lo-mappers.h functions
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
899 bool inf_or_nan = (octave::math::isinf (c) || octave::math::isnan (c)); |
2aef506f3fec
use namespace for lo-mappers.h functions
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
900 |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
901 bool int_only = (octave::math::x_nint (rp) == rp |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
902 && octave::math::x_nint (ip) == ip); |
1658 | 903 |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
904 T r_abs = (rp < 0 ? -rp : rp); |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
905 T i_abs = (ip < 0 ? -ip : ip); |
1658 | 906 |
23564
7049da1648c0
Deprecate octave::math::finite in favor of octave::math::isfinite.
Rik <rik@octave.org>
parents:
23534
diff
changeset
|
907 int r_x = (! octave::math::isfinite (rp) |
24770
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
908 || r_abs == 0) ? 0 : num_digits (r_abs); |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
909 |
23564
7049da1648c0
Deprecate octave::math::finite in favor of octave::math::isfinite.
Rik <rik@octave.org>
parents:
23534
diff
changeset
|
910 int i_x = (! octave::math::isfinite (ip) |
24770
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
911 || i_abs == 0) ? 0 : num_digits (i_abs); |
1658 | 912 |
913 int x_max, x_min; | |
914 | |
915 if (r_x > i_x) | |
916 { | |
917 x_max = r_x; | |
918 x_min = i_x; | |
919 } | |
920 else | |
921 { | |
922 x_max = i_x; | |
923 x_min = r_x; | |
924 } | |
925 | |
24786
0aeef407b04e
don't pass field width as separate argument in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24785
diff
changeset
|
926 return make_complex_format<T> (x_max, x_min, r_x, inf_or_nan, int_only); |
0aeef407b04e
don't pass field width as separate argument in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24785
diff
changeset
|
927 } |
0aeef407b04e
don't pass field width as separate argument in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24785
diff
changeset
|
928 |
0aeef407b04e
don't pass field width as separate argument in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24785
diff
changeset
|
929 template <> |
0aeef407b04e
don't pass field width as separate argument in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24785
diff
changeset
|
930 float_display_format |
0aeef407b04e
don't pass field width as separate argument in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24785
diff
changeset
|
931 make_format (const std::complex<double>& c) |
0aeef407b04e
don't pass field width as separate argument in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24785
diff
changeset
|
932 { |
0aeef407b04e
don't pass field width as separate argument in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24785
diff
changeset
|
933 return make_complex_scalar_format (c); |
0aeef407b04e
don't pass field width as separate argument in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24785
diff
changeset
|
934 } |
0aeef407b04e
don't pass field width as separate argument in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24785
diff
changeset
|
935 |
0aeef407b04e
don't pass field width as separate argument in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24785
diff
changeset
|
936 template <> |
0aeef407b04e
don't pass field width as separate argument in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24785
diff
changeset
|
937 float_display_format |
0aeef407b04e
don't pass field width as separate argument in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24785
diff
changeset
|
938 make_format (const std::complex<float>& fc) |
0aeef407b04e
don't pass field width as separate argument in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24785
diff
changeset
|
939 { |
0aeef407b04e
don't pass field width as separate argument in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24785
diff
changeset
|
940 return make_complex_scalar_format (fc); |
1 | 941 } |
942 | |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
943 template <typename T> |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
944 static inline float_display_format |
24667
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
945 make_complex_matrix_format (int x_max, int x_min, int r_x_max, |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
946 int r_x_min, bool inf_or_nan, |
24786
0aeef407b04e
don't pass field width as separate argument in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24785
diff
changeset
|
947 int int_or_inf_or_nan) |
1 | 948 { |
24787
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
949 T scale = ((x_max == 0 || int_or_inf_or_nan) |
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
950 ? 1 : std::pow (10.0, calc_scale_exp (x_max - 1))); |
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
951 |
24667
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
952 float_format r_fmt; |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
953 float_format i_fmt; |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
954 |
30216
c2132e0147ff
maint: use ALL_CAPS for static const variables used as constants.
Rik <rik@octave.org>
parents:
30001
diff
changeset
|
955 int prec = std::min (output_precision (), pr_output_traits<T>::DIGITS10); |
1 | 956 |
24789
a4d4ec566fd7
improve formatting of large values in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24788
diff
changeset
|
957 int i_fw = 0, r_fw = 0, ld = 0, rd = 0; |
1 | 958 |
6788 | 959 if (rat_format) |
960 { | |
961 i_fw = 9; | |
962 r_fw = 9; | |
963 rd = 0; | |
964 } | |
965 else if (bank_format) | |
1 | 966 { |
23450
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23433
diff
changeset
|
967 int digits = (r_x_max > r_x_min ? r_x_max : r_x_min); |
1 | 968 i_fw = 0; |
23450
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23433
diff
changeset
|
969 r_fw = (digits <= 0 ? 5 : digits + 4); |
1 | 970 rd = 2; |
971 } | |
1282 | 972 else if (hex_format) |
973 { | |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
974 r_fw = 2 * sizeof (T); |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
975 i_fw = 2 * sizeof (T); |
1282 | 976 rd = 0; |
977 } | |
1309 | 978 else if (bit_format) |
979 { | |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
980 r_fw = 8 * sizeof (T); |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
981 i_fw = 8 * sizeof (T); |
1309 | 982 rd = 0; |
983 } | |
4509 | 984 else if (Vfixed_point_format && ! print_g) |
3268 | 985 { |
27453
05f84e5cb08a
Display correct number of digits with "format long" and fixed_point_format (bug #56938).
Rik <rik@octave.org>
parents:
27451
diff
changeset
|
986 rd = prec - 1; |
5945 | 987 i_fw = rd + 1; |
27453
05f84e5cb08a
Display correct number of digits with "format long" and fixed_point_format (bug #56938).
Rik <rik@octave.org>
parents:
27451
diff
changeset
|
988 r_fw = i_fw + 2; |
5945 | 989 if (inf_or_nan && i_fw < 3) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
990 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
991 i_fw = 3; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
992 r_fw = 4; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
993 } |
3268 | 994 } |
1715 | 995 else if (int_or_inf_or_nan) |
1 | 996 { |
23450
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23433
diff
changeset
|
997 int digits = (x_max > x_min ? x_max : x_min); |
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23433
diff
changeset
|
998 i_fw = (digits <= 0 ? 1 : digits); |
5945 | 999 r_fw = i_fw + 1; |
1000 if (inf_or_nan && i_fw < 3) | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1001 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1002 i_fw = 3; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1003 r_fw = 4; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1004 } |
3682 | 1005 rd = r_fw; |
1 | 1006 } |
1007 else | |
1008 { | |
1009 int ld_max, rd_max; | |
1010 if (x_max > 0) | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1011 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1012 ld_max = x_max; |
23450
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23433
diff
changeset
|
1013 rd_max = (prec > x_max ? prec - x_max : prec); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1014 x_max++; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1015 } |
27451
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
1016 else if (x_max < 0) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1017 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1018 ld_max = 1; |
23450
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23433
diff
changeset
|
1019 rd_max = (prec > x_max ? prec - x_max : prec); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1020 x_max = -x_max + 1; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1021 } |
27451
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
1022 else |
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
1023 { |
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
1024 ld_max = 1; |
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
1025 rd_max = (prec > 1 ? prec - 1 : prec); |
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
1026 x_max = 1; |
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
1027 } |
1 | 1028 |
1029 int ld_min, rd_min; | |
1030 if (x_min > 0) | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1031 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1032 ld_min = x_min; |
23450
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23433
diff
changeset
|
1033 rd_min = (prec > x_min ? prec - x_min : prec); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1034 x_min++; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1035 } |
27451
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
1036 else if (x_min < 0) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1037 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1038 ld_min = 1; |
23450
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23433
diff
changeset
|
1039 rd_min = (prec > x_min ? prec - x_min : prec); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1040 x_min = -x_min + 1; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1041 } |
27451
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
1042 else |
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
1043 { |
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
1044 ld_min = 1; |
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
1045 rd_min = (prec > 1 ? prec - 1 : prec); |
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
1046 x_min = 1; |
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
1047 } |
1 | 1048 |
23450
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23433
diff
changeset
|
1049 ld = (ld_max > ld_min ? ld_max : ld_min); |
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23433
diff
changeset
|
1050 rd = (rd_max > rd_min ? rd_max : rd_min); |
1 | 1051 |
5945 | 1052 i_fw = ld + 1 + rd; |
1053 r_fw = i_fw + 1; | |
1054 if (inf_or_nan && i_fw < 3) | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1055 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1056 i_fw = 3; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1057 r_fw = 4; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1058 } |
1 | 1059 } |
1060 | |
6788 | 1061 if (! (rat_format || bank_format || hex_format || bit_format) |
24785
504869574c89
restore auto switch to E formats octave_print_internal functions
John W. Eaton <jwe@octave.org>
parents:
24784
diff
changeset
|
1062 && (print_e || print_eng || print_g |
504869574c89
restore auto switch to E formats octave_print_internal functions
John W. Eaton <jwe@octave.org>
parents:
24784
diff
changeset
|
1063 || (! Vfixed_point_format |
30216
c2132e0147ff
maint: use ALL_CAPS for static const variables used as constants.
Rik <rik@octave.org>
parents:
30001
diff
changeset
|
1064 && (ld + rd > pr_output_traits<T>::DIGITS10 |
c2132e0147ff
maint: use ALL_CAPS for static const variables used as constants.
Rik <rik@octave.org>
parents:
30001
diff
changeset
|
1065 || r_fw > pr_output_traits<T>::MAX_FIELD_WIDTH |
c2132e0147ff
maint: use ALL_CAPS for static const variables used as constants.
Rik <rik@octave.org>
parents:
30001
diff
changeset
|
1066 || i_fw > pr_output_traits<T>::MAX_FIELD_WIDTH |
27466
6e8dac65d405
Switch to scientific notation for format short when values are large or small (bug #56971).
Rik <rik@octave.org>
parents:
27459
diff
changeset
|
1067 || ld + rd > (1.5 * prec))))) |
1 | 1068 { |
4509 | 1069 if (print_g) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1070 { |
27439
251056aeba5d
Align negative numbers correctly with g format (bug #56940).
Rik <rik@octave.org>
parents:
27434
diff
changeset
|
1071 int width = prec + 6; |
27429
e0134184c1fd
Fix regression with display of "format g" (bug #55919).
Rik <rik@octave.org>
parents:
27277
diff
changeset
|
1072 r_fmt = float_format (width, prec); |
e0134184c1fd
Fix regression with display of "format g" (bug #55919).
Rik <rik@octave.org>
parents:
27277
diff
changeset
|
1073 i_fmt = float_format (width, prec); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1074 } |
4509 | 1075 else |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1076 { |
10741
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
1077 int ex = 4; |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1078 if (x_max > 100 || x_min > 100) |
10741
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
1079 ex++; |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
1080 |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
1081 if (print_eng) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1082 { |
10741
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
1083 i_fw = 3 + prec + ex; |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
1084 r_fw = i_fw + 1; |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
1085 if (inf_or_nan && i_fw < 5) |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
1086 { |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
1087 i_fw = 5; |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
1088 r_fw = 6; |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
1089 } |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
1090 r_fmt = float_format (r_fw, ex, prec - 1, std::ios::fixed); |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
1091 i_fmt = float_format (i_fw, ex, prec - 1, std::ios::fixed); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1092 } |
10741
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
1093 else |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
1094 { |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
1095 i_fw = 1 + prec + ex; |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
1096 r_fw = i_fw + 1; |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
1097 if (inf_or_nan && i_fw < 3) |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
1098 { |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
1099 i_fw = 3; |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
1100 r_fw = 4; |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
1101 } |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
1102 r_fmt = float_format (r_fw, prec - 1, std::ios::scientific); |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
1103 i_fmt = float_format (i_fw, prec - 1, std::ios::scientific); |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
1104 } |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1105 } |
3608 | 1106 |
27491
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
1107 if (uppercase_format) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1108 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1109 r_fmt.uppercase (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1110 i_fmt.uppercase (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1111 } |
1 | 1112 } |
5086 | 1113 else if (! bank_format && int_or_inf_or_nan) |
3611 | 1114 { |
1115 r_fmt = float_format (r_fw, rd); | |
1116 i_fmt = float_format (i_fw, rd); | |
1117 } | |
1 | 1118 else |
1119 { | |
3608 | 1120 r_fmt = float_format (r_fw, rd, std::ios::fixed); |
1121 i_fmt = float_format (i_fw, rd, std::ios::fixed); | |
1 | 1122 } |
1123 | |
24787
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
1124 return float_display_format (scale, r_fmt, i_fmt); |
1 | 1125 } |
1126 | |
24787
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
1127 template <typename CMT> |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
1128 static inline float_display_format |
24787
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
1129 make_complex_matrix_format (const CMT& cm) |
1658 | 1130 { |
1131 if (free_format) | |
24667
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1132 return float_display_format (); |
1658 | 1133 |
24787
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
1134 typedef typename CMT::real_matrix_type RMT; |
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
1135 typedef typename CMT::real_elt_type ELT_T; |
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
1136 |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
1137 RMT rp = real (cm); |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
1138 RMT ip = imag (cm); |
1658 | 1139 |
2387 | 1140 bool inf_or_nan = cm.any_element_is_inf_or_nan (); |
1658 | 1141 |
2387 | 1142 bool int_or_inf_or_nan = (rp.all_elements_are_int_or_inf_or_nan () |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1143 && ip.all_elements_are_int_or_inf_or_nan ()); |
1658 | 1144 |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
1145 RMT r_m_abs = rp.abs (); |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
1146 ELT_T r_max_abs = pr_max_internal (r_m_abs); |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
1147 ELT_T r_min_abs = pr_min_internal (r_m_abs); |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
1148 |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
1149 RMT i_m_abs = ip.abs (); |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
1150 ELT_T i_max_abs = pr_max_internal (i_m_abs); |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
1151 ELT_T i_min_abs = pr_min_internal (i_m_abs); |
1658 | 1152 |
24770
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
1153 int r_x_max = (r_max_abs == 0 ? 0 : num_digits (r_max_abs)); |
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
1154 |
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
1155 int r_x_min = (r_min_abs == 0 ? 0 : num_digits (r_min_abs)); |
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
1156 |
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
1157 int i_x_max = (i_max_abs == 0 ? 0 : num_digits (i_max_abs)); |
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
1158 |
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
1159 int i_x_min = (i_min_abs == 0 ? 0 : num_digits (i_min_abs)); |
23450
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23433
diff
changeset
|
1160 |
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23433
diff
changeset
|
1161 int x_max = (r_x_max > i_x_max ? r_x_max : i_x_max); |
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23433
diff
changeset
|
1162 int x_min = (r_x_min > i_x_min ? r_x_min : i_x_min); |
1658 | 1163 |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
1164 return make_complex_matrix_format<ELT_T> (x_max, x_min, r_x_max, r_x_min, |
24786
0aeef407b04e
don't pass field width as separate argument in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24785
diff
changeset
|
1165 inf_or_nan, int_or_inf_or_nan); |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
1166 } |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
1167 |
24787
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
1168 template <> |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
1169 float_display_format |
24787
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
1170 make_format (const ComplexMatrix& cm) |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
1171 { |
24787
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
1172 return make_complex_matrix_format (cm); |
1658 | 1173 } |
1174 | |
24787
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
1175 template <> |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
1176 float_display_format |
24787
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
1177 make_format (const FloatComplexMatrix& cm) |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
1178 { |
24787
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
1179 return make_complex_matrix_format (cm); |
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
1180 } |
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
1181 |
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
1182 template <> |
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
1183 float_display_format |
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
1184 make_format (const boolNDArray&) |
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
1185 { |
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
1186 return float_display_format (float_format (1, 1)); |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
1187 } |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
1188 |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
1189 template <typename T> |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
1190 static inline float_display_format |
24786
0aeef407b04e
don't pass field width as separate argument in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24785
diff
changeset
|
1191 make_range_format (int x_max, int x_min, int all_ints) |
1 | 1192 { |
24787
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
1193 double scale = ((x_max == 0 || all_ints) |
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
1194 ? 1 : std::pow (10.0, calc_scale_exp (x_max - 1))); |
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
1195 |
24667
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1196 float_format fmt; |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1197 |
30216
c2132e0147ff
maint: use ALL_CAPS for static const variables used as constants.
Rik <rik@octave.org>
parents:
30001
diff
changeset
|
1198 int prec = std::min (output_precision (), pr_output_traits<T>::DIGITS10); |
1 | 1199 |
24789
a4d4ec566fd7
improve formatting of large values in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24788
diff
changeset
|
1200 int fw = 0, ld = 0, rd = 0; |
1 | 1201 |
6788 | 1202 if (rat_format) |
1203 { | |
1204 fw = 9; | |
1205 rd = 0; | |
1206 } | |
1207 else if (bank_format) | |
1 | 1208 { |
23450
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23433
diff
changeset
|
1209 int digits = (x_max > x_min ? x_max : x_min); |
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23433
diff
changeset
|
1210 fw = (digits < 0 ? 5 : digits + 4); |
1 | 1211 rd = 2; |
1212 } | |
1282 | 1213 else if (hex_format) |
1214 { | |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
1215 fw = 2 * sizeof (T); |
1282 | 1216 rd = 0; |
1217 } | |
1309 | 1218 else if (bit_format) |
1219 { | |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
1220 fw = 8 * sizeof (T); |
1309 | 1221 rd = 0; |
1222 } | |
1658 | 1223 else if (all_ints) |
1 | 1224 { |
23450
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23433
diff
changeset
|
1225 int digits = (x_max > x_min ? x_max : x_min); |
7465
8d6ab12f8fda
format Range output more like N-d arrays
John W. Eaton <jwe@octave.org>
parents:
7231
diff
changeset
|
1226 fw = digits + 1; |
3682 | 1227 rd = fw; |
1 | 1228 } |
4509 | 1229 else if (Vfixed_point_format && ! print_g) |
3105 | 1230 { |
27453
05f84e5cb08a
Display correct number of digits with "format long" and fixed_point_format (bug #56938).
Rik <rik@octave.org>
parents:
27451
diff
changeset
|
1231 rd = prec - 1; |
7465
8d6ab12f8fda
format Range output more like N-d arrays
John W. Eaton <jwe@octave.org>
parents:
7231
diff
changeset
|
1232 fw = rd + 3; |
3105 | 1233 } |
1 | 1234 else |
1235 { | |
1236 int ld_max, rd_max; | |
1237 if (x_max > 0) | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1238 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1239 ld_max = x_max; |
23450
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23433
diff
changeset
|
1240 rd_max = (prec > x_max ? prec - x_max : prec); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1241 x_max++; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1242 } |
27451
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
1243 else if (x_max < 0) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1244 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1245 ld_max = 1; |
23450
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23433
diff
changeset
|
1246 rd_max = (prec > x_max ? prec - x_max : prec); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1247 x_max = -x_max + 1; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1248 } |
27451
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
1249 else |
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
1250 { |
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
1251 ld_max = 1; |
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
1252 rd_max = (prec > 1 ? prec - 1 : prec); |
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
1253 x_max = 1; |
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
1254 } |
1 | 1255 |
1256 int ld_min, rd_min; | |
1257 if (x_min > 0) | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1258 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1259 ld_min = x_min; |
23450
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23433
diff
changeset
|
1260 rd_min = (prec > x_min ? prec - x_min : prec); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1261 x_min++; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1262 } |
27451
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
1263 else if (x_min < 0) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1264 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1265 ld_min = 1; |
23450
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23433
diff
changeset
|
1266 rd_min = (prec > x_min ? prec - x_min : prec); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1267 x_min = -x_min + 1; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1268 } |
27451
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
1269 else |
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
1270 { |
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
1271 ld_min = 1; |
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
1272 rd_min = (prec > 1 ? prec - 1 : prec); |
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
1273 x_min = 1; |
ce0399fa017a
Display only 5 significant digits for "format short" at all times (bug #56936).
Rik <rik@octave.org>
parents:
27439
diff
changeset
|
1274 } |
1 | 1275 |
23450
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23433
diff
changeset
|
1276 ld = (ld_max > ld_min ? ld_max : ld_min); |
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23433
diff
changeset
|
1277 rd = (rd_max > rd_min ? rd_max : rd_min); |
1 | 1278 |
7465
8d6ab12f8fda
format Range output more like N-d arrays
John W. Eaton <jwe@octave.org>
parents:
7231
diff
changeset
|
1279 fw = ld + rd + 3; |
1 | 1280 } |
1281 | |
6788 | 1282 if (! (rat_format || bank_format || hex_format || bit_format) |
24785
504869574c89
restore auto switch to E formats octave_print_internal functions
John W. Eaton <jwe@octave.org>
parents:
24784
diff
changeset
|
1283 && (print_e || print_eng || print_g |
504869574c89
restore auto switch to E formats octave_print_internal functions
John W. Eaton <jwe@octave.org>
parents:
24784
diff
changeset
|
1284 || (! Vfixed_point_format |
30216
c2132e0147ff
maint: use ALL_CAPS for static const variables used as constants.
Rik <rik@octave.org>
parents:
30001
diff
changeset
|
1285 && (ld + rd > pr_output_traits<T>::DIGITS10 |
c2132e0147ff
maint: use ALL_CAPS for static const variables used as constants.
Rik <rik@octave.org>
parents:
30001
diff
changeset
|
1286 || fw > pr_output_traits<T>::MAX_FIELD_WIDTH |
27466
6e8dac65d405
Switch to scientific notation for format short when values are large or small (bug #56971).
Rik <rik@octave.org>
parents:
27459
diff
changeset
|
1287 || ld + rd > (1.5 * prec))))) |
1 | 1288 { |
4509 | 1289 if (print_g) |
27439
251056aeba5d
Align negative numbers correctly with g format (bug #56940).
Rik <rik@octave.org>
parents:
27434
diff
changeset
|
1290 fmt = float_format (prec+6, prec); |
4509 | 1291 else |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1292 { |
10741
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
1293 int ex = 4; |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1294 if (x_max > 100 || x_min > 100) |
10741
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
1295 ex++; |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
1296 |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
1297 if (print_eng) |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
1298 { |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
1299 fw = 5 + prec + ex; |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
1300 fmt = float_format (fw, ex, prec - 1, std::ios::fixed); |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
1301 } |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
1302 else |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
1303 { |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
1304 fw = 3 + prec + ex; |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
1305 fmt = float_format (fw, prec - 1, std::ios::scientific); |
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
1306 } |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1307 } |
1 | 1308 } |
5086 | 1309 else if (! bank_format && all_ints) |
3611 | 1310 fmt = float_format (fw, rd); |
1 | 1311 else |
3608 | 1312 fmt = float_format (fw, rd, std::ios::fixed); |
1 | 1313 |
27491
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
1314 if (uppercase_format) |
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
1315 fmt.uppercase (); |
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
1316 |
24787
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
1317 return float_display_format (scale, fmt); |
1 | 1318 } |
1319 | |
24787
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
1320 template <> |
24667
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1321 float_display_format |
28638
98192ec1621f
replace Range with range<double>
John W. Eaton <jwe@octave.org>
parents:
28637
diff
changeset
|
1322 make_format (const octave::range<double>& r) |
1658 | 1323 { |
1324 if (free_format) | |
24667
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1325 return float_display_format (); |
1658 | 1326 |
1327 double r_min = r.base (); | |
1328 double r_max = r.limit (); | |
1329 | |
1330 if (r_max < r_min) | |
1331 { | |
1332 double tmp = r_max; | |
1333 r_max = r_min; | |
1334 r_min = tmp; | |
1335 } | |
1336 | |
2387 | 1337 bool all_ints = r.all_elements_are_ints (); |
1658 | 1338 |
24770
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
1339 double max_abs = (r_max < 0 ? -r_max : r_max); |
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
1340 double min_abs = (r_min < 0 ? -r_min : r_min); |
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
1341 |
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
1342 int x_max = (max_abs == 0 ? 0 : num_digits (max_abs)); |
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
1343 |
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
1344 int x_min = (min_abs == 0 ? 0 : num_digits (min_abs)); |
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
1345 |
24786
0aeef407b04e
don't pass field width as separate argument in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24785
diff
changeset
|
1346 return make_range_format<double> (x_max, x_min, all_ints); |
1 | 1347 } |
1348 | |
24770
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
1349 template <typename T> |
1282 | 1350 union equiv |
1351 { | |
24770
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
1352 T val; |
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
1353 unsigned char i[sizeof (T)]; |
1282 | 1354 }; |
1355 | |
22197
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
1356 #define PRINT_CHAR_BITS(os, c) \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
1357 do \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
1358 { \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
1359 unsigned char ctmp = c; \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
1360 char stmp[9]; \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
1361 stmp[0] = (ctmp & 0x80) ? '1' : '0'; \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
1362 stmp[1] = (ctmp & 0x40) ? '1' : '0'; \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
1363 stmp[2] = (ctmp & 0x20) ? '1' : '0'; \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
1364 stmp[3] = (ctmp & 0x10) ? '1' : '0'; \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
1365 stmp[4] = (ctmp & 0x08) ? '1' : '0'; \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
1366 stmp[5] = (ctmp & 0x04) ? '1' : '0'; \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
1367 stmp[6] = (ctmp & 0x02) ? '1' : '0'; \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
1368 stmp[7] = (ctmp & 0x01) ? '1' : '0'; \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
1369 stmp[8] = '\0'; \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
1370 os << stmp; \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
1371 } \ |
1309 | 1372 while (0) |
1373 | |
22197
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
1374 #define PRINT_CHAR_BITS_SWAPPED(os, c) \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
1375 do \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
1376 { \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
1377 unsigned char ctmp = c; \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
1378 char stmp[9]; \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
1379 stmp[0] = (ctmp & 0x01) ? '1' : '0'; \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
1380 stmp[1] = (ctmp & 0x02) ? '1' : '0'; \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
1381 stmp[2] = (ctmp & 0x04) ? '1' : '0'; \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
1382 stmp[3] = (ctmp & 0x08) ? '1' : '0'; \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
1383 stmp[4] = (ctmp & 0x10) ? '1' : '0'; \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
1384 stmp[5] = (ctmp & 0x20) ? '1' : '0'; \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
1385 stmp[6] = (ctmp & 0x40) ? '1' : '0'; \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
1386 stmp[7] = (ctmp & 0x80) ? '1' : '0'; \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
1387 stmp[8] = '\0'; \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
1388 os << stmp; \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
1389 } \ |
1309 | 1390 while (0) |
1391 | |
24770
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
1392 template <typename T> |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
1393 static inline void |
24786
0aeef407b04e
don't pass field width as separate argument in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24785
diff
changeset
|
1394 pr_any_float (std::ostream& os, const float_format& fmt, T val) |
1 | 1395 { |
24667
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1396 // Unless explicitly asked for, always print in big-endian format |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1397 // for hex and bit formats. |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1398 // |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1399 // {bit,hex}_format == 1: print big-endian |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1400 // {bit,hex}_format == 2: print native |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1401 |
27183
2d9decd77e58
revamp float_format object
John W. Eaton <jwe@octave.org>
parents:
27156
diff
changeset
|
1402 int fw = fmt.width (); |
24786
0aeef407b04e
don't pass field width as separate argument in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24785
diff
changeset
|
1403 |
24667
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1404 if (hex_format) |
1 | 1405 { |
24667
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1406 octave::preserve_stream_state stream_state (os); |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1407 |
24770
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
1408 equiv<T> tmp; |
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
1409 tmp.val = val; |
24667
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1410 |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1411 // Unless explicitly asked for, always print in big-endian format. |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1412 |
27462
730af4e7034a
Correctly display integer types with format hex (bug #56966).
Rik <rik@octave.org>
parents:
27154
diff
changeset
|
1413 // FIXME: Will bad things happen if we are interrupted before resetting |
730af4e7034a
Correctly display integer types with format hex (bug #56966).
Rik <rik@octave.org>
parents:
27154
diff
changeset
|
1414 // the format flags and fill character? |
24667
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1415 |
27277
db687716fed6
style fixes: generally aim to break long lines before operators, not after
John W. Eaton <jwe@octave.org>
parents:
27183
diff
changeset
|
1416 octave::mach_info::float_format flt_fmt |
db687716fed6
style fixes: generally aim to break long lines before operators, not after
John W. Eaton <jwe@octave.org>
parents:
27183
diff
changeset
|
1417 = octave::mach_info::native_float_format (); |
24667
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1418 |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1419 os.fill ('0'); |
27491
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
1420 if (uppercase_format) |
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
1421 os.flags (std::ios::right | std::ios::hex | std::ios::uppercase); |
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
1422 else |
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
1423 os.flags (std::ios::right | std::ios::hex); |
24667
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1424 |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1425 if (hex_format > 1 |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1426 || flt_fmt == octave::mach_info::flt_fmt_ieee_big_endian) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1427 { |
29654
d13d090cb03a
use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
1428 for (std::size_t i = 0; i < sizeof (T); i++) |
24667
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1429 os << std::setw (2) << static_cast<int> (tmp.i[i]); |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1430 } |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1431 else |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1432 { |
24770
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
1433 for (int i = sizeof (T) - 1; i >= 0; i--) |
24667
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1434 os << std::setw (2) << static_cast<int> (tmp.i[i]); |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1435 } |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1436 } |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1437 else if (bit_format) |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1438 { |
24770
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
1439 equiv<T> tmp; |
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
1440 tmp.val = val; |
24667
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1441 |
27277
db687716fed6
style fixes: generally aim to break long lines before operators, not after
John W. Eaton <jwe@octave.org>
parents:
27183
diff
changeset
|
1442 octave::mach_info::float_format flt_fmt |
db687716fed6
style fixes: generally aim to break long lines before operators, not after
John W. Eaton <jwe@octave.org>
parents:
27183
diff
changeset
|
1443 = octave::mach_info::native_float_format (); |
24667
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1444 |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1445 if (flt_fmt == octave::mach_info::flt_fmt_ieee_big_endian) |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1446 { |
29654
d13d090cb03a
use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
1447 for (std::size_t i = 0; i < sizeof (T); i++) |
24667
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1448 PRINT_CHAR_BITS (os, tmp.i[i]); |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1449 } |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1450 else |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1451 { |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1452 if (bit_format > 1) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1453 { |
29654
d13d090cb03a
use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
1454 for (std::size_t i = 0; i < sizeof (T); i++) |
24667
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1455 PRINT_CHAR_BITS_SWAPPED (os, tmp.i[i]); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1456 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1457 else |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1458 { |
24770
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
1459 for (int i = sizeof (T) - 1; i >= 0; i--) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1460 PRINT_CHAR_BITS (os, tmp.i[i]); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1461 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1462 } |
24667
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1463 } |
27433
fc7504df6a12
Display "0" for true zeros rather than "0.0000" (bug #53083).
Rik <rik@octave.org>
parents:
27430
diff
changeset
|
1464 else if (val == 0) |
fc7504df6a12
Display "0" for true zeros rather than "0.0000" (bug #53083).
Rik <rik@octave.org>
parents:
27430
diff
changeset
|
1465 { |
fc7504df6a12
Display "0" for true zeros rather than "0.0000" (bug #53083).
Rik <rik@octave.org>
parents:
27430
diff
changeset
|
1466 octave::preserve_stream_state stream_state (os); |
fc7504df6a12
Display "0" for true zeros rather than "0.0000" (bug #53083).
Rik <rik@octave.org>
parents:
27430
diff
changeset
|
1467 |
fc7504df6a12
Display "0" for true zeros rather than "0.0000" (bug #53083).
Rik <rik@octave.org>
parents:
27430
diff
changeset
|
1468 if (fw > 0) |
fc7504df6a12
Display "0" for true zeros rather than "0.0000" (bug #53083).
Rik <rik@octave.org>
parents:
27430
diff
changeset
|
1469 os << std::setw (fw) << "0"; |
fc7504df6a12
Display "0" for true zeros rather than "0.0000" (bug #53083).
Rik <rik@octave.org>
parents:
27430
diff
changeset
|
1470 else |
fc7504df6a12
Display "0" for true zeros rather than "0.0000" (bug #53083).
Rik <rik@octave.org>
parents:
27430
diff
changeset
|
1471 os << "0"; |
fc7504df6a12
Display "0" for true zeros rather than "0.0000" (bug #53083).
Rik <rik@octave.org>
parents:
27430
diff
changeset
|
1472 } |
24770
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
1473 else if (octave::math::isna (val)) |
24667
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1474 { |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1475 octave::preserve_stream_state stream_state (os); |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1476 |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1477 if (fw > 0) |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1478 os << std::setw (fw) << "NA"; |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1479 else |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1480 os << "NA"; |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1481 } |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1482 else if (rat_format) |
24770
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
1483 os << pr_rational_float<T> (fmt, val); |
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
1484 else if (octave::math::isinf (val)) |
24667
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1485 { |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1486 octave::preserve_stream_state stream_state (os); |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1487 |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1488 const char *s; |
24770
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
1489 if (val < 0) |
24667
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1490 s = "-Inf"; |
1 | 1491 else |
24667
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1492 s = "Inf"; |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1493 |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1494 if (fw > 0) |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1495 os << std::setw (fw) << s; |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1496 else |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1497 os << s; |
1 | 1498 } |
24770
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
1499 else if (octave::math::isnan (val)) |
24667
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1500 { |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1501 octave::preserve_stream_state stream_state (os); |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1502 |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1503 if (fw > 0) |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1504 os << std::setw (fw) << "NaN"; |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1505 else |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1506 os << "NaN"; |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1507 } |
56f889d66b7c
move float_format container to setparate file
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
1508 else if (print_eng) |
24770
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
1509 os << pr_engineering_float<T> (fmt, val); |
529 | 1510 else |
24770
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
1511 os << pr_formatted_float<T> (fmt, val); |
1 | 1512 } |
1513 | |
24770
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
1514 template <typename T> |
1 | 1515 static inline void |
24787
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
1516 pr_float (std::ostream& os, const float_display_format& fmt, T val) |
1 | 1517 { |
24787
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
1518 double scale = fmt.scale_factor (); |
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
1519 |
27434
57f5c5768eb3
Disallow exponential format in combination with fixed_point_format.
Rik <rik@octave.org>
parents:
27433
diff
changeset
|
1520 if (Vfixed_point_format && ! (print_g || print_e) && scale != 1) |
24770
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
1521 val /= scale; |
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
1522 |
24786
0aeef407b04e
don't pass field width as separate argument in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24785
diff
changeset
|
1523 pr_any_float (os, fmt.real_format (), val); |
1 | 1524 } |
1525 | |
24770
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
1526 template <typename T> |
1 | 1527 static inline void |
24786
0aeef407b04e
don't pass field width as separate argument in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24785
diff
changeset
|
1528 pr_imag_float (std::ostream& os, const float_display_format& fmt, T val) |
1 | 1529 { |
27454
43ece0b8318b
Fix display of complex values when fixed_point_format is true (bug #56961).
Rik <rik@octave.org>
parents:
27453
diff
changeset
|
1530 double scale = fmt.scale_factor (); |
43ece0b8318b
Fix display of complex values when fixed_point_format is true (bug #56961).
Rik <rik@octave.org>
parents:
27453
diff
changeset
|
1531 |
43ece0b8318b
Fix display of complex values when fixed_point_format is true (bug #56961).
Rik <rik@octave.org>
parents:
27453
diff
changeset
|
1532 if (Vfixed_point_format && ! (print_g || print_e) && scale != 1) |
43ece0b8318b
Fix display of complex values when fixed_point_format is true (bug #56961).
Rik <rik@octave.org>
parents:
27453
diff
changeset
|
1533 val /= scale; |
43ece0b8318b
Fix display of complex values when fixed_point_format is true (bug #56961).
Rik <rik@octave.org>
parents:
27453
diff
changeset
|
1534 |
24786
0aeef407b04e
don't pass field width as separate argument in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24785
diff
changeset
|
1535 pr_any_float (os, fmt.imag_format (), val); |
1 | 1536 } |
1537 | |
24770
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
1538 template <typename T> |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
1539 static inline void |
24788
6f04028d5d86
use templates to eliminate more nearly duplicate pr-output code
John W. Eaton <jwe@octave.org>
parents:
24787
diff
changeset
|
1540 pr_float (std::ostream& os, const float_display_format& fmt, |
6f04028d5d86
use templates to eliminate more nearly duplicate pr-output code
John W. Eaton <jwe@octave.org>
parents:
24787
diff
changeset
|
1541 const std::complex<T>& cval) |
1 | 1542 { |
27454
43ece0b8318b
Fix display of complex values when fixed_point_format is true (bug #56961).
Rik <rik@octave.org>
parents:
27453
diff
changeset
|
1543 T r = cval.real (); |
3608 | 1544 |
24786
0aeef407b04e
don't pass field width as separate argument in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24785
diff
changeset
|
1545 pr_float (os, fmt, r); |
3608 | 1546 |
1 | 1547 if (! bank_format) |
1548 { | |
27454
43ece0b8318b
Fix display of complex values when fixed_point_format is true (bug #56961).
Rik <rik@octave.org>
parents:
27453
diff
changeset
|
1549 T i = cval.imag (); |
4349 | 1550 if (! (hex_format || bit_format) && lo_ieee_signbit (i)) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1551 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1552 os << " - "; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1553 i = -i; |
24786
0aeef407b04e
don't pass field width as separate argument in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24785
diff
changeset
|
1554 pr_imag_float (os, fmt, i); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1555 } |
1 | 1556 else |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1557 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1558 if (hex_format || bit_format) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1559 os << " "; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1560 else |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1561 os << " + "; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1562 |
24786
0aeef407b04e
don't pass field width as separate argument in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24785
diff
changeset
|
1563 pr_imag_float (os, fmt, i); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1564 } |
23807
336f89b6208b
Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents:
23803
diff
changeset
|
1565 os << 'i'; |
1 | 1566 } |
1567 } | |
1568 | |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
1569 static inline void |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1570 print_empty_matrix (std::ostream& os, octave_idx_type nr, octave_idx_type nc, |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1571 bool pr_as_read_syntax) |
626 | 1572 { |
30723
08b08b7f05b2
Replace direct calls to C library assert() with Octave specialty functions in libinterp/ (bug #61753)
Arun Giridhar <arungiridhar@gmail.com> and Rik <rik@octave.org>
parents:
30588
diff
changeset
|
1573 error_unless (nr == 0 || nc == 0); |
626 | 1574 |
1575 if (pr_as_read_syntax) | |
1576 { | |
1577 if (nr == 0 && nc == 0) | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1578 os << "[]"; |
626 | 1579 else |
23807
336f89b6208b
Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents:
23803
diff
changeset
|
1580 os << "zeros (" << nr << ", " << nc << ')'; |
626 | 1581 } |
1582 else | |
1583 { | |
1584 os << "[]"; | |
4559 | 1585 |
2165 | 1586 if (Vprint_empty_dimensions) |
23807
336f89b6208b
Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents:
23803
diff
changeset
|
1587 os << '(' << nr << 'x' << nc << ')'; |
626 | 1588 } |
1589 } | |
1590 | |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
1591 static inline void |
4559 | 1592 print_empty_nd_array (std::ostream& os, const dim_vector& dims, |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1593 bool pr_as_read_syntax) |
4559 | 1594 { |
30723
08b08b7f05b2
Replace direct calls to C library assert() with Octave specialty functions in libinterp/ (bug #61753)
Arun Giridhar <arungiridhar@gmail.com> and Rik <rik@octave.org>
parents:
30588
diff
changeset
|
1595 error_unless (dims.any_zero ()); |
4559 | 1596 |
1597 if (pr_as_read_syntax) | |
23807
336f89b6208b
Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents:
23803
diff
changeset
|
1598 os << "zeros (" << dims.str (',') << ')'; |
4559 | 1599 else |
1600 { | |
1601 os << "[]"; | |
1602 | |
1603 if (Vprint_empty_dimensions) | |
23807
336f89b6208b
Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents:
23803
diff
changeset
|
1604 os << '(' << dims.str () << ')'; |
4559 | 1605 } |
1606 } | |
1607 | |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
1608 static inline void |
24787
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
1609 pr_scale_header (std::ostream& os, double scale) |
3105 | 1610 { |
27434
57f5c5768eb3
Disallow exponential format in combination with fixed_point_format.
Rik <rik@octave.org>
parents:
27433
diff
changeset
|
1611 if (Vfixed_point_format && ! (print_g || print_e) && scale != 1) |
3105 | 1612 { |
23675
f71c0195b19d
move octave_preserve_stream_state to octave namespace
John W. Eaton <jwe@octave.org>
parents:
23662
diff
changeset
|
1613 octave::preserve_stream_state stream_state (os); |
17818
f1b59ef34eda
attempt to avoid setting persistent state on i/o streams (bug #40396)
John W. Eaton <jwe@octave.org>
parents:
17787
diff
changeset
|
1614 |
3568 | 1615 os << " " |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1616 << std::setw (8) << std::setprecision (1) |
21662
5b9868c2e212
maint: Octave coding convention cleanups.
Rik <rik@octave.org>
parents:
21583
diff
changeset
|
1617 << std::setiosflags (std::ios::scientific | std::ios::left) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1618 << scale |
24737
5be92b26ef8f
Fix alignment of numbers in fixed_point_format display (bug #53083).
Rik <rik@octave.org>
parents:
24673
diff
changeset
|
1619 << "*\n"; |
3105 | 1620 |
13112
969ed305dde5
Remove all blank lines with "format compact"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13102
diff
changeset
|
1621 if (! Vcompact_format) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1622 os << "\n"; |
3105 | 1623 } |
1624 } | |
1625 | |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
1626 static inline void |
5275 | 1627 pr_col_num_header (std::ostream& os, octave_idx_type total_width, int max_width, |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1628 octave_idx_type lim, octave_idx_type col, int extra_indent) |
1186 | 1629 { |
2165 | 1630 if (total_width > max_width && Vsplit_long_rows) |
1186 | 1631 { |
23675
f71c0195b19d
move octave_preserve_stream_state to octave namespace
John W. Eaton <jwe@octave.org>
parents:
23662
diff
changeset
|
1632 octave::preserve_stream_state stream_state (os); |
17818
f1b59ef34eda
attempt to avoid setting persistent state on i/o streams (bug #40396)
John W. Eaton <jwe@octave.org>
parents:
17787
diff
changeset
|
1633 |
4833 | 1634 if (col != 0) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1635 { |
13112
969ed305dde5
Remove all blank lines with "format compact"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13102
diff
changeset
|
1636 if (Vcompact_format) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1637 os << "\n"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1638 else |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1639 os << "\n\n"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1640 } |
1186 | 1641 |
5275 | 1642 octave_idx_type num_cols = lim - col; |
1186 | 1643 |
3548 | 1644 os << std::setw (extra_indent) << ""; |
1972 | 1645 |
1186 | 1646 if (num_cols == 1) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1647 os << " Column " << col + 1 << ":\n"; |
1186 | 1648 else if (num_cols == 2) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1649 os << " Columns " << col + 1 << " and " << lim << ":\n"; |
1186 | 1650 else |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1651 os << " Columns " << col + 1 << " through " << lim << ":\n"; |
2915 | 1652 |
13112
969ed305dde5
Remove all blank lines with "format compact"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13102
diff
changeset
|
1653 if (! Vcompact_format) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1654 os << "\n"; |
1186 | 1655 } |
1656 } | |
1657 | |
21139
538b57866b90
consistently use "typename" intead of "class" in template declarations
John W. Eaton <jwe@octave.org>
parents:
21100
diff
changeset
|
1658 template <typename T> |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
1659 static inline void |
5030 | 1660 pr_plus_format (std::ostream& os, const T& val) |
3248 | 1661 { |
5030 | 1662 if (val > T (0)) |
4632 | 1663 os << plus_format_chars[0]; |
5030 | 1664 else if (val < T (0)) |
4632 | 1665 os << plus_format_chars[1]; |
3248 | 1666 else |
4632 | 1667 os << plus_format_chars[2]; |
3248 | 1668 } |
1669 | |
24747
6114be517240
* pr-output.cc: Move defn of specialized abs before first use (bug #53114)
John W. Eaton <jwe@octave.org>
parents:
24745
diff
changeset
|
1670 // FIXME: all this mess with abs is an attempt to avoid seeing |
6114be517240
* pr-output.cc: Move defn of specialized abs before first use (bug #53114)
John W. Eaton <jwe@octave.org>
parents:
24745
diff
changeset
|
1671 // |
6114be517240
* pr-output.cc: Move defn of specialized abs before first use (bug #53114)
John W. Eaton <jwe@octave.org>
parents:
24745
diff
changeset
|
1672 // warning: comparison of unsigned expression < 0 is always false |
6114be517240
* pr-output.cc: Move defn of specialized abs before first use (bug #53114)
John W. Eaton <jwe@octave.org>
parents:
24745
diff
changeset
|
1673 // |
6114be517240
* pr-output.cc: Move defn of specialized abs before first use (bug #53114)
John W. Eaton <jwe@octave.org>
parents:
24745
diff
changeset
|
1674 // from GCC. Isn't there a better way? |
6114be517240
* pr-output.cc: Move defn of specialized abs before first use (bug #53114)
John W. Eaton <jwe@octave.org>
parents:
24745
diff
changeset
|
1675 |
6114be517240
* pr-output.cc: Move defn of specialized abs before first use (bug #53114)
John W. Eaton <jwe@octave.org>
parents:
24745
diff
changeset
|
1676 template <typename T> |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
1677 static inline T |
24747
6114be517240
* pr-output.cc: Move defn of specialized abs before first use (bug #53114)
John W. Eaton <jwe@octave.org>
parents:
24745
diff
changeset
|
1678 abs (T x) |
6114be517240
* pr-output.cc: Move defn of specialized abs before first use (bug #53114)
John W. Eaton <jwe@octave.org>
parents:
24745
diff
changeset
|
1679 { |
6114be517240
* pr-output.cc: Move defn of specialized abs before first use (bug #53114)
John W. Eaton <jwe@octave.org>
parents:
24745
diff
changeset
|
1680 return x < 0 ? -x : x; |
6114be517240
* pr-output.cc: Move defn of specialized abs before first use (bug #53114)
John W. Eaton <jwe@octave.org>
parents:
24745
diff
changeset
|
1681 } |
6114be517240
* pr-output.cc: Move defn of specialized abs before first use (bug #53114)
John W. Eaton <jwe@octave.org>
parents:
24745
diff
changeset
|
1682 |
6114be517240
* pr-output.cc: Move defn of specialized abs before first use (bug #53114)
John W. Eaton <jwe@octave.org>
parents:
24745
diff
changeset
|
1683 #define INSTANTIATE_ABS(T) \ |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
1684 template T abs (T) |
24747
6114be517240
* pr-output.cc: Move defn of specialized abs before first use (bug #53114)
John W. Eaton <jwe@octave.org>
parents:
24745
diff
changeset
|
1685 |
25569
e8961d677661
build: avoid compiler warning about unused function 'abs' (bug #54237)
Mike Miller <mtmiller@octave.org>
parents:
25108
diff
changeset
|
1686 INSTANTIATE_ABS(int8_t); |
e8961d677661
build: avoid compiler warning about unused function 'abs' (bug #54237)
Mike Miller <mtmiller@octave.org>
parents:
25108
diff
changeset
|
1687 INSTANTIATE_ABS(int16_t); |
e8961d677661
build: avoid compiler warning about unused function 'abs' (bug #54237)
Mike Miller <mtmiller@octave.org>
parents:
25108
diff
changeset
|
1688 INSTANTIATE_ABS(int32_t); |
e8961d677661
build: avoid compiler warning about unused function 'abs' (bug #54237)
Mike Miller <mtmiller@octave.org>
parents:
25108
diff
changeset
|
1689 INSTANTIATE_ABS(int64_t); |
24747
6114be517240
* pr-output.cc: Move defn of specialized abs before first use (bug #53114)
John W. Eaton <jwe@octave.org>
parents:
24745
diff
changeset
|
1690 |
6114be517240
* pr-output.cc: Move defn of specialized abs before first use (bug #53114)
John W. Eaton <jwe@octave.org>
parents:
24745
diff
changeset
|
1691 #define SPECIALIZE_UABS(T) \ |
6114be517240
* pr-output.cc: Move defn of specialized abs before first use (bug #53114)
John W. Eaton <jwe@octave.org>
parents:
24745
diff
changeset
|
1692 template <> \ |
25569
e8961d677661
build: avoid compiler warning about unused function 'abs' (bug #54237)
Mike Miller <mtmiller@octave.org>
parents:
25108
diff
changeset
|
1693 inline T \ |
e8961d677661
build: avoid compiler warning about unused function 'abs' (bug #54237)
Mike Miller <mtmiller@octave.org>
parents:
25108
diff
changeset
|
1694 abs (T x) \ |
24747
6114be517240
* pr-output.cc: Move defn of specialized abs before first use (bug #53114)
John W. Eaton <jwe@octave.org>
parents:
24745
diff
changeset
|
1695 { \ |
6114be517240
* pr-output.cc: Move defn of specialized abs before first use (bug #53114)
John W. Eaton <jwe@octave.org>
parents:
24745
diff
changeset
|
1696 return x; \ |
6114be517240
* pr-output.cc: Move defn of specialized abs before first use (bug #53114)
John W. Eaton <jwe@octave.org>
parents:
24745
diff
changeset
|
1697 } |
6114be517240
* pr-output.cc: Move defn of specialized abs before first use (bug #53114)
John W. Eaton <jwe@octave.org>
parents:
24745
diff
changeset
|
1698 |
25569
e8961d677661
build: avoid compiler warning about unused function 'abs' (bug #54237)
Mike Miller <mtmiller@octave.org>
parents:
25108
diff
changeset
|
1699 SPECIALIZE_UABS(uint8_t) |
e8961d677661
build: avoid compiler warning about unused function 'abs' (bug #54237)
Mike Miller <mtmiller@octave.org>
parents:
25108
diff
changeset
|
1700 SPECIALIZE_UABS(uint16_t) |
e8961d677661
build: avoid compiler warning about unused function 'abs' (bug #54237)
Mike Miller <mtmiller@octave.org>
parents:
25108
diff
changeset
|
1701 SPECIALIZE_UABS(uint32_t) |
e8961d677661
build: avoid compiler warning about unused function 'abs' (bug #54237)
Mike Miller <mtmiller@octave.org>
parents:
25108
diff
changeset
|
1702 SPECIALIZE_UABS(uint64_t) |
24747
6114be517240
* pr-output.cc: Move defn of specialized abs before first use (bug #53114)
John W. Eaton <jwe@octave.org>
parents:
24745
diff
changeset
|
1703 |
24745
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1704 #define MAKE_INT_MATRIX_FORMAT(TYPE) \ |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1705 template <> \ |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1706 float_display_format \ |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1707 make_format (const intNDArray<TYPE>& nda) \ |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1708 { \ |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1709 bool isneg = false; \ |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1710 int digits = 0; \ |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1711 \ |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1712 for (octave_idx_type i = 0; i < nda.numel (); i++) \ |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1713 { \ |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1714 int new_digits \ |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1715 = static_cast<int> \ |
24770
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
1716 (std::floor (log10 (double (abs (nda(i).value ()))) + 1)); \ |
24745
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1717 \ |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1718 if (new_digits > digits) \ |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1719 digits = new_digits; \ |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1720 \ |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1721 if (! isneg) \ |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1722 isneg = (abs (nda(i).value ()) != nda(i).value ()); \ |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1723 } \ |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1724 \ |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1725 return float_display_format (float_format (digits + isneg, 0, 0)); \ |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1726 } |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1727 |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1728 MAKE_INT_MATRIX_FORMAT (octave_int8) |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1729 MAKE_INT_MATRIX_FORMAT (octave_uint8) |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1730 MAKE_INT_MATRIX_FORMAT (octave_int16) |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1731 MAKE_INT_MATRIX_FORMAT (octave_uint16) |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1732 MAKE_INT_MATRIX_FORMAT (octave_int32) |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1733 MAKE_INT_MATRIX_FORMAT (octave_uint32) |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1734 MAKE_INT_MATRIX_FORMAT (octave_int64) |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1735 MAKE_INT_MATRIX_FORMAT (octave_uint64) |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1736 |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1737 #define MAKE_INT_SCALAR_FORMAT(TYPE) \ |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1738 template <> \ |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1739 float_display_format \ |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1740 make_format (const octave_int<TYPE>& val) \ |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1741 { \ |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1742 bool isneg = false; \ |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1743 int digits \ |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1744 = static_cast<int> \ |
24770
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
1745 (std::floor (log10 (double (abs (val.value ()))) + 1)); \ |
24745
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1746 \ |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1747 isneg = (abs (val.value ()) != val.value ()); \ |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1748 \ |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1749 return float_display_format (float_format (digits + isneg, 0, 0)); \ |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1750 } |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1751 |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1752 MAKE_INT_SCALAR_FORMAT (int8_t) |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1753 MAKE_INT_SCALAR_FORMAT (uint8_t) |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1754 MAKE_INT_SCALAR_FORMAT (int16_t) |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1755 MAKE_INT_SCALAR_FORMAT (uint16_t) |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1756 MAKE_INT_SCALAR_FORMAT (int32_t) |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1757 MAKE_INT_SCALAR_FORMAT (uint32_t) |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1758 MAKE_INT_SCALAR_FORMAT (int64_t) |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1759 MAKE_INT_SCALAR_FORMAT (uint64_t) |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
1760 |
1 | 1761 void |
24760
b784d68f7c44
fix printing of logical values (bug #53160)
John W. Eaton <jwe@octave.org>
parents:
24747
diff
changeset
|
1762 octave_print_internal (std::ostream& os, const float_display_format& fmt, |
b784d68f7c44
fix printing of logical values (bug #53160)
John W. Eaton <jwe@octave.org>
parents:
24747
diff
changeset
|
1763 bool d, bool pr_as_read_syntax) |
1 | 1764 { |
24760
b784d68f7c44
fix printing of logical values (bug #53160)
John W. Eaton <jwe@octave.org>
parents:
24747
diff
changeset
|
1765 octave_print_internal (os, fmt, octave_uint8 (d), pr_as_read_syntax); |
17866
ea0ecbe2eaf5
display matrix values in GUI workspace viewer (bug #40499)
John W. Eaton <jwe@octave.org>
parents:
17847
diff
changeset
|
1766 } |
ea0ecbe2eaf5
display matrix values in GUI workspace viewer (bug #40499)
John W. Eaton <jwe@octave.org>
parents:
17847
diff
changeset
|
1767 |
ea0ecbe2eaf5
display matrix values in GUI workspace viewer (bug #40499)
John W. Eaton <jwe@octave.org>
parents:
17847
diff
changeset
|
1768 void |
24760
b784d68f7c44
fix printing of logical values (bug #53160)
John W. Eaton <jwe@octave.org>
parents:
24747
diff
changeset
|
1769 octave_print_internal (std::ostream& os, bool d, bool pr_as_read_syntax) |
17866
ea0ecbe2eaf5
display matrix values in GUI workspace viewer (bug #40499)
John W. Eaton <jwe@octave.org>
parents:
17847
diff
changeset
|
1770 { |
24760
b784d68f7c44
fix printing of logical values (bug #53160)
John W. Eaton <jwe@octave.org>
parents:
24747
diff
changeset
|
1771 octave_print_internal (os, octave_uint8 (d), pr_as_read_syntax); |
b784d68f7c44
fix printing of logical values (bug #53160)
John W. Eaton <jwe@octave.org>
parents:
24747
diff
changeset
|
1772 } |
b784d68f7c44
fix printing of logical values (bug #53160)
John W. Eaton <jwe@octave.org>
parents:
24747
diff
changeset
|
1773 |
b784d68f7c44
fix printing of logical values (bug #53160)
John W. Eaton <jwe@octave.org>
parents:
24747
diff
changeset
|
1774 void |
b784d68f7c44
fix printing of logical values (bug #53160)
John W. Eaton <jwe@octave.org>
parents:
24747
diff
changeset
|
1775 octave_print_internal (std::ostream&, const float_display_format&, |
b784d68f7c44
fix printing of logical values (bug #53160)
John W. Eaton <jwe@octave.org>
parents:
24747
diff
changeset
|
1776 char, bool) |
1 | 1777 { |
17866
ea0ecbe2eaf5
display matrix values in GUI workspace viewer (bug #40499)
John W. Eaton <jwe@octave.org>
parents:
17847
diff
changeset
|
1778 panic_impossible (); |
ea0ecbe2eaf5
display matrix values in GUI workspace viewer (bug #40499)
John W. Eaton <jwe@octave.org>
parents:
17847
diff
changeset
|
1779 } |
ea0ecbe2eaf5
display matrix values in GUI workspace viewer (bug #40499)
John W. Eaton <jwe@octave.org>
parents:
17847
diff
changeset
|
1780 |
ea0ecbe2eaf5
display matrix values in GUI workspace viewer (bug #40499)
John W. Eaton <jwe@octave.org>
parents:
17847
diff
changeset
|
1781 void |
24668
d4dd741b2794
new octave_value functions for formatting output
John W. Eaton <jwe@octave.org>
parents:
24667
diff
changeset
|
1782 octave_print_internal (std::ostream& os, const float_display_format& fmt, |
d4dd741b2794
new octave_value functions for formatting output
John W. Eaton <jwe@octave.org>
parents:
24667
diff
changeset
|
1783 double d, bool pr_as_read_syntax) |
17866
ea0ecbe2eaf5
display matrix values in GUI workspace viewer (bug #40499)
John W. Eaton <jwe@octave.org>
parents:
17847
diff
changeset
|
1784 { |
ea0ecbe2eaf5
display matrix values in GUI workspace viewer (bug #40499)
John W. Eaton <jwe@octave.org>
parents:
17847
diff
changeset
|
1785 if (pr_as_read_syntax) |
ea0ecbe2eaf5
display matrix values in GUI workspace viewer (bug #40499)
John W. Eaton <jwe@octave.org>
parents:
17847
diff
changeset
|
1786 os << d; |
ea0ecbe2eaf5
display matrix values in GUI workspace viewer (bug #40499)
John W. Eaton <jwe@octave.org>
parents:
17847
diff
changeset
|
1787 else if (plus_format) |
ea0ecbe2eaf5
display matrix values in GUI workspace viewer (bug #40499)
John W. Eaton <jwe@octave.org>
parents:
17847
diff
changeset
|
1788 pr_plus_format (os, d); |
1 | 1789 else |
1790 { | |
1791 if (free_format) | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1792 os << d; |
1 | 1793 else |
24668
d4dd741b2794
new octave_value functions for formatting output
John W. Eaton <jwe@octave.org>
parents:
24667
diff
changeset
|
1794 pr_float (os, fmt, d); |
1 | 1795 } |
1796 } | |
1797 | |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
1798 void |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
1799 octave_print_internal (std::ostream& os, const float_display_format& fmt, |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
1800 float d, bool pr_as_read_syntax) |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
1801 { |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
1802 if (pr_as_read_syntax) |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
1803 os << d; |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
1804 else if (plus_format) |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
1805 pr_plus_format (os, d); |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
1806 else |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
1807 { |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
1808 if (free_format) |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
1809 os << d; |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
1810 else |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
1811 pr_float (os, fmt, d); |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
1812 } |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
1813 } |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
1814 |
24769
e574b957b01b
don't print extra newline after matrices with format free (bug #53168)
John W. Eaton <jwe@octave.org>
parents:
24767
diff
changeset
|
1815 template <typename MT> |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
1816 static inline void |
24769
e574b957b01b
don't print extra newline after matrices with format free (bug #53168)
John W. Eaton <jwe@octave.org>
parents:
24767
diff
changeset
|
1817 octave_print_free (std::ostream& os, const MT& m, bool pr_as_read_syntax) |
e574b957b01b
don't print extra newline after matrices with format free (bug #53168)
John W. Eaton <jwe@octave.org>
parents:
24767
diff
changeset
|
1818 { |
e574b957b01b
don't print extra newline after matrices with format free (bug #53168)
John W. Eaton <jwe@octave.org>
parents:
24767
diff
changeset
|
1819 octave_idx_type nr = m.rows (); |
e574b957b01b
don't print extra newline after matrices with format free (bug #53168)
John W. Eaton <jwe@octave.org>
parents:
24767
diff
changeset
|
1820 octave_idx_type nc = m.columns (); |
e574b957b01b
don't print extra newline after matrices with format free (bug #53168)
John W. Eaton <jwe@octave.org>
parents:
24767
diff
changeset
|
1821 |
e574b957b01b
don't print extra newline after matrices with format free (bug #53168)
John W. Eaton <jwe@octave.org>
parents:
24767
diff
changeset
|
1822 if (pr_as_read_syntax) |
e574b957b01b
don't print extra newline after matrices with format free (bug #53168)
John W. Eaton <jwe@octave.org>
parents:
24767
diff
changeset
|
1823 os << "[\n"; |
e574b957b01b
don't print extra newline after matrices with format free (bug #53168)
John W. Eaton <jwe@octave.org>
parents:
24767
diff
changeset
|
1824 |
e574b957b01b
don't print extra newline after matrices with format free (bug #53168)
John W. Eaton <jwe@octave.org>
parents:
24767
diff
changeset
|
1825 for (octave_idx_type i = 0; i < nr; i++) |
e574b957b01b
don't print extra newline after matrices with format free (bug #53168)
John W. Eaton <jwe@octave.org>
parents:
24767
diff
changeset
|
1826 { |
e574b957b01b
don't print extra newline after matrices with format free (bug #53168)
John W. Eaton <jwe@octave.org>
parents:
24767
diff
changeset
|
1827 for (octave_idx_type j = 0; j < nc; j++) |
30390
a61e1a0f6024
maint: style check C++ files in libinterp/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
30329
diff
changeset
|
1828 os << ' ' << m.elem (i, j); |
24769
e574b957b01b
don't print extra newline after matrices with format free (bug #53168)
John W. Eaton <jwe@octave.org>
parents:
24767
diff
changeset
|
1829 |
e574b957b01b
don't print extra newline after matrices with format free (bug #53168)
John W. Eaton <jwe@octave.org>
parents:
24767
diff
changeset
|
1830 if (i < nr - 1) |
e574b957b01b
don't print extra newline after matrices with format free (bug #53168)
John W. Eaton <jwe@octave.org>
parents:
24767
diff
changeset
|
1831 os << "\n"; |
e574b957b01b
don't print extra newline after matrices with format free (bug #53168)
John W. Eaton <jwe@octave.org>
parents:
24767
diff
changeset
|
1832 } |
e574b957b01b
don't print extra newline after matrices with format free (bug #53168)
John W. Eaton <jwe@octave.org>
parents:
24767
diff
changeset
|
1833 |
e574b957b01b
don't print extra newline after matrices with format free (bug #53168)
John W. Eaton <jwe@octave.org>
parents:
24767
diff
changeset
|
1834 if (pr_as_read_syntax) |
e574b957b01b
don't print extra newline after matrices with format free (bug #53168)
John W. Eaton <jwe@octave.org>
parents:
24767
diff
changeset
|
1835 os << ']'; |
e574b957b01b
don't print extra newline after matrices with format free (bug #53168)
John W. Eaton <jwe@octave.org>
parents:
24767
diff
changeset
|
1836 } |
e574b957b01b
don't print extra newline after matrices with format free (bug #53168)
John W. Eaton <jwe@octave.org>
parents:
24767
diff
changeset
|
1837 |
24781
e6f380f9b2a4
use template for printing matrices in plus format
John W. Eaton <jwe@octave.org>
parents:
24771
diff
changeset
|
1838 template <typename MT> |
e6f380f9b2a4
use template for printing matrices in plus format
John W. Eaton <jwe@octave.org>
parents:
24771
diff
changeset
|
1839 static inline void |
e6f380f9b2a4
use template for printing matrices in plus format
John W. Eaton <jwe@octave.org>
parents:
24771
diff
changeset
|
1840 pr_plus_format_matrix (std::ostream& os, const MT& m) |
e6f380f9b2a4
use template for printing matrices in plus format
John W. Eaton <jwe@octave.org>
parents:
24771
diff
changeset
|
1841 { |
e6f380f9b2a4
use template for printing matrices in plus format
John W. Eaton <jwe@octave.org>
parents:
24771
diff
changeset
|
1842 octave_idx_type nr = m.rows (); |
e6f380f9b2a4
use template for printing matrices in plus format
John W. Eaton <jwe@octave.org>
parents:
24771
diff
changeset
|
1843 octave_idx_type nc = m.columns (); |
e6f380f9b2a4
use template for printing matrices in plus format
John W. Eaton <jwe@octave.org>
parents:
24771
diff
changeset
|
1844 |
e6f380f9b2a4
use template for printing matrices in plus format
John W. Eaton <jwe@octave.org>
parents:
24771
diff
changeset
|
1845 for (octave_idx_type i = 0; i < nr; i++) |
e6f380f9b2a4
use template for printing matrices in plus format
John W. Eaton <jwe@octave.org>
parents:
24771
diff
changeset
|
1846 { |
e6f380f9b2a4
use template for printing matrices in plus format
John W. Eaton <jwe@octave.org>
parents:
24771
diff
changeset
|
1847 for (octave_idx_type j = 0; j < nc; j++) |
e6f380f9b2a4
use template for printing matrices in plus format
John W. Eaton <jwe@octave.org>
parents:
24771
diff
changeset
|
1848 { |
e6f380f9b2a4
use template for printing matrices in plus format
John W. Eaton <jwe@octave.org>
parents:
24771
diff
changeset
|
1849 octave_quit (); |
e6f380f9b2a4
use template for printing matrices in plus format
John W. Eaton <jwe@octave.org>
parents:
24771
diff
changeset
|
1850 |
30390
a61e1a0f6024
maint: style check C++ files in libinterp/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
30329
diff
changeset
|
1851 pr_plus_format (os, m(i, j)); |
24781
e6f380f9b2a4
use template for printing matrices in plus format
John W. Eaton <jwe@octave.org>
parents:
24771
diff
changeset
|
1852 } |
e6f380f9b2a4
use template for printing matrices in plus format
John W. Eaton <jwe@octave.org>
parents:
24771
diff
changeset
|
1853 |
e6f380f9b2a4
use template for printing matrices in plus format
John W. Eaton <jwe@octave.org>
parents:
24771
diff
changeset
|
1854 if (i < nr - 1) |
e6f380f9b2a4
use template for printing matrices in plus format
John W. Eaton <jwe@octave.org>
parents:
24771
diff
changeset
|
1855 os << "\n"; |
e6f380f9b2a4
use template for printing matrices in plus format
John W. Eaton <jwe@octave.org>
parents:
24771
diff
changeset
|
1856 } |
e6f380f9b2a4
use template for printing matrices in plus format
John W. Eaton <jwe@octave.org>
parents:
24771
diff
changeset
|
1857 } |
e6f380f9b2a4
use template for printing matrices in plus format
John W. Eaton <jwe@octave.org>
parents:
24771
diff
changeset
|
1858 |
24788
6f04028d5d86
use templates to eliminate more nearly duplicate pr-output code
John W. Eaton <jwe@octave.org>
parents:
24787
diff
changeset
|
1859 static inline int |
6f04028d5d86
use templates to eliminate more nearly duplicate pr-output code
John W. Eaton <jwe@octave.org>
parents:
24787
diff
changeset
|
1860 get_column_width (const float_display_format& fmt) |
6f04028d5d86
use templates to eliminate more nearly duplicate pr-output code
John W. Eaton <jwe@octave.org>
parents:
24787
diff
changeset
|
1861 { |
27183
2d9decd77e58
revamp float_format object
John W. Eaton <jwe@octave.org>
parents:
27156
diff
changeset
|
1862 int r_fw = fmt.real_format().width (); |
2d9decd77e58
revamp float_format object
John W. Eaton <jwe@octave.org>
parents:
27156
diff
changeset
|
1863 int i_fw = fmt.imag_format().width (); |
24788
6f04028d5d86
use templates to eliminate more nearly duplicate pr-output code
John W. Eaton <jwe@octave.org>
parents:
24787
diff
changeset
|
1864 |
6f04028d5d86
use templates to eliminate more nearly duplicate pr-output code
John W. Eaton <jwe@octave.org>
parents:
24787
diff
changeset
|
1865 int retval = r_fw + i_fw + 2; |
6f04028d5d86
use templates to eliminate more nearly duplicate pr-output code
John W. Eaton <jwe@octave.org>
parents:
24787
diff
changeset
|
1866 |
6f04028d5d86
use templates to eliminate more nearly duplicate pr-output code
John W. Eaton <jwe@octave.org>
parents:
24787
diff
changeset
|
1867 if (i_fw && ! (rat_format || bank_format || hex_format || bit_format)) |
6f04028d5d86
use templates to eliminate more nearly duplicate pr-output code
John W. Eaton <jwe@octave.org>
parents:
24787
diff
changeset
|
1868 retval += 5; |
6f04028d5d86
use templates to eliminate more nearly duplicate pr-output code
John W. Eaton <jwe@octave.org>
parents:
24787
diff
changeset
|
1869 |
6f04028d5d86
use templates to eliminate more nearly duplicate pr-output code
John W. Eaton <jwe@octave.org>
parents:
24787
diff
changeset
|
1870 return retval; |
6f04028d5d86
use templates to eliminate more nearly duplicate pr-output code
John W. Eaton <jwe@octave.org>
parents:
24787
diff
changeset
|
1871 } |
6f04028d5d86
use templates to eliminate more nearly duplicate pr-output code
John W. Eaton <jwe@octave.org>
parents:
24787
diff
changeset
|
1872 |
24784
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
1873 template <typename MT> |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
1874 static void |
24788
6f04028d5d86
use templates to eliminate more nearly duplicate pr-output code
John W. Eaton <jwe@octave.org>
parents:
24787
diff
changeset
|
1875 octave_print_matrix_internal (std::ostream& os, const MT& m, |
6f04028d5d86
use templates to eliminate more nearly duplicate pr-output code
John W. Eaton <jwe@octave.org>
parents:
24787
diff
changeset
|
1876 bool pr_as_read_syntax, int extra_indent) |
1 | 1877 { |
5275 | 1878 octave_idx_type nr = m.rows (); |
1879 octave_idx_type nc = m.columns (); | |
1 | 1880 |
2408 | 1881 if (nr == 0 || nc == 0) |
626 | 1882 print_empty_matrix (os, nr, nc, pr_as_read_syntax); |
1883 else if (plus_format && ! pr_as_read_syntax) | |
24781
e6f380f9b2a4
use template for printing matrices in plus format
John W. Eaton <jwe@octave.org>
parents:
24771
diff
changeset
|
1884 pr_plus_format_matrix (os, m); |
1 | 1885 else |
1886 { | |
24787
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
1887 float_display_format fmt = make_format (m); |
24788
6f04028d5d86
use templates to eliminate more nearly duplicate pr-output code
John W. Eaton <jwe@octave.org>
parents:
24787
diff
changeset
|
1888 int column_width = get_column_width (fmt); |
5275 | 1889 octave_idx_type total_width = nc * column_width; |
21748
176536b15d68
use namespace for command_editor and command_history classes
John W. Eaton <jwe@octave.org>
parents:
21747
diff
changeset
|
1890 octave_idx_type max_width = octave::command_editor::terminal_cols (); |
1 | 1891 |
626 | 1892 if (pr_as_read_syntax) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1893 max_width -= 4; |
1972 | 1894 else |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1895 max_width -= extra_indent; |
1972 | 1896 |
1897 if (max_width < 0) | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1898 max_width = 0; |
626 | 1899 |
1 | 1900 if (free_format) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1901 { |
24769
e574b957b01b
don't print extra newline after matrices with format free (bug #53168)
John W. Eaton <jwe@octave.org>
parents:
24767
diff
changeset
|
1902 octave_print_free (os, m, pr_as_read_syntax); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1903 return; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1904 } |
1 | 1905 |
5275 | 1906 octave_idx_type inc = nc; |
2165 | 1907 if (total_width > max_width && Vsplit_long_rows) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1908 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1909 inc = max_width / column_width; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1910 if (inc == 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1911 inc++; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1912 } |
1 | 1913 |
626 | 1914 if (pr_as_read_syntax) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1915 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1916 for (octave_idx_type i = 0; i < nr; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1917 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1918 octave_idx_type col = 0; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1919 while (col < nc) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1920 { |
23450
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23433
diff
changeset
|
1921 octave_idx_type lim = (col + inc < nc ? col + inc : nc); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1922 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1923 for (octave_idx_type j = col; j < lim; j++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1924 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1925 octave_quit (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1926 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1927 if (i == 0 && j == 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1928 os << "[ "; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1929 else |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1930 { |
26501
cfe28edab48b
pr-output.cc: Fix static analyzer detected issues (bug #55347).
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
1931 if (j > col) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1932 os << ", "; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1933 else |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1934 os << " "; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1935 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1936 |
30390
a61e1a0f6024
maint: style check C++ files in libinterp/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
30329
diff
changeset
|
1937 pr_float (os, fmt, m(i, j)); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1938 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1939 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1940 col += inc; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1941 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1942 if (col >= nc) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1943 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1944 if (i == nr - 1) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1945 os << " ]"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1946 else |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1947 os << ";\n"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1948 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1949 else |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1950 os << " ...\n"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1951 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1952 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1953 } |
626 | 1954 else |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1955 { |
23675
f71c0195b19d
move octave_preserve_stream_state to octave namespace
John W. Eaton <jwe@octave.org>
parents:
23662
diff
changeset
|
1956 octave::preserve_stream_state stream_state (os); |
17818
f1b59ef34eda
attempt to avoid setting persistent state on i/o streams (bug #40396)
John W. Eaton <jwe@octave.org>
parents:
17787
diff
changeset
|
1957 |
24787
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
1958 pr_scale_header (os, fmt.scale_factor ()); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1959 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1960 for (octave_idx_type col = 0; col < nc; col += inc) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1961 { |
24737
5be92b26ef8f
Fix alignment of numbers in fixed_point_format display (bug #53083).
Rik <rik@octave.org>
parents:
24673
diff
changeset
|
1962 octave_idx_type lim = (col + inc < nc ? col + inc : nc); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1963 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1964 pr_col_num_header (os, total_width, max_width, lim, col, |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1965 extra_indent); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1966 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1967 for (octave_idx_type i = 0; i < nr; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1968 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1969 os << std::setw (extra_indent) << ""; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1970 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1971 for (octave_idx_type j = col; j < lim; j++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1972 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1973 octave_quit (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1974 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1975 os << " "; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1976 |
30390
a61e1a0f6024
maint: style check C++ files in libinterp/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
30329
diff
changeset
|
1977 pr_float (os, fmt, m(i, j)); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1978 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1979 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1980 if (i < nr - 1) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1981 os << "\n"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1982 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1983 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1984 } |
1 | 1985 } |
1986 } | |
1987 | |
24784
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
1988 template <typename DMT> |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
1989 static void |
24788
6f04028d5d86
use templates to eliminate more nearly duplicate pr-output code
John W. Eaton <jwe@octave.org>
parents:
24787
diff
changeset
|
1990 octave_print_diag_matrix_internal (std::ostream& os, const DMT& m, |
6f04028d5d86
use templates to eliminate more nearly duplicate pr-output code
John W. Eaton <jwe@octave.org>
parents:
24787
diff
changeset
|
1991 bool pr_as_read_syntax, int extra_indent) |
8625
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
1992 { |
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
1993 octave_idx_type nr = m.rows (); |
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
1994 octave_idx_type nc = m.columns (); |
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
1995 |
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
1996 if (nr == 0 || nc == 0) |
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
1997 print_empty_matrix (os, nr, nc, pr_as_read_syntax); |
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
1998 else if (plus_format && ! pr_as_read_syntax) |
24781
e6f380f9b2a4
use template for printing matrices in plus format
John W. Eaton <jwe@octave.org>
parents:
24771
diff
changeset
|
1999 pr_plus_format_matrix (os, m); |
8625
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2000 else |
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2001 { |
24786
0aeef407b04e
don't pass field width as separate argument in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24785
diff
changeset
|
2002 float_display_format fmt |
24787
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
2003 = make_format (typename DMT::full_matrix_type (m.diag ())); |
24788
6f04028d5d86
use templates to eliminate more nearly duplicate pr-output code
John W. Eaton <jwe@octave.org>
parents:
24787
diff
changeset
|
2004 int column_width = get_column_width (fmt); |
8625
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2005 octave_idx_type total_width = nc * column_width; |
21748
176536b15d68
use namespace for command_editor and command_history classes
John W. Eaton <jwe@octave.org>
parents:
21747
diff
changeset
|
2006 octave_idx_type max_width = octave::command_editor::terminal_cols (); |
8625
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2007 |
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2008 if (pr_as_read_syntax) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2009 max_width -= 4; |
8625
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2010 else |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2011 max_width -= extra_indent; |
8625
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2012 |
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2013 if (max_width < 0) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2014 max_width = 0; |
8625
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2015 |
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2016 if (free_format) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2017 { |
24769
e574b957b01b
don't print extra newline after matrices with format free (bug #53168)
John W. Eaton <jwe@octave.org>
parents:
24767
diff
changeset
|
2018 octave_print_free (os, m, pr_as_read_syntax); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2019 return; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2020 } |
8625
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2021 |
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2022 octave_idx_type inc = nc; |
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2023 if (total_width > max_width && Vsplit_long_rows) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2024 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2025 inc = max_width / column_width; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2026 if (inc == 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2027 inc++; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2028 } |
8625
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2029 |
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2030 if (pr_as_read_syntax) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2031 { |
8625
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2032 os << "diag ("; |
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2033 |
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2034 octave_idx_type col = 0; |
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2035 while (col < nc) |
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2036 { |
24737
5be92b26ef8f
Fix alignment of numbers in fixed_point_format display (bug #53083).
Rik <rik@octave.org>
parents:
24673
diff
changeset
|
2037 octave_idx_type lim = (col + inc < nc ? col + inc : nc); |
8625
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2038 |
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2039 for (octave_idx_type j = col; j < lim; j++) |
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2040 { |
10142
829e69ec3110
make OCTAVE_QUIT a function
Jaroslav Hajek <highegg@gmail.com>
parents:
10066
diff
changeset
|
2041 octave_quit (); |
8625
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2042 |
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2043 if (j == 0) |
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2044 os << "[ "; |
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2045 else |
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2046 { |
26501
cfe28edab48b
pr-output.cc: Fix static analyzer detected issues (bug #55347).
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
2047 if (j > col) |
8625
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2048 os << ", "; |
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2049 else |
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2050 os << " "; |
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2051 } |
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2052 |
30390
a61e1a0f6024
maint: style check C++ files in libinterp/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
30329
diff
changeset
|
2053 pr_float (os, fmt, m(j, j)); |
8625
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2054 } |
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2055 |
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2056 col += inc; |
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2057 |
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2058 if (col >= nc) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2059 os << " ]"; |
8625
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2060 else |
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2061 os << " ...\n"; |
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2062 } |
23807
336f89b6208b
Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents:
23803
diff
changeset
|
2063 os << ')'; |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2064 } |
8625
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2065 else |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2066 { |
23675
f71c0195b19d
move octave_preserve_stream_state to octave namespace
John W. Eaton <jwe@octave.org>
parents:
23662
diff
changeset
|
2067 octave::preserve_stream_state stream_state (os); |
17818
f1b59ef34eda
attempt to avoid setting persistent state on i/o streams (bug #40396)
John W. Eaton <jwe@octave.org>
parents:
17787
diff
changeset
|
2068 |
13112
969ed305dde5
Remove all blank lines with "format compact"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13102
diff
changeset
|
2069 os << "Diagonal Matrix\n"; |
969ed305dde5
Remove all blank lines with "format compact"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13102
diff
changeset
|
2070 if (! Vcompact_format) |
969ed305dde5
Remove all blank lines with "format compact"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13102
diff
changeset
|
2071 os << "\n"; |
969ed305dde5
Remove all blank lines with "format compact"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13102
diff
changeset
|
2072 |
24787
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
2073 pr_scale_header (os, fmt.scale_factor ()); |
8625
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2074 |
21751
b571fc85953f
maint: Use two spaces after period to indicate sentence break.
Rik <rik@octave.org>
parents:
21748
diff
changeset
|
2075 // kluge. Get the true width of a number. |
8625
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2076 int zero_fw; |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2077 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2078 std::ostringstream tmp_oss; |
24784
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2079 typename DMT::element_type zero = 0; |
24787
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
2080 pr_float (tmp_oss, fmt, zero); |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2081 zero_fw = tmp_oss.str ().length (); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2082 } |
8625
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2083 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2084 for (octave_idx_type col = 0; col < nc; col += inc) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2085 { |
24737
5be92b26ef8f
Fix alignment of numbers in fixed_point_format display (bug #53083).
Rik <rik@octave.org>
parents:
24673
diff
changeset
|
2086 octave_idx_type lim = (col + inc < nc ? col + inc : nc); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2087 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2088 pr_col_num_header (os, total_width, max_width, lim, col, |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2089 extra_indent); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2090 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2091 for (octave_idx_type i = 0; i < nr; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2092 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2093 os << std::setw (extra_indent) << ""; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2094 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2095 for (octave_idx_type j = col; j < lim; j++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2096 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2097 octave_quit (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2098 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2099 os << " "; |
8625
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2100 |
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2101 if (i == j) |
30390
a61e1a0f6024
maint: style check C++ files in libinterp/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
30329
diff
changeset
|
2102 pr_float (os, fmt, m(i, j)); |
8625
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2103 else |
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2104 os << std::setw (zero_fw) << '0'; |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2105 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2106 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2107 if (i < nr - 1) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2108 os << "\n"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2109 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2110 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2111 } |
8625
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2112 } |
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2113 } |
13102
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2114 |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2115 template <typename NDA_T, typename ELT_T, typename MAT_T> |
14861
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
2116 void print_nd_array (std::ostream& os, const NDA_T& nda, |
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
2117 bool pr_as_read_syntax) |
13102
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2118 { |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2119 |
23577
80c42f4cca13
maint: Deprecate is_empty and replace with isempty.
Rik <rik@octave.org>
parents:
23565
diff
changeset
|
2120 if (nda.isempty ()) |
13102
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2121 print_empty_nd_array (os, nda.dims (), pr_as_read_syntax); |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2122 else |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2123 { |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2124 |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2125 int ndims = nda.ndims (); |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2126 |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2127 dim_vector dims = nda.dims (); |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2128 |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2129 Array<octave_idx_type> ra_idx (dim_vector (ndims, 1), 0); |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2130 |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2131 octave_idx_type m = 1; |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2132 |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2133 for (int i = 2; i < ndims; i++) |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2134 m *= dims(i); |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2135 |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2136 octave_idx_type nr = dims(0); |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2137 octave_idx_type nc = dims(1); |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2138 |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2139 for (octave_idx_type i = 0; i < m; i++) |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2140 { |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2141 octave_quit (); |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2142 |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2143 std::string nm = "ans"; |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2144 |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2145 if (m > 1) |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2146 { |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2147 nm += "(:,:,"; |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2148 |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2149 std::ostringstream buf; |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2150 |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2151 for (int k = 2; k < ndims; k++) |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2152 { |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2153 buf << ra_idx(k) + 1; |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2154 |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2155 if (k < ndims - 1) |
23807
336f89b6208b
Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents:
23803
diff
changeset
|
2156 buf << ','; |
13102
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2157 else |
23807
336f89b6208b
Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents:
23803
diff
changeset
|
2158 buf << ')'; |
13102
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2159 } |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2160 |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2161 nm += buf.str (); |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2162 } |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2163 |
29569
29a1f8fd8ee6
move idx_vector classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29494
diff
changeset
|
2164 Array<octave::idx_vector> idx (dim_vector (ndims, 1)); |
29a1f8fd8ee6
move idx_vector classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29494
diff
changeset
|
2165 |
29a1f8fd8ee6
move idx_vector classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29494
diff
changeset
|
2166 idx(0) = octave::idx_vector (':'); |
29a1f8fd8ee6
move idx_vector classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29494
diff
changeset
|
2167 idx(1) = octave::idx_vector (':'); |
13102
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2168 |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2169 for (int k = 2; k < ndims; k++) |
29569
29a1f8fd8ee6
move idx_vector classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29494
diff
changeset
|
2170 idx(k) = octave::idx_vector (ra_idx(k)); |
13102
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2171 |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2172 octave_value page |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2173 = MAT_T (Array<ELT_T> (nda.index (idx), dim_vector (nr, nc))); |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2174 |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2175 if (i != m - 1) |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2176 { |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2177 page.print_with_name (os, nm); |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2178 } |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2179 else |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2180 { |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2181 page.print_name_tag (os, nm); |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2182 page.print_raw (os); |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2183 } |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2184 |
26501
cfe28edab48b
pr-output.cc: Fix static analyzer detected issues (bug #55347).
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
2185 NDA_T::increment_index (ra_idx, dims, 2); |
13102
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2186 } |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2187 } |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2188 } |
4532 | 2189 |
4513 | 2190 void |
2191 octave_print_internal (std::ostream& os, const NDArray& nda, | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2192 bool pr_as_read_syntax, int extra_indent) |
4513 | 2193 { |
2194 switch (nda.ndims ()) | |
2195 { | |
2196 case 1: | |
2197 case 2: | |
19320
d0c73e23a505
Change inheritance tree so that <T>Matrix inherit from <T>NDArray.
Carnë Draug <carandraug@octave.org>
parents:
19318
diff
changeset
|
2198 octave_print_internal (os, Matrix (nda), |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2199 pr_as_read_syntax, extra_indent); |
4513 | 2200 break; |
2201 | |
2202 default: | |
13102
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2203 print_nd_array <NDArray, double, Matrix> (os, nda, pr_as_read_syntax); |
4513 | 2204 break; |
2205 } | |
2206 } | |
2207 | |
24784
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2208 void |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2209 octave_print_internal (std::ostream& os, const FloatNDArray& nda, |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2210 bool pr_as_read_syntax, int extra_indent) |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2211 { |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2212 switch (nda.ndims ()) |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2213 { |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2214 case 1: |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2215 case 2: |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2216 octave_print_internal (os, FloatMatrix (nda), |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2217 pr_as_read_syntax, extra_indent); |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2218 break; |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2219 |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2220 default: |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2221 print_nd_array <FloatNDArray, float, FloatMatrix> (os, nda, pr_as_read_syntax); |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2222 break; |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2223 } |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2224 } |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2225 |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
2226 template <typename T> |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
2227 static inline void |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
2228 pr_plus_format (std::ostream& os, const std::complex<T>& c) |
3248 | 2229 { |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
2230 T rp = c.real (); |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
2231 T ip = c.imag (); |
3248 | 2232 |
24770
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
2233 if (rp == 0) |
3248 | 2234 { |
24770
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
2235 if (ip == 0) |
23807
336f89b6208b
Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents:
23803
diff
changeset
|
2236 os << ' '; |
3248 | 2237 else |
23807
336f89b6208b
Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents:
23803
diff
changeset
|
2238 os << 'i'; |
3248 | 2239 } |
24770
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
2240 else if (ip == 0) |
3608 | 2241 pr_plus_format (os, rp); |
3248 | 2242 else |
23807
336f89b6208b
Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents:
23803
diff
changeset
|
2243 os << 'c'; |
3248 | 2244 } |
2245 | |
24668
d4dd741b2794
new octave_value functions for formatting output
John W. Eaton <jwe@octave.org>
parents:
24667
diff
changeset
|
2246 extern void |
d4dd741b2794
new octave_value functions for formatting output
John W. Eaton <jwe@octave.org>
parents:
24667
diff
changeset
|
2247 octave_print_internal (std::ostream& os, const float_display_format& fmt, |
d4dd741b2794
new octave_value functions for formatting output
John W. Eaton <jwe@octave.org>
parents:
24667
diff
changeset
|
2248 const Complex& c, bool pr_as_read_syntax) |
1 | 2249 { |
17867
49d573a1deda
avoid initial spaces for scalars in GUI workspace viewer (bug #40500)
John W. Eaton <jwe@octave.org>
parents:
17866
diff
changeset
|
2250 if (pr_as_read_syntax) |
49d573a1deda
avoid initial spaces for scalars in GUI workspace viewer (bug #40500)
John W. Eaton <jwe@octave.org>
parents:
17866
diff
changeset
|
2251 os << c; |
49d573a1deda
avoid initial spaces for scalars in GUI workspace viewer (bug #40500)
John W. Eaton <jwe@octave.org>
parents:
17866
diff
changeset
|
2252 else if (plus_format) |
49d573a1deda
avoid initial spaces for scalars in GUI workspace viewer (bug #40500)
John W. Eaton <jwe@octave.org>
parents:
17866
diff
changeset
|
2253 pr_plus_format (os, c); |
1 | 2254 else |
2255 { | |
2256 if (free_format) | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2257 os << c; |
1 | 2258 else |
24788
6f04028d5d86
use templates to eliminate more nearly duplicate pr-output code
John W. Eaton <jwe@octave.org>
parents:
24787
diff
changeset
|
2259 pr_float (os, fmt, c); |
1 | 2260 } |
2261 } | |
2262 | |
2263 void | |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
2264 octave_print_internal (std::ostream& os, const float_display_format& fmt, |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
2265 const FloatComplex& c, bool pr_as_read_syntax) |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
2266 { |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
2267 if (pr_as_read_syntax) |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
2268 os << c; |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
2269 else if (plus_format) |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
2270 pr_plus_format (os, c); |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
2271 else |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
2272 { |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
2273 if (free_format) |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
2274 os << c; |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
2275 else |
24788
6f04028d5d86
use templates to eliminate more nearly duplicate pr-output code
John W. Eaton <jwe@octave.org>
parents:
24787
diff
changeset
|
2276 pr_float (os, fmt, c); |
8625
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2277 } |
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2278 } |
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2279 |
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2280 void |
8891
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2281 octave_print_internal (std::ostream& os, const PermMatrix& m, |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2282 bool pr_as_read_syntax, int extra_indent) |
8891
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2283 { |
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2284 octave_idx_type nr = m.rows (); |
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2285 octave_idx_type nc = m.columns (); |
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2286 |
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2287 if (nr == 0 || nc == 0) |
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2288 print_empty_matrix (os, nr, nc, pr_as_read_syntax); |
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2289 else if (plus_format && ! pr_as_read_syntax) |
24781
e6f380f9b2a4
use template for printing matrices in plus format
John W. Eaton <jwe@octave.org>
parents:
24771
diff
changeset
|
2290 pr_plus_format_matrix (os, m); |
8891
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2291 else |
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2292 { |
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2293 int fw = 2; |
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2294 int column_width = fw + 2; |
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2295 octave_idx_type total_width = nc * column_width; |
21748
176536b15d68
use namespace for command_editor and command_history classes
John W. Eaton <jwe@octave.org>
parents:
21747
diff
changeset
|
2296 octave_idx_type max_width = octave::command_editor::terminal_cols (); |
8891
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2297 |
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2298 if (pr_as_read_syntax) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2299 max_width -= 4; |
8891
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2300 else |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2301 max_width -= extra_indent; |
8891
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2302 |
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2303 if (max_width < 0) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2304 max_width = 0; |
8891
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2305 |
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2306 if (free_format) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2307 { |
24769
e574b957b01b
don't print extra newline after matrices with format free (bug #53168)
John W. Eaton <jwe@octave.org>
parents:
24767
diff
changeset
|
2308 octave_print_free (os, m, pr_as_read_syntax); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2309 return; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2310 } |
8891
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2311 |
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2312 octave_idx_type inc = nc; |
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2313 if (total_width > max_width && Vsplit_long_rows) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2314 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2315 inc = max_width / column_width; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2316 if (inc == 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2317 inc++; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2318 } |
8891
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2319 |
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2320 if (pr_as_read_syntax) |
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2321 { |
18849
aa9ca67f09fb
make all permutation matrices column permutations (bug #42418)
David Spies <dnspies@gmail.com>
parents:
18816
diff
changeset
|
2322 Array<octave_idx_type> pvec = m.col_perm_vec (); |
8891
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2323 |
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2324 os << "eye ("; |
18849
aa9ca67f09fb
make all permutation matrices column permutations (bug #42418)
David Spies <dnspies@gmail.com>
parents:
18816
diff
changeset
|
2325 os << ":, "; |
8891
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2326 |
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2327 octave_idx_type col = 0; |
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2328 while (col < nc) |
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2329 { |
24737
5be92b26ef8f
Fix alignment of numbers in fixed_point_format display (bug #53083).
Rik <rik@octave.org>
parents:
24673
diff
changeset
|
2330 octave_idx_type lim = (col + inc < nc ? col + inc : nc); |
8891
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2331 |
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2332 for (octave_idx_type j = col; j < lim; j++) |
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2333 { |
10142
829e69ec3110
make OCTAVE_QUIT a function
Jaroslav Hajek <highegg@gmail.com>
parents:
10066
diff
changeset
|
2334 octave_quit (); |
8891
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2335 |
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2336 if (j == 0) |
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2337 os << "[ "; |
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2338 else |
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2339 { |
26501
cfe28edab48b
pr-output.cc: Fix static analyzer detected issues (bug #55347).
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
2340 if (j > col) |
8891
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2341 os << ", "; |
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2342 else |
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2343 os << " "; |
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2344 } |
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2345 |
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2346 os << pvec (j); |
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2347 } |
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2348 |
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2349 col += inc; |
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2350 |
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2351 if (col >= nc) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2352 os << " ]"; |
8891
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2353 else |
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2354 os << " ...\n"; |
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2355 } |
23807
336f89b6208b
Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents:
23803
diff
changeset
|
2356 os << ')'; |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2357 } |
8891
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2358 else |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2359 { |
23675
f71c0195b19d
move octave_preserve_stream_state to octave namespace
John W. Eaton <jwe@octave.org>
parents:
23662
diff
changeset
|
2360 octave::preserve_stream_state stream_state (os); |
17818
f1b59ef34eda
attempt to avoid setting persistent state on i/o streams (bug #40396)
John W. Eaton <jwe@octave.org>
parents:
17787
diff
changeset
|
2361 |
13112
969ed305dde5
Remove all blank lines with "format compact"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13102
diff
changeset
|
2362 os << "Permutation Matrix\n"; |
969ed305dde5
Remove all blank lines with "format compact"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13102
diff
changeset
|
2363 if (! Vcompact_format) |
969ed305dde5
Remove all blank lines with "format compact"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13102
diff
changeset
|
2364 os << "\n"; |
8891
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2365 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2366 for (octave_idx_type col = 0; col < nc; col += inc) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2367 { |
24737
5be92b26ef8f
Fix alignment of numbers in fixed_point_format display (bug #53083).
Rik <rik@octave.org>
parents:
24673
diff
changeset
|
2368 octave_idx_type lim = (col + inc < nc ? col + inc : nc); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2369 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2370 pr_col_num_header (os, total_width, max_width, lim, col, |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2371 extra_indent); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2372 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2373 for (octave_idx_type i = 0; i < nr; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2374 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2375 os << std::setw (extra_indent) << ""; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2376 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2377 for (octave_idx_type j = col; j < lim; j++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2378 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2379 octave_quit (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2380 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2381 os << " "; |
8891
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2382 |
30390
a61e1a0f6024
maint: style check C++ files in libinterp/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
30329
diff
changeset
|
2383 os << std::setw (fw) << m(i, j); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2384 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2385 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2386 if (i < nr - 1) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2387 os << "\n"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2388 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2389 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2390 } |
8891
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2391 } |
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2392 } |
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2393 |
d077c590eb88
indicate diag & perm matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
8746
diff
changeset
|
2394 void |
4513 | 2395 octave_print_internal (std::ostream& os, const ComplexNDArray& nda, |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2396 bool pr_as_read_syntax, int extra_indent) |
4513 | 2397 { |
2398 switch (nda.ndims ()) | |
2399 { | |
2400 case 1: | |
2401 case 2: | |
19320
d0c73e23a505
Change inheritance tree so that <T>Matrix inherit from <T>NDArray.
Carnë Draug <carandraug@octave.org>
parents:
19318
diff
changeset
|
2402 octave_print_internal (os, ComplexMatrix (nda), |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2403 pr_as_read_syntax, extra_indent); |
4513 | 2404 break; |
2405 | |
2406 default: | |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2407 print_nd_array <ComplexNDArray, Complex, ComplexMatrix> |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19697
diff
changeset
|
2408 (os, nda, pr_as_read_syntax); |
4513 | 2409 break; |
2410 } | |
2411 } | |
2412 | |
24784
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2413 void |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2414 octave_print_internal (std::ostream& os, const FloatComplexNDArray& nda, |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2415 bool pr_as_read_syntax, int extra_indent) |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2416 { |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2417 switch (nda.ndims ()) |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2418 { |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2419 case 1: |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2420 case 2: |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2421 octave_print_internal (os, FloatComplexMatrix (nda), |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2422 pr_as_read_syntax, extra_indent); |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2423 break; |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2424 |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2425 default: |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2426 print_nd_array <FloatComplexNDArray, FloatComplex, FloatComplexMatrix> |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2427 (os, nda, pr_as_read_syntax); |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2428 break; |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2429 } |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2430 } |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2431 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2432 // FIXME: write single precision versions of the printing functions. |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7721
diff
changeset
|
2433 |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7721
diff
changeset
|
2434 void |
24784
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2435 octave_print_internal (std::ostream& os, const Matrix& m, |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2436 bool pr_as_read_syntax, int extra_indent) |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2437 { |
24788
6f04028d5d86
use templates to eliminate more nearly duplicate pr-output code
John W. Eaton <jwe@octave.org>
parents:
24787
diff
changeset
|
2438 octave_print_matrix_internal (os, m, pr_as_read_syntax, extra_indent); |
24784
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2439 } |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2440 |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2441 void |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7721
diff
changeset
|
2442 octave_print_internal (std::ostream& os, const FloatMatrix& m, |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2443 bool pr_as_read_syntax, int extra_indent) |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11572
diff
changeset
|
2444 { |
24788
6f04028d5d86
use templates to eliminate more nearly duplicate pr-output code
John W. Eaton <jwe@octave.org>
parents:
24787
diff
changeset
|
2445 octave_print_matrix_internal (os, m, pr_as_read_syntax, extra_indent); |
24784
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2446 } |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2447 |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2448 void |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2449 octave_print_internal (std::ostream& os, const DiagMatrix& m, |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2450 bool pr_as_read_syntax, int extra_indent) |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2451 { |
24788
6f04028d5d86
use templates to eliminate more nearly duplicate pr-output code
John W. Eaton <jwe@octave.org>
parents:
24787
diff
changeset
|
2452 octave_print_diag_matrix_internal (os, m, pr_as_read_syntax, extra_indent); |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7721
diff
changeset
|
2453 } |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7721
diff
changeset
|
2454 |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7721
diff
changeset
|
2455 void |
8625
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2456 octave_print_internal (std::ostream& os, const FloatDiagMatrix& m, |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2457 bool pr_as_read_syntax, int extra_indent) |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11572
diff
changeset
|
2458 { |
24788
6f04028d5d86
use templates to eliminate more nearly duplicate pr-output code
John W. Eaton <jwe@octave.org>
parents:
24787
diff
changeset
|
2459 octave_print_diag_matrix_internal (os, m, pr_as_read_syntax, extra_indent); |
8625
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2460 } |
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2461 |
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2462 void |
24784
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2463 octave_print_internal (std::ostream& os, const ComplexMatrix& cm, |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2464 bool pr_as_read_syntax, int extra_indent) |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7721
diff
changeset
|
2465 { |
24788
6f04028d5d86
use templates to eliminate more nearly duplicate pr-output code
John W. Eaton <jwe@octave.org>
parents:
24787
diff
changeset
|
2466 octave_print_matrix_internal (os, cm, pr_as_read_syntax, extra_indent); |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7721
diff
changeset
|
2467 } |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7721
diff
changeset
|
2468 |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7721
diff
changeset
|
2469 void |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7721
diff
changeset
|
2470 octave_print_internal (std::ostream& os, const FloatComplexMatrix& cm, |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2471 bool pr_as_read_syntax, int extra_indent) |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7721
diff
changeset
|
2472 { |
24788
6f04028d5d86
use templates to eliminate more nearly duplicate pr-output code
John W. Eaton <jwe@octave.org>
parents:
24787
diff
changeset
|
2473 octave_print_matrix_internal (os, cm, pr_as_read_syntax, extra_indent); |
24784
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2474 } |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2475 |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2476 void |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2477 octave_print_internal (std::ostream& os, const ComplexDiagMatrix& cm, |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2478 bool pr_as_read_syntax, int extra_indent) |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
2479 { |
24788
6f04028d5d86
use templates to eliminate more nearly duplicate pr-output code
John W. Eaton <jwe@octave.org>
parents:
24787
diff
changeset
|
2480 octave_print_diag_matrix_internal (os, cm, pr_as_read_syntax, extra_indent); |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7721
diff
changeset
|
2481 } |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7721
diff
changeset
|
2482 |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7721
diff
changeset
|
2483 void |
8625
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2484 octave_print_internal (std::ostream& os, const FloatComplexDiagMatrix& cm, |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2485 bool pr_as_read_syntax, int extra_indent) |
8625
4d90d21a9cd9
special printing of diagonal matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8333
diff
changeset
|
2486 { |
24788
6f04028d5d86
use templates to eliminate more nearly duplicate pr-output code
John W. Eaton <jwe@octave.org>
parents:
24787
diff
changeset
|
2487 octave_print_diag_matrix_internal (os, cm, pr_as_read_syntax, extra_indent); |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7721
diff
changeset
|
2488 } |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7721
diff
changeset
|
2489 |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7721
diff
changeset
|
2490 void |
28638
98192ec1621f
replace Range with range<double>
John W. Eaton <jwe@octave.org>
parents:
28637
diff
changeset
|
2491 octave_print_internal (std::ostream& os, const octave::range<double>& r, |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2492 bool pr_as_read_syntax, int extra_indent) |
1 | 2493 { |
626 | 2494 double base = r.base (); |
28636
a3db48e66ef8
use Range::increment instead of Range::inc
John W. Eaton <jwe@octave.org>
parents:
28028
diff
changeset
|
2495 double increment = r.increment (); |
626 | 2496 double limit = r.limit (); |
28637
fb37f50d5ba8
new Range::final_value function
John W. Eaton <jwe@octave.org>
parents:
28636
diff
changeset
|
2497 double final_value = r.final_value (); |
20228
00cf2847355d
Deprecate Array::nelem() and Range::nelem() in favour of ::numel().
Carnë Draug <carandraug@octave.org>
parents:
20172
diff
changeset
|
2498 octave_idx_type num_elem = r.numel (); |
1 | 2499 |
626 | 2500 if (plus_format && ! pr_as_read_syntax) |
24781
e6f380f9b2a4
use template for printing matrices in plus format
John W. Eaton <jwe@octave.org>
parents:
24771
diff
changeset
|
2501 pr_plus_format_matrix (os, r); |
1 | 2502 else |
2503 { | |
24787
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
2504 float_display_format fmt = make_format (r); |
1 | 2505 |
626 | 2506 if (pr_as_read_syntax) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2507 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2508 if (free_format) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2509 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2510 os << base << " : "; |
24770
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
2511 if (increment != 1) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2512 os << increment << " : "; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2513 os << limit; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2514 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2515 else |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2516 { |
24786
0aeef407b04e
don't pass field width as separate argument in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24785
diff
changeset
|
2517 pr_float (os, fmt, base); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2518 os << " : "; |
24770
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
2519 if (increment != 1) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2520 { |
24786
0aeef407b04e
don't pass field width as separate argument in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24785
diff
changeset
|
2521 pr_float (os, fmt, increment); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2522 os << " : "; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2523 } |
24786
0aeef407b04e
don't pass field width as separate argument in pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24785
diff
changeset
|
2524 pr_float (os, fmt, limit); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2525 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2526 } |
626 | 2527 else |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2528 { |
23675
f71c0195b19d
move octave_preserve_stream_state to octave namespace
John W. Eaton <jwe@octave.org>
parents:
23662
diff
changeset
|
2529 octave::preserve_stream_state stream_state (os); |
17818
f1b59ef34eda
attempt to avoid setting persistent state on i/o streams (bug #40396)
John W. Eaton <jwe@octave.org>
parents:
17787
diff
changeset
|
2530 |
24788
6f04028d5d86
use templates to eliminate more nearly duplicate pr-output code
John W. Eaton <jwe@octave.org>
parents:
24787
diff
changeset
|
2531 int column_width = get_column_width (fmt); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2532 octave_idx_type total_width = num_elem * column_width; |
21748
176536b15d68
use namespace for command_editor and command_history classes
John W. Eaton <jwe@octave.org>
parents:
21747
diff
changeset
|
2533 octave_idx_type max_width = octave::command_editor::terminal_cols (); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2534 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2535 if (free_format) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2536 { |
24769
e574b957b01b
don't print extra newline after matrices with format free (bug #53168)
John W. Eaton <jwe@octave.org>
parents:
24767
diff
changeset
|
2537 os << ' '; |
e574b957b01b
don't print extra newline after matrices with format free (bug #53168)
John W. Eaton <jwe@octave.org>
parents:
24767
diff
changeset
|
2538 for (octave_idx_type i = 0; i < num_elem; i++) |
30390
a61e1a0f6024
maint: style check C++ files in libinterp/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
30329
diff
changeset
|
2539 os << ' ' << r.elem (i); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2540 return; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2541 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2542 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2543 octave_idx_type inc = num_elem; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2544 if (total_width > max_width && Vsplit_long_rows) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2545 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2546 inc = max_width / column_width; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2547 if (inc == 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2548 inc++; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2549 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2550 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2551 max_width -= extra_indent; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2552 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2553 if (max_width < 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2554 max_width = 0; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2555 |
24787
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
2556 pr_scale_header (os, fmt.scale_factor ()); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2557 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2558 octave_idx_type col = 0; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2559 while (col < num_elem) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2560 { |
30346
91c6288781ba
maint: Shorten some long lines in libinterp to <= 80 characters (bug #57599)
Rik <rik@octave.org>
parents:
30329
diff
changeset
|
2561 octave_idx_type lim = (col + inc < num_elem ? col + inc |
91c6288781ba
maint: Shorten some long lines in libinterp to <= 80 characters (bug #57599)
Rik <rik@octave.org>
parents:
30329
diff
changeset
|
2562 : num_elem); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2563 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2564 pr_col_num_header (os, total_width, max_width, lim, col, |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2565 extra_indent); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2566 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2567 os << std::setw (extra_indent) << ""; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2568 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2569 for (octave_idx_type i = col; i < lim; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2570 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2571 octave_quit (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2572 |
16169
0303fda3e929
Fix range behavior with -0 endpoints (bug #38423)
Rik <rik@octave.org>
parents:
15467
diff
changeset
|
2573 double val; |
0303fda3e929
Fix range behavior with -0 endpoints (bug #38423)
Rik <rik@octave.org>
parents:
15467
diff
changeset
|
2574 if (i == 0) |
0303fda3e929
Fix range behavior with -0 endpoints (bug #38423)
Rik <rik@octave.org>
parents:
15467
diff
changeset
|
2575 val = base; |
0303fda3e929
Fix range behavior with -0 endpoints (bug #38423)
Rik <rik@octave.org>
parents:
15467
diff
changeset
|
2576 else |
0303fda3e929
Fix range behavior with -0 endpoints (bug #38423)
Rik <rik@octave.org>
parents:
15467
diff
changeset
|
2577 val = base + i * increment; |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2578 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2579 if (i == num_elem - 1) |
28637
fb37f50d5ba8
new Range::final_value function
John W. Eaton <jwe@octave.org>
parents:
28636
diff
changeset
|
2580 val = final_value; |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2581 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2582 os << " "; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2583 |
24787
168d5b43c840
store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents:
24786
diff
changeset
|
2584 pr_float (os, fmt, val); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2585 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2586 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2587 col += inc; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2588 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2589 } |
1 | 2590 } |
2591 } | |
2592 | |
1343 | 2593 void |
3523 | 2594 octave_print_internal (std::ostream& os, const boolMatrix& bm, |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2595 bool pr_as_read_syntax, |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2596 int extra_indent) |
3215 | 2597 { |
21583
d5963a6e29c2
Use integer output formatting for logicals (bug #47607)
Mike Miller <mtmiller@octave.org>
parents:
21568
diff
changeset
|
2598 uint8NDArray tmp (bm); |
3215 | 2599 octave_print_internal (os, tmp, pr_as_read_syntax, extra_indent); |
2600 } | |
2601 | |
2602 void | |
4513 | 2603 octave_print_internal (std::ostream& os, const boolNDArray& nda, |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2604 bool pr_as_read_syntax, |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2605 int extra_indent) |
4513 | 2606 { |
2607 switch (nda.ndims ()) | |
2608 { | |
2609 case 1: | |
2610 case 2: | |
19317
25f535b90e52
Change boolMatrix to subclass boolNDArray rather than be another Array<bool>.
Carnë Draug <carandraug@octave.org>
parents:
19255
diff
changeset
|
2611 octave_print_internal (os, boolMatrix (nda), |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2612 pr_as_read_syntax, extra_indent); |
4513 | 2613 break; |
2614 | |
2615 default: | |
13102
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2616 print_nd_array<boolNDArray, bool, |
801c5a6ad487
Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
12483
diff
changeset
|
2617 boolMatrix> (os, nda, pr_as_read_syntax); |
4513 | 2618 break; |
2619 } | |
2620 } | |
2621 | |
2622 void | |
3523 | 2623 octave_print_internal (std::ostream& os, const charMatrix& chm, |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2624 bool pr_as_read_syntax, |
21066
258c787cd9ce
maint: Use "FIXME:" consistently in code base.
Rik <rik@octave.org>
parents:
20946
diff
changeset
|
2625 int /* FIXME: extra_indent */, |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2626 bool pr_as_string) |
1343 | 2627 { |
1572 | 2628 if (pr_as_string) |
2629 { | |
5275 | 2630 octave_idx_type nstr = chm.rows (); |
1343 | 2631 |
1572 | 2632 if (pr_as_read_syntax && nstr > 1) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2633 os << "[ "; |
1343 | 2634 |
2907 | 2635 if (nstr != 0) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2636 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2637 for (octave_idx_type i = 0; i < nstr; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2638 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2639 octave_quit (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2640 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2641 std::string row = chm.row_as_string (i); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2642 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2643 if (pr_as_read_syntax) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2644 { |
25646
4d565baa475e
move libinterp/utils functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
25569
diff
changeset
|
2645 os << '"' << octave::undo_string_escapes (row) << '"'; |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2646 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2647 if (i < nstr - 1) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2648 os << "; "; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2649 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2650 else |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2651 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2652 os << row; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2653 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2654 if (i < nstr - 1) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2655 os << "\n"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2656 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2657 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2658 } |
1572 | 2659 |
2660 if (pr_as_read_syntax && nstr > 1) | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2661 os << " ]"; |
1343 | 2662 } |
1572 | 2663 else |
2664 { | |
2665 os << "sorry, printing char matrices not implemented yet\n"; | |
2666 } | |
1343 | 2667 } |
2668 | |
4513 | 2669 void |
2670 octave_print_internal (std::ostream& os, const charNDArray& nda, | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2671 bool pr_as_read_syntax, int extra_indent, |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2672 bool pr_as_string) |
4513 | 2673 { |
2674 switch (nda.ndims ()) | |
2675 { | |
2676 case 1: | |
2677 case 2: | |
19318
6c9ea5be96bf
Change charMatrix to subclass charNDArray rather than be another Array<char>.
Carnë Draug <carandraug@octave.org>
parents:
19317
diff
changeset
|
2678 octave_print_internal (os, charMatrix (nda), |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2679 pr_as_read_syntax, extra_indent, pr_as_string); |
4513 | 2680 break; |
2681 | |
2682 default: | |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2683 print_nd_array <charNDArray, char, charMatrix> (os, nda, |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2684 pr_as_read_syntax); |
4513 | 2685 break; |
2686 } | |
2687 } | |
2688 | |
4655 | 2689 void |
4925 | 2690 octave_print_internal (std::ostream& os, const std::string& s, |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2691 bool pr_as_read_syntax, int extra_indent) |
4925 | 2692 { |
9732
b4fdfee405b5
remove ArrayN<T> + fix nonhom. diag-scalar ops
Jaroslav Hajek <highegg@gmail.com>
parents:
9643
diff
changeset
|
2693 Array<std::string> nda (dim_vector (1, 1), s); |
4925 | 2694 |
2695 octave_print_internal (os, nda, pr_as_read_syntax, extra_indent); | |
2696 } | |
2697 | |
2698 void | |
9732
b4fdfee405b5
remove ArrayN<T> + fix nonhom. diag-scalar ops
Jaroslav Hajek <highegg@gmail.com>
parents:
9643
diff
changeset
|
2699 octave_print_internal (std::ostream& os, const Array<std::string>& nda, |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2700 bool pr_as_read_syntax, int /* extra_indent */) |
4655 | 2701 { |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2702 // FIXME: this mostly duplicates the code in the print_nd_array<> |
21751
b571fc85953f
maint: Use two spaces after period to indicate sentence break.
Rik <rik@octave.org>
parents:
21748
diff
changeset
|
2703 // function. Can fix this with std::is_same from C++11. |
4655 | 2704 |
23577
80c42f4cca13
maint: Deprecate is_empty and replace with isempty.
Rik <rik@octave.org>
parents:
23565
diff
changeset
|
2705 if (nda.isempty ()) |
4655 | 2706 print_empty_nd_array (os, nda.dims (), pr_as_read_syntax); |
20232
a9574e3c6e9e
Deprecate Array::length() and Sparse::length() in favour of ::numel().
Carnë Draug <carandraug@octave.org>
parents:
20230
diff
changeset
|
2707 else if (nda.numel () == 1) |
4655 | 2708 { |
2709 os << nda(0); | |
2710 } | |
2711 else | |
2712 { | |
2713 int ndims = nda.ndims (); | |
2714 | |
2715 dim_vector dims = nda.dims (); | |
2716 | |
11570
57632dea2446
attempt better backward compatibility for Array constructors
John W. Eaton <jwe@octave.org>
parents:
11547
diff
changeset
|
2717 Array<octave_idx_type> ra_idx (dim_vector (ndims, 1), 0); |
5275 | 2718 |
2719 octave_idx_type m = 1; | |
4655 | 2720 |
2721 for (int i = 2; i < ndims; i++) | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2722 m *= dims(i); |
4655 | 2723 |
5275 | 2724 octave_idx_type nr = dims(0); |
2725 octave_idx_type nc = dims(1); | |
2726 | |
2727 for (octave_idx_type i = 0; i < m; i++) | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2728 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2729 std::string nm = "ans"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2730 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2731 if (m > 1) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2732 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2733 nm += "(:,:,"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2734 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2735 std::ostringstream buf; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2736 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2737 for (int k = 2; k < ndims; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2738 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2739 buf << ra_idx(k) + 1; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2740 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2741 if (k < ndims - 1) |
23807
336f89b6208b
Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents:
23803
diff
changeset
|
2742 buf << ','; |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2743 else |
23807
336f89b6208b
Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents:
23803
diff
changeset
|
2744 buf << ')'; |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2745 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2746 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2747 nm += buf.str (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2748 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2749 |
29569
29a1f8fd8ee6
move idx_vector classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29494
diff
changeset
|
2750 Array<octave::idx_vector> idx (dim_vector (ndims, 1)); |
29a1f8fd8ee6
move idx_vector classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29494
diff
changeset
|
2751 |
29a1f8fd8ee6
move idx_vector classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29494
diff
changeset
|
2752 idx(0) = octave::idx_vector (':'); |
29a1f8fd8ee6
move idx_vector classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29494
diff
changeset
|
2753 idx(1) = octave::idx_vector (':'); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2754 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2755 for (int k = 2; k < ndims; k++) |
29569
29a1f8fd8ee6
move idx_vector classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29494
diff
changeset
|
2756 idx(k) = octave::idx_vector (ra_idx(k)); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2757 |
11570
57632dea2446
attempt better backward compatibility for Array constructors
John W. Eaton <jwe@octave.org>
parents:
11547
diff
changeset
|
2758 Array<std::string> page (nda.index (idx), dim_vector (nr, nc)); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2759 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2760 // FIXME: need to do some more work to put these |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2761 // in neatly aligned columns... |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2762 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2763 octave_idx_type n_rows = page.rows (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2764 octave_idx_type n_cols = page.cols (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2765 |
13112
969ed305dde5
Remove all blank lines with "format compact"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13102
diff
changeset
|
2766 os << nm << " =\n"; |
969ed305dde5
Remove all blank lines with "format compact"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13102
diff
changeset
|
2767 if (! Vcompact_format) |
969ed305dde5
Remove all blank lines with "format compact"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13102
diff
changeset
|
2768 os << "\n"; |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2769 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2770 for (octave_idx_type ii = 0; ii < n_rows; ii++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2771 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2772 for (octave_idx_type jj = 0; jj < n_cols; jj++) |
30390
a61e1a0f6024
maint: style check C++ files in libinterp/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
30329
diff
changeset
|
2773 os << " " << page(ii, jj); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2774 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2775 os << "\n"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2776 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2777 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2778 if (i < m - 1) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2779 os << "\n"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2780 |
26501
cfe28edab48b
pr-output.cc: Fix static analyzer detected issues (bug #55347).
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
2781 increment_index (ra_idx, dims, 2); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2782 } |
4655 | 2783 } |
2784 } | |
2785 | |
21139
538b57866b90
consistently use "typename" intead of "class" in template declarations
John W. Eaton <jwe@octave.org>
parents:
21100
diff
changeset
|
2786 template <typename T> |
4901 | 2787 class |
2788 octave_print_conv | |
2789 { | |
2790 public: | |
2791 typedef T print_conv_type; | |
2792 }; | |
2793 | |
22197
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
2794 #define PRINT_CONV(T1, T2) \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
2795 template <> \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
2796 class \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
2797 octave_print_conv<T1> \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
2798 { \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
2799 public: \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
2800 typedef T2 print_conv_type; \ |
4901 | 2801 } |
2802 | |
2803 PRINT_CONV (octave_int8, octave_int16); | |
2804 PRINT_CONV (octave_uint8, octave_uint16); | |
2805 | |
2806 #undef PRINT_CONV | |
2807 | |
21139
538b57866b90
consistently use "typename" intead of "class" in template declarations
John W. Eaton <jwe@octave.org>
parents:
21100
diff
changeset
|
2808 template <typename T> |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
2809 static inline void |
4949 | 2810 pr_int (std::ostream& os, const T& d, int fw = 0) |
2811 { | |
29654
d13d090cb03a
use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
2812 std::size_t sz = d.byte_size (); |
23432
e35a5c1233d0
maint: Use convention 'int *x' for naming pointers.
Rik <rik@octave.org>
parents:
23410
diff
changeset
|
2813 const unsigned char *tmpi = d.iptr (); |
4949 | 2814 |
5544 | 2815 // Unless explicitly asked for, always print in big-endian |
2816 // format for hex and bit formats. | |
2817 // | |
2818 // {bit,hex}_format == 1: print big-endian | |
2819 // {bit,hex}_format == 2: print native | |
2820 | |
4949 | 2821 if (hex_format) |
2822 { | |
23675
f71c0195b19d
move octave_preserve_stream_state to octave namespace
John W. Eaton <jwe@octave.org>
parents:
23662
diff
changeset
|
2823 octave::preserve_stream_state stream_state (os); |
17818
f1b59ef34eda
attempt to avoid setting persistent state on i/o streams (bug #40396)
John W. Eaton <jwe@octave.org>
parents:
17787
diff
changeset
|
2824 |
27462
730af4e7034a
Correctly display integer types with format hex (bug #56966).
Rik <rik@octave.org>
parents:
27154
diff
changeset
|
2825 os.fill ('0'); |
27491
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
2826 if (uppercase_format) |
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
2827 os.flags (std::ios::right | std::ios::hex | std::ios::uppercase); |
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
2828 else |
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
2829 os.flags (std::ios::right | std::ios::hex); |
4949 | 2830 |
21739
c4ab2e54f100
use namespace for oct_mach_info class
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
2831 if (hex_format > 1 || octave::mach_info::words_big_endian ()) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2832 { |
29654
d13d090cb03a
use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
2833 for (std::size_t i = 0; i < sz; i++) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2834 os << std::setw (2) << static_cast<int> (tmpi[i]); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2835 } |
4949 | 2836 else |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2837 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2838 for (int i = sz - 1; i >= 0; i--) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2839 os << std::setw (2) << static_cast<int> (tmpi[i]); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2840 } |
4949 | 2841 } |
2842 else if (bit_format) | |
2843 { | |
21739
c4ab2e54f100
use namespace for oct_mach_info class
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
2844 if (octave::mach_info::words_big_endian ()) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2845 { |
29654
d13d090cb03a
use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
2846 for (std::size_t i = 0; i < sz; i++) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2847 PRINT_CHAR_BITS (os, tmpi[i]); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2848 } |
4949 | 2849 else |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2850 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2851 if (bit_format > 1) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2852 { |
29654
d13d090cb03a
use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
2853 for (std::size_t i = 0; i < sz; i++) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2854 PRINT_CHAR_BITS_SWAPPED (os, tmpi[i]); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2855 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2856 else |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2857 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2858 for (int i = sz - 1; i >= 0; i--) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2859 PRINT_CHAR_BITS (os, tmpi[i]); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2860 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2861 } |
4949 | 2862 } |
2863 else | |
2864 { | |
23675
f71c0195b19d
move octave_preserve_stream_state to octave namespace
John W. Eaton <jwe@octave.org>
parents:
23662
diff
changeset
|
2865 octave::preserve_stream_state stream_state (os); |
17818
f1b59ef34eda
attempt to avoid setting persistent state on i/o streams (bug #40396)
John W. Eaton <jwe@octave.org>
parents:
17787
diff
changeset
|
2866 |
4949 | 2867 os << std::setw (fw) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2868 << typename octave_print_conv<T>::print_conv_type (d); |
4949 | 2869 |
2870 if (bank_format) | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2871 os << ".00"; |
4949 | 2872 } |
2873 } | |
2874 | |
7215 | 2875 template void |
2876 pr_int (std::ostream&, const octave_int8&, int); | |
2877 | |
2878 template void | |
2879 pr_int (std::ostream&, const octave_int16&, int); | |
2880 | |
2881 template void | |
2882 pr_int (std::ostream&, const octave_int32&, int); | |
2883 | |
2884 template void | |
2885 pr_int (std::ostream&, const octave_int64&, int); | |
2886 | |
2887 template void | |
2888 pr_int (std::ostream&, const octave_uint8&, int); | |
2889 | |
2890 template void | |
2891 pr_int (std::ostream&, const octave_uint16&, int); | |
2892 | |
2893 template void | |
2894 pr_int (std::ostream&, const octave_uint32&, int); | |
2895 | |
2896 template void | |
2897 pr_int (std::ostream&, const octave_uint64&, int); | |
2898 | |
21139
538b57866b90
consistently use "typename" intead of "class" in template declarations
John W. Eaton <jwe@octave.org>
parents:
21100
diff
changeset
|
2899 template <typename T> |
4901 | 2900 void |
24745
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
2901 octave_print_internal_template (std::ostream& os, |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
2902 const float_display_format& fmt, |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
2903 const octave_int<T>& val, bool) |
7215 | 2904 { |
2905 if (plus_format) | |
24781
e6f380f9b2a4
use template for printing matrices in plus format
John W. Eaton <jwe@octave.org>
parents:
24771
diff
changeset
|
2906 pr_plus_format (os, val); |
7215 | 2907 else |
2908 { | |
2909 if (free_format) | |
23534
b6498c088fca
maint: Don't write '> >' for declaration of templates that use templates.
Rik <rik@octave.org>
parents:
23457
diff
changeset
|
2910 os << typename octave_print_conv<octave_int<T>>::print_conv_type (val); |
7215 | 2911 else |
24745
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
2912 { |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
2913 float_format r_fmt = fmt.real_format (); |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
2914 |
27183
2d9decd77e58
revamp float_format object
John W. Eaton <jwe@octave.org>
parents:
27156
diff
changeset
|
2915 pr_int (os, val, r_fmt.width ()); |
24745
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
2916 } |
7215 | 2917 } |
2918 } | |
2919 | |
22197
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
2920 #define PRINT_INT_SCALAR_INTERNAL(TYPE) \ |
30583
d4e559fcf88f
pr-output.cc: Remove redundant visibility specifications.
Gene Harvey <gharveymn@gmail.com>
parents:
30565
diff
changeset
|
2921 void \ |
24745
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
2922 octave_print_internal (std::ostream& os, \ |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
2923 const float_display_format& fmt, \ |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
2924 const octave_int<TYPE>& val, bool dummy) \ |
22197
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
2925 { \ |
24745
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
2926 octave_print_internal_template (os, fmt, val, dummy); \ |
7215 | 2927 } |
2928 | |
2929 PRINT_INT_SCALAR_INTERNAL (int8_t) | |
2930 PRINT_INT_SCALAR_INTERNAL (uint8_t) | |
2931 PRINT_INT_SCALAR_INTERNAL (int16_t) | |
2932 PRINT_INT_SCALAR_INTERNAL (uint16_t) | |
2933 PRINT_INT_SCALAR_INTERNAL (int32_t) | |
2934 PRINT_INT_SCALAR_INTERNAL (uint32_t) | |
2935 PRINT_INT_SCALAR_INTERNAL (int64_t) | |
2936 PRINT_INT_SCALAR_INTERNAL (uint64_t) | |
2937 | |
21139
538b57866b90
consistently use "typename" intead of "class" in template declarations
John W. Eaton <jwe@octave.org>
parents:
21100
diff
changeset
|
2938 template <typename T> |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
2939 static inline void |
7215 | 2940 octave_print_internal_template (std::ostream& os, const intNDArray<T>& nda, |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2941 bool pr_as_read_syntax, int extra_indent) |
4901 | 2942 { |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2943 // FIXME: this mostly duplicates the code in the print_nd_array<> |
21751
b571fc85953f
maint: Use two spaces after period to indicate sentence break.
Rik <rik@octave.org>
parents:
21748
diff
changeset
|
2944 // function. Can fix this with std::is_same from C++11. |
4901 | 2945 |
23577
80c42f4cca13
maint: Deprecate is_empty and replace with isempty.
Rik <rik@octave.org>
parents:
23565
diff
changeset
|
2946 if (nda.isempty ()) |
4901 | 2947 print_empty_nd_array (os, nda.dims (), pr_as_read_syntax); |
20232
a9574e3c6e9e
Deprecate Array::length() and Sparse::length() in favour of ::numel().
Carnë Draug <carandraug@octave.org>
parents:
20230
diff
changeset
|
2948 else if (nda.numel () == 1) |
24745
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
2949 octave_print_internal_template (os, float_display_format (), nda(0), |
d2467914ce33
enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents:
24737
diff
changeset
|
2950 pr_as_read_syntax); |
4949 | 2951 else if (plus_format && ! pr_as_read_syntax) |
4901 | 2952 { |
2953 int ndims = nda.ndims (); | |
2954 | |
11570
57632dea2446
attempt better backward compatibility for Array constructors
John W. Eaton <jwe@octave.org>
parents:
11547
diff
changeset
|
2955 Array<octave_idx_type> ra_idx (dim_vector (ndims, 1), 0); |
4949 | 2956 |
4901 | 2957 dim_vector dims = nda.dims (); |
2958 | |
5275 | 2959 octave_idx_type m = 1; |
4901 | 2960 |
2961 for (int i = 2; i < ndims; i++) | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2962 m *= dims(i); |
4901 | 2963 |
5275 | 2964 octave_idx_type nr = dims(0); |
2965 octave_idx_type nc = dims(1); | |
2966 | |
2967 for (octave_idx_type i = 0; i < m; i++) | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2968 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2969 if (m > 1) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2970 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2971 std::string nm = "ans(:,:,"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2972 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2973 std::ostringstream buf; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2974 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2975 for (int k = 2; k < ndims; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2976 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2977 buf << ra_idx(k) + 1; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2978 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2979 if (k < ndims - 1) |
23807
336f89b6208b
Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents:
23803
diff
changeset
|
2980 buf << ','; |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2981 else |
23807
336f89b6208b
Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents:
23803
diff
changeset
|
2982 buf << ')'; |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2983 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2984 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2985 nm += buf.str (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2986 |
13112
969ed305dde5
Remove all blank lines with "format compact"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13102
diff
changeset
|
2987 os << nm << " =\n"; |
969ed305dde5
Remove all blank lines with "format compact"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13102
diff
changeset
|
2988 if (! Vcompact_format) |
969ed305dde5
Remove all blank lines with "format compact"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13102
diff
changeset
|
2989 os << "\n"; |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2990 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2991 |
29569
29a1f8fd8ee6
move idx_vector classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29494
diff
changeset
|
2992 Array<octave::idx_vector> idx (dim_vector (ndims, 1)); |
29a1f8fd8ee6
move idx_vector classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29494
diff
changeset
|
2993 |
29a1f8fd8ee6
move idx_vector classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29494
diff
changeset
|
2994 idx(0) = octave::idx_vector (':'); |
29a1f8fd8ee6
move idx_vector classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29494
diff
changeset
|
2995 idx(1) = octave::idx_vector (':'); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2996 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2997 for (int k = 2; k < ndims; k++) |
29569
29a1f8fd8ee6
move idx_vector classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29494
diff
changeset
|
2998 idx(k) = octave::idx_vector (ra_idx(k)); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
2999 |
11570
57632dea2446
attempt better backward compatibility for Array constructors
John W. Eaton <jwe@octave.org>
parents:
11547
diff
changeset
|
3000 Array<T> page (nda.index (idx), dim_vector (nr, nc)); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3001 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3002 for (octave_idx_type ii = 0; ii < nr; ii++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3003 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3004 for (octave_idx_type jj = 0; jj < nc; jj++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3005 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3006 octave_quit (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3007 |
30390
a61e1a0f6024
maint: style check C++ files in libinterp/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
30329
diff
changeset
|
3008 pr_plus_format (os, page(ii, jj)); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3009 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3010 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3011 if ((ii < nr - 1) || (i < m -1)) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3012 os << "\n"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3013 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3014 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3015 if (i < m - 1) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3016 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3017 os << "\n"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3018 increment_index (ra_idx, dims, 2); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3019 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3020 } |
4949 | 3021 } |
3022 else | |
3023 { | |
3024 int ndims = nda.ndims (); | |
3025 | |
3026 dim_vector dims = nda.dims (); | |
3027 | |
11570
57632dea2446
attempt better backward compatibility for Array constructors
John W. Eaton <jwe@octave.org>
parents:
11547
diff
changeset
|
3028 Array<octave_idx_type> ra_idx (dim_vector (ndims, 1), 0); |
5275 | 3029 |
3030 octave_idx_type m = 1; | |
4949 | 3031 |
3032 for (int i = 2; i < ndims; i++) | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3033 m *= dims(i); |
4949 | 3034 |
5275 | 3035 octave_idx_type nr = dims(0); |
3036 octave_idx_type nc = dims(1); | |
4949 | 3037 |
3038 int fw = 0; | |
3039 if (hex_format) | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3040 fw = 2 * nda(0).byte_size (); |
4949 | 3041 else if (bit_format) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3042 fw = nda(0).nbits (); |
4949 | 3043 else |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3044 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3045 bool isneg = false; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3046 int digits = 0; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3047 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3048 for (octave_idx_type i = 0; i < dims.numel (); i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3049 { |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
3050 int new_digits |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
3051 = static_cast<int> |
24770
39186eac5a05
preparing for a brave new future, use templates in some pr-output functions
John W. Eaton <jwe@octave.org>
parents:
24769
diff
changeset
|
3052 (std::floor (log10 (double (abs (nda(i).value ()))) + 1)); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3053 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3054 if (new_digits > digits) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3055 digits = new_digits; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3056 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3057 if (! isneg) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
3058 isneg = (abs (nda(i).value ()) != nda(i).value ()); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3059 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3060 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3061 fw = digits + isneg; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3062 } |
4949 | 3063 |
6788 | 3064 int column_width = fw + (rat_format ? 0 : (bank_format ? 5 : 2)); |
5275 | 3065 octave_idx_type total_width = nc * column_width; |
21748
176536b15d68
use namespace for command_editor and command_history classes
John W. Eaton <jwe@octave.org>
parents:
21747
diff
changeset
|
3066 int max_width = octave::command_editor::terminal_cols () - extra_indent; |
5275 | 3067 octave_idx_type inc = nc; |
4949 | 3068 if (total_width > max_width && Vsplit_long_rows) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3069 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3070 inc = max_width / column_width; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3071 if (inc == 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3072 inc++; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3073 } |
4949 | 3074 |
5275 | 3075 for (octave_idx_type i = 0; i < m; i++) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3076 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3077 if (m > 1) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3078 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3079 std::string nm = "ans(:,:,"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3080 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3081 std::ostringstream buf; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3082 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3083 for (int k = 2; k < ndims; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3084 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3085 buf << ra_idx(k) + 1; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3086 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3087 if (k < ndims - 1) |
23807
336f89b6208b
Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents:
23803
diff
changeset
|
3088 buf << ','; |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3089 else |
23807
336f89b6208b
Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents:
23803
diff
changeset
|
3090 buf << ')'; |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3091 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3092 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3093 nm += buf.str (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3094 |
13112
969ed305dde5
Remove all blank lines with "format compact"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13102
diff
changeset
|
3095 os << nm << " =\n"; |
969ed305dde5
Remove all blank lines with "format compact"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13102
diff
changeset
|
3096 if (! Vcompact_format) |
969ed305dde5
Remove all blank lines with "format compact"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13102
diff
changeset
|
3097 os << "\n"; |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3098 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3099 |
29569
29a1f8fd8ee6
move idx_vector classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29494
diff
changeset
|
3100 Array<octave::idx_vector> idx (dim_vector (ndims, 1)); |
29a1f8fd8ee6
move idx_vector classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29494
diff
changeset
|
3101 |
29a1f8fd8ee6
move idx_vector classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29494
diff
changeset
|
3102 idx(0) = octave::idx_vector (':'); |
29a1f8fd8ee6
move idx_vector classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29494
diff
changeset
|
3103 idx(1) = octave::idx_vector (':'); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3104 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3105 for (int k = 2; k < ndims; k++) |
29569
29a1f8fd8ee6
move idx_vector classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29494
diff
changeset
|
3106 idx(k) = octave::idx_vector (ra_idx(k)); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3107 |
11570
57632dea2446
attempt better backward compatibility for Array constructors
John W. Eaton <jwe@octave.org>
parents:
11547
diff
changeset
|
3108 Array<T> page (nda.index (idx), dim_vector (nr, nc)); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3109 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3110 if (free_format) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3111 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3112 if (pr_as_read_syntax) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3113 os << "[\n"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3114 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3115 for (octave_idx_type ii = 0; ii < nr; ii++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3116 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3117 for (octave_idx_type jj = 0; jj < nc; jj++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3118 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3119 octave_quit (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3120 os << " "; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3121 os << typename octave_print_conv<T>::print_conv_type (page(ii,jj)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3122 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3123 os << "\n"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3124 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3125 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3126 if (pr_as_read_syntax) |
23807
336f89b6208b
Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents:
23803
diff
changeset
|
3127 os << ']'; |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3128 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3129 else |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3130 { |
23675
f71c0195b19d
move octave_preserve_stream_state to octave namespace
John W. Eaton <jwe@octave.org>
parents:
23662
diff
changeset
|
3131 octave::preserve_stream_state stream_state (os); |
17818
f1b59ef34eda
attempt to avoid setting persistent state on i/o streams (bug #40396)
John W. Eaton <jwe@octave.org>
parents:
17787
diff
changeset
|
3132 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3133 octave_idx_type n_rows = page.rows (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3134 octave_idx_type n_cols = page.cols (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3135 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3136 for (octave_idx_type col = 0; col < n_cols; col += inc) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3137 { |
24737
5be92b26ef8f
Fix alignment of numbers in fixed_point_format display (bug #53083).
Rik <rik@octave.org>
parents:
24673
diff
changeset
|
3138 octave_idx_type lim = (col + inc < n_cols ? col + inc |
5be92b26ef8f
Fix alignment of numbers in fixed_point_format display (bug #53083).
Rik <rik@octave.org>
parents:
24673
diff
changeset
|
3139 : n_cols); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3140 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3141 pr_col_num_header (os, total_width, max_width, lim, col, |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3142 extra_indent); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3143 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3144 for (octave_idx_type ii = 0; ii < n_rows; ii++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3145 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3146 os << std::setw (extra_indent) << ""; |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11572
diff
changeset
|
3147 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3148 for (octave_idx_type jj = col; jj < lim; jj++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3149 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3150 octave_quit (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3151 os << " "; |
30390
a61e1a0f6024
maint: style check C++ files in libinterp/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
30329
diff
changeset
|
3152 pr_int (os, page(ii, jj), fw); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3153 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3154 if ((ii < n_rows - 1) || (i < m -1)) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3155 os << "\n"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3156 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3157 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3158 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3159 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3160 if (i < m - 1) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3161 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3162 os << "\n"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3163 increment_index (ra_idx, dims, 2); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3164 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3165 } |
4901 | 3166 } |
3167 } | |
3168 | |
22197
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
3169 #define PRINT_INT_ARRAY_INTERNAL(TYPE) \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
3170 OCTINTERP_API void \ |
7215 | 3171 octave_print_internal (std::ostream& os, const intNDArray<TYPE>& nda, \ |
22197
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
3172 bool pr_as_read_syntax, int extra_indent) \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
3173 { \ |
7215 | 3174 octave_print_internal_template (os, nda, pr_as_read_syntax, extra_indent); \ |
3175 } | |
3176 | |
3177 PRINT_INT_ARRAY_INTERNAL (octave_int8) | |
3178 PRINT_INT_ARRAY_INTERNAL (octave_uint8) | |
3179 PRINT_INT_ARRAY_INTERNAL (octave_int16) | |
3180 PRINT_INT_ARRAY_INTERNAL (octave_uint16) | |
3181 PRINT_INT_ARRAY_INTERNAL (octave_int32) | |
3182 PRINT_INT_ARRAY_INTERNAL (octave_uint32) | |
3183 PRINT_INT_ARRAY_INTERNAL (octave_int64) | |
3184 PRINT_INT_ARRAY_INTERNAL (octave_uint64) | |
4901 | 3185 |
8012
63dbb85452cc
fix extern decls in .cc files
John W. Eaton <jwe@octave.org>
parents:
7896
diff
changeset
|
3186 void |
3933 | 3187 octave_print_internal (std::ostream&, const Cell&, bool, int, bool) |
3928 | 3188 { |
3933 | 3189 panic_impossible (); |
3928 | 3190 } |
3191 | |
17866
ea0ecbe2eaf5
display matrix values in GUI workspace viewer (bug #40499)
John W. Eaton <jwe@octave.org>
parents:
17847
diff
changeset
|
3192 void |
19620
a1d172bfcb2f
eliminate some unused variable and typedef warnings
John W. Eaton <jwe@octave.org>
parents:
19367
diff
changeset
|
3193 octave_print_internal (std::ostream&, const octave_value&, bool) |
17866
ea0ecbe2eaf5
display matrix values in GUI workspace viewer (bug #40499)
John W. Eaton <jwe@octave.org>
parents:
17847
diff
changeset
|
3194 { |
ea0ecbe2eaf5
display matrix values in GUI workspace viewer (bug #40499)
John W. Eaton <jwe@octave.org>
parents:
17847
diff
changeset
|
3195 panic_impossible (); |
ea0ecbe2eaf5
display matrix values in GUI workspace viewer (bug #40499)
John W. Eaton <jwe@octave.org>
parents:
17847
diff
changeset
|
3196 } |
ea0ecbe2eaf5
display matrix values in GUI workspace viewer (bug #40499)
John W. Eaton <jwe@octave.org>
parents:
17847
diff
changeset
|
3197 |
29958
32c3a5805893
move DEFUN and DEFMETHOD functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29655
diff
changeset
|
3198 OCTAVE_NAMESPACE_BEGIN |
32c3a5805893
move DEFUN and DEFMETHOD functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29655
diff
changeset
|
3199 |
20915
a3359fe50966
remove unused nargout variables
John W. Eaton <jwe@octave.org>
parents:
20909
diff
changeset
|
3200 DEFUN (rats, args, , |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3201 doc: /* -*- texinfo -*- |
27154
ecc16b72bfb3
doc: Redo documentation for rats() function.
Rik <rik@octave.org>
parents:
26585
diff
changeset
|
3202 @deftypefn {} {@var{s} =} rats (@var{x}) |
ecc16b72bfb3
doc: Redo documentation for rats() function.
Rik <rik@octave.org>
parents:
26585
diff
changeset
|
3203 @deftypefnx {} {@var{s} =} rats (@var{x}, @var{len}) |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3204 Convert @var{x} into a rational approximation represented as a string. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3205 |
27154
ecc16b72bfb3
doc: Redo documentation for rats() function.
Rik <rik@octave.org>
parents:
26585
diff
changeset
|
3206 A rational approximation to a floating point number is a simple fraction |
ecc16b72bfb3
doc: Redo documentation for rats() function.
Rik <rik@octave.org>
parents:
26585
diff
changeset
|
3207 with numerator @var{N} and denominator @var{D} such that |
ecc16b72bfb3
doc: Redo documentation for rats() function.
Rik <rik@octave.org>
parents:
26585
diff
changeset
|
3208 @code{@var{x} = @var{N}/@var{D}}. |
ecc16b72bfb3
doc: Redo documentation for rats() function.
Rik <rik@octave.org>
parents:
26585
diff
changeset
|
3209 |
ecc16b72bfb3
doc: Redo documentation for rats() function.
Rik <rik@octave.org>
parents:
26585
diff
changeset
|
3210 The optional second argument defines the maximum length of the string |
ecc16b72bfb3
doc: Redo documentation for rats() function.
Rik <rik@octave.org>
parents:
26585
diff
changeset
|
3211 representing the elements of @var{x}. By default, @var{len} is 9. |
ecc16b72bfb3
doc: Redo documentation for rats() function.
Rik <rik@octave.org>
parents:
26585
diff
changeset
|
3212 |
ecc16b72bfb3
doc: Redo documentation for rats() function.
Rik <rik@octave.org>
parents:
26585
diff
changeset
|
3213 If the length of the smallest possible rational approximation exceeds |
ecc16b72bfb3
doc: Redo documentation for rats() function.
Rik <rik@octave.org>
parents:
26585
diff
changeset
|
3214 @var{len}, an asterisk (*) padded with spaces will be returned instead. |
ecc16b72bfb3
doc: Redo documentation for rats() function.
Rik <rik@octave.org>
parents:
26585
diff
changeset
|
3215 |
ecc16b72bfb3
doc: Redo documentation for rats() function.
Rik <rik@octave.org>
parents:
26585
diff
changeset
|
3216 Example conversion from matrix to string, and back again. |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3217 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3218 @example |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3219 @group |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3220 r = rats (hilb (4)); |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3221 x = str2num (r) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3222 @end group |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3223 @end example |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3224 |
27154
ecc16b72bfb3
doc: Redo documentation for rats() function.
Rik <rik@octave.org>
parents:
26585
diff
changeset
|
3225 @seealso{rat, format} |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3226 @end deftypefn */) |
6788 | 3227 { |
3228 int nargin = args.length (); | |
3229 | |
20909
03e4ddd49396
omit unnecessary nargout checks
John W. Eaton <jwe@octave.org>
parents:
20897
diff
changeset
|
3230 if (nargin < 1 || nargin > 2) |
7896 | 3231 print_usage (); |
20801
a542a9bf177e
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
3232 |
20939
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20925
diff
changeset
|
3233 octave_value arg = args(0); |
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20925
diff
changeset
|
3234 |
23586
f6c5db0a02e7
maint: Deprecate is_numeric_type and replace with isnumeric.
Rik <rik@octave.org>
parents:
23577
diff
changeset
|
3235 if (! arg.isnumeric ()) |
20939
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20925
diff
changeset
|
3236 error ("rats: X must be numeric"); |
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20925
diff
changeset
|
3237 |
27477
b470734a025e
Return an empty string from rats when input is empty (bug #57004).
Rik <rik@octave.org>
parents:
27476
diff
changeset
|
3238 if (arg.isempty ()) |
b470734a025e
Return an empty string from rats when input is empty (bug #57004).
Rik <rik@octave.org>
parents:
27476
diff
changeset
|
3239 return ovl (octave_value ("")); |
b470734a025e
Return an empty string from rats when input is empty (bug #57004).
Rik <rik@octave.org>
parents:
27476
diff
changeset
|
3240 |
27476
b8b1bf5b2bbf
Reshape N-D arrays to 2-D arrays within rats() (bug #57003).
Rik <rik@octave.org>
parents:
27475
diff
changeset
|
3241 // Convert to N-D arrays to 2-D arrays for Matlab compatibility |
b8b1bf5b2bbf
Reshape N-D arrays to 2-D arrays within rats() (bug #57003).
Rik <rik@octave.org>
parents:
27475
diff
changeset
|
3242 if (arg.ndims () > 2) |
b8b1bf5b2bbf
Reshape N-D arrays to 2-D arrays within rats() (bug #57003).
Rik <rik@octave.org>
parents:
27475
diff
changeset
|
3243 { |
b8b1bf5b2bbf
Reshape N-D arrays to 2-D arrays within rats() (bug #57003).
Rik <rik@octave.org>
parents:
27475
diff
changeset
|
3244 dim_vector dv (arg.rows (), arg.numel () / arg.rows ()); |
b8b1bf5b2bbf
Reshape N-D arrays to 2-D arrays within rats() (bug #57003).
Rik <rik@octave.org>
parents:
27475
diff
changeset
|
3245 arg = arg.reshape (dv); |
b8b1bf5b2bbf
Reshape N-D arrays to 2-D arrays within rats() (bug #57003).
Rik <rik@octave.org>
parents:
27475
diff
changeset
|
3246 } |
b8b1bf5b2bbf
Reshape N-D arrays to 2-D arrays within rats() (bug #57003).
Rik <rik@octave.org>
parents:
27475
diff
changeset
|
3247 |
29961
7d6709900da7
eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents:
29958
diff
changeset
|
3248 unwind_protect frame; |
20801
a542a9bf177e
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
3249 |
a542a9bf177e
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
3250 frame.protect_var (rat_string_len); |
a542a9bf177e
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
3251 |
a542a9bf177e
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
3252 rat_string_len = 9; |
a542a9bf177e
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
3253 if (nargin == 2) |
a542a9bf177e
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
3254 rat_string_len = args(1).nint_value (); |
a542a9bf177e
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
3255 |
20939
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20925
diff
changeset
|
3256 frame.protect_var (rat_format); |
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20925
diff
changeset
|
3257 |
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20925
diff
changeset
|
3258 rat_format = true; |
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20925
diff
changeset
|
3259 |
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20925
diff
changeset
|
3260 std::ostringstream buf; |
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20925
diff
changeset
|
3261 arg.print (buf); |
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20925
diff
changeset
|
3262 std::string s = buf.str (); |
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20925
diff
changeset
|
3263 |
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20925
diff
changeset
|
3264 std::list<std::string> lst; |
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20925
diff
changeset
|
3265 |
29654
d13d090cb03a
use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
3266 std::size_t n = 0; |
d13d090cb03a
use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
3267 std::size_t s_len = s.length (); |
20939
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20925
diff
changeset
|
3268 |
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20925
diff
changeset
|
3269 while (n < s_len) |
6788 | 3270 { |
29654
d13d090cb03a
use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
3271 std::size_t m = s.find ('\n', n); |
20939
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20925
diff
changeset
|
3272 |
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20925
diff
changeset
|
3273 if (m == std::string::npos) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3274 { |
20939
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20925
diff
changeset
|
3275 lst.push_back (s.substr (n)); |
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20925
diff
changeset
|
3276 break; |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
3277 } |
20939
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20925
diff
changeset
|
3278 else |
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20925
diff
changeset
|
3279 { |
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20925
diff
changeset
|
3280 lst.push_back (s.substr (n, m - n)); |
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20925
diff
changeset
|
3281 n = m + 1; |
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20925
diff
changeset
|
3282 } |
6788 | 3283 } |
20939
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20925
diff
changeset
|
3284 |
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20925
diff
changeset
|
3285 return ovl (string_vector (lst)); |
6788 | 3286 } |
3287 | |
26111
3e44ed9d50b6
Move rational_approx to liboctave (patch #9084).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26009
diff
changeset
|
3288 /* |
28011
b31a118729ed
update bug status for tests
John W. Eaton <jwe@octave.org>
parents:
27923
diff
changeset
|
3289 %!test <*56941> |
26716
daa281e03d9a
Harden BIST tests against changes in format().
Rik <rik@octave.org>
parents:
26585
diff
changeset
|
3290 %! [old_fmt, old_spacing] = format (); |
daa281e03d9a
Harden BIST tests against changes in format().
Rik <rik@octave.org>
parents:
26585
diff
changeset
|
3291 %! unwind_protect |
daa281e03d9a
Harden BIST tests against changes in format().
Rik <rik@octave.org>
parents:
26585
diff
changeset
|
3292 %! format short; |
daa281e03d9a
Harden BIST tests against changes in format().
Rik <rik@octave.org>
parents:
26585
diff
changeset
|
3293 %! assert (rats (-2.0005, 10), "-4001/2000"); |
daa281e03d9a
Harden BIST tests against changes in format().
Rik <rik@octave.org>
parents:
26585
diff
changeset
|
3294 %! assert (strtrim (rats (2.0005, 30)), "4001/2000"); |
daa281e03d9a
Harden BIST tests against changes in format().
Rik <rik@octave.org>
parents:
26585
diff
changeset
|
3295 %! assert (pi - str2num (rats (pi, 30)), 0, 4 * eps); |
daa281e03d9a
Harden BIST tests against changes in format().
Rik <rik@octave.org>
parents:
26585
diff
changeset
|
3296 %! assert (e - str2num (rats (e, 30)), 0, 4 * eps); |
daa281e03d9a
Harden BIST tests against changes in format().
Rik <rik@octave.org>
parents:
26585
diff
changeset
|
3297 %! unwind_protect_cleanup |
daa281e03d9a
Harden BIST tests against changes in format().
Rik <rik@octave.org>
parents:
26585
diff
changeset
|
3298 %! format (old_fmt); |
daa281e03d9a
Harden BIST tests against changes in format().
Rik <rik@octave.org>
parents:
26585
diff
changeset
|
3299 %! format (old_spacing); |
daa281e03d9a
Harden BIST tests against changes in format().
Rik <rik@octave.org>
parents:
26585
diff
changeset
|
3300 %! end_unwind_protect |
27476
b8b1bf5b2bbf
Reshape N-D arrays to 2-D arrays within rats() (bug #57003).
Rik <rik@octave.org>
parents:
27475
diff
changeset
|
3301 |
28011
b31a118729ed
update bug status for tests
John W. Eaton <jwe@octave.org>
parents:
27923
diff
changeset
|
3302 %!test <*57003> |
27476
b8b1bf5b2bbf
Reshape N-D arrays to 2-D arrays within rats() (bug #57003).
Rik <rik@octave.org>
parents:
27475
diff
changeset
|
3303 %! x = ones (2,1,3); |
b8b1bf5b2bbf
Reshape N-D arrays to 2-D arrays within rats() (bug #57003).
Rik <rik@octave.org>
parents:
27475
diff
changeset
|
3304 %! s = rats (x,4); |
b8b1bf5b2bbf
Reshape N-D arrays to 2-D arrays within rats() (bug #57003).
Rik <rik@octave.org>
parents:
27475
diff
changeset
|
3305 %! assert (ndims (s) == 2); |
b8b1bf5b2bbf
Reshape N-D arrays to 2-D arrays within rats() (bug #57003).
Rik <rik@octave.org>
parents:
27475
diff
changeset
|
3306 %! assert (rows (s) == 2); |
27477
b470734a025e
Return an empty string from rats when input is empty (bug #57004).
Rik <rik@octave.org>
parents:
27476
diff
changeset
|
3307 %! assert (columns (s) == 3 * 6); |
b470734a025e
Return an empty string from rats when input is empty (bug #57004).
Rik <rik@octave.org>
parents:
27476
diff
changeset
|
3308 |
28011
b31a118729ed
update bug status for tests
John W. Eaton <jwe@octave.org>
parents:
27923
diff
changeset
|
3309 %!assert <*57004> (rats ([]), '') |
27476
b8b1bf5b2bbf
Reshape N-D arrays to 2-D arrays within rats() (bug #57003).
Rik <rik@octave.org>
parents:
27475
diff
changeset
|
3310 |
29494
76269aa97398
if bug number is supplied, prefer '%!test' over '%!xtest'
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
3311 %!test <57704> |
28028
79b583e31590
Segregate remaining failing rats() tests in to BIST test for bug #57704.
Rik <rik@octave.org>
parents:
28011
diff
changeset
|
3312 %! [old_fmt, old_spacing] = format (); |
79b583e31590
Segregate remaining failing rats() tests in to BIST test for bug #57704.
Rik <rik@octave.org>
parents:
28011
diff
changeset
|
3313 %! unwind_protect |
79b583e31590
Segregate remaining failing rats() tests in to BIST test for bug #57704.
Rik <rik@octave.org>
parents:
28011
diff
changeset
|
3314 %! format short; |
79b583e31590
Segregate remaining failing rats() tests in to BIST test for bug #57704.
Rik <rik@octave.org>
parents:
28011
diff
changeset
|
3315 %! assert (rats (2.0005, 9), "4001/2000"); |
79b583e31590
Segregate remaining failing rats() tests in to BIST test for bug #57704.
Rik <rik@octave.org>
parents:
28011
diff
changeset
|
3316 %! assert (rats (123, 2), " *"); |
79b583e31590
Segregate remaining failing rats() tests in to BIST test for bug #57704.
Rik <rik@octave.org>
parents:
28011
diff
changeset
|
3317 %! unwind_protect_cleanup |
79b583e31590
Segregate remaining failing rats() tests in to BIST test for bug #57704.
Rik <rik@octave.org>
parents:
28011
diff
changeset
|
3318 %! format (old_fmt); |
79b583e31590
Segregate remaining failing rats() tests in to BIST test for bug #57704.
Rik <rik@octave.org>
parents:
28011
diff
changeset
|
3319 %! format (old_spacing); |
79b583e31590
Segregate remaining failing rats() tests in to BIST test for bug #57704.
Rik <rik@octave.org>
parents:
28011
diff
changeset
|
3320 %! end_unwind_protect |
79b583e31590
Segregate remaining failing rats() tests in to BIST test for bug #57704.
Rik <rik@octave.org>
parents:
28011
diff
changeset
|
3321 |
26111
3e44ed9d50b6
Move rational_approx to liboctave (patch #9084).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26009
diff
changeset
|
3322 */ |
3e44ed9d50b6
Move rational_approx to liboctave (patch #9084).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26009
diff
changeset
|
3323 |
3685 | 3324 DEFUN (disp, args, nargout, |
22898
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3325 classes: cell char double function_handle int8 int16 int32 int64 logical single struct uint8 uint16 uint32 uint64 |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3326 doc: /* -*- texinfo -*- |
24764
36ca11f78553
Document second calling form of disp().
Rik <rik@octave.org>
parents:
23219
diff
changeset
|
3327 @deftypefn {} {} disp (@var{x}) |
36ca11f78553
Document second calling form of disp().
Rik <rik@octave.org>
parents:
23219
diff
changeset
|
3328 @deftypefnx {} {@var{str} =} disp (@var{x}) |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3329 Display the value of @var{x}. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3330 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3331 For example: |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3332 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3333 @example |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3334 @group |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3335 disp ("The value of pi is:"), disp (pi) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3336 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3337 @print{} the value of pi is: |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3338 @print{} 3.1416 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3339 @end group |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3340 @end example |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3341 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3342 @noindent |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3343 Note that the output from @code{disp} always ends with a newline. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3344 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3345 If an output value is requested, @code{disp} prints nothing and returns the |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3346 formatted output in a string. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3347 @seealso{fdisp} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3348 @end deftypefn */) |
3685 | 3349 { |
20909
03e4ddd49396
omit unnecessary nargout checks
John W. Eaton <jwe@octave.org>
parents:
20897
diff
changeset
|
3350 if (args.length () != 1) |
20801
a542a9bf177e
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
3351 print_usage (); |
a542a9bf177e
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
3352 |
20939
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20925
diff
changeset
|
3353 octave_value_list retval; |
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20925
diff
changeset
|
3354 |
20801
a542a9bf177e
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
3355 octave_value arg = args(0); |
a542a9bf177e
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
3356 |
a542a9bf177e
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
3357 if (nargout == 0) |
a542a9bf177e
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
3358 arg.print (octave_stdout); |
a542a9bf177e
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
3359 else |
3685 | 3360 { |
20801
a542a9bf177e
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
3361 std::ostringstream buf; |
a542a9bf177e
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
3362 arg.print (buf); |
23450
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23433
diff
changeset
|
3363 retval = (octave_value (buf.str (), arg.is_dq_string () ? '"' : '\'')); |
3685 | 3364 } |
3365 | |
3366 return retval; | |
3367 } | |
3368 | |
23738
8acd390d16c9
don't use singleton for stream_list object
John W. Eaton <jwe@octave.org>
parents:
23675
diff
changeset
|
3369 DEFMETHOD (fdisp, interp, args, , |
8acd390d16c9
don't use singleton for stream_list object
John W. Eaton <jwe@octave.org>
parents:
23675
diff
changeset
|
3370 classes: cell char double function_handle int8 int16 int32 int64 logical single struct uint8 uint16 uint32 uint64 |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3371 doc: /* -*- texinfo -*- |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3372 @deftypefn {} {} fdisp (@var{fid}, @var{x}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3373 Display the value of @var{x} on the stream @var{fid}. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3374 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3375 For example: |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3376 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3377 @example |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3378 @group |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3379 fdisp (stdout, "The value of pi is:"), fdisp (stdout, pi) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3380 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3381 @print{} the value of pi is: |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3382 @print{} 3.1416 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3383 @end group |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3384 @end example |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3385 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3386 @noindent |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3387 Note that the output from @code{fdisp} always ends with a newline. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3388 @seealso{disp} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3389 @end deftypefn */) |
3685 | 3390 { |
20819
f428cbe7576f
eliminate unnecessary uses of nargin
John W. Eaton <jwe@octave.org>
parents:
20801
diff
changeset
|
3391 if (args.length () != 2) |
20801
a542a9bf177e
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
3392 print_usage (); |
a542a9bf177e
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
3393 |
29961
7d6709900da7
eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents:
29958
diff
changeset
|
3394 stream_list& streams = interp.get_stream_list (); |
23738
8acd390d16c9
don't use singleton for stream_list object
John W. Eaton <jwe@octave.org>
parents:
23675
diff
changeset
|
3395 |
8acd390d16c9
don't use singleton for stream_list object
John W. Eaton <jwe@octave.org>
parents:
23675
diff
changeset
|
3396 int fid = streams.get_file_number (args(0)); |
8acd390d16c9
don't use singleton for stream_list object
John W. Eaton <jwe@octave.org>
parents:
23675
diff
changeset
|
3397 |
29961
7d6709900da7
eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents:
29958
diff
changeset
|
3398 stream os = streams.lookup (fid, "fdisp"); |
20801
a542a9bf177e
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
3399 |
a542a9bf177e
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
3400 std::ostream *osp = os.output_stream (); |
a542a9bf177e
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
3401 |
30890
ac478fdded94
Ffdisp: Place validation/error code before normal code.
Rik <rik@octave.org>
parents:
30723
diff
changeset
|
3402 if (! osp) |
ac478fdded94
Ffdisp: Place validation/error code before normal code.
Rik <rik@octave.org>
parents:
30723
diff
changeset
|
3403 error ("fdisp: stream FID not open for writing"); |
ac478fdded94
Ffdisp: Place validation/error code before normal code.
Rik <rik@octave.org>
parents:
30723
diff
changeset
|
3404 |
20801
a542a9bf177e
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
3405 octave_value arg = args(1); |
30890
ac478fdded94
Ffdisp: Place validation/error code before normal code.
Rik <rik@octave.org>
parents:
30723
diff
changeset
|
3406 arg.print (*osp); |
3685 | 3407 |
20941
a4f5da7c5463
maint: Replace "octave_value_list ()" with "ovl ()".
Rik <rik@octave.org>
parents:
20940
diff
changeset
|
3408 return ovl (); |
3685 | 3409 } |
3410 | |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11572
diff
changeset
|
3411 /* |
25108
7561fb4ab972
pr-output.cc: Fix BIST tests so that display format is saved & restored.
Rik <rik@octave.org>
parents:
25107
diff
changeset
|
3412 ## FIXME: This test writes values to a file, but then never checks them. |
9629 | 3413 %!test |
25108
7561fb4ab972
pr-output.cc: Fix BIST tests so that display format is saved & restored.
Rik <rik@octave.org>
parents:
25107
diff
changeset
|
3414 %! [old_fmt, old_spacing] = format (); |
7561fb4ab972
pr-output.cc: Fix BIST tests so that display format is saved & restored.
Rik <rik@octave.org>
parents:
25107
diff
changeset
|
3415 %! unwind_protect |
7561fb4ab972
pr-output.cc: Fix BIST tests so that display format is saved & restored.
Rik <rik@octave.org>
parents:
25107
diff
changeset
|
3416 %! format short |
7561fb4ab972
pr-output.cc: Fix BIST tests so that display format is saved & restored.
Rik <rik@octave.org>
parents:
25107
diff
changeset
|
3417 %! fd = tmpfile (); |
7561fb4ab972
pr-output.cc: Fix BIST tests so that display format is saved & restored.
Rik <rik@octave.org>
parents:
25107
diff
changeset
|
3418 %! for r = [0, Inf -Inf, NaN] |
7561fb4ab972
pr-output.cc: Fix BIST tests so that display format is saved & restored.
Rik <rik@octave.org>
parents:
25107
diff
changeset
|
3419 %! for i = [0, Inf -Inf, NaN] |
7561fb4ab972
pr-output.cc: Fix BIST tests so that display format is saved & restored.
Rik <rik@octave.org>
parents:
25107
diff
changeset
|
3420 %! fdisp (fd, complex (r, i)); |
7561fb4ab972
pr-output.cc: Fix BIST tests so that display format is saved & restored.
Rik <rik@octave.org>
parents:
25107
diff
changeset
|
3421 %! endfor |
9629 | 3422 %! endfor |
25108
7561fb4ab972
pr-output.cc: Fix BIST tests so that display format is saved & restored.
Rik <rik@octave.org>
parents:
25107
diff
changeset
|
3423 %! fclose (fd); |
7561fb4ab972
pr-output.cc: Fix BIST tests so that display format is saved & restored.
Rik <rik@octave.org>
parents:
25107
diff
changeset
|
3424 %! unwind_protect_cleanup |
7561fb4ab972
pr-output.cc: Fix BIST tests so that display format is saved & restored.
Rik <rik@octave.org>
parents:
25107
diff
changeset
|
3425 %! format (old_fmt); |
7561fb4ab972
pr-output.cc: Fix BIST tests so that display format is saved & restored.
Rik <rik@octave.org>
parents:
25107
diff
changeset
|
3426 %! format (old_spacing); |
7561fb4ab972
pr-output.cc: Fix BIST tests so that display format is saved & restored.
Rik <rik@octave.org>
parents:
25107
diff
changeset
|
3427 %! end_unwind_protect |
13129
155d7a5e70f5
src/pr-output.cc: Test "format compact"
Ben Abbott <bpabbott@mac.com>
parents:
13112
diff
changeset
|
3428 |
155d7a5e70f5
src/pr-output.cc: Test "format compact"
Ben Abbott <bpabbott@mac.com>
parents:
13112
diff
changeset
|
3429 %!test |
25108
7561fb4ab972
pr-output.cc: Fix BIST tests so that display format is saved & restored.
Rik <rik@octave.org>
parents:
25107
diff
changeset
|
3430 %! [old_fmt, old_spacing] = format (); |
7561fb4ab972
pr-output.cc: Fix BIST tests so that display format is saved & restored.
Rik <rik@octave.org>
parents:
25107
diff
changeset
|
3431 %! unwind_protect |
7561fb4ab972
pr-output.cc: Fix BIST tests so that display format is saved & restored.
Rik <rik@octave.org>
parents:
25107
diff
changeset
|
3432 %! foo.real = pi * ones (3,20,3); |
7561fb4ab972
pr-output.cc: Fix BIST tests so that display format is saved & restored.
Rik <rik@octave.org>
parents:
25107
diff
changeset
|
3433 %! foo.complex = pi * ones (3,20,3) + 1i; |
7561fb4ab972
pr-output.cc: Fix BIST tests so that display format is saved & restored.
Rik <rik@octave.org>
parents:
25107
diff
changeset
|
3434 %! foo.char = repmat ("- Hello World -", [3, 20]); |
7561fb4ab972
pr-output.cc: Fix BIST tests so that display format is saved & restored.
Rik <rik@octave.org>
parents:
25107
diff
changeset
|
3435 %! foo.cell = {foo.real, foo.complex, foo.char}; |
7561fb4ab972
pr-output.cc: Fix BIST tests so that display format is saved & restored.
Rik <rik@octave.org>
parents:
25107
diff
changeset
|
3436 %! fields = fieldnames (foo); |
7561fb4ab972
pr-output.cc: Fix BIST tests so that display format is saved & restored.
Rik <rik@octave.org>
parents:
25107
diff
changeset
|
3437 %! for f = 1:numel (fields) |
7561fb4ab972
pr-output.cc: Fix BIST tests so that display format is saved & restored.
Rik <rik@octave.org>
parents:
25107
diff
changeset
|
3438 %! format loose; |
7561fb4ab972
pr-output.cc: Fix BIST tests so that display format is saved & restored.
Rik <rik@octave.org>
parents:
25107
diff
changeset
|
3439 %! loose = disp (foo.(fields{f})); |
7561fb4ab972
pr-output.cc: Fix BIST tests so that display format is saved & restored.
Rik <rik@octave.org>
parents:
25107
diff
changeset
|
3440 %! format compact; |
7561fb4ab972
pr-output.cc: Fix BIST tests so that display format is saved & restored.
Rik <rik@octave.org>
parents:
25107
diff
changeset
|
3441 %! compact = disp (foo.(fields{f})); |
7561fb4ab972
pr-output.cc: Fix BIST tests so that display format is saved & restored.
Rik <rik@octave.org>
parents:
25107
diff
changeset
|
3442 %! expected = strrep (loose, "\n\n", "\n"); |
7561fb4ab972
pr-output.cc: Fix BIST tests so that display format is saved & restored.
Rik <rik@octave.org>
parents:
25107
diff
changeset
|
3443 %! assert (expected, compact); |
7561fb4ab972
pr-output.cc: Fix BIST tests so that display format is saved & restored.
Rik <rik@octave.org>
parents:
25107
diff
changeset
|
3444 %! endfor |
7561fb4ab972
pr-output.cc: Fix BIST tests so that display format is saved & restored.
Rik <rik@octave.org>
parents:
25107
diff
changeset
|
3445 %! unwind_protect_cleanup |
7561fb4ab972
pr-output.cc: Fix BIST tests so that display format is saved & restored.
Rik <rik@octave.org>
parents:
25107
diff
changeset
|
3446 %! format (old_fmt); |
7561fb4ab972
pr-output.cc: Fix BIST tests so that display format is saved & restored.
Rik <rik@octave.org>
parents:
25107
diff
changeset
|
3447 %! format (old_spacing); |
7561fb4ab972
pr-output.cc: Fix BIST tests so that display format is saved & restored.
Rik <rik@octave.org>
parents:
25107
diff
changeset
|
3448 %! end_unwind_protect |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11572
diff
changeset
|
3449 */ |
9629 | 3450 |
22898
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3451 DEFUN (display, args, , |
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3452 classes: cell char double function_handle int8 int16 int32 int64 logical single struct uint8 uint16 uint32 uint64 |
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3453 doc: /* -*- texinfo -*- |
23565
3a730821e4a2
doc: Peridoc grammarcheck of documentation.
Rik <rik@octave.org>
parents:
23564
diff
changeset
|
3454 @deftypefn {} {} display (@var{obj}) |
23332
7d4ca8c01bbb
don't call display methods with more than one argument (bug #50640)
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
3455 Display the contents of the object @var{obj} prepended by its name. |
22898
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3456 |
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3457 The Octave interpreter calls the @code{display} function whenever it needs |
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3458 to present a class on-screen. Typically, this would be a statement which |
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3459 does not end in a semicolon to suppress output. For example: |
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3460 |
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3461 @example |
23182
8a37443f1a7b
doc: Document second input argument of display (bug #49794)
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23084
diff
changeset
|
3462 myclass (@dots{}) |
8a37443f1a7b
doc: Document second input argument of display (bug #49794)
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23084
diff
changeset
|
3463 @end example |
8a37443f1a7b
doc: Document second input argument of display (bug #49794)
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23084
diff
changeset
|
3464 |
8a37443f1a7b
doc: Document second input argument of display (bug #49794)
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23084
diff
changeset
|
3465 Or: |
8a37443f1a7b
doc: Document second input argument of display (bug #49794)
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23084
diff
changeset
|
3466 |
8a37443f1a7b
doc: Document second input argument of display (bug #49794)
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23084
diff
changeset
|
3467 @example |
22898
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3468 myobj = myclass (@dots{}) |
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3469 @end example |
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3470 |
23410
705361dfe353
doc: disp rather than display should be overloaded (bug #50640, bug #50729).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23398
diff
changeset
|
3471 In general, user-defined classes should overload the @code{disp} method to |
705361dfe353
doc: disp rather than display should be overloaded (bug #50640, bug #50729).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23398
diff
changeset
|
3472 avoid the default output: |
22898
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3473 |
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3474 @example |
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3475 @group |
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3476 myobj = myclass (@dots{}) |
23410
705361dfe353
doc: disp rather than display should be overloaded (bug #50640, bug #50729).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23398
diff
changeset
|
3477 @result{} myobj = |
705361dfe353
doc: disp rather than display should be overloaded (bug #50640, bug #50729).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23398
diff
changeset
|
3478 |
705361dfe353
doc: disp rather than display should be overloaded (bug #50640, bug #50729).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23398
diff
changeset
|
3479 <class myclass> |
22898
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3480 @end group |
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3481 @end example |
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3482 |
23410
705361dfe353
doc: disp rather than display should be overloaded (bug #50640, bug #50729).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23398
diff
changeset
|
3483 When overloading the @code{display} method instead, one has to take care |
705361dfe353
doc: disp rather than display should be overloaded (bug #50640, bug #50729).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23398
diff
changeset
|
3484 of properly displaying the object's name. This can be done by using the |
705361dfe353
doc: disp rather than display should be overloaded (bug #50640, bug #50729).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23398
diff
changeset
|
3485 @code{inputname} function. |
705361dfe353
doc: disp rather than display should be overloaded (bug #50640, bug #50729).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23398
diff
changeset
|
3486 |
705361dfe353
doc: disp rather than display should be overloaded (bug #50640, bug #50729).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23398
diff
changeset
|
3487 @seealso{disp, class, subsref, subsasgn} |
22898
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3488 @end deftypefn */) |
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3489 { |
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3490 int nargin = args.length (); |
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3491 |
23332
7d4ca8c01bbb
don't call display methods with more than one argument (bug #50640)
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
3492 // Matlab apparently accepts two arguments with the second set to the |
7d4ca8c01bbb
don't call display methods with more than one argument (bug #50640)
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
3493 // inputname of the first. This is undocumented, but we'll use it. |
7d4ca8c01bbb
don't call display methods with more than one argument (bug #50640)
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
3494 // However, we never call display methods for classes with more than |
7d4ca8c01bbb
don't call display methods with more than one argument (bug #50640)
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
3495 // one argument. |
7d4ca8c01bbb
don't call display methods with more than one argument (bug #50640)
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
3496 |
22898
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3497 if (nargin < 1 || nargin > 2) |
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3498 print_usage (); |
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3499 |
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3500 std::string name; |
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3501 |
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3502 if (nargin == 2) |
23332
7d4ca8c01bbb
don't call display methods with more than one argument (bug #50640)
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
3503 name = args(1).xstring_value ("NAME must be a string"); |
22898
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3504 else |
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3505 { |
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3506 string_vector names = args.name_tags (); |
22921
b28801182c08
don't display "ans" for "display (expr)" (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22898
diff
changeset
|
3507 name = names(0); |
22898
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3508 } |
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3509 |
23332
7d4ca8c01bbb
don't call display methods with more than one argument (bug #50640)
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
3510 // We are here because there is no overloaded display method for this |
7d4ca8c01bbb
don't call display methods with more than one argument (bug #50640)
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
3511 // object type. |
22898
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3512 |
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3513 octave_value value = args(0); |
22989
698c1190d790
* pr-output.cc (Fdisplay): Use octave_value::print_name_tag.
John W. Eaton <jwe@octave.org>
parents:
22921
diff
changeset
|
3514 |
698c1190d790
* pr-output.cc (Fdisplay): Use octave_value::print_name_tag.
John W. Eaton <jwe@octave.org>
parents:
22921
diff
changeset
|
3515 // If print_name_tag displays a newline, then also print one after |
698c1190d790
* pr-output.cc (Fdisplay): Use octave_value::print_name_tag.
John W. Eaton <jwe@octave.org>
parents:
22921
diff
changeset
|
3516 // disp is done. |
698c1190d790
* pr-output.cc (Fdisplay): Use octave_value::print_name_tag.
John W. Eaton <jwe@octave.org>
parents:
22921
diff
changeset
|
3517 |
698c1190d790
* pr-output.cc (Fdisplay): Use octave_value::print_name_tag.
John W. Eaton <jwe@octave.org>
parents:
22921
diff
changeset
|
3518 bool print_newlines = false; |
29961
7d6709900da7
eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents:
29958
diff
changeset
|
3519 if (valid_identifier (name)) |
22989
698c1190d790
* pr-output.cc (Fdisplay): Use octave_value::print_name_tag.
John W. Eaton <jwe@octave.org>
parents:
22921
diff
changeset
|
3520 print_newlines = value.print_name_tag (octave_stdout, name); |
22898
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3521 |
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3522 // Use feval so that dispatch will also work for disp. |
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3523 |
29961
7d6709900da7
eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents:
29958
diff
changeset
|
3524 feval ("disp", ovl (value)); |
22898
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3525 |
22989
698c1190d790
* pr-output.cc (Fdisplay): Use octave_value::print_name_tag.
John W. Eaton <jwe@octave.org>
parents:
22921
diff
changeset
|
3526 if (print_newlines) |
22898
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3527 octave_stdout << std::endl; |
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3528 |
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3529 return ovl (); |
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3530 } |
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3531 |
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3532 /* |
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3533 %!test |
26585
d673b506f382
test: use "format short" in tests depending on output format (bug #55539)
Mike Miller <mtmiller@octave.org>
parents:
26501
diff
changeset
|
3534 %! [old_fmt, old_spacing] = format (); |
d673b506f382
test: use "format short" in tests depending on output format (bug #55539)
Mike Miller <mtmiller@octave.org>
parents:
26501
diff
changeset
|
3535 %! unwind_protect |
d673b506f382
test: use "format short" in tests depending on output format (bug #55539)
Mike Miller <mtmiller@octave.org>
parents:
26501
diff
changeset
|
3536 %! format short; |
d673b506f382
test: use "format short" in tests depending on output format (bug #55539)
Mike Miller <mtmiller@octave.org>
parents:
26501
diff
changeset
|
3537 %! str = evalc ("x = 1.1; display (x)"); |
27458
2f4e8dce06da
Don't print leading spaces before scalar values in interpeter (bug #56939)
Rik <rik@octave.org>
parents:
27454
diff
changeset
|
3538 %! assert (str, "x = 1.1000\n"); |
26585
d673b506f382
test: use "format short" in tests depending on output format (bug #55539)
Mike Miller <mtmiller@octave.org>
parents:
26501
diff
changeset
|
3539 %! unwind_protect_cleanup |
d673b506f382
test: use "format short" in tests depending on output format (bug #55539)
Mike Miller <mtmiller@octave.org>
parents:
26501
diff
changeset
|
3540 %! format (old_fmt); |
d673b506f382
test: use "format short" in tests depending on output format (bug #55539)
Mike Miller <mtmiller@octave.org>
parents:
26501
diff
changeset
|
3541 %! format (old_spacing); |
d673b506f382
test: use "format short" in tests depending on output format (bug #55539)
Mike Miller <mtmiller@octave.org>
parents:
26501
diff
changeset
|
3542 %! end_unwind_protect |
22898
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3543 |
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3544 %!test |
26585
d673b506f382
test: use "format short" in tests depending on output format (bug #55539)
Mike Miller <mtmiller@octave.org>
parents:
26501
diff
changeset
|
3545 %! [old_fmt, old_spacing] = format (); |
d673b506f382
test: use "format short" in tests depending on output format (bug #55539)
Mike Miller <mtmiller@octave.org>
parents:
26501
diff
changeset
|
3546 %! unwind_protect |
d673b506f382
test: use "format short" in tests depending on output format (bug #55539)
Mike Miller <mtmiller@octave.org>
parents:
26501
diff
changeset
|
3547 %! format short; |
d673b506f382
test: use "format short" in tests depending on output format (bug #55539)
Mike Miller <mtmiller@octave.org>
parents:
26501
diff
changeset
|
3548 %! str = evalc ("display (1.1)"); |
27458
2f4e8dce06da
Don't print leading spaces before scalar values in interpeter (bug #56939)
Rik <rik@octave.org>
parents:
27454
diff
changeset
|
3549 %! assert (str, "1.1000\n"); |
26585
d673b506f382
test: use "format short" in tests depending on output format (bug #55539)
Mike Miller <mtmiller@octave.org>
parents:
26501
diff
changeset
|
3550 %! unwind_protect_cleanup |
d673b506f382
test: use "format short" in tests depending on output format (bug #55539)
Mike Miller <mtmiller@octave.org>
parents:
26501
diff
changeset
|
3551 %! format (old_fmt); |
d673b506f382
test: use "format short" in tests depending on output format (bug #55539)
Mike Miller <mtmiller@octave.org>
parents:
26501
diff
changeset
|
3552 %! format (old_spacing); |
d673b506f382
test: use "format short" in tests depending on output format (bug #55539)
Mike Miller <mtmiller@octave.org>
parents:
26501
diff
changeset
|
3553 %! end_unwind_protect |
22898
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3554 |
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3555 ## Test input validation |
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3556 %!error display () |
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3557 %!error display (1,2) |
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3558 */ |
9baa19102908
refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents:
22881
diff
changeset
|
3559 |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
3560 static inline void |
1 | 3561 init_format_state (void) |
3562 { | |
2387 | 3563 free_format = false; |
3564 plus_format = false; | |
6788 | 3565 rat_format = false; |
2387 | 3566 bank_format = false; |
3608 | 3567 hex_format = 0; |
1309 | 3568 bit_format = 0; |
2387 | 3569 print_e = false; |
4509 | 3570 print_g = false; |
10741
38bdcbb58df7
Add engineering formats. eg 'fomat short eng' (Feature Request #30163)
David Bateman <dbateman@free.fr>
parents:
10706
diff
changeset
|
3571 print_eng = false; |
1 | 3572 } |
3573 | |
24784
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
3574 static std::string format_string ("short"); |
24782
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
3575 |
0eb41237424e
more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents:
24781
diff
changeset
|
3576 static inline void |
1755 | 3577 set_format_style (int argc, const string_vector& argv) |
1 | 3578 { |
27518
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3579 if (--argc == 0) |
1 | 3580 { |
27518
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3581 // Special case of no options, reset to default values |
1 | 3582 init_format_state (); |
24784
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
3583 set_output_prec (5); |
27518
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3584 format_string = "short"; |
25107
13cd142c3f88
Don't reset compact/loose spacing when changing numerical format (Bug #53427).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
3585 Vcompact_format = false; |
27499
2545345f8bd9
Set format to lowercase when called with no arguments.
Rik <rik@octave.org>
parents:
27491
diff
changeset
|
3586 uppercase_format = false; |
27518
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3587 return; |
1 | 3588 } |
27518
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3589 |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3590 int idx = 1; |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3591 std::string format; |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3592 |
29961
7d6709900da7
eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents:
29958
diff
changeset
|
3593 unwind_protect frame; |
27518
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3594 |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3595 frame.protect_var (bank_format); |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3596 frame.protect_var (bit_format); |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3597 frame.protect_var (free_format); |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3598 frame.protect_var (hex_format); |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3599 frame.protect_var (plus_format); |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3600 frame.protect_var (plus_format_chars); |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3601 frame.protect_var (rat_format); |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3602 frame.protect_var (print_e); |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3603 frame.protect_var (print_eng); |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3604 frame.protect_var (print_g); |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3605 frame.protect_var (format_string); |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3606 frame.protect_var (Vcompact_format); |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3607 frame.protect_var (uppercase_format); |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3608 int prec = output_precision (); |
28851
1ac5a76ae91d
use [=] capture default specification where possible
John W. Eaton <jwe@octave.org>
parents:
28638
diff
changeset
|
3609 frame.add ([=] (void) { set_output_prec (prec); }); |
27518
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3610 |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3611 format = format_string; // Initialize with existing value |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3612 while (argc-- > 0) |
27500
1ef42010c53b
Allow multiple arguments to format().
Rik <rik@octave.org>
parents:
27499
diff
changeset
|
3613 { |
27518
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3614 std::string arg = argv[idx++]; |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3615 std::transform (arg.begin (), arg.end (), arg.begin (), tolower); |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3616 |
30992
4ef25c610433
format: Add 'default' format option (bug #62430)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
30890
diff
changeset
|
3617 if (arg == "default") |
4ef25c610433
format: Add 'default' format option (bug #62430)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
30890
diff
changeset
|
3618 { |
4ef25c610433
format: Add 'default' format option (bug #62430)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
30890
diff
changeset
|
3619 format = "short"; |
4ef25c610433
format: Add 'default' format option (bug #62430)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
30890
diff
changeset
|
3620 init_format_state (); |
4ef25c610433
format: Add 'default' format option (bug #62430)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
30890
diff
changeset
|
3621 set_output_prec (5); |
4ef25c610433
format: Add 'default' format option (bug #62430)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
30890
diff
changeset
|
3622 Vcompact_format = false; |
4ef25c610433
format: Add 'default' format option (bug #62430)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
30890
diff
changeset
|
3623 uppercase_format = false; |
4ef25c610433
format: Add 'default' format option (bug #62430)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
30890
diff
changeset
|
3624 } |
4ef25c610433
format: Add 'default' format option (bug #62430)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
30890
diff
changeset
|
3625 else if (arg == "short") |
27500
1ef42010c53b
Allow multiple arguments to format().
Rik <rik@octave.org>
parents:
27499
diff
changeset
|
3626 { |
27518
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3627 format = arg; |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3628 init_format_state (); |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3629 if (argc > 0) |
27500
1ef42010c53b
Allow multiple arguments to format().
Rik <rik@octave.org>
parents:
27499
diff
changeset
|
3630 { |
27518
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3631 arg = argv[idx]; |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3632 if (arg == "e") |
27500
1ef42010c53b
Allow multiple arguments to format().
Rik <rik@octave.org>
parents:
27499
diff
changeset
|
3633 { |
27518
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3634 print_e = true; |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3635 format.append (arg); |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3636 argc--; idx++; |
27500
1ef42010c53b
Allow multiple arguments to format().
Rik <rik@octave.org>
parents:
27499
diff
changeset
|
3637 } |
27518
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3638 else if (arg == "g") |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3639 { |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3640 init_format_state (); |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3641 print_g = true; |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3642 format.append (arg); |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3643 argc--; idx++; |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3644 } |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3645 else if (arg == "eng") |
27500
1ef42010c53b
Allow multiple arguments to format().
Rik <rik@octave.org>
parents:
27499
diff
changeset
|
3646 { |
27518
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3647 init_format_state (); |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3648 print_eng = true; |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3649 format.append (arg); |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3650 argc--; idx++; |
27500
1ef42010c53b
Allow multiple arguments to format().
Rik <rik@octave.org>
parents:
27499
diff
changeset
|
3651 } |
1ef42010c53b
Allow multiple arguments to format().
Rik <rik@octave.org>
parents:
27499
diff
changeset
|
3652 } |
27518
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3653 set_output_prec (5); |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3654 } |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3655 else if (arg == "shorte") |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3656 { |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3657 format = arg; |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3658 init_format_state (); |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3659 print_e = true; |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3660 set_output_prec (5); |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3661 } |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3662 else if (arg == "shortg") |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3663 { |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3664 format = arg; |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3665 init_format_state (); |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3666 print_g = true; |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3667 set_output_prec (5); |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3668 } |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3669 else if (arg == "shorteng") |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3670 { |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3671 format = arg; |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3672 init_format_state (); |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3673 print_eng = true; |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3674 set_output_prec (5); |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3675 } |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3676 else if (arg == "long") |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3677 { |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3678 format = arg; |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3679 init_format_state (); |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3680 if (argc > 0) |
27500
1ef42010c53b
Allow multiple arguments to format().
Rik <rik@octave.org>
parents:
27499
diff
changeset
|
3681 { |
27518
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3682 arg = argv[idx]; |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3683 |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3684 if (arg == "e") |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3685 { |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3686 print_e = true; |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3687 format.append (arg); |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3688 argc--; idx++; |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3689 } |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3690 else if (arg == "g") |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3691 { |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3692 print_g = true; |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3693 format.append (arg); |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3694 argc--; idx++; |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3695 } |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3696 else if (arg == "eng") |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3697 { |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3698 print_eng = true; |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3699 format.append (arg); |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3700 argc--; idx++; |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3701 } |
27500
1ef42010c53b
Allow multiple arguments to format().
Rik <rik@octave.org>
parents:
27499
diff
changeset
|
3702 } |
27518
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3703 set_output_prec (16); |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3704 } |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3705 else if (arg == "longe") |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3706 { |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3707 format = arg; |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3708 init_format_state (); |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3709 print_e = true; |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3710 set_output_prec (16); |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3711 } |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3712 else if (arg == "longg") |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3713 { |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3714 format = arg; |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3715 init_format_state (); |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3716 print_g = true; |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3717 set_output_prec (16); |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3718 } |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3719 else if (arg == "longeng") |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3720 { |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3721 format = arg; |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3722 init_format_state (); |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3723 print_eng = true; |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3724 set_output_prec (16); |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3725 } |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3726 else if (arg == "hex") |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3727 { |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3728 format = arg; |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3729 init_format_state (); |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3730 hex_format = 1; |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3731 } |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3732 else if (arg == "native-hex") |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3733 { |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3734 format = arg; |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3735 init_format_state (); |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3736 hex_format = 2; |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3737 } |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3738 else if (arg == "bit") |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3739 { |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3740 format = arg; |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3741 init_format_state (); |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3742 bit_format = 1; |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3743 } |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3744 else if (arg == "native-bit") |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3745 { |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3746 format = arg; |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3747 init_format_state (); |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3748 bit_format = 2; |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3749 } |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3750 else if (arg == "+" || arg == "plus") |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3751 { |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3752 format = arg; |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3753 init_format_state (); |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3754 plus_format = true; |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3755 if (argc > 0) |
27500
1ef42010c53b
Allow multiple arguments to format().
Rik <rik@octave.org>
parents:
27499
diff
changeset
|
3756 { |
27518
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3757 arg = argv[idx]; |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3758 |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3759 if (arg.length () == 3) |
27500
1ef42010c53b
Allow multiple arguments to format().
Rik <rik@octave.org>
parents:
27499
diff
changeset
|
3760 { |
27518
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3761 plus_format_chars = arg; |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3762 format.append (arg); |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3763 argc--; idx++; |
27500
1ef42010c53b
Allow multiple arguments to format().
Rik <rik@octave.org>
parents:
27499
diff
changeset
|
3764 } |
1ef42010c53b
Allow multiple arguments to format().
Rik <rik@octave.org>
parents:
27499
diff
changeset
|
3765 else |
1ef42010c53b
Allow multiple arguments to format().
Rik <rik@octave.org>
parents:
27499
diff
changeset
|
3766 plus_format_chars = "+- "; |
1ef42010c53b
Allow multiple arguments to format().
Rik <rik@octave.org>
parents:
27499
diff
changeset
|
3767 } |
1ef42010c53b
Allow multiple arguments to format().
Rik <rik@octave.org>
parents:
27499
diff
changeset
|
3768 else |
27518
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3769 plus_format_chars = "+- "; |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3770 } |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3771 else if (arg == "rat") |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3772 { |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3773 format = arg; |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3774 init_format_state (); |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3775 rat_format = true; |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3776 } |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3777 else if (arg == "bank") |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3778 { |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3779 format = arg; |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3780 init_format_state (); |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3781 bank_format = true; |
27500
1ef42010c53b
Allow multiple arguments to format().
Rik <rik@octave.org>
parents:
27499
diff
changeset
|
3782 } |
27518
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3783 else if (arg == "free") |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3784 { |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3785 format = arg; |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3786 init_format_state (); |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3787 free_format = true; |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3788 } |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3789 else if (arg == "none") |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3790 { |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3791 format = arg; |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3792 init_format_state (); |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3793 free_format = true; |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3794 } |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3795 else if (arg == "compact") |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3796 Vcompact_format = true; |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3797 else if (arg == "loose") |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3798 Vcompact_format = false; |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3799 else if (arg == "lowercase") |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3800 uppercase_format = false; |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3801 else if (arg == "uppercase") |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3802 uppercase_format = true; |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3803 else |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3804 error ("format: unrecognized format state '%s'", arg.c_str ()); |
27500
1ef42010c53b
Allow multiple arguments to format().
Rik <rik@octave.org>
parents:
27499
diff
changeset
|
3805 } |
18735
28eab2d84190
Add callbacks for root properties format and formatspacing (bug #42135).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
18676
diff
changeset
|
3806 |
28eab2d84190
Add callbacks for root properties format and formatspacing (bug #42135).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
18676
diff
changeset
|
3807 format_string = format; |
27518
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3808 |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3809 // If successful, discard unwind state information |
25479159213b
Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents:
27500
diff
changeset
|
3810 frame.discard (); |
1 | 3811 } |
3812 | |
22881
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
3813 DEFUN (format, args, nargout, |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3814 doc: /* -*- texinfo -*- |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3815 @deftypefn {} {} format |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3816 @deftypefnx {} {} format options |
30992
4ef25c610433
format: Add 'default' format option (bug #62430)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
30890
diff
changeset
|
3817 @deftypefnx {} {} format (@var{options}) |
27491
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
3818 @deftypefnx {} {[@var{format}, @var{formatspacing}, @var{uppercase}] =} format |
22881
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
3819 Reset or specify the format of the output produced by @code{disp} and Octave's |
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
3820 normal echoing mechanism. |
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
3821 |
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
3822 This command only affects the display of numbers, but not how they are stored |
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
3823 or computed. To change the internal representation from the default double use |
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
3824 one of the conversion functions such as @code{single}, @code{uint8}, |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3825 @code{int64}, etc. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3826 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3827 By default, Octave displays 5 significant digits in a human readable form |
27491
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
3828 (option @samp{short}, option @samp{lowercase}, and option @samp{loose} format |
30992
4ef25c610433
format: Add 'default' format option (bug #62430)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
30890
diff
changeset
|
3829 for matrices). If @code{format} is invoked without any options, or the option |
4ef25c610433
format: Add 'default' format option (bug #62430)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
30890
diff
changeset
|
3830 @samp{default} is specified, then this default format is restored. |
27491
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
3831 |
27521
37f9eb2c05e0
doc: improve format() docstring and NEWS announcement.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
27518
diff
changeset
|
3832 Valid format options for floating point numbers are listed in the following |
37f9eb2c05e0
doc: improve format() docstring and NEWS announcement.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
27518
diff
changeset
|
3833 table. |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3834 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3835 @table @code |
30992
4ef25c610433
format: Add 'default' format option (bug #62430)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
30890
diff
changeset
|
3836 @item default |
4ef25c610433
format: Add 'default' format option (bug #62430)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
30890
diff
changeset
|
3837 Restore the default format state described above. |
4ef25c610433
format: Add 'default' format option (bug #62430)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
30890
diff
changeset
|
3838 |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3839 @item short |
24784
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
3840 Fixed point format with 5 significant figures (default). |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3841 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3842 @item long |
24784
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
3843 Fixed point format with 16 significant figures. |
22881
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
3844 |
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
3845 As with the @samp{short} format, Octave will switch to an exponential @samp{e} |
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
3846 format if it is unable to format a matrix properly using the current format. |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3847 |
31008
4d74446020ad
doc: Document contracted format arguments (bug #62417).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
3848 @item shorte |
4d74446020ad
doc: Document contracted format arguments (bug #62417).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
3849 @itemx longe |
22881
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
3850 Exponential format. The number to be represented is split between a mantissa |
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
3851 and an exponent (power of 10). The mantissa has 5 significant digits in the |
24784
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
3852 short format. In the long format, double values are displayed with 16 |
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
3853 significant digits and single values are displayed with 8. For example, |
31008
4d74446020ad
doc: Document contracted format arguments (bug #62417).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
3854 with the @samp{shorte} format, @code{pi} is displayed as @code{3.1416e+00}. |
4d74446020ad
doc: Document contracted format arguments (bug #62417).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
3855 Optionally, the trailing @samp{e} can be split into a second argument. |
4d74446020ad
doc: Document contracted format arguments (bug #62417).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
3856 |
4d74446020ad
doc: Document contracted format arguments (bug #62417).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
3857 @item shortg |
4d74446020ad
doc: Document contracted format arguments (bug #62417).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
3858 @itemx longg |
22881
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
3859 Optimally choose between fixed point and exponential format based on the |
31008
4d74446020ad
doc: Document contracted format arguments (bug #62417).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
3860 magnitude of the number. For example, with the @samp{shortg} format, |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3861 @code{pi .^ [2; 4; 8; 16; 32]} is displayed as |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3862 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3863 @example |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3864 @group |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3865 ans = |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3866 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3867 9.8696 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3868 97.409 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3869 9488.5 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3870 9.0032e+07 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3871 8.1058e+15 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3872 @end group |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3873 @end example |
31008
4d74446020ad
doc: Document contracted format arguments (bug #62417).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
3874 Optionally, the trailing @samp{g} can be split into a second argument. |
4d74446020ad
doc: Document contracted format arguments (bug #62417).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
3875 |
4d74446020ad
doc: Document contracted format arguments (bug #62417).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
3876 @item shorteng |
4d74446020ad
doc: Document contracted format arguments (bug #62417).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
3877 @itemx longeng |
4d74446020ad
doc: Document contracted format arguments (bug #62417).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
3878 Identical to @samp{shorte} or @samp{longe} but displays the value using an |
22881
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
3879 engineering format, where the exponent is divisible by 3. For example, with |
31008
4d74446020ad
doc: Document contracted format arguments (bug #62417).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
3880 the @samp{shorteng} format, @code{10 * pi} is displayed as @code{31.416e+00}. |
4d74446020ad
doc: Document contracted format arguments (bug #62417).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
3881 Optionally, the trailing @samp{eng} can be split into a second argument. |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3882 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3883 @item free |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3884 @itemx none |
22881
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
3885 Print output in free format, without trying to line up columns of matrices on |
24771
d277debe9c2f
doc: Update format() documentation for "free", "+", "bank" formats (bug #53169).
Rik <rik@octave.org>
parents:
24770
diff
changeset
|
3886 the decimal point. This is a raw format equivalent to the C++ code |
d277debe9c2f
doc: Update format() documentation for "free", "+", "bank" formats (bug #53169).
Rik <rik@octave.org>
parents:
24770
diff
changeset
|
3887 @code{std::cout << @var{variable}}. In general, the result is a presentation |
d277debe9c2f
doc: Update format() documentation for "free", "+", "bank" formats (bug #53169).
Rik <rik@octave.org>
parents:
24770
diff
changeset
|
3888 with 6 significant digits where unnecessary precision (such as trailing zeros |
d277debe9c2f
doc: Update format() documentation for "free", "+", "bank" formats (bug #53169).
Rik <rik@octave.org>
parents:
24770
diff
changeset
|
3889 for integers) is suppressed. Complex numbers are formatted as numeric pairs |
d277debe9c2f
doc: Update format() documentation for "free", "+", "bank" formats (bug #53169).
Rik <rik@octave.org>
parents:
24770
diff
changeset
|
3890 like this @samp{(0.60419, 0.60709)} instead of like this |
22881
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
3891 @samp{0.60419 + 0.60709i}. |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3892 @end table |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3893 |
22881
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
3894 The following formats affect all numeric output (floating point and integer |
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
3895 types). |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3896 |
24771
d277debe9c2f
doc: Update format() documentation for "free", "+", "bank" formats (bug #53169).
Rik <rik@octave.org>
parents:
24770
diff
changeset
|
3897 @table @asis |
d277debe9c2f
doc: Update format() documentation for "free", "+", "bank" formats (bug #53169).
Rik <rik@octave.org>
parents:
24770
diff
changeset
|
3898 @item @qcode{"+"} |
d277debe9c2f
doc: Update format() documentation for "free", "+", "bank" formats (bug #53169).
Rik <rik@octave.org>
parents:
24770
diff
changeset
|
3899 @itemx @qcode{"+"} @qcode{"@var{chars}"} |
d277debe9c2f
doc: Update format() documentation for "free", "+", "bank" formats (bug #53169).
Rik <rik@octave.org>
parents:
24770
diff
changeset
|
3900 @itemx @code{plus} |
d277debe9c2f
doc: Update format() documentation for "free", "+", "bank" formats (bug #53169).
Rik <rik@octave.org>
parents:
24770
diff
changeset
|
3901 @itemx @code{plus @var{chars}} |
22881
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
3902 Print a @samp{+} symbol for matrix elements greater than zero, a @samp{-} |
24771
d277debe9c2f
doc: Update format() documentation for "free", "+", "bank" formats (bug #53169).
Rik <rik@octave.org>
parents:
24770
diff
changeset
|
3903 symbol for elements less than zero, and a space for zero matrix elements. This |
d277debe9c2f
doc: Update format() documentation for "free", "+", "bank" formats (bug #53169).
Rik <rik@octave.org>
parents:
24770
diff
changeset
|
3904 format can be useful for examining the sparsity structure of a large matrix. |
d277debe9c2f
doc: Update format() documentation for "free", "+", "bank" formats (bug #53169).
Rik <rik@octave.org>
parents:
24770
diff
changeset
|
3905 For very large matrices the function @code{spy} which plots the sparsity |
d277debe9c2f
doc: Update format() documentation for "free", "+", "bank" formats (bug #53169).
Rik <rik@octave.org>
parents:
24770
diff
changeset
|
3906 pattern will be clearer. |
22881
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
3907 |
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
3908 The optional argument @var{chars} specifies a list of 3 characters to use for |
24771
d277debe9c2f
doc: Update format() documentation for "free", "+", "bank" formats (bug #53169).
Rik <rik@octave.org>
parents:
24770
diff
changeset
|
3909 printing values greater than zero, less than zero, and equal to zero. For |
d277debe9c2f
doc: Update format() documentation for "free", "+", "bank" formats (bug #53169).
Rik <rik@octave.org>
parents:
24770
diff
changeset
|
3910 example, with the format @qcode{"+" "+-."}, the matrix |
d277debe9c2f
doc: Update format() documentation for "free", "+", "bank" formats (bug #53169).
Rik <rik@octave.org>
parents:
24770
diff
changeset
|
3911 @code{[1, 0, -1; -1, 0, 1]} is displayed as |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3912 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3913 @example |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3914 @group |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3915 ans = |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3916 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3917 +.- |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3918 -.+ |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3919 @end group |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3920 @end example |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3921 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3922 @item bank |
24771
d277debe9c2f
doc: Update format() documentation for "free", "+", "bank" formats (bug #53169).
Rik <rik@octave.org>
parents:
24770
diff
changeset
|
3923 Print variable in a format appropriate for a currency (fixed format with two |
d277debe9c2f
doc: Update format() documentation for "free", "+", "bank" formats (bug #53169).
Rik <rik@octave.org>
parents:
24770
diff
changeset
|
3924 digits to the right of the decimal point). Only the real part of a variable is |
d277debe9c2f
doc: Update format() documentation for "free", "+", "bank" formats (bug #53169).
Rik <rik@octave.org>
parents:
24770
diff
changeset
|
3925 displayed, as the imaginary part makes no sense for a currency. |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3926 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3927 @item native-hex |
22881
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
3928 Print the hexadecimal representation of numbers as they are stored in memory. |
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
3929 For example, on a workstation which stores 8 byte real values in IEEE format |
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
3930 with the least significant byte first, the value of @code{pi} when printed in |
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
3931 @code{native-hex} format is @code{400921fb54442d18}. |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3932 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3933 @item hex |
22881
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
3934 The same as @code{native-hex}, but always print the most significant byte |
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
3935 first. |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3936 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3937 @item native-bit |
22881
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
3938 Print the bit representation of numbers as stored in memory. For example, the |
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
3939 value of @code{pi} is |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3940 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3941 @example |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3942 @group |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3943 01000000000010010010000111111011 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3944 01010100010001000010110100011000 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3945 @end group |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3946 @end example |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3947 |
22881
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
3948 (shown here in two 32 bit sections for typesetting purposes) when printed in |
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
3949 native-bit format on a workstation which stores 8 byte real values in IEEE |
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
3950 format with the least significant byte first. |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3951 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3952 @item bit |
22881
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
3953 The same as @code{native-bit}, but always print the most significant bits |
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
3954 first. |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3955 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3956 @item rat |
22881
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
3957 Print a rational approximation, i.e., values are approximated as the ratio of |
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
3958 small integers. For example, with the @samp{rat} format, @code{pi} is |
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
3959 displayed as @code{355/113}. |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3960 @end table |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3961 |
27491
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
3962 The following two options affect the display of scientific and hex notations. |
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
3963 |
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
3964 @table @code |
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
3965 @item lowercase (default) |
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
3966 Use a lowercase @samp{e} for the exponent character in scientific notation and |
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
3967 lowercase @samp{a-f} for the hex digits representing 10-15. |
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
3968 |
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
3969 @item uppercase |
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
3970 Use an uppercase @samp{E} for the exponent character in scientific notation and |
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
3971 uppercase @samp{A-F} for the hex digits representing 10-15. |
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
3972 @end table |
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
3973 |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3974 The following two options affect the display of all matrices. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3975 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3976 @table @code |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3977 @item compact |
22881
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
3978 Remove blank lines around column number labels and between matrices producing |
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
3979 more compact output with more data per page. |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3980 |
27491
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
3981 @item loose (default) |
22881
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
3982 Insert blank lines above and below column number labels and between matrices to |
27491
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
3983 produce a more readable output with less data per page. |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3984 @end table |
22881
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
3985 |
27522
3912e3a74e31
doc: Use "rightmost" to describe how format() behaves with multiple arguments.
Rik <rik@octave.org>
parents:
27521
diff
changeset
|
3986 If @code{format} is called with multiple competing options, the rightmost one |
30992
4ef25c610433
format: Add 'default' format option (bug #62430)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
30890
diff
changeset
|
3987 is used, except for @samp{default} which will override all other options. In |
4ef25c610433
format: Add 'default' format option (bug #62430)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
30890
diff
changeset
|
3988 case of an error the format remains unchanged. |
27521
37f9eb2c05e0
doc: improve format() docstring and NEWS announcement.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
27518
diff
changeset
|
3989 |
27491
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
3990 If called with one to three output arguments, and no inputs, return the current |
30992
4ef25c610433
format: Add 'default' format option (bug #62430)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
30890
diff
changeset
|
3991 format, format spacing, and uppercase preference. Specifying both outputs and |
4ef25c610433
format: Add 'default' format option (bug #62430)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
30890
diff
changeset
|
3992 inputs will produce an error. |
22881
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
3993 |
30329
81d26e8481a6
maint: Shorten @seealso lines to less than 80 characters (bug #57599)
Rik <rik@octave.org>
parents:
30216
diff
changeset
|
3994 @seealso{fixed_point_format, output_precision, split_long_rows, |
81d26e8481a6
maint: Shorten @seealso lines to less than 80 characters (bug #57599)
Rik <rik@octave.org>
parents:
30216
diff
changeset
|
3995 print_empty_dimensions, rats} |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
3996 @end deftypefn */) |
529 | 3997 { |
22881
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
3998 octave_value_list retval (std::min (nargout, 2)); |
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
3999 |
27491
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
4000 int nargin = args.length (); |
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
4001 |
22881
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
4002 if (nargout == 0) |
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
4003 { |
27491
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
4004 int argc = nargin + 1; |
22881
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
4005 |
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
4006 string_vector argv = args.make_argv ("format"); |
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
4007 |
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
4008 set_format_style (argc, argv); |
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
4009 } |
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
4010 else |
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
4011 { |
27491
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
4012 if (nargin > 0) |
25107
13cd142c3f88
Don't reset compact/loose spacing when changing numerical format (Bug #53427).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
4013 warning ("format: cannot query and set format at the same time, ignoring set operation"); |
13cd142c3f88
Don't reset compact/loose spacing when changing numerical format (Bug #53427).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
4014 |
27491
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
4015 if (nargout >= 3) |
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
4016 retval(2) = (uppercase_format ? "uppercase" : "lowercase"); |
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
4017 |
22881
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
4018 if (nargout >= 2) |
23450
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23433
diff
changeset
|
4019 retval(1) = (Vcompact_format ? "compact" : "loose"); |
22881
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
4020 |
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
4021 retval(0) = format_string; |
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
4022 } |
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
4023 |
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
4024 return retval; |
529 | 4025 } |
4026 | |
22881
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
4027 /* |
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
4028 %!test |
27491
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
4029 %! [old_fmt, old_spacing, old_uppercase] = format (); |
22881
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
4030 %! unwind_protect |
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
4031 %! ## Test one of the formats |
27491
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
4032 %! format long e; |
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
4033 %! format uppercase; |
22881
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
4034 %! str = disp (pi); |
27491
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
4035 %! assert (str, "3.141592653589793E+00\n"); |
24784
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
4036 %! str = disp (single (pi)); |
27491
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
4037 %! assert (str, "3.1415927E+00\n"); |
22881
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
4038 %! new_fmt = format (); |
27491
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
4039 %! assert (new_fmt, "longe"); |
30992
4ef25c610433
format: Add 'default' format option (bug #62430)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
30890
diff
changeset
|
4040 %! ## Test resetting format (method #1) |
22881
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
4041 %! format compact; |
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
4042 %! [~, new_spacing] = format (); |
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
4043 %! assert (new_spacing, "compact"); |
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
4044 %! format; |
27499
2545345f8bd9
Set format to lowercase when called with no arguments.
Rik <rik@octave.org>
parents:
27491
diff
changeset
|
4045 %! [new_fmt, new_spacing, new_case] = format (); |
22881
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
4046 %! assert (new_fmt, "short"); |
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
4047 %! assert (new_spacing, "loose"); |
27499
2545345f8bd9
Set format to lowercase when called with no arguments.
Rik <rik@octave.org>
parents:
27491
diff
changeset
|
4048 %! assert (new_case, "lowercase"); |
30992
4ef25c610433
format: Add 'default' format option (bug #62430)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
30890
diff
changeset
|
4049 %! ## Test resetting format (method #2) |
4ef25c610433
format: Add 'default' format option (bug #62430)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
30890
diff
changeset
|
4050 %! format compact uppercase long e; |
4ef25c610433
format: Add 'default' format option (bug #62430)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
30890
diff
changeset
|
4051 %! [new_fmt, new_spacing, new_case] = format (); |
4ef25c610433
format: Add 'default' format option (bug #62430)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
30890
diff
changeset
|
4052 %! assert (new_fmt, "longe"); |
4ef25c610433
format: Add 'default' format option (bug #62430)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
30890
diff
changeset
|
4053 %! assert (new_spacing, "compact"); |
4ef25c610433
format: Add 'default' format option (bug #62430)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
30890
diff
changeset
|
4054 %! assert (new_case, "uppercase"); |
4ef25c610433
format: Add 'default' format option (bug #62430)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
30890
diff
changeset
|
4055 %! format ("default"); |
4ef25c610433
format: Add 'default' format option (bug #62430)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
30890
diff
changeset
|
4056 %! [new_fmt, new_spacing, new_case] = format (); |
4ef25c610433
format: Add 'default' format option (bug #62430)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
30890
diff
changeset
|
4057 %! assert (new_fmt, "short"); |
4ef25c610433
format: Add 'default' format option (bug #62430)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
30890
diff
changeset
|
4058 %! assert (new_spacing, "loose"); |
4ef25c610433
format: Add 'default' format option (bug #62430)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
30890
diff
changeset
|
4059 %! assert (new_case, "lowercase"); |
22881
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
4060 %! unwind_protect_cleanup |
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
4061 %! format (old_fmt); |
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
4062 %! format (old_spacing); |
27491
bea2823affa4
Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents:
27483
diff
changeset
|
4063 %! format (old_uppercase); |
22881
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
4064 %! end_unwind_protect |
25107
13cd142c3f88
Don't reset compact/loose spacing when changing numerical format (Bug #53427).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
4065 |
13cd142c3f88
Don't reset compact/loose spacing when changing numerical format (Bug #53427).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
4066 %!test <*53427> |
13cd142c3f88
Don't reset compact/loose spacing when changing numerical format (Bug #53427).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
4067 %! [old_fmt, old_spacing] = format (); |
13cd142c3f88
Don't reset compact/loose spacing when changing numerical format (Bug #53427).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
4068 %! unwind_protect |
13cd142c3f88
Don't reset compact/loose spacing when changing numerical format (Bug #53427).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
4069 %! format; # reset format to short and loose |
13cd142c3f88
Don't reset compact/loose spacing when changing numerical format (Bug #53427).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
4070 %! format compact; # set compact format |
13cd142c3f88
Don't reset compact/loose spacing when changing numerical format (Bug #53427).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
4071 %! format long; # set long format |
13cd142c3f88
Don't reset compact/loose spacing when changing numerical format (Bug #53427).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
4072 %! [fmt, spacing] = format (); |
13cd142c3f88
Don't reset compact/loose spacing when changing numerical format (Bug #53427).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
4073 %! assert (fmt, "long"); |
13cd142c3f88
Don't reset compact/loose spacing when changing numerical format (Bug #53427).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
4074 %! assert (spacing, "compact"); |
13cd142c3f88
Don't reset compact/loose spacing when changing numerical format (Bug #53427).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
4075 %! unwind_protect_cleanup |
13cd142c3f88
Don't reset compact/loose spacing when changing numerical format (Bug #53427).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
4076 %! format (old_fmt); |
13cd142c3f88
Don't reset compact/loose spacing when changing numerical format (Bug #53427).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
4077 %! format (old_spacing); |
13cd142c3f88
Don't reset compact/loose spacing when changing numerical format (Bug #53427).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
4078 %! end_unwind_protect |
13cd142c3f88
Don't reset compact/loose spacing when changing numerical format (Bug #53427).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
4079 |
13cd142c3f88
Don't reset compact/loose spacing when changing numerical format (Bug #53427).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
4080 ## Test input validation |
13cd142c3f88
Don't reset compact/loose spacing when changing numerical format (Bug #53427).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
4081 %!test |
13cd142c3f88
Don't reset compact/loose spacing when changing numerical format (Bug #53427).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
4082 %! fail ("fmt = format ('long')", "warning", "cannot query and set format"); |
13cd142c3f88
Don't reset compact/loose spacing when changing numerical format (Bug #53427).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
4083 |
22881
f84aa17075d4
Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
4084 */ |
18735
28eab2d84190
Add callbacks for root properties format and formatspacing (bug #42135).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
18676
diff
changeset
|
4085 |
5794 | 4086 DEFUN (fixed_point_format, args, nargout, |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4087 doc: /* -*- texinfo -*- |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4088 @deftypefn {} {@var{val} =} fixed_point_format () |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4089 @deftypefnx {} {@var{old_val} =} fixed_point_format (@var{new_val}) |
30588
ed17822e7662
doc: Always have a return value for functions which set internal variables (bug #61681)
Rik <rik@octave.org>
parents:
30583
diff
changeset
|
4090 @deftypefnx {} {@var{old_val} =} fixed_point_format (@var{new_val}, "local") |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4091 Query or set the internal variable that controls whether Octave will |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4092 use a scaled format to print matrix values. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4093 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4094 The scaled format prints a scaling factor on the first line of output chosen |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4095 such that the largest matrix element can be written with a single leading |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4096 digit. For example: |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4097 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4098 @example |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4099 @group |
26205
cf037b842a9f
doc: Clarify example code in fixed_point_format documentation (bug #55208).
Rik <rik@octave.org>
parents:
26111
diff
changeset
|
4100 fixed_point_format (true) |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4101 logspace (1, 7, 5)' |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4102 ans = |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4103 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4104 1.0e+07 * |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4105 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4106 0.00000 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4107 0.00003 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4108 0.00100 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4109 0.03162 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4110 1.00000 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4111 @end group |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4112 @end example |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4113 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4114 @noindent |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4115 Notice that the first value appears to be 0 when it is actually 1. Because |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4116 of the possibility for confusion you should be careful about enabling |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4117 @code{fixed_point_format}. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4118 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4119 When called from inside a function with the @qcode{"local"} option, the |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4120 variable is changed locally for the function and any subroutines it calls. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4121 The original variable value is restored when exiting the function. |
24784
4d945f2e5914
eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents:
24782
diff
changeset
|
4122 @seealso{format, output_precision} |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4123 @end deftypefn */) |
5794 | 4124 { |
30001
428cccc75cc9
move most functions in variables.cc to octave namespace
John W. Eaton <jwe@octave.org>
parents:
29961
diff
changeset
|
4125 return set_internal_variable (Vfixed_point_format, args, nargout, |
428cccc75cc9
move most functions in variables.cc to octave namespace
John W. Eaton <jwe@octave.org>
parents:
29961
diff
changeset
|
4126 "fixed_point_format"); |
5794 | 4127 } |
4128 | |
4129 DEFUN (print_empty_dimensions, args, nargout, | |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4130 doc: /* -*- texinfo -*- |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4131 @deftypefn {} {@var{val} =} print_empty_dimensions () |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4132 @deftypefnx {} {@var{old_val} =} print_empty_dimensions (@var{new_val}) |
30588
ed17822e7662
doc: Always have a return value for functions which set internal variables (bug #61681)
Rik <rik@octave.org>
parents:
30583
diff
changeset
|
4133 @deftypefnx {} {@var{old_val} =} print_empty_dimensions (@var{new_val}, "local") |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4134 Query or set the internal variable that controls whether the dimensions of |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4135 empty matrices are printed along with the empty matrix symbol, @samp{[]}. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4136 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4137 For example, the expression |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4138 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4139 @example |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4140 zeros (3, 0) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4141 @end example |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4142 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4143 @noindent |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4144 will print |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4145 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4146 @example |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4147 ans = [](3x0) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4148 @end example |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4149 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4150 When called from inside a function with the @qcode{"local"} option, the |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4151 variable is changed locally for the function and any subroutines it calls. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4152 The original variable value is restored when exiting the function. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4153 @seealso{format} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4154 @end deftypefn */) |
5794 | 4155 { |
30001
428cccc75cc9
move most functions in variables.cc to octave namespace
John W. Eaton <jwe@octave.org>
parents:
29961
diff
changeset
|
4156 return set_internal_variable (Vprint_empty_dimensions, args, nargout, |
428cccc75cc9
move most functions in variables.cc to octave namespace
John W. Eaton <jwe@octave.org>
parents:
29961
diff
changeset
|
4157 "print_empty_dimensions"); |
5794 | 4158 } |
4159 | |
4160 DEFUN (split_long_rows, args, nargout, | |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4161 doc: /* -*- texinfo -*- |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4162 @deftypefn {} {@var{val} =} split_long_rows () |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4163 @deftypefnx {} {@var{old_val} =} split_long_rows (@var{new_val}) |
30588
ed17822e7662
doc: Always have a return value for functions which set internal variables (bug #61681)
Rik <rik@octave.org>
parents:
30583
diff
changeset
|
4164 @deftypefnx {} {@var{old_val} =} split_long_rows (@var{new_val}, "local") |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4165 Query or set the internal variable that controls whether rows of a matrix |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4166 may be split when displayed to a terminal window. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4167 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4168 If the rows are split, Octave will display the matrix in a series of smaller |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4169 pieces, each of which can fit within the limits of your terminal width and |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4170 each set of rows is labeled so that you can easily see which columns are |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4171 currently being displayed. For example: |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4172 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4173 @example |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4174 @group |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4175 octave:13> rand (2,10) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4176 ans = |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4177 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4178 Columns 1 through 6: |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4179 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4180 0.75883 0.93290 0.40064 0.43818 0.94958 0.16467 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4181 0.75697 0.51942 0.40031 0.61784 0.92309 0.40201 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4182 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4183 Columns 7 through 10: |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4184 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4185 0.90174 0.11854 0.72313 0.73326 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4186 0.44672 0.94303 0.56564 0.82150 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4187 @end group |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4188 @end example |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4189 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4190 When called from inside a function with the @qcode{"local"} option, the |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4191 variable is changed locally for the function and any subroutines it calls. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4192 The original variable value is restored when exiting the function. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4193 @seealso{format} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
4194 @end deftypefn */) |
5794 | 4195 { |
30001
428cccc75cc9
move most functions in variables.cc to octave namespace
John W. Eaton <jwe@octave.org>
parents:
29961
diff
changeset
|
4196 return set_internal_variable (Vsplit_long_rows, args, nargout, |
428cccc75cc9
move most functions in variables.cc to octave namespace
John W. Eaton <jwe@octave.org>
parents:
29961
diff
changeset
|
4197 "split_long_rows"); |
5794 | 4198 } |
29958
32c3a5805893
move DEFUN and DEFMETHOD functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29655
diff
changeset
|
4199 |
32c3a5805893
move DEFUN and DEFMETHOD functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29655
diff
changeset
|
4200 OCTAVE_NAMESPACE_END |