GNU Octave  4.2.1
A high-level interpreted language, primarily intended for numerical computations, mostly compatible with Matlab
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
op-chm.cc
Go to the documentation of this file.
1 /*
2 
3 Copyright (C) 1996-2017 John W. Eaton
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 the
9 Free Software Foundation; either version 3 of the License, or (at your
10 option) any later version.
11 
12 Octave is distributed in the hope that it will be useful, but WITHOUT
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
15 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 <http://www.gnu.org/licenses/>.
20 
21 */
22 
23 #if defined (HAVE_CONFIG_H)
24 # include "config.h"
25 #endif
26 
27 #include "errwarn.h"
28 #include "ovl.h"
29 #include "ov.h"
30 #include "ov-ch-mat.h"
31 #include "ov-scalar.h"
32 #include "ov-re-mat.h"
33 #include "ov-bool.h"
34 #include "ov-bool-mat.h"
35 #include "ov-typeinfo.h"
36 #include "ops.h"
37 
38 // char matrix unary ops.
39 
40 DEFUNOP (transpose, char_matrix)
41 {
42  const octave_char_matrix& v = dynamic_cast<const octave_char_matrix&> (a);
43 
44  return octave_value (v.matrix_value ().transpose ());
45 }
46 
47 DEFNDCATOP_FN (chm_chm, char_matrix, char_matrix, char_array, char_array,
49 
50 DEFCATOP (chm_s, char_matrix, scalar)
51 {
52  octave_char_matrix& v1 = dynamic_cast<octave_char_matrix&> (a1);
53  const octave_scalar& v2 = dynamic_cast<const octave_scalar&> (a2);
54 
55  warn_implicit_conversion ("Octave:num-to-str",
56  v2.type_name (), v1.type_name ());
57 
58  return octave_value (v1.char_array_value (). concat (v2.array_value (),
59  ra_idx));
60 }
61 
62 DEFCATOP (chm_m, char_matrix, matrix)
63 {
64  octave_char_matrix& v1 = dynamic_cast<octave_char_matrix&> (a1);
65  const octave_matrix& v2 = dynamic_cast<const octave_matrix&> (a2);
66 
67  warn_implicit_conversion ("Octave:num-to-str",
68  v2.type_name (), v1.type_name ());
69 
70  return octave_value (v1.char_array_value (). concat (v2.array_value (),
71  ra_idx));
72 }
73 
74 DEFCATOP (s_chm, scalar, char_matrix)
75 {
76  octave_scalar& v1 = dynamic_cast<octave_scalar&> (a1);
77  const octave_char_matrix& v2 = dynamic_cast<const octave_char_matrix&> (a2);
78 
79  warn_implicit_conversion ("Octave:num-to-str",
80  v1.type_name (), v2.type_name ());
81 
82  return octave_value (v1.array_value (). concat (v2.char_array_value (),
83  ra_idx));
84 }
85 
86 DEFCATOP (m_chm, matrix, char_matrix)
87 {
88  octave_matrix& v1 = dynamic_cast<octave_matrix&> (a1);
89  const octave_char_matrix& v2 = dynamic_cast<const octave_char_matrix&> (a2);
90 
91  warn_implicit_conversion ("Octave:num-to-str",
92  v1.type_name (), v2.type_name ());
93 
94  return octave_value (v1.array_value (). concat (v2.char_array_value (),
95  ra_idx));
96 }
97 
98 void
100 {
103 
109 }
std::string type_name(void) const
Definition: ov-scalar.h:270
#define DEFUNOP(name, t)
Definition: ops.h:172
NDArray array_value(bool=false) const
Definition: ov-re-mat.h:172
const octave_base_value const Array< octave_idx_type > & ra_idx
nd group nd example oindent but is performed more efficiently If only and it is a scalar
Definition: data.cc:5342
void install_chm_ops(void)
Definition: op-chm.cc:99
the sparsity preserving column transformation such that that defines the pivoting threshold can be given in which case it defines the then the first element defines the pivoting tolerance for the unsymmetric the values defined such that for full matrix
Definition: lu.cc:138
static void transpose(octave_idx_type N, const octave_idx_type *ridx, const octave_idx_type *cidx, octave_idx_type *ridx2, octave_idx_type *cidx2)
Definition: symrcm.cc:382
ComplexNDArray concat(NDArray &ra, ComplexNDArray &rb, const Array< octave_idx_type > &ra_idx)
Definition: CNDArray.cc:655
const octave_base_value & a2
calling an anonymous function involves an overhead quite comparable to the overhead of an m file function Passing a handle to a built in function is because the interpreter is not involved in the internal loop For a
Definition: cellfun.cc:398
Matrix matrix_value(bool=false) const
Definition: ov-ch-mat.h:114
octave_value op_transpose(const octave_value &a)
Definition: ov.h:1488
Matrix transpose(void) const
Definition: dMatrix.h:129
#define INSTALL_CATOP(t1, t2, f)
Definition: ops.h:53
#define DEFCATOP(name, t1, t2)
Definition: ops.h:321
const octave_char_matrix & v2
std::string type_name(void) const
Definition: ov-re-mat.h:250
charNDArray char_array_value(bool=false) const
Definition: ov-ch-mat.h:145
void warn_implicit_conversion(const char *id, const char *from, const char *to)
Definition: errwarn.cc:332
virtual std::string type_name(void) const
Definition: ov-base.h:857
#define INSTALL_UNOP(op, t, f)
Definition: ops.h:40
octave_value op_hermitian(const octave_value &a)
Definition: ov.h:1489
NDArray array_value(bool=false) const
Definition: ov-scalar.h:161
#define DEFNDCATOP_FN(name, t1, t2, e1, e2, f)
Definition: ops.h:341
return octave_value(v1.char_array_value().concat(v2.char_array_value(), ra_idx),((a1.is_sq_string()||a2.is_sq_string())? '\'': '"'))