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