annotate libinterp/corefcn/xnorm.cc @ 33645:42355b7ec5d7 bytecode-interpreter tip

maint: Merge default to bytecode-interpreter.
author Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
date Tue, 04 Jun 2024 11:00:11 -0400
parents c0d79d64a1b8
children
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 //
32632
2e484f9f1f18 maint: update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents: 32589
diff changeset
3 // Copyright (C) 2008-2024 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 ////////////////////////////////////////////////////////////////////////
8303
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
25
21724
aba2e6293dd8 use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents: 21301
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"
8303
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
28 #endif
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
29
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
30 #include "oct-norm.h"
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
31
23455
73ff72d3d603 maint: Eliminate <cfloat.h> header from libinterp files
Rik <rik@octave.org>
parents: 23220
diff changeset
32 #include "errwarn.h"
73ff72d3d603 maint: Eliminate <cfloat.h> header from libinterp files
Rik <rik@octave.org>
parents: 23220
diff changeset
33 #include "ov.h"
8303
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
34 #include "xnorm.h"
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
35
31605
e88a07dec498 maint: Use macros to begin/end C++ namespaces.
Rik <rik@octave.org>
parents: 30564
diff changeset
36 OCTAVE_BEGIN_NAMESPACE(octave)
29989
b260322f6730 move xdiv, xnorm, and xpow inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29874
diff changeset
37
8303
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
38 octave_value xnorm (const octave_value& x, const octave_value& p)
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
39 {
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
40 octave_value retval;
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
41
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
42 bool isvector = (x.columns () == 1 || x.rows () == 1);
23581
c3075ae020e1 maint: Deprecate is_complex_type and replace with iscomplex.
Rik <rik@octave.org>
parents: 23577
diff changeset
43 bool iscomplex = x.iscomplex ();
23583
b7747a2c88b2 maint: Deprecate is_sparse_type and replace with issparse.
Rik <rik@octave.org>
parents: 23581
diff changeset
44 bool issparse = x.issparse ();
8303
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
45 bool isfloat = x.is_single_type ();
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
46
21118
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
47 if (! isfloat && ! x.is_double_type ())
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
48 err_wrong_type_arg ("xnorm", x);
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
49
23577
80c42f4cca13 maint: Deprecate is_empty and replace with isempty.
Rik <rik@octave.org>
parents: 23455
diff changeset
50 if (x.isempty ())
21118
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
51 retval = octave_value (0);
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
52 else if (isvector)
8303
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
53 {
33572
c0d79d64a1b8 maint: Replace `&` with `&&` in xnorm.cc
Arun Giridhar <arungiridhar@gmail.com>
parents: 32632
diff changeset
54 if (isfloat && iscomplex)
29874
92662b17ef7e move liboctave xnorm functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
55 retval = octave::xnorm (x.float_complex_column_vector_value (),
92662b17ef7e move liboctave xnorm functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
56 p.float_value ());
21118
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
57 else if (isfloat)
29874
92662b17ef7e move liboctave xnorm functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
58 retval = octave::xnorm (x.float_column_vector_value (),
92662b17ef7e move liboctave xnorm functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
59 p.float_value ());
21118
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
60 else if (iscomplex)
29874
92662b17ef7e move liboctave xnorm functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
61 retval = octave::xnorm (x.complex_column_vector_value (),
92662b17ef7e move liboctave xnorm functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
62 p.double_value ());
8303
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
63 else
29874
92662b17ef7e move liboctave xnorm functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
64 retval = octave::xnorm (x.column_vector_value (),
92662b17ef7e move liboctave xnorm functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
65 p.double_value ());
21118
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
66 }
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
67 else if (issparse)
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
68 {
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
69 if (iscomplex)
29874
92662b17ef7e move liboctave xnorm functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
70 retval = octave::xnorm (x.sparse_complex_matrix_value (),
92662b17ef7e move liboctave xnorm functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
71 p.double_value ());
21118
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
72 else
29874
92662b17ef7e move liboctave xnorm functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
73 retval = octave::xnorm (x.sparse_matrix_value (),
92662b17ef7e move liboctave xnorm functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
74 p.double_value ());
8303
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
75 }
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
76 else
21118
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
77 {
33572
c0d79d64a1b8 maint: Replace `&` with `&&` in xnorm.cc
Arun Giridhar <arungiridhar@gmail.com>
parents: 32632
diff changeset
78 if (isfloat && iscomplex)
29874
92662b17ef7e move liboctave xnorm functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
79 retval = octave::xnorm (x.float_complex_matrix_value (),
92662b17ef7e move liboctave xnorm functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
80 p.float_value ());
21118
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
81 else if (isfloat)
29874
92662b17ef7e move liboctave xnorm functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
82 retval = octave::xnorm (x.float_matrix_value (),
92662b17ef7e move liboctave xnorm functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
83 p.float_value ());
21118
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
84 else if (iscomplex)
29874
92662b17ef7e move liboctave xnorm functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
85 retval = octave::xnorm (x.complex_matrix_value (),
92662b17ef7e move liboctave xnorm functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
86 p.double_value ());
21118
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
87 else
29874
92662b17ef7e move liboctave xnorm functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
88 retval = octave::xnorm (x.matrix_value (),
92662b17ef7e move liboctave xnorm functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
89 p.double_value ());
21118
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
90 }
8303
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
91
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
92 return retval;
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
93 }
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
94
32589
05b4479c29d8 maint: C++ style check for libinterp/ before 9.1 release.
Rik <rik@octave.org>
parents: 31706
diff changeset
95 octave_value
05b4479c29d8 maint: C++ style check for libinterp/ before 9.1 release.
Rik <rik@octave.org>
parents: 31706
diff changeset
96 xcolnorms (const octave_value& x, const octave_value& p)
8303
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
97 {
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
98 octave_value retval;
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
99
23581
c3075ae020e1 maint: Deprecate is_complex_type and replace with iscomplex.
Rik <rik@octave.org>
parents: 23577
diff changeset
100 bool iscomplex = x.iscomplex ();
23583
b7747a2c88b2 maint: Deprecate is_sparse_type and replace with issparse.
Rik <rik@octave.org>
parents: 23581
diff changeset
101 bool issparse = x.issparse ();
8303
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
102 bool isfloat = x.is_single_type ();
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
103
21118
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
104 if (! isfloat && ! x.is_double_type ())
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
105 err_wrong_type_arg ("xcolnorms", x);
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
106
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
107 if (issparse)
8303
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
108 {
21118
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
109 if (iscomplex)
29874
92662b17ef7e move liboctave xnorm functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
110 retval = octave::xcolnorms (x.sparse_complex_matrix_value (),
92662b17ef7e move liboctave xnorm functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
111 p.double_value ());
8303
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
112 else
29874
92662b17ef7e move liboctave xnorm functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
113 retval = octave::xcolnorms (x.sparse_matrix_value (),
92662b17ef7e move liboctave xnorm functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
114 p.double_value ());
8303
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
115 }
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
116 else
21118
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
117 {
33572
c0d79d64a1b8 maint: Replace `&` with `&&` in xnorm.cc
Arun Giridhar <arungiridhar@gmail.com>
parents: 32632
diff changeset
118 if (isfloat && iscomplex)
29874
92662b17ef7e move liboctave xnorm functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
119 retval = octave::xcolnorms (x.float_complex_matrix_value (),
92662b17ef7e move liboctave xnorm functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
120 p.float_value ());
21118
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
121 else if (isfloat)
29874
92662b17ef7e move liboctave xnorm functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
122 retval = octave::xcolnorms (x.float_matrix_value (),
92662b17ef7e move liboctave xnorm functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
123 p.float_value ());
21118
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
124 else if (iscomplex)
29874
92662b17ef7e move liboctave xnorm functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
125 retval = octave::xcolnorms (x.complex_matrix_value (),
92662b17ef7e move liboctave xnorm functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
126 p.double_value ());
21118
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
127 else
29874
92662b17ef7e move liboctave xnorm functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
128 retval = octave::xcolnorms (x.matrix_value (),
92662b17ef7e move liboctave xnorm functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
129 p.double_value ());
21118
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
130 }
8303
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
131
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
132 return retval;
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
133 }
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
134
32589
05b4479c29d8 maint: C++ style check for libinterp/ before 9.1 release.
Rik <rik@octave.org>
parents: 31706
diff changeset
135 octave_value
05b4479c29d8 maint: C++ style check for libinterp/ before 9.1 release.
Rik <rik@octave.org>
parents: 31706
diff changeset
136 xrownorms (const octave_value& x, const octave_value& p)
8303
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
137 {
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
138 octave_value retval;
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
139
23581
c3075ae020e1 maint: Deprecate is_complex_type and replace with iscomplex.
Rik <rik@octave.org>
parents: 23577
diff changeset
140 bool iscomplex = x.iscomplex ();
23583
b7747a2c88b2 maint: Deprecate is_sparse_type and replace with issparse.
Rik <rik@octave.org>
parents: 23581
diff changeset
141 bool issparse = x.issparse ();
8303
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
142 bool isfloat = x.is_single_type ();
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
143
21118
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
144 if (! isfloat && ! x.is_double_type ())
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
145 err_wrong_type_arg ("xrownorms", x);
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
146
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
147 if (issparse)
8303
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
148 {
21118
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
149 if (iscomplex)
29874
92662b17ef7e move liboctave xnorm functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
150 retval = octave::xrownorms (x.sparse_complex_matrix_value (),
92662b17ef7e move liboctave xnorm functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
151 p.double_value ());
8303
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
152 else
29874
92662b17ef7e move liboctave xnorm functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
153 retval = octave::xrownorms (x.sparse_matrix_value (),
92662b17ef7e move liboctave xnorm functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
154 p.double_value ());
8303
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
155 }
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
156 else
21118
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
157 {
33572
c0d79d64a1b8 maint: Replace `&` with `&&` in xnorm.cc
Arun Giridhar <arungiridhar@gmail.com>
parents: 32632
diff changeset
158 if (isfloat && iscomplex)
29874
92662b17ef7e move liboctave xnorm functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
159 retval = octave::xrownorms (x.float_complex_matrix_value (),
92662b17ef7e move liboctave xnorm functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
160 p.float_value ());
21118
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
161 else if (isfloat)
29874
92662b17ef7e move liboctave xnorm functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
162 retval = octave::xrownorms (x.float_matrix_value (),
92662b17ef7e move liboctave xnorm functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
163 p.float_value ());
21118
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
164 else if (iscomplex)
29874
92662b17ef7e move liboctave xnorm functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
165 retval = octave::xrownorms (x.complex_matrix_value (),
92662b17ef7e move liboctave xnorm functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
166 p.double_value ());
21118
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
167 else
29874
92662b17ef7e move liboctave xnorm functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
168 retval = octave::xrownorms (x.matrix_value (),
92662b17ef7e move liboctave xnorm functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
169 p.double_value ());
21118
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
170 }
8303
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
171
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
172 return retval;
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
173 }
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
174
32589
05b4479c29d8 maint: C++ style check for libinterp/ before 9.1 release.
Rik <rik@octave.org>
parents: 31706
diff changeset
175 octave_value
05b4479c29d8 maint: C++ style check for libinterp/ before 9.1 release.
Rik <rik@octave.org>
parents: 31706
diff changeset
176 xfrobnorm (const octave_value& x)
8303
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
177 {
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
178 octave_value retval;
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
179
23581
c3075ae020e1 maint: Deprecate is_complex_type and replace with iscomplex.
Rik <rik@octave.org>
parents: 23577
diff changeset
180 bool iscomplex = x.iscomplex ();
23583
b7747a2c88b2 maint: Deprecate is_sparse_type and replace with issparse.
Rik <rik@octave.org>
parents: 23581
diff changeset
181 bool issparse = x.issparse ();
8303
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
182 bool isfloat = x.is_single_type ();
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
183
21118
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
184 if (! isfloat && ! x.is_double_type ())
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
185 err_wrong_type_arg ("xfrobnorm", x);
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
186
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
187 if (issparse)
8303
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
188 {
21118
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
189 if (iscomplex)
29874
92662b17ef7e move liboctave xnorm functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
190 retval = octave::xfrobnorm (x.sparse_complex_matrix_value ());
8303
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
191 else
29874
92662b17ef7e move liboctave xnorm functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
192 retval = octave::xfrobnorm (x.sparse_matrix_value ());
8303
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
193 }
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
194 else
21118
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
195 {
33572
c0d79d64a1b8 maint: Replace `&` with `&&` in xnorm.cc
Arun Giridhar <arungiridhar@gmail.com>
parents: 32632
diff changeset
196 if (isfloat && iscomplex)
29874
92662b17ef7e move liboctave xnorm functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
197 retval = octave::xfrobnorm (x.float_complex_matrix_value ());
21118
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
198 else if (isfloat)
29874
92662b17ef7e move liboctave xnorm functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
199 retval = octave::xfrobnorm (x.float_matrix_value ());
21118
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
200 else if (iscomplex)
29874
92662b17ef7e move liboctave xnorm functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
201 retval = octave::xfrobnorm (x.complex_matrix_value ());
21118
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
202 else
29874
92662b17ef7e move liboctave xnorm functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
203 retval = octave::xfrobnorm (x.matrix_value ());
21118
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
204 }
8303
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
205
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
206 return retval;
b11c31849b44 improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
207 }
29989
b260322f6730 move xdiv, xnorm, and xpow inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29874
diff changeset
208
31605
e88a07dec498 maint: Use macros to begin/end C++ namespaces.
Rik <rik@octave.org>
parents: 30564
diff changeset
209 OCTAVE_END_NAMESPACE(octave)