GNU Octave 10.1.0
A high-level interpreted language, primarily intended for numerical computations, mostly compatible with Matlab
 
Loading...
Searching...
No Matches
xnorm.cc
Go to the documentation of this file.
1////////////////////////////////////////////////////////////////////////
2//
3// Copyright (C) 2008-2025 The Octave Project Developers
4//
5// See the file COPYRIGHT.md in the top-level directory of this
6// distribution or <https://octave.org/copyright/>.
7//
8// This file is part of Octave.
9//
10// Octave is free software: you can redistribute it and/or modify it
11// under the terms of the GNU General Public License as published by
12// the Free Software Foundation, either version 3 of the License, or
13// (at your option) any later version.
14//
15// Octave is distributed in the hope that it will be useful, but
16// WITHOUT ANY WARRANTY; without even the implied warranty of
17// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18// GNU General Public License for more details.
19//
20// You should have received a copy of the GNU General Public License
21// along with Octave; see the file COPYING. If not, see
22// <https://www.gnu.org/licenses/>.
23//
24////////////////////////////////////////////////////////////////////////
25
26#if defined (HAVE_CONFIG_H)
27# include "config.h"
28#endif
29
30#include "oct-norm.h"
31
32#include "errwarn.h"
33#include "ov.h"
34#include "xnorm.h"
35
37
39{
40 octave_value retval;
41
42 bool isvector = (x.columns () == 1 || x.rows () == 1);
43 bool iscomplex = x.iscomplex ();
44 bool issparse = x.issparse ();
45 bool isfloat = x.is_single_type ();
46
47 if (! isfloat && ! x.is_double_type ())
48 err_wrong_type_arg ("xnorm", x);
49
50 if (x.isempty ())
51 retval = octave_value (0);
52 else if (isvector)
53 {
54 if (isfloat && iscomplex)
55 retval = octave::xnorm (x.float_complex_column_vector_value (),
56 p.float_value ());
57 else if (isfloat)
58 retval = octave::xnorm (x.float_column_vector_value (),
59 p.float_value ());
60 else if (iscomplex)
61 retval = octave::xnorm (x.complex_column_vector_value (),
62 p.double_value ());
63 else
64 retval = octave::xnorm (x.column_vector_value (),
65 p.double_value ());
66 }
67 else if (issparse)
68 {
69 if (iscomplex)
70 retval = octave::xnorm (x.sparse_complex_matrix_value (),
71 p.double_value ());
72 else
73 retval = octave::xnorm (x.sparse_matrix_value (),
74 p.double_value ());
75 }
76 else
77 {
78 if (isfloat && iscomplex)
79 retval = octave::xnorm (x.float_complex_matrix_value (),
80 p.float_value ());
81 else if (isfloat)
82 retval = octave::xnorm (x.float_matrix_value (),
83 p.float_value ());
84 else if (iscomplex)
85 retval = octave::xnorm (x.complex_matrix_value (),
86 p.double_value ());
87 else
88 retval = octave::xnorm (x.matrix_value (),
89 p.double_value ());
90 }
91
92 return retval;
93}
94
97{
98 octave_value retval;
99
100 bool iscomplex = x.iscomplex ();
101 bool issparse = x.issparse ();
102 bool isfloat = x.is_single_type ();
103
104 if (! isfloat && ! x.is_double_type ())
105 err_wrong_type_arg ("xcolnorms", x);
106
107 if (issparse)
108 {
109 if (iscomplex)
110 retval = octave::xcolnorms (x.sparse_complex_matrix_value (),
111 p.double_value ());
112 else
113 retval = octave::xcolnorms (x.sparse_matrix_value (),
114 p.double_value ());
115 }
116 else
117 {
118 if (isfloat && iscomplex)
119 retval = octave::xcolnorms (x.float_complex_matrix_value (),
120 p.float_value ());
121 else if (isfloat)
122 retval = octave::xcolnorms (x.float_matrix_value (),
123 p.float_value ());
124 else if (iscomplex)
125 retval = octave::xcolnorms (x.complex_matrix_value (),
126 p.double_value ());
127 else
128 retval = octave::xcolnorms (x.matrix_value (),
129 p.double_value ());
130 }
131
132 return retval;
133}
134
137{
138 octave_value retval;
139
140 bool iscomplex = x.iscomplex ();
141 bool issparse = x.issparse ();
142 bool isfloat = x.is_single_type ();
143
144 if (! isfloat && ! x.is_double_type ())
145 err_wrong_type_arg ("xrownorms", x);
146
147 if (issparse)
148 {
149 if (iscomplex)
150 retval = octave::xrownorms (x.sparse_complex_matrix_value (),
151 p.double_value ());
152 else
153 retval = octave::xrownorms (x.sparse_matrix_value (),
154 p.double_value ());
155 }
156 else
157 {
158 if (isfloat && iscomplex)
159 retval = octave::xrownorms (x.float_complex_matrix_value (),
160 p.float_value ());
161 else if (isfloat)
162 retval = octave::xrownorms (x.float_matrix_value (),
163 p.float_value ());
164 else if (iscomplex)
165 retval = octave::xrownorms (x.complex_matrix_value (),
166 p.double_value ());
167 else
168 retval = octave::xrownorms (x.matrix_value (),
169 p.double_value ());
170 }
171
172 return retval;
173}
174
177{
178 octave_value retval;
179
180 bool iscomplex = x.iscomplex ();
181 bool issparse = x.issparse ();
182 bool isfloat = x.is_single_type ();
183
184 if (! isfloat && ! x.is_double_type ())
185 err_wrong_type_arg ("xfrobnorm", x);
186
187 if (issparse)
188 {
189 if (iscomplex)
190 retval = octave::xfrobnorm (x.sparse_complex_matrix_value ());
191 else
192 retval = octave::xfrobnorm (x.sparse_matrix_value ());
193 }
194 else
195 {
196 if (isfloat && iscomplex)
197 retval = octave::xfrobnorm (x.float_complex_matrix_value ());
198 else if (isfloat)
199 retval = octave::xfrobnorm (x.float_matrix_value ());
200 else if (iscomplex)
201 retval = octave::xfrobnorm (x.complex_matrix_value ());
202 else
203 retval = octave::xfrobnorm (x.matrix_value ());
204 }
205
206 return retval;
207}
208
209OCTAVE_END_NAMESPACE(octave)
bool isvector(const dim_vector &dim)
float float_value(bool frc_str_conv=false) const
Definition ov.h:850
bool iscomplex() const
Definition ov.h:741
double double_value(bool frc_str_conv=false) const
Definition ov.h:847
OCTAVE_BEGIN_NAMESPACE(octave) static octave_value daspk_fcn
void err_wrong_type_arg(const char *name, const char *s)
Definition errwarn.cc:166
F77_RET_T const F77_DBLE * x
octave_value xcolnorms(const octave_value &x, const octave_value &p)
Definition xnorm.cc:96
octave_value xfrobnorm(const octave_value &x)
Definition xnorm.cc:176
octave_value xrownorms(const octave_value &x, const octave_value &p)
Definition xnorm.cc:136
octave_value xnorm(const octave_value &x, const octave_value &p)
Definition xnorm.cc:38