annotate libinterp/corefcn/pr-output.cc @ 30564:796f54d4ddbf stable

update Octave Project Developers copyright for the new year In files that have the "Octave Project Developers" copyright notice, update for 2021. In all .txi and .texi files except gpl.txi and gpl.texi in the doc/liboctave and doc/interpreter directories, change the copyright to "Octave Project Developers", the same as used for other source files. Update copyright notices for 2022 (not done since 2019). For gpl.txi and gpl.texi, change the copyright notice to be "Free Software Foundation, Inc." and leave the date at 2007 only because this file only contains the text of the GPL, not anything created by the Octave Project Developers. Add Paul Thomas to contributors.in.
author John W. Eaton <jwe@octave.org>
date Tue, 28 Dec 2021 18:22:40 -0500
parents a61e1a0f6024
children 83f9f8bda883 4d74446020ad
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
28 #endif
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
29
23662
bd77ab816e43 eliminate obsolete file lo-math.h
John W. Eaton <jwe@octave.org>
parents: 23619
diff changeset
30 #include <cmath>
1343
94bedeb289e5 [project @ 1995-09-04 00:29:21 by jwe]
jwe
parents: 1328
diff changeset
31
3503
d14c483b3c12 [project @ 2000-02-01 04:06:07 by jwe]
jwe
parents: 3373
diff changeset
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
7ba9ad1fec11 [project @ 2006-04-17 05:05:15 by jwe]
jwe
parents: 5759
diff changeset
35 #include <sstream>
1728
42b4f904f1af [project @ 1996-01-09 11:36:01 by jwe]
jwe
parents: 1716
diff changeset
36 #include <string>
42b4f904f1af [project @ 1996-01-09 11:36:01 by jwe]
jwe
parents: 1716
diff changeset
37
4655
c8829691db47 [project @ 2003-11-24 21:24:37 by jwe]
jwe
parents: 4632
diff changeset
38 #include "Array-util.h"
453
393e95f46b51 [project @ 1994-06-06 00:05:20 by jwe]
jwe
parents: 296
diff changeset
39 #include "CMatrix.h"
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
40 #include "Range.h"
2926
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents: 2915
diff changeset
41 #include "cmd-edit.h"
1352
19c10b8657d5 [project @ 1995-09-05 08:11:57 by jwe]
jwe
parents: 1346
diff changeset
42 #include "dMatrix.h"
2891
1a30f46e1870 [project @ 1997-04-28 01:49:00 by jwe]
jwe
parents: 2847
diff changeset
43 #include "lo-mappers.h"
2317
8c09c04f7747 [project @ 1996-07-14 22:30:15 by jwe]
jwe
parents: 2305
diff changeset
44 #include "mach-info.h"
1651
e846e361a265 [project @ 1995-12-20 06:59:12 by jwe]
jwe
parents: 1588
diff changeset
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
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4051
diff changeset
47 #include "quit.h"
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
48
3933
f9ea3dcf58ee [project @ 2002-05-15 03:21:00 by jwe]
jwe
parents: 3928
diff changeset
49 #include "Cell.h"
1352
19c10b8657d5 [project @ 1995-09-05 08:11:57 by jwe]
jwe
parents: 1346
diff changeset
50 #include "defun.h"
19c10b8657d5 [project @ 1995-09-05 08:11:57 by jwe]
jwe
parents: 1346
diff changeset
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
9d8306640373 [project @ 2000-06-28 19:25:02 by jwe]
jwe
parents: 3683
diff changeset
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
19c10b8657d5 [project @ 1995-09-05 08:11:57 by jwe]
jwe
parents: 1346
diff changeset
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
19c10b8657d5 [project @ 1995-09-05 08:11:57 by jwe]
jwe
parents: 1346
diff changeset
59 #include "pr-output.h"
1282
dac3c9c58b1a [project @ 1995-04-27 19:27:40 by jwe]
jwe
parents: 1192
diff changeset
60 #include "sysdep.h"
6803
fe19c6cb5bc6 [project @ 2007-07-26 18:04:05 by jwe]
jwe
parents: 6788
diff changeset
61 #include "unwind-prot.h"
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
62 #include "utils.h"
1352
19c10b8657d5 [project @ 1995-09-05 08:11:57 by jwe]
jwe
parents: 1346
diff changeset
63 #include "variables.h"
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5775
diff changeset
67 static bool Vfixed_point_format = false;
3105
f936c7f5074f [project @ 1997-11-19 04:36:17 by jwe]
jwe
parents: 3018
diff changeset
68
5360
33adb987c033 [project @ 2005-05-23 16:19:56 by jwe]
jwe
parents: 5331
diff changeset
69 // TRUE means that the dimensions of empty objects should be printed
2165
83d91aa3759b [project @ 1996-05-13 13:28:10 by jwe]
jwe
parents: 2086
diff changeset
70 // like this: x = [](2x0).
5794
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5775
diff changeset
71 bool Vprint_empty_dimensions = true;
2165
83d91aa3759b [project @ 1996-05-13 13:28:10 by jwe]
jwe
parents: 2086
diff changeset
72
83d91aa3759b [project @ 1996-05-13 13:28:10 by jwe]
jwe
parents: 2086
diff changeset
73 // TRUE means that the rows of big matrices should be split into
83d91aa3759b [project @ 1996-05-13 13:28:10 by jwe]
jwe
parents: 2086
diff changeset
74 // smaller slices that fit on the screen.
5794
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5775
diff changeset
75 static bool Vsplit_long_rows = true;
2165
83d91aa3759b [project @ 1996-05-13 13:28:10 by jwe]
jwe
parents: 2086
diff changeset
76
3018
5708b8bb4f06 [project @ 1997-06-03 21:48:05 by jwe]
jwe
parents: 3014
diff changeset
77 // TRUE means don't do any fancy formatting.
2387
be4616e36133 [project @ 1996-10-12 18:45:13 by jwe]
jwe
parents: 2317
diff changeset
78 static bool free_format = false;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
79
3018
5708b8bb4f06 [project @ 1997-06-03 21:48:05 by jwe]
jwe
parents: 3014
diff changeset
80 // TRUE means print plus sign for nonzero, blank for zero.
2387
be4616e36133 [project @ 1996-10-12 18:45:13 by jwe]
jwe
parents: 2317
diff changeset
81 static bool plus_format = false;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
82
4632
0e28461651f2 [project @ 2003-11-18 19:07:13 by jwe]
jwe
parents: 4574
diff changeset
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
0e28461651f2 [project @ 2003-11-18 19:07:13 by jwe]
jwe
parents: 4574
diff changeset
85
6788
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
86 // TRUE means always print in a rational approximation
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
87 static bool rat_format = false;
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
88
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
89 // Used to force the length of the rational approximation string for Frats
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
90 static int rat_string_len = -1;
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
91
3018
5708b8bb4f06 [project @ 1997-06-03 21:48:05 by jwe]
jwe
parents: 3014
diff changeset
92 // TRUE means always print like dollars and cents.
2387
be4616e36133 [project @ 1996-10-12 18:45:13 by jwe]
jwe
parents: 2317
diff changeset
93 static bool bank_format = false;
1282
dac3c9c58b1a [project @ 1995-04-27 19:27:40 by jwe]
jwe
parents: 1192
diff changeset
94
3018
5708b8bb4f06 [project @ 1997-06-03 21:48:05 by jwe]
jwe
parents: 3014
diff changeset
95 // TRUE means print data in hexadecimal format.
3608
ccfafa1d8510 [project @ 2000-03-15 08:47:35 by jwe]
jwe
parents: 3568
diff changeset
96 static int hex_format = 0;
1282
dac3c9c58b1a [project @ 1995-04-27 19:27:40 by jwe]
jwe
parents: 1192
diff changeset
97
3018
5708b8bb4f06 [project @ 1997-06-03 21:48:05 by jwe]
jwe
parents: 3014
diff changeset
98 // TRUE means print data in binary-bit-pattern format.
1309
c0187e1c02f9 [project @ 1995-06-25 04:00:46 by jwe]
jwe
parents: 1282
diff changeset
99 static int bit_format = 0;
c0187e1c02f9 [project @ 1995-06-25 04:00:46 by jwe]
jwe
parents: 1282
diff changeset
100
3018
5708b8bb4f06 [project @ 1997-06-03 21:48:05 by jwe]
jwe
parents: 3014
diff changeset
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
d94bcafabac2 [project @ 1995-03-30 04:57:32 by jwe]
jwe
parents: 1086
diff changeset
103
3018
5708b8bb4f06 [project @ 1997-06-03 21:48:05 by jwe]
jwe
parents: 3014
diff changeset
104 // TRUE means use an e format.
2387
be4616e36133 [project @ 1996-10-12 18:45:13 by jwe]
jwe
parents: 2317
diff changeset
105 static bool print_e = false;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
106
4509
9ec494b3eb5f [project @ 2003-09-11 19:08:25 by jwe]
jwe
parents: 4431
diff changeset
107 // TRUE means use a g format.
9ec494b3eb5f [project @ 2003-09-11 19:08:25 by jwe]
jwe
parents: 4431
diff changeset
108 static bool print_g = false;
9ec494b3eb5f [project @ 2003-09-11 19:08:25 by jwe]
jwe
parents: 4431
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
6eff66fb8a02 style fixes for comments
John W. Eaton <jwe@octave.org>
parents: 20941
diff changeset
123
6eff66fb8a02 style fixes for comments
John W. Eaton <jwe@octave.org>
parents: 20941
diff changeset
124 // The expression above is equivalent to x - (x % 3).
6eff66fb8a02 style fixes for comments
John W. Eaton <jwe@octave.org>
parents: 20941
diff changeset
125
6eff66fb8a02 style fixes for comments
John W. Eaton <jwe@octave.org>
parents: 20941
diff changeset
126 // According to the ISO specification for C++ the modulo operator is
6eff66fb8a02 style fixes for comments
John W. Eaton <jwe@octave.org>
parents: 20941
diff changeset
127 // compiler dependent if any of the arguments are negative. Since
6eff66fb8a02 style fixes for comments
John W. Eaton <jwe@octave.org>
parents: 20941
diff changeset
128 // this function will need to work on negative arguments, and we want
6eff66fb8a02 style fixes for comments
John W. Eaton <jwe@octave.org>
parents: 20941
diff changeset
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
6eff66fb8a02 style fixes for comments
John W. Eaton <jwe@octave.org>
parents: 20941
diff changeset
131
6eff66fb8a02 style fixes for comments
John W. Eaton <jwe@octave.org>
parents: 20941
diff changeset
132 // ISO/IEC 14882:2003 : Programming languages -- C++. 5.6.4: ISO,
6eff66fb8a02 style fixes for comments
John W. Eaton <jwe@octave.org>
parents: 20941
diff changeset
133 // IEC. 2003 . "the binary % operator yields the remainder from the
6eff66fb8a02 style fixes for comments
John W. Eaton <jwe@octave.org>
parents: 20941
diff changeset
134 // division of the first expression by the second. .... If both
6eff66fb8a02 style fixes for comments
John W. Eaton <jwe@octave.org>
parents: 20941
diff changeset
135 // operands are nonnegative then the remainder is nonnegative; if not,
6eff66fb8a02 style fixes for comments
John W. Eaton <jwe@octave.org>
parents: 20941
diff changeset
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
6eff66fb8a02 style fixes for comments
John W. Eaton <jwe@octave.org>
parents: 20941
diff changeset
150 // Avoid using modulo function with negative arguments for
6eff66fb8a02 style fixes for comments
John W. Eaton <jwe@octave.org>
parents: 20941
diff changeset
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
ccfafa1d8510 [project @ 2000-03-15 08:47:35 by jwe]
jwe
parents: 3568
diff changeset
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
ccfafa1d8510 [project @ 2000-03-15 08:47:35 by jwe]
jwe
parents: 3568
diff changeset
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
ccfafa1d8510 [project @ 2000-03-15 08:47:35 by jwe]
jwe
parents: 3568
diff changeset
243
ccfafa1d8510 [project @ 2000-03-15 08:47:35 by jwe]
jwe
parents: 3568
diff changeset
244 return os;
ccfafa1d8510 [project @ 2000-03-15 08:47:35 by jwe]
jwe
parents: 3568
diff changeset
245 }
ccfafa1d8510 [project @ 2000-03-15 08:47:35 by jwe]
jwe
parents: 3568
diff changeset
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
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
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
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
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
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
263
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
264 if (fw >= 0)
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
265 os << std::setw (fw);
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
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
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
294
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
295 return os;
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
296 }
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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.
0eb41237424e more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents: 24781
diff changeset
303 assert (m.ndims () == 2);
0eb41237424e more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents: 24781
diff changeset
304
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5086
diff changeset
305 octave_idx_type nr = m.rows ();
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5086
diff changeset
306 octave_idx_type nc = m.columns ();
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
309
5748
8510034588a7 [project @ 2006-04-07 07:51:59 by jwe]
jwe
parents: 5642
diff changeset
310 bool all_inf_or_nan = true;
8510034588a7 [project @ 2006-04-07 07:51:59 by jwe]
jwe
parents: 5642
diff changeset
311
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5086
diff changeset
312 for (octave_idx_type j = 0; j < nc; j++)
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5086
diff changeset
313 for (octave_idx_type i = 0; i < nr; i++)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
323 }
3608
ccfafa1d8510 [project @ 2000-03-15 08:47:35 by jwe]
jwe
parents: 3568
diff changeset
324
5748
8510034588a7 [project @ 2006-04-07 07:51:59 by jwe]
jwe
parents: 5642
diff changeset
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
8510034588a7 [project @ 2006-04-07 07:51:59 by jwe]
jwe
parents: 5642
diff changeset
327
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
328 return result;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
329 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
334 {
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5086
diff changeset
335 octave_idx_type nr = m.rows ();
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5086
diff changeset
336 octave_idx_type nc = m.columns ();
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
339
5748
8510034588a7 [project @ 2006-04-07 07:51:59 by jwe]
jwe
parents: 5642
diff changeset
340 bool all_inf_or_nan = true;
8510034588a7 [project @ 2006-04-07 07:51:59 by jwe]
jwe
parents: 5642
diff changeset
341
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5086
diff changeset
342 for (octave_idx_type j = 0; j < nc; j++)
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5086
diff changeset
343 for (octave_idx_type i = 0; i < nr; i++)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
353 }
3608
ccfafa1d8510 [project @ 2000-03-15 08:47:35 by jwe]
jwe
parents: 3568
diff changeset
354
5748
8510034588a7 [project @ 2006-04-07 07:51:59 by jwe]
jwe
parents: 5642
diff changeset
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
8510034588a7 [project @ 2006-04-07 07:51:59 by jwe]
jwe
parents: 5642
diff changeset
357
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
358 return result;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
359 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
401
6788
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
402 if (rat_format)
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
403 {
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
404 fw = 0;
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
405 rd = 0;
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
406 }
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
407 else if (bank_format)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
412 rd = 2;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
413 }
1282
dac3c9c58b1a [project @ 1995-04-27 19:27:40 by jwe]
jwe
parents: 1192
diff changeset
414 else if (hex_format)
dac3c9c58b1a [project @ 1995-04-27 19:27:40 by jwe]
jwe
parents: 1192
diff changeset
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
dac3c9c58b1a [project @ 1995-04-27 19:27:40 by jwe]
jwe
parents: 1192
diff changeset
417 rd = 0;
dac3c9c58b1a [project @ 1995-04-27 19:27:40 by jwe]
jwe
parents: 1192
diff changeset
418 }
1309
c0187e1c02f9 [project @ 1995-06-25 04:00:46 by jwe]
jwe
parents: 1282
diff changeset
419 else if (bit_format)
c0187e1c02f9 [project @ 1995-06-25 04:00:46 by jwe]
jwe
parents: 1282
diff changeset
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
c0187e1c02f9 [project @ 1995-06-25 04:00:46 by jwe]
jwe
parents: 1282
diff changeset
422 rd = 0;
c0187e1c02f9 [project @ 1995-06-25 04:00:46 by jwe]
jwe
parents: 1282
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
433 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
434 else
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
435 {
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
453 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
454
6788
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
460 {
4509
9ec494b3eb5f [project @ 2003-09-11 19:08:25 by jwe]
jwe
parents: 4431
diff changeset
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
9ec494b3eb5f [project @ 2003-09-11 19:08:25 by jwe]
jwe
parents: 4431
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
491 }
5086
55f5b61d74b7 [project @ 2004-11-19 21:50:50 by jwe]
jwe
parents: 5030
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
494 else
3608
ccfafa1d8510 [project @ 2000-03-15 08:47:35 by jwe]
jwe
parents: 3568
diff changeset
495 fmt = float_format (fw, rd, std::ios::fixed);
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
501 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
508 {
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
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
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
535 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
550
6788
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
551 if (rat_format)
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
552 {
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
553 fw = 9;
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
554 rd = 0;
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
555 }
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
556 else if (bank_format)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
560 rd = 2;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
561 }
1282
dac3c9c58b1a [project @ 1995-04-27 19:27:40 by jwe]
jwe
parents: 1192
diff changeset
562 else if (hex_format)
dac3c9c58b1a [project @ 1995-04-27 19:27:40 by jwe]
jwe
parents: 1192
diff changeset
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
dac3c9c58b1a [project @ 1995-04-27 19:27:40 by jwe]
jwe
parents: 1192
diff changeset
565 rd = 0;
dac3c9c58b1a [project @ 1995-04-27 19:27:40 by jwe]
jwe
parents: 1192
diff changeset
566 }
1309
c0187e1c02f9 [project @ 1995-06-25 04:00:46 by jwe]
jwe
parents: 1282
diff changeset
567 else if (bit_format)
c0187e1c02f9 [project @ 1995-06-25 04:00:46 by jwe]
jwe
parents: 1282
diff changeset
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
c0187e1c02f9 [project @ 1995-06-25 04:00:46 by jwe]
jwe
parents: 1282
diff changeset
570 rd = 0;
c0187e1c02f9 [project @ 1995-06-25 04:00:46 by jwe]
jwe
parents: 1282
diff changeset
571 }
4509
9ec494b3eb5f [project @ 2003-09-11 19:08:25 by jwe]
jwe
parents: 4431
diff changeset
572 else if (Vfixed_point_format && ! print_g)
3268
fdc7dd08cd85 [project @ 1999-09-10 05:16:49 by jwe]
jwe
parents: 3258
diff changeset
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
8510034588a7 [project @ 2006-04-07 07:51:59 by jwe]
jwe
parents: 5642
diff changeset
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
fdc7dd08cd85 [project @ 1999-09-10 05:16:49 by jwe]
jwe
parents: 3258
diff changeset
578 }
1715
6f4631c7118c [project @ 1996-01-08 07:57:04 by jwe]
jwe
parents: 1658
diff changeset
579 else if (int_or_inf_or_nan)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
8510034588a7 [project @ 2006-04-07 07:51:59 by jwe]
jwe
parents: 5642
diff changeset
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
19e1ac7359fb [project @ 2000-06-27 03:23:10 by jwe]
jwe
parents: 3611
diff changeset
585 rd = fw;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
586 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
587 else
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
588 {
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
589 int ld_max, rd_max;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
608
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
609 int ld_min, rd_min;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
631
5832
5e41e06f6a78 [project @ 2006-05-26 21:41:32 by jwe]
jwe
parents: 5823
diff changeset
632 fw = 1 + ld + 1 + rd;
5748
8510034588a7 [project @ 2006-04-07 07:51:59 by jwe]
jwe
parents: 5642
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
635 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
636
6788
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
643 {
4509
9ec494b3eb5f [project @ 2003-09-11 19:08:25 by jwe]
jwe
parents: 4431
diff changeset
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
9ec494b3eb5f [project @ 2003-09-11 19:08:25 by jwe]
jwe
parents: 4431
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
667 }
5086
55f5b61d74b7 [project @ 2004-11-19 21:50:50 by jwe]
jwe
parents: 5030
diff changeset
668 else if (! bank_format && int_or_inf_or_nan)
3611
b1ff6597576f [project @ 2000-03-17 09:44:29 by jwe]
jwe
parents: 3608
diff changeset
669 fmt = float_format (fw, rd);
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
670 else
3608
ccfafa1d8510 [project @ 2000-03-15 08:47:35 by jwe]
jwe
parents: 3568
diff changeset
671 fmt = float_format (fw, rd, std::ios::fixed);
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
677 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
682 {
24782
0eb41237424e more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents: 24781
diff changeset
683 assert (m.ndims () == 2);
0eb41237424e more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents: 24781
diff changeset
684
1658
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
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
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
687
2387
be4616e36133 [project @ 1996-10-12 18:45:13 by jwe]
jwe
parents: 2317
diff changeset
688 bool inf_or_nan = m.any_element_is_inf_or_nan ();
1658
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
689
2387
be4616e36133 [project @ 1996-10-12 18:45:13 by jwe]
jwe
parents: 2317
diff changeset
690 bool int_or_inf_or_nan = m.all_elements_are_int_or_inf_or_nan ();
1658
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
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
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
712 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
732
6788
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
733 if (rat_format)
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
734 {
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
735 i_fw = 0;
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
736 r_fw = 0;
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
737 rd = 0;
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
738 }
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
739 else if (bank_format)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
740 {
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
741 int digits = r_x;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
744 rd = 2;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
745 }
1282
dac3c9c58b1a [project @ 1995-04-27 19:27:40 by jwe]
jwe
parents: 1192
diff changeset
746 else if (hex_format)
dac3c9c58b1a [project @ 1995-04-27 19:27:40 by jwe]
jwe
parents: 1192
diff changeset
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
dac3c9c58b1a [project @ 1995-04-27 19:27:40 by jwe]
jwe
parents: 1192
diff changeset
750 rd = 0;
dac3c9c58b1a [project @ 1995-04-27 19:27:40 by jwe]
jwe
parents: 1192
diff changeset
751 }
1309
c0187e1c02f9 [project @ 1995-06-25 04:00:46 by jwe]
jwe
parents: 1282
diff changeset
752 else if (bit_format)
c0187e1c02f9 [project @ 1995-06-25 04:00:46 by jwe]
jwe
parents: 1282
diff changeset
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
c0187e1c02f9 [project @ 1995-06-25 04:00:46 by jwe]
jwe
parents: 1282
diff changeset
756 rd = 0;
c0187e1c02f9 [project @ 1995-06-25 04:00:46 by jwe]
jwe
parents: 1282
diff changeset
757 }
1658
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
758 else if (inf_or_nan || int_only)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
76cfea89e4e7 [project @ 2006-08-18 22:19:24 by jwe]
jwe
parents: 5832
diff changeset
762 r_fw = i_fw + 1;
76cfea89e4e7 [project @ 2006-08-18 22:19:24 by jwe]
jwe
parents: 5832
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
774 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
775 else
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
776 {
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
777 int ld_max, rd_max;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
796
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
797 int ld_min, rd_min;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
819
5945
76cfea89e4e7 [project @ 2006-08-18 22:19:24 by jwe]
jwe
parents: 5832
diff changeset
820 i_fw = ld + 1 + rd;
76cfea89e4e7 [project @ 2006-08-18 22:19:24 by jwe]
jwe
parents: 5832
diff changeset
821 r_fw = i_fw + 1;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
822 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
823
6788
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
830 {
4509
9ec494b3eb5f [project @ 2003-09-11 19:08:25 by jwe]
jwe
parents: 4431
diff changeset
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
9ec494b3eb5f [project @ 2003-09-11 19:08:25 by jwe]
jwe
parents: 4431
diff changeset
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
ccfafa1d8510 [project @ 2000-03-15 08:47:35 by jwe]
jwe
parents: 3568
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
874 }
5086
55f5b61d74b7 [project @ 2004-11-19 21:50:50 by jwe]
jwe
parents: 5030
diff changeset
875 else if (! bank_format && (inf_or_nan || int_only))
3611
b1ff6597576f [project @ 2000-03-17 09:44:29 by jwe]
jwe
parents: 3608
diff changeset
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
b1ff6597576f [project @ 2000-03-17 09:44:29 by jwe]
jwe
parents: 3608
diff changeset
879 }
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
880 else
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
881 {
3608
ccfafa1d8510 [project @ 2000-03-15 08:47:35 by jwe]
jwe
parents: 3568
diff changeset
882 r_fmt = float_format (r_fw, rd, std::ios::fixed);
ccfafa1d8510 [project @ 2000-03-15 08:47:35 by jwe]
jwe
parents: 3568
diff changeset
883 i_fmt = float_format (i_fw, rd, std::ios::fixed);
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
884 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
887 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
892 {
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
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
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
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
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
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
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
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
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
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
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
912
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
913 int x_max, x_min;
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
914
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
915 if (r_x > i_x)
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
916 {
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
917 x_max = r_x;
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
918 x_min = i_x;
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
919 }
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
920 else
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
921 {
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
922 x_max = i_x;
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
923 x_min = r_x;
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
924 }
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
941 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
958
6788
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
959 if (rat_format)
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
960 {
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
961 i_fw = 9;
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
962 r_fw = 9;
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
963 rd = 0;
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
964 }
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
965 else if (bank_format)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
970 rd = 2;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
971 }
1282
dac3c9c58b1a [project @ 1995-04-27 19:27:40 by jwe]
jwe
parents: 1192
diff changeset
972 else if (hex_format)
dac3c9c58b1a [project @ 1995-04-27 19:27:40 by jwe]
jwe
parents: 1192
diff changeset
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
dac3c9c58b1a [project @ 1995-04-27 19:27:40 by jwe]
jwe
parents: 1192
diff changeset
976 rd = 0;
dac3c9c58b1a [project @ 1995-04-27 19:27:40 by jwe]
jwe
parents: 1192
diff changeset
977 }
1309
c0187e1c02f9 [project @ 1995-06-25 04:00:46 by jwe]
jwe
parents: 1282
diff changeset
978 else if (bit_format)
c0187e1c02f9 [project @ 1995-06-25 04:00:46 by jwe]
jwe
parents: 1282
diff changeset
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
c0187e1c02f9 [project @ 1995-06-25 04:00:46 by jwe]
jwe
parents: 1282
diff changeset
982 rd = 0;
c0187e1c02f9 [project @ 1995-06-25 04:00:46 by jwe]
jwe
parents: 1282
diff changeset
983 }
4509
9ec494b3eb5f [project @ 2003-09-11 19:08:25 by jwe]
jwe
parents: 4431
diff changeset
984 else if (Vfixed_point_format && ! print_g)
3268
fdc7dd08cd85 [project @ 1999-09-10 05:16:49 by jwe]
jwe
parents: 3258
diff changeset
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
76cfea89e4e7 [project @ 2006-08-18 22:19:24 by jwe]
jwe
parents: 5832
diff changeset
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
76cfea89e4e7 [project @ 2006-08-18 22:19:24 by jwe]
jwe
parents: 5832
diff changeset
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
fdc7dd08cd85 [project @ 1999-09-10 05:16:49 by jwe]
jwe
parents: 3258
diff changeset
994 }
1715
6f4631c7118c [project @ 1996-01-08 07:57:04 by jwe]
jwe
parents: 1658
diff changeset
995 else if (int_or_inf_or_nan)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
76cfea89e4e7 [project @ 2006-08-18 22:19:24 by jwe]
jwe
parents: 5832
diff changeset
999 r_fw = i_fw + 1;
76cfea89e4e7 [project @ 2006-08-18 22:19:24 by jwe]
jwe
parents: 5832
diff changeset
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
19e1ac7359fb [project @ 2000-06-27 03:23:10 by jwe]
jwe
parents: 3611
diff changeset
1005 rd = r_fw;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1006 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1007 else
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1008 {
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1009 int ld_max, rd_max;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1028
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1029 int ld_min, rd_min;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1051
5945
76cfea89e4e7 [project @ 2006-08-18 22:19:24 by jwe]
jwe
parents: 5832
diff changeset
1052 i_fw = ld + 1 + rd;
76cfea89e4e7 [project @ 2006-08-18 22:19:24 by jwe]
jwe
parents: 5832
diff changeset
1053 r_fw = i_fw + 1;
76cfea89e4e7 [project @ 2006-08-18 22:19:24 by jwe]
jwe
parents: 5832
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1059 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1060
6788
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1068 {
4509
9ec494b3eb5f [project @ 2003-09-11 19:08:25 by jwe]
jwe
parents: 4431
diff changeset
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
9ec494b3eb5f [project @ 2003-09-11 19:08:25 by jwe]
jwe
parents: 4431
diff changeset
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
ccfafa1d8510 [project @ 2000-03-15 08:47:35 by jwe]
jwe
parents: 3568
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1112 }
5086
55f5b61d74b7 [project @ 2004-11-19 21:50:50 by jwe]
jwe
parents: 5030
diff changeset
1113 else if (! bank_format && int_or_inf_or_nan)
3611
b1ff6597576f [project @ 2000-03-17 09:44:29 by jwe]
jwe
parents: 3608
diff changeset
1114 {
b1ff6597576f [project @ 2000-03-17 09:44:29 by jwe]
jwe
parents: 3608
diff changeset
1115 r_fmt = float_format (r_fw, rd);
b1ff6597576f [project @ 2000-03-17 09:44:29 by jwe]
jwe
parents: 3608
diff changeset
1116 i_fmt = float_format (i_fw, rd);
b1ff6597576f [project @ 2000-03-17 09:44:29 by jwe]
jwe
parents: 3608
diff changeset
1117 }
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1118 else
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1119 {
3608
ccfafa1d8510 [project @ 2000-03-15 08:47:35 by jwe]
jwe
parents: 3568
diff changeset
1120 r_fmt = float_format (r_fw, rd, std::ios::fixed);
ccfafa1d8510 [project @ 2000-03-15 08:47:35 by jwe]
jwe
parents: 3568
diff changeset
1121 i_fmt = float_format (i_fw, rd, std::ios::fixed);
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1122 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1125 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
1130 {
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
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
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
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
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
1139
2387
be4616e36133 [project @ 1996-10-12 18:45:13 by jwe]
jwe
parents: 2317
diff changeset
1140 bool inf_or_nan = cm.any_element_is_inf_or_nan ();
1658
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
1141
2387
be4616e36133 [project @ 1996-10-12 18:45:13 by jwe]
jwe
parents: 2317
diff changeset
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
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
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
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
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
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
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
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
1173 }
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1201
6788
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
1202 if (rat_format)
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
1203 {
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
1204 fw = 9;
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
1205 rd = 0;
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
1206 }
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
1207 else if (bank_format)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1211 rd = 2;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1212 }
1282
dac3c9c58b1a [project @ 1995-04-27 19:27:40 by jwe]
jwe
parents: 1192
diff changeset
1213 else if (hex_format)
dac3c9c58b1a [project @ 1995-04-27 19:27:40 by jwe]
jwe
parents: 1192
diff changeset
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
dac3c9c58b1a [project @ 1995-04-27 19:27:40 by jwe]
jwe
parents: 1192
diff changeset
1216 rd = 0;
dac3c9c58b1a [project @ 1995-04-27 19:27:40 by jwe]
jwe
parents: 1192
diff changeset
1217 }
1309
c0187e1c02f9 [project @ 1995-06-25 04:00:46 by jwe]
jwe
parents: 1282
diff changeset
1218 else if (bit_format)
c0187e1c02f9 [project @ 1995-06-25 04:00:46 by jwe]
jwe
parents: 1282
diff changeset
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
c0187e1c02f9 [project @ 1995-06-25 04:00:46 by jwe]
jwe
parents: 1282
diff changeset
1221 rd = 0;
c0187e1c02f9 [project @ 1995-06-25 04:00:46 by jwe]
jwe
parents: 1282
diff changeset
1222 }
1658
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
1223 else if (all_ints)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
19e1ac7359fb [project @ 2000-06-27 03:23:10 by jwe]
jwe
parents: 3611
diff changeset
1227 rd = fw;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1228 }
4509
9ec494b3eb5f [project @ 2003-09-11 19:08:25 by jwe]
jwe
parents: 4431
diff changeset
1229 else if (Vfixed_point_format && ! print_g)
3105
f936c7f5074f [project @ 1997-11-19 04:36:17 by jwe]
jwe
parents: 3018
diff changeset
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
f936c7f5074f [project @ 1997-11-19 04:36:17 by jwe]
jwe
parents: 3018
diff changeset
1233 }
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1234 else
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1235 {
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1236 int ld_max, rd_max;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1255
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1256 int ld_min, rd_min;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1280 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1281
6788
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1288 {
4509
9ec494b3eb5f [project @ 2003-09-11 19:08:25 by jwe]
jwe
parents: 4431
diff changeset
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
9ec494b3eb5f [project @ 2003-09-11 19:08:25 by jwe]
jwe
parents: 4431
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1308 }
5086
55f5b61d74b7 [project @ 2004-11-19 21:50:50 by jwe]
jwe
parents: 5030
diff changeset
1309 else if (! bank_format && all_ints)
3611
b1ff6597576f [project @ 2000-03-17 09:44:29 by jwe]
jwe
parents: 3608
diff changeset
1310 fmt = float_format (fw, rd);
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1311 else
3608
ccfafa1d8510 [project @ 2000-03-15 08:47:35 by jwe]
jwe
parents: 3568
diff changeset
1312 fmt = float_format (fw, rd, std::ios::fixed);
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1318 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
1323 {
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
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
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
1326
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
1327 double r_min = r.base ();
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
1328 double r_max = r.limit ();
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
1329
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
1330 if (r_max < r_min)
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
1331 {
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
1332 double tmp = r_max;
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
1333 r_max = r_min;
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
1334 r_min = tmp;
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
1335 }
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
1336
2387
be4616e36133 [project @ 1996-10-12 18:45:13 by jwe]
jwe
parents: 2317
diff changeset
1337 bool all_ints = r.all_elements_are_ints ();
1658
0e9cd25503d9 [project @ 1995-12-20 16:49:05 by jwe]
jwe
parents: 1651
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1347 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
dac3c9c58b1a [project @ 1995-04-27 19:27:40 by jwe]
jwe
parents: 1192
diff changeset
1350 union equiv
dac3c9c58b1a [project @ 1995-04-27 19:27:40 by jwe]
jwe
parents: 1192
diff changeset
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
dac3c9c58b1a [project @ 1995-04-27 19:27:40 by jwe]
jwe
parents: 1192
diff changeset
1354 };
dac3c9c58b1a [project @ 1995-04-27 19:27:40 by jwe]
jwe
parents: 1192
diff changeset
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
c0187e1c02f9 [project @ 1995-06-25 04:00:46 by jwe]
jwe
parents: 1282
diff changeset
1372 while (0)
c0187e1c02f9 [project @ 1995-06-25 04:00:46 by jwe]
jwe
parents: 1282
diff changeset
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
c0187e1c02f9 [project @ 1995-06-25 04:00:46 by jwe]
jwe
parents: 1282
diff changeset
1390 while (0)
c0187e1c02f9 [project @ 1995-06-25 04:00:46 by jwe]
jwe
parents: 1282
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 453
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1512 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1524 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1536 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
ccfafa1d8510 [project @ 2000-03-15 08:47:35 by jwe]
jwe
parents: 3568
diff changeset
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
ccfafa1d8510 [project @ 2000-03-15 08:47:35 by jwe]
jwe
parents: 3568
diff changeset
1546
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1547 if (! bank_format)
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
a6c22c2c9b09 [project @ 2003-02-21 18:59:07 by jwe]
jwe
parents: 4270
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1566 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1567 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
96be9eae023f [project @ 1994-08-19 02:10:54 by jwe]
jwe
parents: 575
diff changeset
1572 {
96be9eae023f [project @ 1994-08-19 02:10:54 by jwe]
jwe
parents: 575
diff changeset
1573 assert (nr == 0 || nc == 0);
96be9eae023f [project @ 1994-08-19 02:10:54 by jwe]
jwe
parents: 575
diff changeset
1574
96be9eae023f [project @ 1994-08-19 02:10:54 by jwe]
jwe
parents: 575
diff changeset
1575 if (pr_as_read_syntax)
96be9eae023f [project @ 1994-08-19 02:10:54 by jwe]
jwe
parents: 575
diff changeset
1576 {
96be9eae023f [project @ 1994-08-19 02:10:54 by jwe]
jwe
parents: 575
diff changeset
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
96be9eae023f [project @ 1994-08-19 02:10:54 by jwe]
jwe
parents: 575
diff changeset
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
96be9eae023f [project @ 1994-08-19 02:10:54 by jwe]
jwe
parents: 575
diff changeset
1581 }
96be9eae023f [project @ 1994-08-19 02:10:54 by jwe]
jwe
parents: 575
diff changeset
1582 else
96be9eae023f [project @ 1994-08-19 02:10:54 by jwe]
jwe
parents: 575
diff changeset
1583 {
96be9eae023f [project @ 1994-08-19 02:10:54 by jwe]
jwe
parents: 575
diff changeset
1584 os << "[]";
4559
802818bfac91 [project @ 2003-10-28 19:13:43 by jwe]
jwe
parents: 4532
diff changeset
1585
2165
83d91aa3759b [project @ 1996-05-13 13:28:10 by jwe]
jwe
parents: 2086
diff changeset
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
96be9eae023f [project @ 1994-08-19 02:10:54 by jwe]
jwe
parents: 575
diff changeset
1588 }
96be9eae023f [project @ 1994-08-19 02:10:54 by jwe]
jwe
parents: 575
diff changeset
1589 }
96be9eae023f [project @ 1994-08-19 02:10:54 by jwe]
jwe
parents: 575
diff changeset
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
802818bfac91 [project @ 2003-10-28 19:13:43 by jwe]
jwe
parents: 4532
diff changeset
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
802818bfac91 [project @ 2003-10-28 19:13:43 by jwe]
jwe
parents: 4532
diff changeset
1594 {
802818bfac91 [project @ 2003-10-28 19:13:43 by jwe]
jwe
parents: 4532
diff changeset
1595 assert (dims.any_zero ());
802818bfac91 [project @ 2003-10-28 19:13:43 by jwe]
jwe
parents: 4532
diff changeset
1596
802818bfac91 [project @ 2003-10-28 19:13:43 by jwe]
jwe
parents: 4532
diff changeset
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
802818bfac91 [project @ 2003-10-28 19:13:43 by jwe]
jwe
parents: 4532
diff changeset
1599 else
802818bfac91 [project @ 2003-10-28 19:13:43 by jwe]
jwe
parents: 4532
diff changeset
1600 {
802818bfac91 [project @ 2003-10-28 19:13:43 by jwe]
jwe
parents: 4532
diff changeset
1601 os << "[]";
802818bfac91 [project @ 2003-10-28 19:13:43 by jwe]
jwe
parents: 4532
diff changeset
1602
802818bfac91 [project @ 2003-10-28 19:13:43 by jwe]
jwe
parents: 4532
diff changeset
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
802818bfac91 [project @ 2003-10-28 19:13:43 by jwe]
jwe
parents: 4532
diff changeset
1605 }
802818bfac91 [project @ 2003-10-28 19:13:43 by jwe]
jwe
parents: 4532
diff changeset
1606 }
802818bfac91 [project @ 2003-10-28 19:13:43 by jwe]
jwe
parents: 4532
diff changeset
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
f936c7f5074f [project @ 1997-11-19 04:36:17 by jwe]
jwe
parents: 3018
diff changeset
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
f936c7f5074f [project @ 1997-11-19 04:36:17 by jwe]
jwe
parents: 3018
diff changeset
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
58549b931ad5 [project @ 2000-02-03 10:21:54 by jwe]
jwe
parents: 3548
diff changeset
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
f936c7f5074f [project @ 1997-11-19 04:36:17 by jwe]
jwe
parents: 3018
diff changeset
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
f936c7f5074f [project @ 1997-11-19 04:36:17 by jwe]
jwe
parents: 3018
diff changeset
1623 }
f936c7f5074f [project @ 1997-11-19 04:36:17 by jwe]
jwe
parents: 3018
diff changeset
1624 }
f936c7f5074f [project @ 1997-11-19 04:36:17 by jwe]
jwe
parents: 3018
diff changeset
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
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5086
diff changeset
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
d94bcafabac2 [project @ 1995-03-30 04:57:32 by jwe]
jwe
parents: 1086
diff changeset
1629 {
2165
83d91aa3759b [project @ 1996-05-13 13:28:10 by jwe]
jwe
parents: 2086
diff changeset
1630 if (total_width > max_width && Vsplit_long_rows)
1186
d94bcafabac2 [project @ 1995-03-30 04:57:32 by jwe]
jwe
parents: 1086
diff changeset
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
399e8681b774 [project @ 2004-03-10 20:49:48 by jwe]
jwe
parents: 4791
diff changeset
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
d94bcafabac2 [project @ 1995-03-30 04:57:32 by jwe]
jwe
parents: 1086
diff changeset
1641
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5086
diff changeset
1642 octave_idx_type num_cols = lim - col;
1186
d94bcafabac2 [project @ 1995-03-30 04:57:32 by jwe]
jwe
parents: 1086
diff changeset
1643
3548
ab7fa5a8f23f [project @ 2000-02-03 01:17:15 by jwe]
jwe
parents: 3538
diff changeset
1644 os << std::setw (extra_indent) << "";
1972
58ac5f889c64 [project @ 1996-02-24 07:12:58 by jwe]
jwe
parents: 1968
diff changeset
1645
1186
d94bcafabac2 [project @ 1995-03-30 04:57:32 by jwe]
jwe
parents: 1086
diff changeset
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
d94bcafabac2 [project @ 1995-03-30 04:57:32 by jwe]
jwe
parents: 1086
diff changeset
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
d94bcafabac2 [project @ 1995-03-30 04:57:32 by jwe]
jwe
parents: 1086
diff changeset
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
649549662cf6 [project @ 1997-04-30 20:51:40 by jwe]
jwe
parents: 2907
diff changeset
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
d94bcafabac2 [project @ 1995-03-30 04:57:32 by jwe]
jwe
parents: 1086
diff changeset
1655 }
d94bcafabac2 [project @ 1995-03-30 04:57:32 by jwe]
jwe
parents: 1086
diff changeset
1656 }
d94bcafabac2 [project @ 1995-03-30 04:57:32 by jwe]
jwe
parents: 1086
diff changeset
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
160365410ad4 [project @ 2004-09-24 03:22:23 by jwe]
jwe
parents: 4949
diff changeset
1660 pr_plus_format (std::ostream& os, const T& val)
3248
68259f410026 [project @ 1999-07-13 03:34:54 by jwe]
jwe
parents: 3215
diff changeset
1661 {
5030
160365410ad4 [project @ 2004-09-24 03:22:23 by jwe]
jwe
parents: 4949
diff changeset
1662 if (val > T (0))
4632
0e28461651f2 [project @ 2003-11-18 19:07:13 by jwe]
jwe
parents: 4574
diff changeset
1663 os << plus_format_chars[0];
5030
160365410ad4 [project @ 2004-09-24 03:22:23 by jwe]
jwe
parents: 4949
diff changeset
1664 else if (val < T (0))
4632
0e28461651f2 [project @ 2003-11-18 19:07:13 by jwe]
jwe
parents: 4574
diff changeset
1665 os << plus_format_chars[1];
3248
68259f410026 [project @ 1999-07-13 03:34:54 by jwe]
jwe
parents: 3215
diff changeset
1666 else
4632
0e28461651f2 [project @ 2003-11-18 19:07:13 by jwe]
jwe
parents: 4574
diff changeset
1667 os << plus_format_chars[2];
3248
68259f410026 [project @ 1999-07-13 03:34:54 by jwe]
jwe
parents: 3215
diff changeset
1668 }
68259f410026 [project @ 1999-07-13 03:34:54 by jwe]
jwe
parents: 3215
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1789 else
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1790 {
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1795 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1796 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1877 {
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5086
diff changeset
1878 octave_idx_type nr = m.rows ();
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5086
diff changeset
1879 octave_idx_type nc = m.columns ();
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1880
2408
e22aae3ccfad [project @ 1996-10-15 16:37:52 by jwe]
jwe
parents: 2387
diff changeset
1881 if (nr == 0 || nc == 0)
626
96be9eae023f [project @ 1994-08-19 02:10:54 by jwe]
jwe
parents: 575
diff changeset
1882 print_empty_matrix (os, nr, nc, pr_as_read_syntax);
96be9eae023f [project @ 1994-08-19 02:10:54 by jwe]
jwe
parents: 575
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1885 else
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5086
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1891
626
96be9eae023f [project @ 1994-08-19 02:10:54 by jwe]
jwe
parents: 575
diff changeset
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
58ac5f889c64 [project @ 1996-02-24 07:12:58 by jwe]
jwe
parents: 1968
diff changeset
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
58ac5f889c64 [project @ 1996-02-24 07:12:58 by jwe]
jwe
parents: 1968
diff changeset
1896
58ac5f889c64 [project @ 1996-02-24 07:12:58 by jwe]
jwe
parents: 1968
diff changeset
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
96be9eae023f [project @ 1994-08-19 02:10:54 by jwe]
jwe
parents: 575
diff changeset
1899
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1905
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5086
diff changeset
1906 octave_idx_type inc = nc;
2165
83d91aa3759b [project @ 1996-05-13 13:28:10 by jwe]
jwe
parents: 2086
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1913
626
96be9eae023f [project @ 1994-08-19 02:10:54 by jwe]
jwe
parents: 575
diff changeset
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
96be9eae023f [project @ 1994-08-19 02:10:54 by jwe]
jwe
parents: 575
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1985 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1986 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
01ee68d18069 [project @ 2003-10-10 00:49:54 by jwe]
jwe
parents: 4513
diff changeset
2189
4513
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
2190 void
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
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
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
2193 {
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
2194 switch (nda.ndims ())
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
2195 {
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
2196 case 1:
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
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
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
2200 break;
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
2201
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
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
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
2204 break;
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
2205 }
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
2206 }
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
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
68259f410026 [project @ 1999-07-13 03:34:54 by jwe]
jwe
parents: 3215
diff changeset
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
68259f410026 [project @ 1999-07-13 03:34:54 by jwe]
jwe
parents: 3215
diff changeset
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
68259f410026 [project @ 1999-07-13 03:34:54 by jwe]
jwe
parents: 3215
diff changeset
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
68259f410026 [project @ 1999-07-13 03:34:54 by jwe]
jwe
parents: 3215
diff changeset
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
68259f410026 [project @ 1999-07-13 03:34:54 by jwe]
jwe
parents: 3215
diff changeset
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
ccfafa1d8510 [project @ 2000-03-15 08:47:35 by jwe]
jwe
parents: 3568
diff changeset
2241 pr_plus_format (os, rp);
3248
68259f410026 [project @ 1999-07-13 03:34:54 by jwe]
jwe
parents: 3215
diff changeset
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
68259f410026 [project @ 1999-07-13 03:34:54 by jwe]
jwe
parents: 3215
diff changeset
2244 }
68259f410026 [project @ 1999-07-13 03:34:54 by jwe]
jwe
parents: 3215
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
2254 else
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
2255 {
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
2260 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
2261 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
2262
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
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
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
2397 {
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
2398 switch (nda.ndims ())
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
2399 {
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
2400 case 1:
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
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
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
2404 break;
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
2405
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
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
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
2409 break;
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
2410 }
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
2411 }
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
2493 {
626
96be9eae023f [project @ 1994-08-19 02:10:54 by jwe]
jwe
parents: 575
diff changeset
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
96be9eae023f [project @ 1994-08-19 02:10:54 by jwe]
jwe
parents: 575
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
2499
626
96be9eae023f [project @ 1994-08-19 02:10:54 by jwe]
jwe
parents: 575
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
2502 else
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
2505
626
96be9eae023f [project @ 1994-08-19 02:10:54 by jwe]
jwe
parents: 575
diff changeset
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
96be9eae023f [project @ 1994-08-19 02:10:54 by jwe]
jwe
parents: 575
diff changeset
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 {
24737
5be92b26ef8f Fix alignment of numbers in fixed_point_format display (bug #53083).
Rik <rik@octave.org>
parents: 24673
diff changeset
2561 octave_idx_type lim = (col + inc < num_elem ? col + inc : num_elem);
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2562
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2563 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
2564 extra_indent);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2565
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2566 os << std::setw (extra_indent) << "";
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2567
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2568 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
2569 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2570 octave_quit ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2571
16169
0303fda3e929 Fix range behavior with -0 endpoints (bug #38423)
Rik <rik@octave.org>
parents: 15467
diff changeset
2572 double val;
0303fda3e929 Fix range behavior with -0 endpoints (bug #38423)
Rik <rik@octave.org>
parents: 15467
diff changeset
2573 if (i == 0)
0303fda3e929 Fix range behavior with -0 endpoints (bug #38423)
Rik <rik@octave.org>
parents: 15467
diff changeset
2574 val = base;
0303fda3e929 Fix range behavior with -0 endpoints (bug #38423)
Rik <rik@octave.org>
parents: 15467
diff changeset
2575 else
0303fda3e929 Fix range behavior with -0 endpoints (bug #38423)
Rik <rik@octave.org>
parents: 15467
diff changeset
2576 val = base + i * increment;
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2577
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2578 if (i == num_elem - 1)
28637
fb37f50d5ba8 new Range::final_value function
John W. Eaton <jwe@octave.org>
parents: 28636
diff changeset
2579 val = final_value;
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2580
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2581 os << " ";
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2582
24787
168d5b43c840 store scale factor in float_display_format object
John W. Eaton <jwe@octave.org>
parents: 24786
diff changeset
2583 pr_float (os, fmt, val);
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2584 }
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 col += inc;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2587 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2588 }
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
2589 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
2590 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
2591
1343
94bedeb289e5 [project @ 1995-09-04 00:29:21 by jwe]
jwe
parents: 1328
diff changeset
2592 void
3523
b80bbb43a1a9 [project @ 2000-02-02 10:25:52 by jwe]
jwe
parents: 3503
diff changeset
2593 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
2594 bool pr_as_read_syntax,
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2595 int extra_indent)
3215
bc3fdfe311a3 [project @ 1998-11-10 14:06:21 by jwe]
jwe
parents: 3164
diff changeset
2596 {
21583
d5963a6e29c2 Use integer output formatting for logicals (bug #47607)
Mike Miller <mtmiller@octave.org>
parents: 21568
diff changeset
2597 uint8NDArray tmp (bm);
3215
bc3fdfe311a3 [project @ 1998-11-10 14:06:21 by jwe]
jwe
parents: 3164
diff changeset
2598 octave_print_internal (os, tmp, pr_as_read_syntax, extra_indent);
bc3fdfe311a3 [project @ 1998-11-10 14:06:21 by jwe]
jwe
parents: 3164
diff changeset
2599 }
bc3fdfe311a3 [project @ 1998-11-10 14:06:21 by jwe]
jwe
parents: 3164
diff changeset
2600
bc3fdfe311a3 [project @ 1998-11-10 14:06:21 by jwe]
jwe
parents: 3164
diff changeset
2601 void
4513
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
2602 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
2603 bool pr_as_read_syntax,
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2604 int extra_indent)
4513
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
2605 {
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
2606 switch (nda.ndims ())
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
2607 {
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
2608 case 1:
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
2609 case 2:
19317
25f535b90e52 Change boolMatrix to subclass boolNDArray rather than be another Array<bool>.
Carnë Draug <carandraug@octave.org>
parents: 19255
diff changeset
2610 octave_print_internal (os, boolMatrix (nda),
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2611 pr_as_read_syntax, extra_indent);
4513
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
2612 break;
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
2613
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
2614 default:
13102
801c5a6ad487 Change the PRINT_ND_ARRAY macro into a templated function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12483
diff changeset
2615 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
2616 boolMatrix> (os, nda, pr_as_read_syntax);
4513
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
2617 break;
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
2618 }
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
2619 }
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
2620
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
2621 void
3523
b80bbb43a1a9 [project @ 2000-02-02 10:25:52 by jwe]
jwe
parents: 3503
diff changeset
2622 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
2623 bool pr_as_read_syntax,
21066
258c787cd9ce maint: Use "FIXME:" consistently in code base.
Rik <rik@octave.org>
parents: 20946
diff changeset
2624 int /* FIXME: extra_indent */,
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2625 bool pr_as_string)
1343
94bedeb289e5 [project @ 1995-09-04 00:29:21 by jwe]
jwe
parents: 1328
diff changeset
2626 {
1572
0d9e10d10bd7 [project @ 1995-10-19 04:31:30 by jwe]
jwe
parents: 1488
diff changeset
2627 if (pr_as_string)
0d9e10d10bd7 [project @ 1995-10-19 04:31:30 by jwe]
jwe
parents: 1488
diff changeset
2628 {
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5086
diff changeset
2629 octave_idx_type nstr = chm.rows ();
1343
94bedeb289e5 [project @ 1995-09-04 00:29:21 by jwe]
jwe
parents: 1328
diff changeset
2630
1572
0d9e10d10bd7 [project @ 1995-10-19 04:31:30 by jwe]
jwe
parents: 1488
diff changeset
2631 if (pr_as_read_syntax && nstr > 1)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2632 os << "[ ";
1343
94bedeb289e5 [project @ 1995-09-04 00:29:21 by jwe]
jwe
parents: 1328
diff changeset
2633
2907
8bb31a2b480b [project @ 1997-04-30 05:01:46 by jwe]
jwe
parents: 2903
diff changeset
2634 if (nstr != 0)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2635 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2636 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
2637 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2638 octave_quit ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2639
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2640 std::string row = chm.row_as_string (i);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2641
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2642 if (pr_as_read_syntax)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2643 {
25646
4d565baa475e move libinterp/utils functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 25569
diff changeset
2644 os << '"' << octave::undo_string_escapes (row) << '"';
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2645
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2646 if (i < nstr - 1)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2647 os << "; ";
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2648 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2649 else
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2650 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2651 os << row;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2652
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2653 if (i < nstr - 1)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2654 os << "\n";
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2655 }
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 }
1572
0d9e10d10bd7 [project @ 1995-10-19 04:31:30 by jwe]
jwe
parents: 1488
diff changeset
2658
0d9e10d10bd7 [project @ 1995-10-19 04:31:30 by jwe]
jwe
parents: 1488
diff changeset
2659 if (pr_as_read_syntax && nstr > 1)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2660 os << " ]";
1343
94bedeb289e5 [project @ 1995-09-04 00:29:21 by jwe]
jwe
parents: 1328
diff changeset
2661 }
1572
0d9e10d10bd7 [project @ 1995-10-19 04:31:30 by jwe]
jwe
parents: 1488
diff changeset
2662 else
0d9e10d10bd7 [project @ 1995-10-19 04:31:30 by jwe]
jwe
parents: 1488
diff changeset
2663 {
0d9e10d10bd7 [project @ 1995-10-19 04:31:30 by jwe]
jwe
parents: 1488
diff changeset
2664 os << "sorry, printing char matrices not implemented yet\n";
0d9e10d10bd7 [project @ 1995-10-19 04:31:30 by jwe]
jwe
parents: 1488
diff changeset
2665 }
1343
94bedeb289e5 [project @ 1995-09-04 00:29:21 by jwe]
jwe
parents: 1328
diff changeset
2666 }
94bedeb289e5 [project @ 1995-09-04 00:29:21 by jwe]
jwe
parents: 1328
diff changeset
2667
4513
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
2668 void
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
2669 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
2670 bool pr_as_read_syntax, int extra_indent,
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2671 bool pr_as_string)
4513
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
2672 {
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
2673 switch (nda.ndims ())
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
2674 {
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
2675 case 1:
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
2676 case 2:
19318
6c9ea5be96bf Change charMatrix to subclass charNDArray rather than be another Array<char>.
Carnë Draug <carandraug@octave.org>
parents: 19317
diff changeset
2677 octave_print_internal (os, charMatrix (nda),
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2678 pr_as_read_syntax, extra_indent, pr_as_string);
4513
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
2679 break;
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
2680
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
2681 default:
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2682 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
2683 pr_as_read_syntax);
4513
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
2684 break;
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
2685 }
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
2686 }
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4509
diff changeset
2687
4655
c8829691db47 [project @ 2003-11-24 21:24:37 by jwe]
jwe
parents: 4632
diff changeset
2688 void
4925
90f51232d751 [project @ 2004-08-02 22:09:47 by jwe]
jwe
parents: 4901
diff changeset
2689 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
2690 bool pr_as_read_syntax, int extra_indent)
4925
90f51232d751 [project @ 2004-08-02 22:09:47 by jwe]
jwe
parents: 4901
diff changeset
2691 {
9732
b4fdfee405b5 remove ArrayN<T> + fix nonhom. diag-scalar ops
Jaroslav Hajek <highegg@gmail.com>
parents: 9643
diff changeset
2692 Array<std::string> nda (dim_vector (1, 1), s);
4925
90f51232d751 [project @ 2004-08-02 22:09:47 by jwe]
jwe
parents: 4901
diff changeset
2693
90f51232d751 [project @ 2004-08-02 22:09:47 by jwe]
jwe
parents: 4901
diff changeset
2694 octave_print_internal (os, nda, pr_as_read_syntax, extra_indent);
90f51232d751 [project @ 2004-08-02 22:09:47 by jwe]
jwe
parents: 4901
diff changeset
2695 }
90f51232d751 [project @ 2004-08-02 22:09:47 by jwe]
jwe
parents: 4901
diff changeset
2696
90f51232d751 [project @ 2004-08-02 22:09:47 by jwe]
jwe
parents: 4901
diff changeset
2697 void
9732
b4fdfee405b5 remove ArrayN<T> + fix nonhom. diag-scalar ops
Jaroslav Hajek <highegg@gmail.com>
parents: 9643
diff changeset
2698 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
2699 bool pr_as_read_syntax, int /* extra_indent */)
4655
c8829691db47 [project @ 2003-11-24 21:24:37 by jwe]
jwe
parents: 4632
diff changeset
2700 {
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2701 // 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
2702 // function. Can fix this with std::is_same from C++11.
4655
c8829691db47 [project @ 2003-11-24 21:24:37 by jwe]
jwe
parents: 4632
diff changeset
2703
23577
80c42f4cca13 maint: Deprecate is_empty and replace with isempty.
Rik <rik@octave.org>
parents: 23565
diff changeset
2704 if (nda.isempty ())
4655
c8829691db47 [project @ 2003-11-24 21:24:37 by jwe]
jwe
parents: 4632
diff changeset
2705 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
2706 else if (nda.numel () == 1)
4655
c8829691db47 [project @ 2003-11-24 21:24:37 by jwe]
jwe
parents: 4632
diff changeset
2707 {
c8829691db47 [project @ 2003-11-24 21:24:37 by jwe]
jwe
parents: 4632
diff changeset
2708 os << nda(0);
c8829691db47 [project @ 2003-11-24 21:24:37 by jwe]
jwe
parents: 4632
diff changeset
2709 }
c8829691db47 [project @ 2003-11-24 21:24:37 by jwe]
jwe
parents: 4632
diff changeset
2710 else
c8829691db47 [project @ 2003-11-24 21:24:37 by jwe]
jwe
parents: 4632
diff changeset
2711 {
c8829691db47 [project @ 2003-11-24 21:24:37 by jwe]
jwe
parents: 4632
diff changeset
2712 int ndims = nda.ndims ();
c8829691db47 [project @ 2003-11-24 21:24:37 by jwe]
jwe
parents: 4632
diff changeset
2713
c8829691db47 [project @ 2003-11-24 21:24:37 by jwe]
jwe
parents: 4632
diff changeset
2714 dim_vector dims = nda.dims ();
c8829691db47 [project @ 2003-11-24 21:24:37 by jwe]
jwe
parents: 4632
diff changeset
2715
11570
57632dea2446 attempt better backward compatibility for Array constructors
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
2716 Array<octave_idx_type> ra_idx (dim_vector (ndims, 1), 0);
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5086
diff changeset
2717
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5086
diff changeset
2718 octave_idx_type m = 1;
4655
c8829691db47 [project @ 2003-11-24 21:24:37 by jwe]
jwe
parents: 4632
diff changeset
2719
c8829691db47 [project @ 2003-11-24 21:24:37 by jwe]
jwe
parents: 4632
diff changeset
2720 for (int i = 2; i < ndims; i++)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2721 m *= dims(i);
4655
c8829691db47 [project @ 2003-11-24 21:24:37 by jwe]
jwe
parents: 4632
diff changeset
2722
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5086
diff changeset
2723 octave_idx_type nr = dims(0);
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5086
diff changeset
2724 octave_idx_type nc = dims(1);
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5086
diff changeset
2725
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5086
diff changeset
2726 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
2727 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2728 std::string nm = "ans";
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2729
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2730 if (m > 1)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2731 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2732 nm += "(:,:,";
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2733
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2734 std::ostringstream buf;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2735
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2736 for (int k = 2; k < ndims; k++)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2737 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2738 buf << ra_idx(k) + 1;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2739
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2740 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
2741 buf << ',';
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2742 else
23807
336f89b6208b Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents: 23803
diff changeset
2743 buf << ')';
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2744 }
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 nm += buf.str ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2747 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2748
29569
29a1f8fd8ee6 move idx_vector classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29494
diff changeset
2749 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
2750
29a1f8fd8ee6 move idx_vector classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29494
diff changeset
2751 idx(0) = octave::idx_vector (':');
29a1f8fd8ee6 move idx_vector classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29494
diff changeset
2752 idx(1) = octave::idx_vector (':');
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2753
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2754 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
2755 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
2756
11570
57632dea2446 attempt better backward compatibility for Array constructors
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
2757 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
2758
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2759 // 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
2760 // in neatly aligned columns...
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2761
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2762 octave_idx_type n_rows = page.rows ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2763 octave_idx_type n_cols = page.cols ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2764
13112
969ed305dde5 Remove all blank lines with "format compact"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 13102
diff changeset
2765 os << nm << " =\n";
969ed305dde5 Remove all blank lines with "format compact"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 13102
diff changeset
2766 if (! Vcompact_format)
969ed305dde5 Remove all blank lines with "format compact"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 13102
diff changeset
2767 os << "\n";
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2768
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2769 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
2770 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2771 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
2772 os << " " << page(ii, jj);
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2773
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2774 os << "\n";
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2775 }
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 if (i < m - 1)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2778 os << "\n";
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2779
26501
cfe28edab48b pr-output.cc: Fix static analyzer detected issues (bug #55347).
Rik <rik@octave.org>
parents: 26376
diff changeset
2780 increment_index (ra_idx, dims, 2);
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2781 }
4655
c8829691db47 [project @ 2003-11-24 21:24:37 by jwe]
jwe
parents: 4632
diff changeset
2782 }
c8829691db47 [project @ 2003-11-24 21:24:37 by jwe]
jwe
parents: 4632
diff changeset
2783 }
c8829691db47 [project @ 2003-11-24 21:24:37 by jwe]
jwe
parents: 4632
diff changeset
2784
21139
538b57866b90 consistently use "typename" intead of "class" in template declarations
John W. Eaton <jwe@octave.org>
parents: 21100
diff changeset
2785 template <typename T>
4901
35bfb4e0b96b [project @ 2004-06-14 18:33:02 by jwe]
jwe
parents: 4869
diff changeset
2786 class
35bfb4e0b96b [project @ 2004-06-14 18:33:02 by jwe]
jwe
parents: 4869
diff changeset
2787 octave_print_conv
35bfb4e0b96b [project @ 2004-06-14 18:33:02 by jwe]
jwe
parents: 4869
diff changeset
2788 {
35bfb4e0b96b [project @ 2004-06-14 18:33:02 by jwe]
jwe
parents: 4869
diff changeset
2789 public:
35bfb4e0b96b [project @ 2004-06-14 18:33:02 by jwe]
jwe
parents: 4869
diff changeset
2790 typedef T print_conv_type;
35bfb4e0b96b [project @ 2004-06-14 18:33:02 by jwe]
jwe
parents: 4869
diff changeset
2791 };
35bfb4e0b96b [project @ 2004-06-14 18:33:02 by jwe]
jwe
parents: 4869
diff changeset
2792
22197
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
2793 #define PRINT_CONV(T1, T2) \
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
2794 template <> \
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
2795 class \
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
2796 octave_print_conv<T1> \
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
2797 { \
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
2798 public: \
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
2799 typedef T2 print_conv_type; \
4901
35bfb4e0b96b [project @ 2004-06-14 18:33:02 by jwe]
jwe
parents: 4869
diff changeset
2800 }
35bfb4e0b96b [project @ 2004-06-14 18:33:02 by jwe]
jwe
parents: 4869
diff changeset
2801
35bfb4e0b96b [project @ 2004-06-14 18:33:02 by jwe]
jwe
parents: 4869
diff changeset
2802 PRINT_CONV (octave_int8, octave_int16);
35bfb4e0b96b [project @ 2004-06-14 18:33:02 by jwe]
jwe
parents: 4869
diff changeset
2803 PRINT_CONV (octave_uint8, octave_uint16);
35bfb4e0b96b [project @ 2004-06-14 18:33:02 by jwe]
jwe
parents: 4869
diff changeset
2804
35bfb4e0b96b [project @ 2004-06-14 18:33:02 by jwe]
jwe
parents: 4869
diff changeset
2805 #undef PRINT_CONV
35bfb4e0b96b [project @ 2004-06-14 18:33:02 by jwe]
jwe
parents: 4869
diff changeset
2806
21139
538b57866b90 consistently use "typename" intead of "class" in template declarations
John W. Eaton <jwe@octave.org>
parents: 21100
diff changeset
2807 template <typename T>
24782
0eb41237424e more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents: 24781
diff changeset
2808 static inline void
4949
f6b63ff1119b [project @ 2004-08-31 19:17:44 by jwe]
jwe
parents: 4933
diff changeset
2809 pr_int (std::ostream& os, const T& d, int fw = 0)
f6b63ff1119b [project @ 2004-08-31 19:17:44 by jwe]
jwe
parents: 4933
diff changeset
2810 {
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
2811 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
2812 const unsigned char *tmpi = d.iptr ();
4949
f6b63ff1119b [project @ 2004-08-31 19:17:44 by jwe]
jwe
parents: 4933
diff changeset
2813
5544
2286fa5f2e5d [project @ 2005-11-21 18:44:31 by jwe]
jwe
parents: 5404
diff changeset
2814 // Unless explicitly asked for, always print in big-endian
2286fa5f2e5d [project @ 2005-11-21 18:44:31 by jwe]
jwe
parents: 5404
diff changeset
2815 // format for hex and bit formats.
2286fa5f2e5d [project @ 2005-11-21 18:44:31 by jwe]
jwe
parents: 5404
diff changeset
2816 //
2286fa5f2e5d [project @ 2005-11-21 18:44:31 by jwe]
jwe
parents: 5404
diff changeset
2817 // {bit,hex}_format == 1: print big-endian
2286fa5f2e5d [project @ 2005-11-21 18:44:31 by jwe]
jwe
parents: 5404
diff changeset
2818 // {bit,hex}_format == 2: print native
2286fa5f2e5d [project @ 2005-11-21 18:44:31 by jwe]
jwe
parents: 5404
diff changeset
2819
4949
f6b63ff1119b [project @ 2004-08-31 19:17:44 by jwe]
jwe
parents: 4933
diff changeset
2820 if (hex_format)
f6b63ff1119b [project @ 2004-08-31 19:17:44 by jwe]
jwe
parents: 4933
diff changeset
2821 {
23675
f71c0195b19d move octave_preserve_stream_state to octave namespace
John W. Eaton <jwe@octave.org>
parents: 23662
diff changeset
2822 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
2823
27462
730af4e7034a Correctly display integer types with format hex (bug #56966).
Rik <rik@octave.org>
parents: 27154
diff changeset
2824 os.fill ('0');
27491
bea2823affa4 Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents: 27483
diff changeset
2825 if (uppercase_format)
bea2823affa4 Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents: 27483
diff changeset
2826 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
2827 else
bea2823affa4 Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents: 27483
diff changeset
2828 os.flags (std::ios::right | std::ios::hex);
4949
f6b63ff1119b [project @ 2004-08-31 19:17:44 by jwe]
jwe
parents: 4933
diff changeset
2829
21739
c4ab2e54f100 use namespace for oct_mach_info class
John W. Eaton <jwe@octave.org>
parents: 21724
diff changeset
2830 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
2831 {
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
2832 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
2833 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
2834 }
4949
f6b63ff1119b [project @ 2004-08-31 19:17:44 by jwe]
jwe
parents: 4933
diff changeset
2835 else
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2836 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2837 for (int i = sz - 1; i >= 0; i--)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2838 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
2839 }
4949
f6b63ff1119b [project @ 2004-08-31 19:17:44 by jwe]
jwe
parents: 4933
diff changeset
2840 }
f6b63ff1119b [project @ 2004-08-31 19:17:44 by jwe]
jwe
parents: 4933
diff changeset
2841 else if (bit_format)
f6b63ff1119b [project @ 2004-08-31 19:17:44 by jwe]
jwe
parents: 4933
diff changeset
2842 {
21739
c4ab2e54f100 use namespace for oct_mach_info class
John W. Eaton <jwe@octave.org>
parents: 21724
diff changeset
2843 if (octave::mach_info::words_big_endian ())
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2844 {
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
2845 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
2846 PRINT_CHAR_BITS (os, tmpi[i]);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2847 }
4949
f6b63ff1119b [project @ 2004-08-31 19:17:44 by jwe]
jwe
parents: 4933
diff changeset
2848 else
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2849 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2850 if (bit_format > 1)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2851 {
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
2852 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
2853 PRINT_CHAR_BITS_SWAPPED (os, tmpi[i]);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2854 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2855 else
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2856 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2857 for (int i = sz - 1; i >= 0; i--)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2858 PRINT_CHAR_BITS (os, tmpi[i]);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2859 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2860 }
4949
f6b63ff1119b [project @ 2004-08-31 19:17:44 by jwe]
jwe
parents: 4933
diff changeset
2861 }
f6b63ff1119b [project @ 2004-08-31 19:17:44 by jwe]
jwe
parents: 4933
diff changeset
2862 else
f6b63ff1119b [project @ 2004-08-31 19:17:44 by jwe]
jwe
parents: 4933
diff changeset
2863 {
23675
f71c0195b19d move octave_preserve_stream_state to octave namespace
John W. Eaton <jwe@octave.org>
parents: 23662
diff changeset
2864 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
2865
4949
f6b63ff1119b [project @ 2004-08-31 19:17:44 by jwe]
jwe
parents: 4933
diff changeset
2866 os << std::setw (fw)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2867 << typename octave_print_conv<T>::print_conv_type (d);
4949
f6b63ff1119b [project @ 2004-08-31 19:17:44 by jwe]
jwe
parents: 4933
diff changeset
2868
f6b63ff1119b [project @ 2004-08-31 19:17:44 by jwe]
jwe
parents: 4933
diff changeset
2869 if (bank_format)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2870 os << ".00";
4949
f6b63ff1119b [project @ 2004-08-31 19:17:44 by jwe]
jwe
parents: 4933
diff changeset
2871 }
f6b63ff1119b [project @ 2004-08-31 19:17:44 by jwe]
jwe
parents: 4933
diff changeset
2872 }
f6b63ff1119b [project @ 2004-08-31 19:17:44 by jwe]
jwe
parents: 4933
diff changeset
2873
7215
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
2874 template void
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
2875 pr_int (std::ostream&, const octave_int8&, int);
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
2876
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
2877 template void
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
2878 pr_int (std::ostream&, const octave_int16&, int);
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
2879
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
2880 template void
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
2881 pr_int (std::ostream&, const octave_int32&, int);
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
2882
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
2883 template void
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
2884 pr_int (std::ostream&, const octave_int64&, int);
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
2885
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
2886 template void
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
2887 pr_int (std::ostream&, const octave_uint8&, int);
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
2888
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
2889 template void
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
2890 pr_int (std::ostream&, const octave_uint16&, int);
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
2891
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
2892 template void
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
2893 pr_int (std::ostream&, const octave_uint32&, int);
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
2894
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
2895 template void
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
2896 pr_int (std::ostream&, const octave_uint64&, int);
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
2897
21139
538b57866b90 consistently use "typename" intead of "class" in template declarations
John W. Eaton <jwe@octave.org>
parents: 21100
diff changeset
2898 template <typename T>
4901
35bfb4e0b96b [project @ 2004-06-14 18:33:02 by jwe]
jwe
parents: 4869
diff changeset
2899 void
24745
d2467914ce33 enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents: 24737
diff changeset
2900 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
2901 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
2902 const octave_int<T>& val, bool)
7215
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
2903 {
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
2904 if (plus_format)
24781
e6f380f9b2a4 use template for printing matrices in plus format
John W. Eaton <jwe@octave.org>
parents: 24771
diff changeset
2905 pr_plus_format (os, val);
7215
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
2906 else
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
2907 {
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
2908 if (free_format)
23534
b6498c088fca maint: Don't write '> >' for declaration of templates that use templates.
Rik <rik@octave.org>
parents: 23457
diff changeset
2909 os << typename octave_print_conv<octave_int<T>>::print_conv_type (val);
7215
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
2910 else
24745
d2467914ce33 enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents: 24737
diff changeset
2911 {
d2467914ce33 enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents: 24737
diff changeset
2912 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
2913
27183
2d9decd77e58 revamp float_format object
John W. Eaton <jwe@octave.org>
parents: 27156
diff changeset
2914 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
2915 }
7215
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
2916 }
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
2917 }
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
2918
22197
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
2919 #define PRINT_INT_SCALAR_INTERNAL(TYPE) \
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
2920 OCTINTERP_API void \
24745
d2467914ce33 enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents: 24737
diff changeset
2921 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
2922 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
2923 const octave_int<TYPE>& val, bool dummy) \
22197
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
2924 { \
24745
d2467914ce33 enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents: 24737
diff changeset
2925 octave_print_internal_template (os, fmt, val, dummy); \
7215
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
2926 }
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
2927
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
2928 PRINT_INT_SCALAR_INTERNAL (int8_t)
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
2929 PRINT_INT_SCALAR_INTERNAL (uint8_t)
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
2930 PRINT_INT_SCALAR_INTERNAL (int16_t)
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
2931 PRINT_INT_SCALAR_INTERNAL (uint16_t)
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
2932 PRINT_INT_SCALAR_INTERNAL (int32_t)
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
2933 PRINT_INT_SCALAR_INTERNAL (uint32_t)
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
2934 PRINT_INT_SCALAR_INTERNAL (int64_t)
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
2935 PRINT_INT_SCALAR_INTERNAL (uint64_t)
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
2936
21139
538b57866b90 consistently use "typename" intead of "class" in template declarations
John W. Eaton <jwe@octave.org>
parents: 21100
diff changeset
2937 template <typename T>
24782
0eb41237424e more templates for pr-output.cc functions
John W. Eaton <jwe@octave.org>
parents: 24781
diff changeset
2938 static inline void
7215
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
2939 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
2940 bool pr_as_read_syntax, int extra_indent)
4901
35bfb4e0b96b [project @ 2004-06-14 18:33:02 by jwe]
jwe
parents: 4869
diff changeset
2941 {
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2942 // 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
2943 // function. Can fix this with std::is_same from C++11.
4901
35bfb4e0b96b [project @ 2004-06-14 18:33:02 by jwe]
jwe
parents: 4869
diff changeset
2944
23577
80c42f4cca13 maint: Deprecate is_empty and replace with isempty.
Rik <rik@octave.org>
parents: 23565
diff changeset
2945 if (nda.isempty ())
4901
35bfb4e0b96b [project @ 2004-06-14 18:33:02 by jwe]
jwe
parents: 4869
diff changeset
2946 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
2947 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
2948 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
2949 pr_as_read_syntax);
4949
f6b63ff1119b [project @ 2004-08-31 19:17:44 by jwe]
jwe
parents: 4933
diff changeset
2950 else if (plus_format && ! pr_as_read_syntax)
4901
35bfb4e0b96b [project @ 2004-06-14 18:33:02 by jwe]
jwe
parents: 4869
diff changeset
2951 {
35bfb4e0b96b [project @ 2004-06-14 18:33:02 by jwe]
jwe
parents: 4869
diff changeset
2952 int ndims = nda.ndims ();
35bfb4e0b96b [project @ 2004-06-14 18:33:02 by jwe]
jwe
parents: 4869
diff changeset
2953
11570
57632dea2446 attempt better backward compatibility for Array constructors
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
2954 Array<octave_idx_type> ra_idx (dim_vector (ndims, 1), 0);
4949
f6b63ff1119b [project @ 2004-08-31 19:17:44 by jwe]
jwe
parents: 4933
diff changeset
2955
4901
35bfb4e0b96b [project @ 2004-06-14 18:33:02 by jwe]
jwe
parents: 4869
diff changeset
2956 dim_vector dims = nda.dims ();
35bfb4e0b96b [project @ 2004-06-14 18:33:02 by jwe]
jwe
parents: 4869
diff changeset
2957
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5086
diff changeset
2958 octave_idx_type m = 1;
4901
35bfb4e0b96b [project @ 2004-06-14 18:33:02 by jwe]
jwe
parents: 4869
diff changeset
2959
35bfb4e0b96b [project @ 2004-06-14 18:33:02 by jwe]
jwe
parents: 4869
diff changeset
2960 for (int i = 2; i < ndims; i++)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2961 m *= dims(i);
4901
35bfb4e0b96b [project @ 2004-06-14 18:33:02 by jwe]
jwe
parents: 4869
diff changeset
2962
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5086
diff changeset
2963 octave_idx_type nr = dims(0);
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5086
diff changeset
2964 octave_idx_type nc = dims(1);
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5086
diff changeset
2965
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5086
diff changeset
2966 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
2967 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2968 if (m > 1)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2969 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2970 std::string nm = "ans(:,:,";
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2971
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2972 std::ostringstream buf;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2973
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2974 for (int k = 2; k < ndims; k++)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2975 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2976 buf << ra_idx(k) + 1;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2977
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2978 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
2979 buf << ',';
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2980 else
23807
336f89b6208b Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents: 23803
diff changeset
2981 buf << ')';
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2982 }
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 nm += buf.str ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2985
13112
969ed305dde5 Remove all blank lines with "format compact"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 13102
diff changeset
2986 os << nm << " =\n";
969ed305dde5 Remove all blank lines with "format compact"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 13102
diff changeset
2987 if (! Vcompact_format)
969ed305dde5 Remove all blank lines with "format compact"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 13102
diff changeset
2988 os << "\n";
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2989 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2990
29569
29a1f8fd8ee6 move idx_vector classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29494
diff changeset
2991 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
2992
29a1f8fd8ee6 move idx_vector classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29494
diff changeset
2993 idx(0) = octave::idx_vector (':');
29a1f8fd8ee6 move idx_vector classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29494
diff changeset
2994 idx(1) = octave::idx_vector (':');
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2995
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
2996 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
2997 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
2998
11570
57632dea2446 attempt better backward compatibility for Array constructors
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
2999 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
3000
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3001 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
3002 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3003 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
3004 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3005 octave_quit ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3006
30390
a61e1a0f6024 maint: style check C++ files in libinterp/ ahead of 7.1 release.
Rik <rik@octave.org>
parents: 30329
diff changeset
3007 pr_plus_format (os, page(ii, jj));
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3008 }
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 if ((ii < nr - 1) || (i < m -1))
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3011 os << "\n";
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3012 }
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 if (i < m - 1)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3015 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3016 os << "\n";
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3017 increment_index (ra_idx, dims, 2);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3018 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3019 }
4949
f6b63ff1119b [project @ 2004-08-31 19:17:44 by jwe]
jwe
parents: 4933
diff changeset
3020 }
f6b63ff1119b [project @ 2004-08-31 19:17:44 by jwe]
jwe
parents: 4933
diff changeset
3021 else
f6b63ff1119b [project @ 2004-08-31 19:17:44 by jwe]
jwe
parents: 4933
diff changeset
3022 {
f6b63ff1119b [project @ 2004-08-31 19:17:44 by jwe]
jwe
parents: 4933
diff changeset
3023 int ndims = nda.ndims ();
f6b63ff1119b [project @ 2004-08-31 19:17:44 by jwe]
jwe
parents: 4933
diff changeset
3024
f6b63ff1119b [project @ 2004-08-31 19:17:44 by jwe]
jwe
parents: 4933
diff changeset
3025 dim_vector dims = nda.dims ();
f6b63ff1119b [project @ 2004-08-31 19:17:44 by jwe]
jwe
parents: 4933
diff changeset
3026
11570
57632dea2446 attempt better backward compatibility for Array constructors
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
3027 Array<octave_idx_type> ra_idx (dim_vector (ndims, 1), 0);
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5086
diff changeset
3028
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5086
diff changeset
3029 octave_idx_type m = 1;
4949
f6b63ff1119b [project @ 2004-08-31 19:17:44 by jwe]
jwe
parents: 4933
diff changeset
3030
f6b63ff1119b [project @ 2004-08-31 19:17:44 by jwe]
jwe
parents: 4933
diff changeset
3031 for (int i = 2; i < ndims; i++)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3032 m *= dims(i);
4949
f6b63ff1119b [project @ 2004-08-31 19:17:44 by jwe]
jwe
parents: 4933
diff changeset
3033
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5086
diff changeset
3034 octave_idx_type nr = dims(0);
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5086
diff changeset
3035 octave_idx_type nc = dims(1);
4949
f6b63ff1119b [project @ 2004-08-31 19:17:44 by jwe]
jwe
parents: 4933
diff changeset
3036
f6b63ff1119b [project @ 2004-08-31 19:17:44 by jwe]
jwe
parents: 4933
diff changeset
3037 int fw = 0;
f6b63ff1119b [project @ 2004-08-31 19:17:44 by jwe]
jwe
parents: 4933
diff changeset
3038 if (hex_format)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3039 fw = 2 * nda(0).byte_size ();
4949
f6b63ff1119b [project @ 2004-08-31 19:17:44 by jwe]
jwe
parents: 4933
diff changeset
3040 else if (bit_format)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3041 fw = nda(0).nbits ();
4949
f6b63ff1119b [project @ 2004-08-31 19:17:44 by jwe]
jwe
parents: 4933
diff changeset
3042 else
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3043 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3044 bool isneg = false;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3045 int digits = 0;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3046
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3047 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
3048 {
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
3049 int new_digits
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
3050 = 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
3051 (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
3052
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3053 if (new_digits > digits)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3054 digits = new_digits;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3055
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3056 if (! isneg)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
3057 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
3058 }
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 fw = digits + isneg;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3061 }
4949
f6b63ff1119b [project @ 2004-08-31 19:17:44 by jwe]
jwe
parents: 4933
diff changeset
3062
6788
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
3063 int column_width = fw + (rat_format ? 0 : (bank_format ? 5 : 2));
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5086
diff changeset
3064 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
3065 int max_width = octave::command_editor::terminal_cols () - extra_indent;
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5086
diff changeset
3066 octave_idx_type inc = nc;
4949
f6b63ff1119b [project @ 2004-08-31 19:17:44 by jwe]
jwe
parents: 4933
diff changeset
3067 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
3068 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3069 inc = max_width / column_width;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3070 if (inc == 0)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3071 inc++;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3072 }
4949
f6b63ff1119b [project @ 2004-08-31 19:17:44 by jwe]
jwe
parents: 4933
diff changeset
3073
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5086
diff changeset
3074 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
3075 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3076 if (m > 1)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3077 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3078 std::string nm = "ans(:,:,";
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3079
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3080 std::ostringstream buf;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3081
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3082 for (int k = 2; k < ndims; k++)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3083 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3084 buf << ra_idx(k) + 1;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3085
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3086 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
3087 buf << ',';
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3088 else
23807
336f89b6208b Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents: 23803
diff changeset
3089 buf << ')';
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3090 }
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 nm += buf.str ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3093
13112
969ed305dde5 Remove all blank lines with "format compact"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 13102
diff changeset
3094 os << nm << " =\n";
969ed305dde5 Remove all blank lines with "format compact"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 13102
diff changeset
3095 if (! Vcompact_format)
969ed305dde5 Remove all blank lines with "format compact"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 13102
diff changeset
3096 os << "\n";
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3097 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3098
29569
29a1f8fd8ee6 move idx_vector classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29494
diff changeset
3099 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
3100
29a1f8fd8ee6 move idx_vector classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29494
diff changeset
3101 idx(0) = octave::idx_vector (':');
29a1f8fd8ee6 move idx_vector classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29494
diff changeset
3102 idx(1) = octave::idx_vector (':');
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3103
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3104 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
3105 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
3106
11570
57632dea2446 attempt better backward compatibility for Array constructors
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
3107 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
3108
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3109 if (free_format)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3110 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3111 if (pr_as_read_syntax)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3112 os << "[\n";
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3113
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3114 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
3115 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3116 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
3117 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3118 octave_quit ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3119 os << " ";
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3120 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
3121 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3122 os << "\n";
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3123 }
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 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
3126 os << ']';
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3127 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3128 else
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3129 {
23675
f71c0195b19d move octave_preserve_stream_state to octave namespace
John W. Eaton <jwe@octave.org>
parents: 23662
diff changeset
3130 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
3131
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3132 octave_idx_type n_rows = page.rows ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3133 octave_idx_type n_cols = page.cols ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3134
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3135 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
3136 {
24737
5be92b26ef8f Fix alignment of numbers in fixed_point_format display (bug #53083).
Rik <rik@octave.org>
parents: 24673
diff changeset
3137 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
3138 : n_cols);
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3139
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3140 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
3141 extra_indent);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3142
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3143 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
3144 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3145 os << std::setw (extra_indent) << "";
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11572
diff changeset
3146
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3147 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
3148 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3149 octave_quit ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3150 os << " ";
30390
a61e1a0f6024 maint: style check C++ files in libinterp/ ahead of 7.1 release.
Rik <rik@octave.org>
parents: 30329
diff changeset
3151 pr_int (os, page(ii, jj), fw);
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3152 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3153 if ((ii < n_rows - 1) || (i < m -1))
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3154 os << "\n";
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3155 }
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 if (i < m - 1)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3160 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3161 os << "\n";
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3162 increment_index (ra_idx, dims, 2);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3163 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3164 }
4901
35bfb4e0b96b [project @ 2004-06-14 18:33:02 by jwe]
jwe
parents: 4869
diff changeset
3165 }
35bfb4e0b96b [project @ 2004-06-14 18:33:02 by jwe]
jwe
parents: 4869
diff changeset
3166 }
35bfb4e0b96b [project @ 2004-06-14 18:33:02 by jwe]
jwe
parents: 4869
diff changeset
3167
22197
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
3168 #define PRINT_INT_ARRAY_INTERNAL(TYPE) \
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
3169 OCTINTERP_API void \
7215
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
3170 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
3171 bool pr_as_read_syntax, int extra_indent) \
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
3172 { \
7215
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
3173 octave_print_internal_template (os, nda, pr_as_read_syntax, extra_indent); \
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
3174 }
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
3175
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
3176 PRINT_INT_ARRAY_INTERNAL (octave_int8)
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
3177 PRINT_INT_ARRAY_INTERNAL (octave_uint8)
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
3178 PRINT_INT_ARRAY_INTERNAL (octave_int16)
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
3179 PRINT_INT_ARRAY_INTERNAL (octave_uint16)
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
3180 PRINT_INT_ARRAY_INTERNAL (octave_int32)
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
3181 PRINT_INT_ARRAY_INTERNAL (octave_uint32)
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
3182 PRINT_INT_ARRAY_INTERNAL (octave_int64)
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7097
diff changeset
3183 PRINT_INT_ARRAY_INTERNAL (octave_uint64)
4901
35bfb4e0b96b [project @ 2004-06-14 18:33:02 by jwe]
jwe
parents: 4869
diff changeset
3184
8012
63dbb85452cc fix extern decls in .cc files
John W. Eaton <jwe@octave.org>
parents: 7896
diff changeset
3185 void
3933
f9ea3dcf58ee [project @ 2002-05-15 03:21:00 by jwe]
jwe
parents: 3928
diff changeset
3186 octave_print_internal (std::ostream&, const Cell&, bool, int, bool)
3928
e8627dc4bdf2 [project @ 2002-05-03 19:56:01 by jwe]
jwe
parents: 3776
diff changeset
3187 {
3933
f9ea3dcf58ee [project @ 2002-05-15 03:21:00 by jwe]
jwe
parents: 3928
diff changeset
3188 panic_impossible ();
3928
e8627dc4bdf2 [project @ 2002-05-03 19:56:01 by jwe]
jwe
parents: 3776
diff changeset
3189 }
e8627dc4bdf2 [project @ 2002-05-03 19:56:01 by jwe]
jwe
parents: 3776
diff changeset
3190
17866
ea0ecbe2eaf5 display matrix values in GUI workspace viewer (bug #40499)
John W. Eaton <jwe@octave.org>
parents: 17847
diff changeset
3191 void
19620
a1d172bfcb2f eliminate some unused variable and typedef warnings
John W. Eaton <jwe@octave.org>
parents: 19367
diff changeset
3192 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
3193 {
ea0ecbe2eaf5 display matrix values in GUI workspace viewer (bug #40499)
John W. Eaton <jwe@octave.org>
parents: 17847
diff changeset
3194 panic_impossible ();
ea0ecbe2eaf5 display matrix values in GUI workspace viewer (bug #40499)
John W. Eaton <jwe@octave.org>
parents: 17847
diff changeset
3195 }
ea0ecbe2eaf5 display matrix values in GUI workspace viewer (bug #40499)
John W. Eaton <jwe@octave.org>
parents: 17847
diff changeset
3196
29958
32c3a5805893 move DEFUN and DEFMETHOD functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3197 OCTAVE_NAMESPACE_BEGIN
32c3a5805893 move DEFUN and DEFMETHOD functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3198
20915
a3359fe50966 remove unused nargout variables
John W. Eaton <jwe@octave.org>
parents: 20909
diff changeset
3199 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
3200 doc: /* -*- texinfo -*-
27154
ecc16b72bfb3 doc: Redo documentation for rats() function.
Rik <rik@octave.org>
parents: 26585
diff changeset
3201 @deftypefn {} {@var{s} =} rats (@var{x})
ecc16b72bfb3 doc: Redo documentation for rats() function.
Rik <rik@octave.org>
parents: 26585
diff changeset
3202 @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
3203 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
3204
27154
ecc16b72bfb3 doc: Redo documentation for rats() function.
Rik <rik@octave.org>
parents: 26585
diff changeset
3205 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
3206 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
3207 @code{@var{x} = @var{N}/@var{D}}.
ecc16b72bfb3 doc: Redo documentation for rats() function.
Rik <rik@octave.org>
parents: 26585
diff changeset
3208
ecc16b72bfb3 doc: Redo documentation for rats() function.
Rik <rik@octave.org>
parents: 26585
diff changeset
3209 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
3210 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
3211
ecc16b72bfb3 doc: Redo documentation for rats() function.
Rik <rik@octave.org>
parents: 26585
diff changeset
3212 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
3213 @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
3214
ecc16b72bfb3 doc: Redo documentation for rats() function.
Rik <rik@octave.org>
parents: 26585
diff changeset
3215 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
3216
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
3217 @example
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
3218 @group
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
3219 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
3220 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
3221 @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
3222 @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
3223
27154
ecc16b72bfb3 doc: Redo documentation for rats() function.
Rik <rik@octave.org>
parents: 26585
diff changeset
3224 @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
3225 @end deftypefn */)
6788
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
3226 {
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
3227 int nargin = args.length ();
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
3228
20909
03e4ddd49396 omit unnecessary nargout checks
John W. Eaton <jwe@octave.org>
parents: 20897
diff changeset
3229 if (nargin < 1 || nargin > 2)
7896
92c26470fe56 Frats fix for nargin==0
David Bateman <dbateman@free.fr>
parents: 7789
diff changeset
3230 print_usage ();
20801
a542a9bf177e eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20555
diff changeset
3231
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20925
diff changeset
3232 octave_value arg = args(0);
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20925
diff changeset
3233
23586
f6c5db0a02e7 maint: Deprecate is_numeric_type and replace with isnumeric.
Rik <rik@octave.org>
parents: 23577
diff changeset
3234 if (! arg.isnumeric ())
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20925
diff changeset
3235 error ("rats: X must be numeric");
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20925
diff changeset
3236
27477
b470734a025e Return an empty string from rats when input is empty (bug #57004).
Rik <rik@octave.org>
parents: 27476
diff changeset
3237 if (arg.isempty ())
b470734a025e Return an empty string from rats when input is empty (bug #57004).
Rik <rik@octave.org>
parents: 27476
diff changeset
3238 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
3239
27476
b8b1bf5b2bbf Reshape N-D arrays to 2-D arrays within rats() (bug #57003).
Rik <rik@octave.org>
parents: 27475
diff changeset
3240 // 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
3241 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
3242 {
b8b1bf5b2bbf Reshape N-D arrays to 2-D arrays within rats() (bug #57003).
Rik <rik@octave.org>
parents: 27475
diff changeset
3243 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
3244 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
3245 }
b8b1bf5b2bbf Reshape N-D arrays to 2-D arrays within rats() (bug #57003).
Rik <rik@octave.org>
parents: 27475
diff changeset
3246
29961
7d6709900da7 eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents: 29958
diff changeset
3247 unwind_protect frame;
20801
a542a9bf177e eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20555
diff changeset
3248
a542a9bf177e eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20555
diff changeset
3249 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
3250
a542a9bf177e eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20555
diff changeset
3251 rat_string_len = 9;
a542a9bf177e eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20555
diff changeset
3252 if (nargin == 2)
a542a9bf177e eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20555
diff changeset
3253 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
3254
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20925
diff changeset
3255 frame.protect_var (rat_format);
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20925
diff changeset
3256
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20925
diff changeset
3257 rat_format = true;
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20925
diff changeset
3258
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20925
diff changeset
3259 std::ostringstream buf;
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20925
diff changeset
3260 arg.print (buf);
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20925
diff changeset
3261 std::string s = buf.str ();
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20925
diff changeset
3262
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20925
diff changeset
3263 std::list<std::string> lst;
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20925
diff changeset
3264
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
3265 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
3266 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
3267
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20925
diff changeset
3268 while (n < s_len)
6788
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
3269 {
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
3270 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
3271
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20925
diff changeset
3272 if (m == std::string::npos)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3273 {
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20925
diff changeset
3274 lst.push_back (s.substr (n));
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20925
diff changeset
3275 break;
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3276 }
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20925
diff changeset
3277 else
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20925
diff changeset
3278 {
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20925
diff changeset
3279 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
3280 n = m + 1;
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20925
diff changeset
3281 }
6788
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
3282 }
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20925
diff changeset
3283
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20925
diff changeset
3284 return ovl (string_vector (lst));
6788
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
3285 }
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
3286
26111
3e44ed9d50b6 Move rational_approx to liboctave (patch #9084).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26009
diff changeset
3287 /*
28011
b31a118729ed update bug status for tests
John W. Eaton <jwe@octave.org>
parents: 27923
diff changeset
3288 %!test <*56941>
26716
daa281e03d9a Harden BIST tests against changes in format().
Rik <rik@octave.org>
parents: 26585
diff changeset
3289 %! [old_fmt, old_spacing] = format ();
daa281e03d9a Harden BIST tests against changes in format().
Rik <rik@octave.org>
parents: 26585
diff changeset
3290 %! unwind_protect
daa281e03d9a Harden BIST tests against changes in format().
Rik <rik@octave.org>
parents: 26585
diff changeset
3291 %! format short;
daa281e03d9a Harden BIST tests against changes in format().
Rik <rik@octave.org>
parents: 26585
diff changeset
3292 %! assert (rats (-2.0005, 10), "-4001/2000");
daa281e03d9a Harden BIST tests against changes in format().
Rik <rik@octave.org>
parents: 26585
diff changeset
3293 %! assert (strtrim (rats (2.0005, 30)), "4001/2000");
daa281e03d9a Harden BIST tests against changes in format().
Rik <rik@octave.org>
parents: 26585
diff changeset
3294 %! 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
3295 %! 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
3296 %! unwind_protect_cleanup
daa281e03d9a Harden BIST tests against changes in format().
Rik <rik@octave.org>
parents: 26585
diff changeset
3297 %! format (old_fmt);
daa281e03d9a Harden BIST tests against changes in format().
Rik <rik@octave.org>
parents: 26585
diff changeset
3298 %! format (old_spacing);
daa281e03d9a Harden BIST tests against changes in format().
Rik <rik@octave.org>
parents: 26585
diff changeset
3299 %! 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
3300
28011
b31a118729ed update bug status for tests
John W. Eaton <jwe@octave.org>
parents: 27923
diff changeset
3301 %!test <*57003>
27476
b8b1bf5b2bbf Reshape N-D arrays to 2-D arrays within rats() (bug #57003).
Rik <rik@octave.org>
parents: 27475
diff changeset
3302 %! 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
3303 %! 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
3304 %! 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
3305 %! 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
3306 %! 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
3307
28011
b31a118729ed update bug status for tests
John W. Eaton <jwe@octave.org>
parents: 27923
diff changeset
3308 %!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
3309
29494
76269aa97398 if bug number is supplied, prefer '%!test' over '%!xtest'
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
3310 %!test <57704>
28028
79b583e31590 Segregate remaining failing rats() tests in to BIST test for bug #57704.
Rik <rik@octave.org>
parents: 28011
diff changeset
3311 %! [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
3312 %! unwind_protect
79b583e31590 Segregate remaining failing rats() tests in to BIST test for bug #57704.
Rik <rik@octave.org>
parents: 28011
diff changeset
3313 %! format short;
79b583e31590 Segregate remaining failing rats() tests in to BIST test for bug #57704.
Rik <rik@octave.org>
parents: 28011
diff changeset
3314 %! 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
3315 %! 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
3316 %! unwind_protect_cleanup
79b583e31590 Segregate remaining failing rats() tests in to BIST test for bug #57704.
Rik <rik@octave.org>
parents: 28011
diff changeset
3317 %! format (old_fmt);
79b583e31590 Segregate remaining failing rats() tests in to BIST test for bug #57704.
Rik <rik@octave.org>
parents: 28011
diff changeset
3318 %! format (old_spacing);
79b583e31590 Segregate remaining failing rats() tests in to BIST test for bug #57704.
Rik <rik@octave.org>
parents: 28011
diff changeset
3319 %! end_unwind_protect
79b583e31590 Segregate remaining failing rats() tests in to BIST test for bug #57704.
Rik <rik@octave.org>
parents: 28011
diff changeset
3320
26111
3e44ed9d50b6 Move rational_approx to liboctave (patch #9084).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26009
diff changeset
3321 */
3e44ed9d50b6 Move rational_approx to liboctave (patch #9084).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26009
diff changeset
3322
3685
9d8306640373 [project @ 2000-06-28 19:25:02 by jwe]
jwe
parents: 3683
diff changeset
3323 DEFUN (disp, args, nargout,
22898
9baa19102908 refactor display and disp functions (bug #49794)
John W. Eaton <jwe@octave.org>
parents: 22881
diff changeset
3324 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
3325 doc: /* -*- texinfo -*-
24764
36ca11f78553 Document second calling form of disp().
Rik <rik@octave.org>
parents: 23219
diff changeset
3326 @deftypefn {} {} disp (@var{x})
36ca11f78553 Document second calling form of disp().
Rik <rik@octave.org>
parents: 23219
diff changeset
3327 @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
3328 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
3329
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
3330 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
3331
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
3332 @example
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
3333 @group
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
3334 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
3335
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
3336 @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
3337 @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
3338 @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
3339 @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
3340
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
3341 @noindent
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
3342 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
3343
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
3344 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
3345 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
3346 @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
3347 @end deftypefn */)
3685
9d8306640373 [project @ 2000-06-28 19:25:02 by jwe]
jwe
parents: 3683
diff changeset
3348 {
20909
03e4ddd49396 omit unnecessary nargout checks
John W. Eaton <jwe@octave.org>
parents: 20897
diff changeset
3349 if (args.length () != 1)
20801
a542a9bf177e eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20555
diff changeset
3350 print_usage ();
a542a9bf177e eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20555
diff changeset
3351
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20925
diff changeset
3352 octave_value_list retval;
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20925
diff changeset
3353
20801
a542a9bf177e eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20555
diff changeset
3354 octave_value arg = args(0);
a542a9bf177e eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20555
diff changeset
3355
a542a9bf177e eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20555
diff changeset
3356 if (nargout == 0)
a542a9bf177e eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20555
diff changeset
3357 arg.print (octave_stdout);
a542a9bf177e eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20555
diff changeset
3358 else
3685
9d8306640373 [project @ 2000-06-28 19:25:02 by jwe]
jwe
parents: 3683
diff changeset
3359 {
20801
a542a9bf177e eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20555
diff changeset
3360 std::ostringstream buf;
a542a9bf177e eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20555
diff changeset
3361 arg.print (buf);
23450
855122b993da maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents: 23433
diff changeset
3362 retval = (octave_value (buf.str (), arg.is_dq_string () ? '"' : '\''));
3685
9d8306640373 [project @ 2000-06-28 19:25:02 by jwe]
jwe
parents: 3683
diff changeset
3363 }
9d8306640373 [project @ 2000-06-28 19:25:02 by jwe]
jwe
parents: 3683
diff changeset
3364
9d8306640373 [project @ 2000-06-28 19:25:02 by jwe]
jwe
parents: 3683
diff changeset
3365 return retval;
9d8306640373 [project @ 2000-06-28 19:25:02 by jwe]
jwe
parents: 3683
diff changeset
3366 }
9d8306640373 [project @ 2000-06-28 19:25:02 by jwe]
jwe
parents: 3683
diff changeset
3367
23738
8acd390d16c9 don't use singleton for stream_list object
John W. Eaton <jwe@octave.org>
parents: 23675
diff changeset
3368 DEFMETHOD (fdisp, interp, args, ,
8acd390d16c9 don't use singleton for stream_list object
John W. Eaton <jwe@octave.org>
parents: 23675
diff changeset
3369 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
3370 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
3371 @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
3372 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
3373
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
3374 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
3375
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
3376 @example
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
3377 @group
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
3378 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
3379
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
3380 @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
3381 @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
3382 @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
3383 @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
3384
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
3385 @noindent
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
3386 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
3387 @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
3388 @end deftypefn */)
3685
9d8306640373 [project @ 2000-06-28 19:25:02 by jwe]
jwe
parents: 3683
diff changeset
3389 {
20819
f428cbe7576f eliminate unnecessary uses of nargin
John W. Eaton <jwe@octave.org>
parents: 20801
diff changeset
3390 if (args.length () != 2)
20801
a542a9bf177e eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20555
diff changeset
3391 print_usage ();
a542a9bf177e eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20555
diff changeset
3392
29961
7d6709900da7 eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents: 29958
diff changeset
3393 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
3394
8acd390d16c9 don't use singleton for stream_list object
John W. Eaton <jwe@octave.org>
parents: 23675
diff changeset
3395 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
3396
29961
7d6709900da7 eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents: 29958
diff changeset
3397 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
3398
a542a9bf177e eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20555
diff changeset
3399 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
3400
a542a9bf177e eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20555
diff changeset
3401 octave_value arg = args(1);
a542a9bf177e eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20555
diff changeset
3402
a542a9bf177e eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20555
diff changeset
3403 if (osp)
a542a9bf177e eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20555
diff changeset
3404 arg.print (*osp);
3685
9d8306640373 [project @ 2000-06-28 19:25:02 by jwe]
jwe
parents: 3683
diff changeset
3405 else
20801
a542a9bf177e eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20555
diff changeset
3406 error ("fdisp: stream FID not open for writing");
3685
9d8306640373 [project @ 2000-06-28 19:25:02 by jwe]
jwe
parents: 3683
diff changeset
3407
20941
a4f5da7c5463 maint: Replace "octave_value_list ()" with "ovl ()".
Rik <rik@octave.org>
parents: 20940
diff changeset
3408 return ovl ();
3685
9d8306640373 [project @ 2000-06-28 19:25:02 by jwe]
jwe
parents: 3683
diff changeset
3409 }
9d8306640373 [project @ 2000-06-28 19:25:02 by jwe]
jwe
parents: 3683
diff changeset
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
e1345a9002e8 pr-output.cc: new test
John W. Eaton <jwe@octave.org>
parents: 9612
diff changeset
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
e1345a9002e8 pr-output.cc: new test
John W. Eaton <jwe@octave.org>
parents: 9612
diff changeset
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
e1345a9002e8 pr-output.cc: new test
John W. Eaton <jwe@octave.org>
parents: 9612
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
3561 init_format_state (void)
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
3562 {
2387
be4616e36133 [project @ 1996-10-12 18:45:13 by jwe]
jwe
parents: 2317
diff changeset
3563 free_format = false;
be4616e36133 [project @ 1996-10-12 18:45:13 by jwe]
jwe
parents: 2317
diff changeset
3564 plus_format = false;
6788
c81a0f3f5a82 [project @ 2007-07-23 22:05:29 by dbateman]
dbateman
parents: 6670
diff changeset
3565 rat_format = false;
2387
be4616e36133 [project @ 1996-10-12 18:45:13 by jwe]
jwe
parents: 2317
diff changeset
3566 bank_format = false;
3608
ccfafa1d8510 [project @ 2000-03-15 08:47:35 by jwe]
jwe
parents: 3568
diff changeset
3567 hex_format = 0;
1309
c0187e1c02f9 [project @ 1995-06-25 04:00:46 by jwe]
jwe
parents: 1282
diff changeset
3568 bit_format = 0;
2387
be4616e36133 [project @ 1996-10-12 18:45:13 by jwe]
jwe
parents: 2317
diff changeset
3569 print_e = false;
4509
9ec494b3eb5f [project @ 2003-09-11 19:08:25 by jwe]
jwe
parents: 4431
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
3572 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1742
diff changeset
3577 set_format_style (int argc, const string_vector& argv)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3617 if (arg == "short")
27500
1ef42010c53b Allow multiple arguments to format().
Rik <rik@octave.org>
parents: 27499
diff changeset
3618 {
27518
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3619 format = arg;
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3620 init_format_state ();
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3621 if (argc > 0)
27500
1ef42010c53b Allow multiple arguments to format().
Rik <rik@octave.org>
parents: 27499
diff changeset
3622 {
27518
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3623 arg = argv[idx];
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3624 if (arg == "e")
27500
1ef42010c53b Allow multiple arguments to format().
Rik <rik@octave.org>
parents: 27499
diff changeset
3625 {
27518
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3626 print_e = true;
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3627 format.append (arg);
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3628 argc--; idx++;
27500
1ef42010c53b Allow multiple arguments to format().
Rik <rik@octave.org>
parents: 27499
diff changeset
3629 }
27518
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3630 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
3631 {
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3632 init_format_state ();
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3633 print_g = true;
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3634 format.append (arg);
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3635 argc--; idx++;
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3636 }
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3637 else if (arg == "eng")
27500
1ef42010c53b Allow multiple arguments to format().
Rik <rik@octave.org>
parents: 27499
diff changeset
3638 {
27518
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3639 init_format_state ();
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3640 print_eng = true;
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3641 format.append (arg);
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3642 argc--; idx++;
27500
1ef42010c53b Allow multiple arguments to format().
Rik <rik@octave.org>
parents: 27499
diff changeset
3643 }
1ef42010c53b Allow multiple arguments to format().
Rik <rik@octave.org>
parents: 27499
diff changeset
3644 }
27518
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3645 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
3646 }
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3647 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
3648 {
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3649 format = arg;
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3650 init_format_state ();
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3651 print_e = true;
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3652 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
3653 }
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3654 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
3655 {
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3656 format = arg;
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3657 init_format_state ();
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3658 print_g = true;
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3659 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
3660 }
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3661 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
3662 {
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3663 format = arg;
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3664 init_format_state ();
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3665 print_eng = true;
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3666 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
3667 }
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3668 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
3669 {
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3670 format = arg;
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3671 init_format_state ();
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3672 if (argc > 0)
27500
1ef42010c53b Allow multiple arguments to format().
Rik <rik@octave.org>
parents: 27499
diff changeset
3673 {
27518
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3674 arg = argv[idx];
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 if (arg == "e")
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 print_e = true;
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3679 format.append (arg);
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3680 argc--; idx++;
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3681 }
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3682 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
3683 {
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3684 print_g = true;
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3685 format.append (arg);
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3686 argc--; idx++;
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3687 }
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3688 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
3689 {
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3690 print_eng = true;
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3691 format.append (arg);
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3692 argc--; idx++;
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3693 }
27500
1ef42010c53b Allow multiple arguments to format().
Rik <rik@octave.org>
parents: 27499
diff changeset
3694 }
27518
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3695 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
3696 }
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3697 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
3698 {
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3699 format = arg;
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3700 init_format_state ();
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3701 print_e = true;
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3702 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
3703 }
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3704 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
3705 {
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3706 format = arg;
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3707 init_format_state ();
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3708 print_g = true;
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3709 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
3710 }
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3711 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
3712 {
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3713 format = arg;
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3714 init_format_state ();
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3715 print_eng = true;
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3716 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
3717 }
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3718 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
3719 {
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3720 format = arg;
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3721 init_format_state ();
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3722 hex_format = 1;
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3723 }
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3724 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
3725 {
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3726 format = arg;
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3727 init_format_state ();
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3728 hex_format = 2;
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3729 }
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3730 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
3731 {
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3732 format = arg;
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3733 init_format_state ();
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3734 bit_format = 1;
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3735 }
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3736 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
3737 {
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3738 format = arg;
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3739 init_format_state ();
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3740 bit_format = 2;
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3741 }
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3742 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
3743 {
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3744 format = arg;
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3745 init_format_state ();
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3746 plus_format = true;
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3747 if (argc > 0)
27500
1ef42010c53b Allow multiple arguments to format().
Rik <rik@octave.org>
parents: 27499
diff changeset
3748 {
27518
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3749 arg = argv[idx];
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3750
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3751 if (arg.length () == 3)
27500
1ef42010c53b Allow multiple arguments to format().
Rik <rik@octave.org>
parents: 27499
diff changeset
3752 {
27518
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3753 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
3754 format.append (arg);
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3755 argc--; idx++;
27500
1ef42010c53b Allow multiple arguments to format().
Rik <rik@octave.org>
parents: 27499
diff changeset
3756 }
1ef42010c53b Allow multiple arguments to format().
Rik <rik@octave.org>
parents: 27499
diff changeset
3757 else
1ef42010c53b Allow multiple arguments to format().
Rik <rik@octave.org>
parents: 27499
diff changeset
3758 plus_format_chars = "+- ";
1ef42010c53b Allow multiple arguments to format().
Rik <rik@octave.org>
parents: 27499
diff changeset
3759 }
1ef42010c53b Allow multiple arguments to format().
Rik <rik@octave.org>
parents: 27499
diff changeset
3760 else
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 = "+- ";
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3762 }
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3763 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
3764 {
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3765 format = arg;
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3766 init_format_state ();
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3767 rat_format = true;
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3768 }
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3769 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
3770 {
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3771 format = arg;
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3772 init_format_state ();
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3773 bank_format = true;
27500
1ef42010c53b Allow multiple arguments to format().
Rik <rik@octave.org>
parents: 27499
diff changeset
3774 }
27518
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3775 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
3776 {
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3777 format = arg;
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3778 init_format_state ();
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3779 free_format = true;
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3780 }
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3781 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
3782 {
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3783 format = arg;
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3784 init_format_state ();
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3785 free_format = true;
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3786 }
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3787 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
3788 Vcompact_format = true;
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 == "loose")
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3790 Vcompact_format = false;
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3791 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
3792 uppercase_format = false;
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3793 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
3794 uppercase_format = true;
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3795 else
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3796 error ("format: unrecognized format state '%s'", arg.c_str ());
27500
1ef42010c53b Allow multiple arguments to format().
Rik <rik@octave.org>
parents: 27499
diff changeset
3797 }
18735
28eab2d84190 Add callbacks for root properties format and formatspacing (bug #42135).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18676
diff changeset
3798
28eab2d84190 Add callbacks for root properties format and formatspacing (bug #42135).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18676
diff changeset
3799 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
3800
25479159213b Don't change anything if format() fails during parsing of multiple arguments.
Rik <rik@octave.org>
parents: 27500
diff changeset
3801 // 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
3802 frame.discard ();
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
3803 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
3804
22881
f84aa17075d4 Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents: 22868
diff changeset
3805 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
3806 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
3807 @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
3808 @deftypefnx {} {} format options
27491
bea2823affa4 Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents: 27483
diff changeset
3809 @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
3810 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
3811 normal echoing mechanism.
f84aa17075d4 Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents: 22868
diff changeset
3812
f84aa17075d4 Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents: 22868
diff changeset
3813 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
3814 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
3815 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
3816 @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
3817
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
3818 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
3819 (option @samp{short}, option @samp{lowercase}, and option @samp{loose} format
bea2823affa4 Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents: 27483
diff changeset
3820 for matrices). If @code{format} is invoked without any options, this default
bea2823affa4 Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents: 27483
diff changeset
3821 format is restored.
bea2823affa4 Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents: 27483
diff changeset
3822
27521
37f9eb2c05e0 doc: improve format() docstring and NEWS announcement.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 27518
diff changeset
3823 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
3824 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
3825
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
3826 @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
3827 @item short
24784
4d945f2e5914 eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents: 24782
diff changeset
3828 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
3829
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
3830 @item long
24784
4d945f2e5914 eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents: 24782
diff changeset
3831 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
3832
f84aa17075d4 Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents: 22868
diff changeset
3833 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
3834 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
3835
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
3836 @item short e
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
3837 @itemx long e
22881
f84aa17075d4 Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents: 22868
diff changeset
3838 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
3839 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
3840 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
3841 significant digits and single values are displayed with 8. For example,
4d945f2e5914 eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents: 24782
diff changeset
3842 with the @samp{short e} format, @code{pi} is displayed as @code{3.1416e+00}.
21966
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
3843
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
3844 @item short g
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
3845 @itemx long g
22881
f84aa17075d4 Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents: 22868
diff changeset
3846 Optimally choose between fixed point and exponential format based on the
f84aa17075d4 Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents: 22868
diff changeset
3847 magnitude of the number. For example, with the @samp{short g} 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
3848 @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
3849
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
3850 @example
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
3851 @group
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
3852 ans =
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
3853
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
3854 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
3855 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
3856 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
3857 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
3858 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
3859 @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
3860 @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
3861
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
3862 @item short eng
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
3863 @itemx long eng
22881
f84aa17075d4 Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents: 22868
diff changeset
3864 Identical to @samp{short e} or @samp{long e} but displays the value using an
f84aa17075d4 Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents: 22868
diff changeset
3865 engineering format, where the exponent is divisible by 3. For example, with
24784
4d945f2e5914 eliminate output_max_field width; limit output precision (bug #53167)
John W. Eaton <jwe@octave.org>
parents: 24782
diff changeset
3866 the @samp{short eng} format, @code{10 * pi} is displayed as @code{31.416e+00}.
21966
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
3867
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
3868 @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
3869 @itemx none
22881
f84aa17075d4 Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents: 22868
diff changeset
3870 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
3871 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
3872 @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
3873 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
3874 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
3875 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
3876 @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
3877 @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
3878
22881
f84aa17075d4 Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents: 22868
diff changeset
3879 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
3880 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
3881
24771
d277debe9c2f doc: Update format() documentation for "free", "+", "bank" formats (bug #53169).
Rik <rik@octave.org>
parents: 24770
diff changeset
3882 @table @asis
d277debe9c2f doc: Update format() documentation for "free", "+", "bank" formats (bug #53169).
Rik <rik@octave.org>
parents: 24770
diff changeset
3883 @item @qcode{"+"}
d277debe9c2f doc: Update format() documentation for "free", "+", "bank" formats (bug #53169).
Rik <rik@octave.org>
parents: 24770
diff changeset
3884 @itemx @qcode{"+"} @qcode{"@var{chars}"}
d277debe9c2f doc: Update format() documentation for "free", "+", "bank" formats (bug #53169).
Rik <rik@octave.org>
parents: 24770
diff changeset
3885 @itemx @code{plus}
d277debe9c2f doc: Update format() documentation for "free", "+", "bank" formats (bug #53169).
Rik <rik@octave.org>
parents: 24770
diff changeset
3886 @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
3887 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
3888 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
3889 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
3890 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
3891 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
3892
f84aa17075d4 Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents: 22868
diff changeset
3893 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
3894 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
3895 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
3896 @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
3897
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
3898 @example
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
3899 @group
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
3900 ans =
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
3901
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
3902 +.-
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
3903 -.+
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
3904 @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
3905 @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
3906
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
3907 @item bank
24771
d277debe9c2f doc: Update format() documentation for "free", "+", "bank" formats (bug #53169).
Rik <rik@octave.org>
parents: 24770
diff changeset
3908 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
3909 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
3910 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
3911
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
3912 @item native-hex
22881
f84aa17075d4 Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents: 22868
diff changeset
3913 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
3914 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
3915 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
3916 @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
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 @item hex
22881
f84aa17075d4 Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents: 22868
diff changeset
3919 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
3920 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
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 native-bit
22881
f84aa17075d4 Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents: 22868
diff changeset
3923 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
3924 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
3925
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
3926 @example
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
3927 @group
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
3928 01000000000010010010000111111011
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
3929 01010100010001000010110100011000
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
3930 @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
3931 @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
3932
22881
f84aa17075d4 Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents: 22868
diff changeset
3933 (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
3934 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
3935 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
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 bit
22881
f84aa17075d4 Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents: 22868
diff changeset
3938 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
3939 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
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 @item rat
22881
f84aa17075d4 Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents: 22868
diff changeset
3942 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
3943 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
3944 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
3945 @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
3946
27491
bea2823affa4 Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents: 27483
diff changeset
3947 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
3948
bea2823affa4 Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents: 27483
diff changeset
3949 @table @code
bea2823affa4 Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents: 27483
diff changeset
3950 @item lowercase (default)
bea2823affa4 Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents: 27483
diff changeset
3951 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
3952 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
3953
bea2823affa4 Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents: 27483
diff changeset
3954 @item uppercase
bea2823affa4 Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents: 27483
diff changeset
3955 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
3956 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
3957 @end table
bea2823affa4 Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents: 27483
diff changeset
3958
21966
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
3959 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
3960
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
3961 @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
3962 @item compact
22881
f84aa17075d4 Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents: 22868
diff changeset
3963 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
3964 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
3965
27491
bea2823affa4 Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents: 27483
diff changeset
3966 @item loose (default)
22881
f84aa17075d4 Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents: 22868
diff changeset
3967 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
3968 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
3969 @end table
22881
f84aa17075d4 Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents: 22868
diff changeset
3970
27522
3912e3a74e31 doc: Use "rightmost" to describe how format() behaves with multiple arguments.
Rik <rik@octave.org>
parents: 27521
diff changeset
3971 If @code{format} is called with multiple competing options, the rightmost one
27521
37f9eb2c05e0 doc: improve format() docstring and NEWS announcement.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 27518
diff changeset
3972 is used. In case of an error the format remains unchanged.
37f9eb2c05e0 doc: improve format() docstring and NEWS announcement.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 27518
diff changeset
3973
27491
bea2823affa4 Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents: 27483
diff changeset
3974 If called with one to three output arguments, and no inputs, return the current
bea2823affa4 Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents: 27483
diff changeset
3975 format, format spacing, and uppercase preference.
22881
f84aa17075d4 Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents: 22868
diff changeset
3976
30329
81d26e8481a6 maint: Shorten @seealso lines to less than 80 characters (bug #57599)
Rik <rik@octave.org>
parents: 30216
diff changeset
3977 @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
3978 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
3979 @end deftypefn */)
529
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 453
diff changeset
3980 {
22881
f84aa17075d4 Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents: 22868
diff changeset
3981 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
3982
27491
bea2823affa4 Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents: 27483
diff changeset
3983 int nargin = args.length ();
bea2823affa4 Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents: 27483
diff changeset
3984
22881
f84aa17075d4 Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents: 22868
diff changeset
3985 if (nargout == 0)
f84aa17075d4 Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents: 22868
diff changeset
3986 {
27491
bea2823affa4 Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents: 27483
diff changeset
3987 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
3988
f84aa17075d4 Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents: 22868
diff changeset
3989 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
3990
f84aa17075d4 Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents: 22868
diff changeset
3991 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
3992 }
f84aa17075d4 Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents: 22868
diff changeset
3993 else
f84aa17075d4 Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents: 22868
diff changeset
3994 {
27491
bea2823affa4 Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents: 27483
diff changeset
3995 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
3996 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
3997
27491
bea2823affa4 Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents: 27483
diff changeset
3998 if (nargout >= 3)
bea2823affa4 Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents: 27483
diff changeset
3999 retval(2) = (uppercase_format ? "uppercase" : "lowercase");
bea2823affa4 Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents: 27483
diff changeset
4000
22881
f84aa17075d4 Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents: 22868
diff changeset
4001 if (nargout >= 2)
23450
855122b993da maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents: 23433
diff changeset
4002 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
4003
f84aa17075d4 Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents: 22868
diff changeset
4004 retval(0) = format_string;
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
f84aa17075d4 Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents: 22868
diff changeset
4007 return retval;
529
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 453
diff changeset
4008 }
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 453
diff changeset
4009
22881
f84aa17075d4 Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents: 22868
diff changeset
4010 /*
f84aa17075d4 Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents: 22868
diff changeset
4011 %!test
27491
bea2823affa4 Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents: 27483
diff changeset
4012 %! [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
4013 %! unwind_protect
f84aa17075d4 Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents: 22868
diff changeset
4014 %! ## Test one of the formats
27491
bea2823affa4 Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents: 27483
diff changeset
4015 %! format long e;
bea2823affa4 Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents: 27483
diff changeset
4016 %! format uppercase;
22881
f84aa17075d4 Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents: 22868
diff changeset
4017 %! str = disp (pi);
27491
bea2823affa4 Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents: 27483
diff changeset
4018 %! 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
4019 %! str = disp (single (pi));
27491
bea2823affa4 Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents: 27483
diff changeset
4020 %! 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
4021 %! new_fmt = format ();
27491
bea2823affa4 Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents: 27483
diff changeset
4022 %! assert (new_fmt, "longe");
22881
f84aa17075d4 Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents: 22868
diff changeset
4023 %! ## Test resetting format
f84aa17075d4 Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents: 22868
diff changeset
4024 %! format compact;
f84aa17075d4 Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents: 22868
diff changeset
4025 %! [~, new_spacing] = format ();
f84aa17075d4 Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents: 22868
diff changeset
4026 %! assert (new_spacing, "compact");
f84aa17075d4 Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents: 22868
diff changeset
4027 %! format;
27499
2545345f8bd9 Set format to lowercase when called with no arguments.
Rik <rik@octave.org>
parents: 27491
diff changeset
4028 %! [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
4029 %! assert (new_fmt, "short");
f84aa17075d4 Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents: 22868
diff changeset
4030 %! assert (new_spacing, "loose");
27499
2545345f8bd9 Set format to lowercase when called with no arguments.
Rik <rik@octave.org>
parents: 27491
diff changeset
4031 %! 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
4032 %! unwind_protect_cleanup
f84aa17075d4 Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents: 22868
diff changeset
4033 %! format (old_fmt);
f84aa17075d4 Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents: 22868
diff changeset
4034 %! format (old_spacing);
27491
bea2823affa4 Add new options "uppercase", "lowercase" to format() command.
Rik <rik@octave.org>
parents: 27483
diff changeset
4035 %! format (old_uppercase);
22881
f84aa17075d4 Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents: 22868
diff changeset
4036 %! 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
4037
13cd142c3f88 Don't reset compact/loose spacing when changing numerical format (Bug #53427).
Rik <rik@octave.org>
parents: 25054
diff changeset
4038 %!test <*53427>
13cd142c3f88 Don't reset compact/loose spacing when changing numerical format (Bug #53427).
Rik <rik@octave.org>
parents: 25054
diff changeset
4039 %! [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
4040 %! unwind_protect
13cd142c3f88 Don't reset compact/loose spacing when changing numerical format (Bug #53427).
Rik <rik@octave.org>
parents: 25054
diff changeset
4041 %! 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
4042 %! 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
4043 %! 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
4044 %! [fmt, spacing] = format ();
13cd142c3f88 Don't reset compact/loose spacing when changing numerical format (Bug #53427).
Rik <rik@octave.org>
parents: 25054
diff changeset
4045 %! assert (fmt, "long");
13cd142c3f88 Don't reset compact/loose spacing when changing numerical format (Bug #53427).
Rik <rik@octave.org>
parents: 25054
diff changeset
4046 %! assert (spacing, "compact");
13cd142c3f88 Don't reset compact/loose spacing when changing numerical format (Bug #53427).
Rik <rik@octave.org>
parents: 25054
diff changeset
4047 %! unwind_protect_cleanup
13cd142c3f88 Don't reset compact/loose spacing when changing numerical format (Bug #53427).
Rik <rik@octave.org>
parents: 25054
diff changeset
4048 %! format (old_fmt);
13cd142c3f88 Don't reset compact/loose spacing when changing numerical format (Bug #53427).
Rik <rik@octave.org>
parents: 25054
diff changeset
4049 %! format (old_spacing);
13cd142c3f88 Don't reset compact/loose spacing when changing numerical format (Bug #53427).
Rik <rik@octave.org>
parents: 25054
diff changeset
4050 %! end_unwind_protect
13cd142c3f88 Don't reset compact/loose spacing when changing numerical format (Bug #53427).
Rik <rik@octave.org>
parents: 25054
diff changeset
4051
13cd142c3f88 Don't reset compact/loose spacing when changing numerical format (Bug #53427).
Rik <rik@octave.org>
parents: 25054
diff changeset
4052 ## Test input validation
13cd142c3f88 Don't reset compact/loose spacing when changing numerical format (Bug #53427).
Rik <rik@octave.org>
parents: 25054
diff changeset
4053 %!test
13cd142c3f88 Don't reset compact/loose spacing when changing numerical format (Bug #53427).
Rik <rik@octave.org>
parents: 25054
diff changeset
4054 %! 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
4055
22881
f84aa17075d4 Add Octave-only query mode for format command to find status.
Rik <rik@octave.org>
parents: 22868
diff changeset
4056 */
18735
28eab2d84190 Add callbacks for root properties format and formatspacing (bug #42135).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18676
diff changeset
4057
5794
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5775
diff changeset
4058 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
4059 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
4060 @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
4061 @deftypefnx {} {@var{old_val} =} fixed_point_format (@var{new_val})
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
4062 @deftypefnx {} {} fixed_point_format (@var{new_val}, "local")
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
4063 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
4064 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
4065
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
4066 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
4067 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
4068 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
4069
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
4070 @example
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
4071 @group
26205
cf037b842a9f doc: Clarify example code in fixed_point_format documentation (bug #55208).
Rik <rik@octave.org>
parents: 26111
diff changeset
4072 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
4073 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
4074 ans =
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
4075
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
4076 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
4077
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
4078 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
4079 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
4080 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
4081 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
4082 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
4083 @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
4084 @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
4085
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
4086 @noindent
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
4087 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
4088 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
4089 @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
4090
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
4091 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
4092 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
4093 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
4094 @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
4095 @end deftypefn */)
5794
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5775
diff changeset
4096 {
30001
428cccc75cc9 move most functions in variables.cc to octave namespace
John W. Eaton <jwe@octave.org>
parents: 29961
diff changeset
4097 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
4098 "fixed_point_format");
5794
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5775
diff changeset
4099 }
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5775
diff changeset
4100
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5775
diff changeset
4101 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
4102 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
4103 @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
4104 @deftypefnx {} {@var{old_val} =} print_empty_dimensions (@var{new_val})
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
4105 @deftypefnx {} {} print_empty_dimensions (@var{new_val}, "local")
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
4106 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
4107 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
4108
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
4109 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
4110
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
4111 @example
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
4112 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
4113 @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
4114
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
4115 @noindent
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
4116 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
4117
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
4118 @example
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
4119 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
4120 @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
4121
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
4122 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
4123 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
4124 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
4125 @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
4126 @end deftypefn */)
5794
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5775
diff changeset
4127 {
30001
428cccc75cc9 move most functions in variables.cc to octave namespace
John W. Eaton <jwe@octave.org>
parents: 29961
diff changeset
4128 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
4129 "print_empty_dimensions");
5794
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5775
diff changeset
4130 }
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5775
diff changeset
4131
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5775
diff changeset
4132 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
4133 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
4134 @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
4135 @deftypefnx {} {@var{old_val} =} split_long_rows (@var{new_val})
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
4136 @deftypefnx {} {} split_long_rows (@var{new_val}, "local")
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
4137 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
4138 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
4139
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
4140 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
4141 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
4142 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
4143 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
4144
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
4145 @example
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
4146 @group
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
4147 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
4148 ans =
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 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
4151
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
4152 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
4153 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
4154
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
4155 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
4156
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
4157 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
4158 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
4159 @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
4160 @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
4161
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
4162 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
4163 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
4164 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
4165 @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
4166 @end deftypefn */)
5794
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5775
diff changeset
4167 {
30001
428cccc75cc9 move most functions in variables.cc to octave namespace
John W. Eaton <jwe@octave.org>
parents: 29961
diff changeset
4168 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
4169 "split_long_rows");
5794
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5775
diff changeset
4170 }
29958
32c3a5805893 move DEFUN and DEFMETHOD functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4171
32c3a5805893 move DEFUN and DEFMETHOD functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4172 OCTAVE_NAMESPACE_END