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-range.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-range.h"
31 #include "ov-ch-mat.h"
32 #include "ov-scalar.h"
33 #include "ov-re-mat.h"
34 #include "ov-flt-re-mat.h"
35 #include "ov-complex.h"
36 #include "ov-cx-mat.h"
37 #include "ov-bool.h"
38 #include "ov-bool-mat.h"
39 #include "ov-typeinfo.h"
40 #include "ov-null-mat.h"
41 #include "ops.h"
42 #include "xpow.h"
43 
44 // range unary ops.
45 
46 DEFUNOP (not, range)
47 {
48  const octave_range& v = dynamic_cast<const octave_range&> (a);
49 
50  return octave_value (! v.matrix_value ());
51 }
52 
53 DEFUNOP_OP (uplus, range, /* no-op */)
54 DEFUNOP_OP (uminus, range, -)
55 
57 {
58  const octave_range& v = dynamic_cast<const octave_range&> (a);
59 
60  return octave_value (v.matrix_value ().transpose ());
61 }
62 
63 DEFBINOP_OP (addrs, range, scalar, +)
64 DEFBINOP_OP (addsr, scalar, range, +)
65 DEFBINOP_OP (subrs, range, scalar, -)
66 DEFBINOP_OP (subsr, scalar, range, -)
67 DEFBINOP_OP (mulrs, range, scalar, *)
68 DEFBINOP_OP (mulsr, scalar, range, *)
69 
70 DEFBINOP_FN (el_powsr, scalar, range, elem_xpow)
71 DEFBINOP_FN (el_powcsr, complex, range, elem_xpow)
72 
73 DEFNDCATOP_FN (r_r, range, range, array, array, concat)
74 DEFNDCATOP_FN (r_s, range, scalar, array, array, concat)
75 DEFNDCATOP_FN (r_m, range, matrix, array, array, concat)
76 DEFNDCATOP_FN (r_cs, range, complex, array, complex_array, concat)
77 DEFNDCATOP_FN (r_cm, range, complex_matrix, array, complex_array, concat)
78 DEFNDCATOP_FN (r_b, range, bool, array, array, concat)
79 DEFNDCATOP_FN (r_bm, range, bool_matrix, array, array, concat)
80 DEFNDCATOP_FN (r_chm, range, char_matrix, array, char_array, concat)
81 DEFNDCATOP_FN (s_r, scalar, range, array, array, concat)
82 DEFNDCATOP_FN (m_r, matrix, range, array, array, concat)
83 DEFNDCATOP_FN (cs_r, complex, range, complex_array, array, concat)
84 DEFNDCATOP_FN (cm_r, complex_matrix, range, complex_array, array, concat)
85 DEFNDCATOP_FN (b_r, bool, range, array, array, concat)
86 DEFNDCATOP_FN (bm_r, bool_matrix, range, array, array, concat)
87 DEFNDCATOP_FN (chm_r, char_matrix, range, char_array, array, concat)
88 
89 CONVDECL (range_to_matrix)
90 {
91  const octave_range& v = dynamic_cast<const octave_range&> (a);
92 
93  return new octave_matrix (v.array_value ());
94 }
95 
96 void
98 {
104 
111 
114 
130 
131  // FIXME: this would be unneccessary if
132  // octave_base_value::numeric_assign always tried converting lhs
133  // before rhs.
134 
138 
139  // However, this should probably be here just in case we need it.
140 
141  INSTALL_WIDENOP (octave_range, octave_matrix, range_to_matrix);
142 }
octave_value op_uplus(const octave_value &a)
Definition: ov.h:1485
#define DEFUNOP(name, t)
Definition: ops.h:172
octave_value op_el_pow(const octave_value &a1, const octave_value &a2)
Definition: ov.h:1531
nd group nd example oindent but is performed more efficiently If only and it is a scalar
Definition: data.cc:5342
NDArray array_value(bool=false) const
Definition: ov-range.h:188
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
#define INSTALL_WIDENOP(t1, t2, f)
Definition: ops.h:70
#define DEFUNOP_OP(name, t, op)
Definition: ops.h:176
#define DEFBINOP_OP(name, t1, t2, op)
Definition: ops.h:228
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
#define INSTALL_BINOP(op, t1, t2, f)
Definition: ops.h:48
octave_value op_not(const octave_value &a)
Definition: ov.h:1484
then the function must return scalars which will be concatenated into the return array(s).If code
Definition: cellfun.cc:398
octave_value op_transpose(const octave_value &a)
Definition: ov.h:1488
Matrix matrix_value(bool=false) const
Definition: ov-range.h:182
octave_value elem_xpow(double a, const SparseMatrix &b)
Definition: sparse-xpow.cc:247
Matrix transpose(void) const
Definition: dMatrix.h:129
void install_range_ops(void)
Definition: op-range.cc:97
#define INSTALL_CATOP(t1, t2, f)
Definition: ops.h:53
octave_value op_add(const octave_value &a1, const octave_value &a2)
Definition: ov.h:1514
#define INSTALL_UNOP(op, t, f)
Definition: ops.h:40
octave_value op_sub(const octave_value &a1, const octave_value &a2)
Definition: ov.h:1515
#define DEFBINOP_FN(name, t1, t2, f)
Definition: ops.h:283
octave_value op_hermitian(const octave_value &a)
Definition: ov.h:1489
#define INSTALL_ASSIGNCONV(t1, t2, tr)
Definition: ops.h:66
#define DEFNDCATOP_FN(name, t1, t2, e1, e2, f)
Definition: ops.h:341
octave_value op_uminus(const octave_value &a)
Definition: ov.h:1486
octave_value op_mul(const octave_value &a1, const octave_value &a2)
Definition: ov.h:1516
OCTAVE_EXPORT octave_value_list or cell arrays Arguments are concatenated vertically The returned values are padded with blanks as needed to make each row of the string array have the same length Empty input strings are significant and will concatenated in the output For numerical each element is converted to the corresponding ASCII character A range error results if an input is outside the ASCII range(0-255).For cell arrays
#define CONVDECL(name)
Definition: ops.h:161
return octave_value(v1.char_array_value().concat(v2.char_array_value(), ra_idx),((a1.is_sq_string()||a2.is_sq_string())? '\'': '"'))