Mercurial > octave
annotate liboctave/numeric/bsxfun-defs.cc @ 27919:1891570abac8
update Octave Project Developers copyright for the new year
In files that have the "Octave Project Developers" copyright notice,
update for 2020.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Mon, 06 Jan 2020 22:29:51 -0500 |
parents | b442ec6dda5c |
children | bd51beb6205e |
rev | line source |
---|---|
9747
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
1 /* |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
2 |
27919
1891570abac8
update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents:
27918
diff
changeset
|
3 Copyright (C) 2009-2020 The Octave Project Developers |
27918
b442ec6dda5c
use centralized file for copyright info for individual contributors
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
4 |
b442ec6dda5c
use centralized file for copyright info for individual contributors
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
5 See the file COPYRIGHT.md in the top-level directory of this distribution |
b442ec6dda5c
use centralized file for copyright info for individual contributors
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
6 or <https://octave.org/COPYRIGHT.html/>. |
b442ec6dda5c
use centralized file for copyright info for individual contributors
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
7 |
9747
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
8 |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
9 This file is part of Octave. |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
10 |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
23577
diff
changeset
|
11 Octave is free software: you can redistribute it and/or modify it |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22402
diff
changeset
|
12 under the terms of the GNU General Public License as published by |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
23577
diff
changeset
|
13 the Free Software Foundation, either version 3 of the License, or |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22402
diff
changeset
|
14 (at your option) any later version. |
9747
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
15 |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22402
diff
changeset
|
16 Octave is distributed in the hope that it will be useful, but |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22402
diff
changeset
|
17 WITHOUT ANY WARRANTY; without even the implied warranty of |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22402
diff
changeset
|
18 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22402
diff
changeset
|
19 GNU General Public License for more details. |
9747
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
20 |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
21 You should have received a copy of the GNU General Public License |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
22 along with Octave; see the file COPYING. If not, see |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
23577
diff
changeset
|
23 <https://www.gnu.org/licenses/>. |
9747
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
24 |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
25 */ |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
26 |
20791
f7084eae3318
maint: Use Octave coding conventions for #if statements.
Rik <rik@octave.org>
parents:
19861
diff
changeset
|
27 #if ! defined (octave_bsxfun_defs_h) |
9747
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
28 #define octave_bsxfun_defs_h 1 |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
29 |
23475
d691ed308237
maint: Clean up #includes in liboctave/numeric directory.
Rik <rik@octave.org>
parents:
23449
diff
changeset
|
30 // This file should *not* include config.h. It is only included in other C++ |
d691ed308237
maint: Clean up #includes in liboctave/numeric directory.
Rik <rik@octave.org>
parents:
23449
diff
changeset
|
31 // source files that should have included config.h before including this file. |
21690
b6a686543080
Only include config.h in files that are compiled separately.
John W. Eaton <jwe@octave.org>
parents:
21139
diff
changeset
|
32 |
9747
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
33 #include <algorithm> |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
34 |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
35 #include "dim-vector.h" |
23475
d691ed308237
maint: Clean up #includes in liboctave/numeric directory.
Rik <rik@octave.org>
parents:
23449
diff
changeset
|
36 #include "lo-error.h" |
d691ed308237
maint: Clean up #includes in liboctave/numeric directory.
Rik <rik@octave.org>
parents:
23449
diff
changeset
|
37 #include "mx-inlines.cc" |
9747
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
38 #include "oct-locbuf.h" |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
39 |
21139
538b57866b90
consistently use "typename" intead of "class" in template declarations
John W. Eaton <jwe@octave.org>
parents:
21136
diff
changeset
|
40 template <typename R, typename X, typename Y> |
10362
b47ab50a6aa8
simplify appliers in mx-inlines.cc
Jaroslav Hajek <highegg@gmail.com>
parents:
10142
diff
changeset
|
41 Array<R> |
b47ab50a6aa8
simplify appliers in mx-inlines.cc
Jaroslav Hajek <highegg@gmail.com>
parents:
10142
diff
changeset
|
42 do_bsxfun_op (const Array<X>& x, const Array<Y>& y, |
b47ab50a6aa8
simplify appliers in mx-inlines.cc
Jaroslav Hajek <highegg@gmail.com>
parents:
10142
diff
changeset
|
43 void (*op_vv) (size_t, R *, const X *, const Y *), |
b47ab50a6aa8
simplify appliers in mx-inlines.cc
Jaroslav Hajek <highegg@gmail.com>
parents:
10142
diff
changeset
|
44 void (*op_sv) (size_t, R *, X, const Y *), |
b47ab50a6aa8
simplify appliers in mx-inlines.cc
Jaroslav Hajek <highegg@gmail.com>
parents:
10142
diff
changeset
|
45 void (*op_vs) (size_t, R *, const X *, Y)) |
9747
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
46 { |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
47 int nd = std::max (x.ndims (), y.ndims ()); |
18084
8e056300994b
Follow coding convention of defining and initializing only 1 variable per line in liboctave.
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
48 dim_vector dvx = x.dims ().redim (nd); |
8e056300994b
Follow coding convention of defining and initializing only 1 variable per line in liboctave.
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
49 dim_vector dvy = y.dims ().redim (nd); |
9747
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
50 |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
51 // Construct the result dimensions. |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
52 dim_vector dvr; |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
53 dvr.resize (nd); |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
54 for (int i = 0; i < nd; i++) |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
55 { |
18084
8e056300994b
Follow coding convention of defining and initializing only 1 variable per line in liboctave.
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
56 octave_idx_type xk = dvx(i); |
8e056300994b
Follow coding convention of defining and initializing only 1 variable per line in liboctave.
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
57 octave_idx_type yk = dvy(i); |
9747
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
58 if (xk == 1) |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
59 dvr(i) = yk; |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
60 else if (yk == 1 || xk == yk) |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
61 dvr(i) = xk; |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
62 else |
21136
7cac4e7458f2
maint: clean up code around calls to current_liboctave_error_handler.
Rik <rik@octave.org>
parents:
20791
diff
changeset
|
63 (*current_liboctave_error_handler) |
7cac4e7458f2
maint: clean up code around calls to current_liboctave_error_handler.
Rik <rik@octave.org>
parents:
20791
diff
changeset
|
64 ("bsxfun: nonconformant dimensions: %s and %s", |
7cac4e7458f2
maint: clean up code around calls to current_liboctave_error_handler.
Rik <rik@octave.org>
parents:
20791
diff
changeset
|
65 x.dims ().str ().c_str (), y.dims ().str ().c_str ()); |
9747
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
66 } |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
67 |
10362
b47ab50a6aa8
simplify appliers in mx-inlines.cc
Jaroslav Hajek <highegg@gmail.com>
parents:
10142
diff
changeset
|
68 Array<R> retval (dvr); |
9747
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
69 |
10362
b47ab50a6aa8
simplify appliers in mx-inlines.cc
Jaroslav Hajek <highegg@gmail.com>
parents:
10142
diff
changeset
|
70 const X *xvec = x.fortran_vec (); |
b47ab50a6aa8
simplify appliers in mx-inlines.cc
Jaroslav Hajek <highegg@gmail.com>
parents:
10142
diff
changeset
|
71 const Y *yvec = y.fortran_vec (); |
b47ab50a6aa8
simplify appliers in mx-inlines.cc
Jaroslav Hajek <highegg@gmail.com>
parents:
10142
diff
changeset
|
72 R *rvec = retval.fortran_vec (); |
9747
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
73 |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
74 // Fold the common leading dimensions. |
13704
6f779cc391fb
More 64bit integer type fixes for bsxfun-defs.cc
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13700
diff
changeset
|
75 octave_idx_type start, ldr = 1; |
9747
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
76 for (start = 0; start < nd; start++) |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
77 { |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
78 if (dvx(start) != dvy(start)) |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
79 break; |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
80 ldr *= dvr(start); |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
81 } |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
82 |
23577
80c42f4cca13
maint: Deprecate is_empty and replace with isempty.
Rik <rik@octave.org>
parents:
23475
diff
changeset
|
83 if (retval.isempty ()) |
9747
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
84 ; // do nothing |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
85 else if (start == nd) |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
86 op_vv (retval.numel (), rvec, xvec, yvec); |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
87 else |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
88 { |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
89 // Determine the type of the low-level loop. |
18084
8e056300994b
Follow coding convention of defining and initializing only 1 variable per line in liboctave.
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
90 bool xsing = false; |
8e056300994b
Follow coding convention of defining and initializing only 1 variable per line in liboctave.
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
91 bool ysing = false; |
9747
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
92 if (ldr == 1) |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
93 { |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
94 xsing = dvx(start) == 1; |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
95 ysing = dvy(start) == 1; |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
96 if (xsing || ysing) |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
97 { |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
98 ldr *= dvx(start) * dvy(start); |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
99 start++; |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
100 } |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
101 } |
18084
8e056300994b
Follow coding convention of defining and initializing only 1 variable per line in liboctave.
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
102 dim_vector cdvx = dvx.cumulative (); |
8e056300994b
Follow coding convention of defining and initializing only 1 variable per line in liboctave.
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
103 dim_vector cdvy = dvy.cumulative (); |
9747
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
104 // Nullify singleton dims to achieve a spread effect. |
13700
782dc237a02d
Pass correct integer type to std::max in bsxfun-defs.cc
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13139
diff
changeset
|
105 for (int i = std::max (start, octave_idx_type (1)); i < nd; i++) |
9747
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
106 { |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
107 if (dvx(i) == 1) |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
108 cdvx(i-1) = 0; |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
109 if (dvy(i) == 1) |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
110 cdvy(i-1) = 0; |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
111 } |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
112 |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
113 octave_idx_type niter = dvr.numel (start); |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
114 // The index array. |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
115 OCTAVE_LOCAL_BUFFER_INIT (octave_idx_type, idx, nd, 0); |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
116 for (octave_idx_type iter = 0; iter < niter; iter++) |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
117 { |
10142
829e69ec3110
make OCTAVE_QUIT a function
Jaroslav Hajek <highegg@gmail.com>
parents:
10140
diff
changeset
|
118 octave_quit (); |
9827
c15a5ed0da58
optimize bsxfun (@power, ...)
Jaroslav Hajek <highegg@gmail.com>
parents:
9747
diff
changeset
|
119 |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
120 // Compute indices. |
9747
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
121 // FIXME: performance impact noticeable? |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
122 octave_idx_type xidx = cdvx.cum_compute_index (idx); |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
123 octave_idx_type yidx = cdvy.cum_compute_index (idx); |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
124 octave_idx_type ridx = dvr.compute_index (idx); |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
125 |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
126 // Apply the low-level loop. |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
127 if (xsing) |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
128 op_sv (ldr, rvec + ridx, xvec[xidx], yvec + yidx); |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
129 else if (ysing) |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
130 op_vs (ldr, rvec + ridx, xvec + xidx, yvec[yidx]); |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
131 else |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
132 op_vv (ldr, rvec + ridx, xvec + xidx, yvec + yidx); |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
133 |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
134 dvr.increment_index (idx + start, start); |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
135 } |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
136 } |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
137 |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
138 return retval; |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
139 } |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
140 |
21139
538b57866b90
consistently use "typename" intead of "class" in template declarations
John W. Eaton <jwe@octave.org>
parents:
21136
diff
changeset
|
141 template <typename R, typename X> |
13139
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
142 void |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
143 do_inplace_bsxfun_op (Array<R>& r, const Array<X>& x, |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
144 void (*op_vv) (size_t, R *, const X *), |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
145 void (*op_vs) (size_t, R *, X)) |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
146 { |
18084
8e056300994b
Follow coding convention of defining and initializing only 1 variable per line in liboctave.
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
147 dim_vector dvr = r.dims (); |
8e056300994b
Follow coding convention of defining and initializing only 1 variable per line in liboctave.
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
148 dim_vector dvx = x.dims (); |
13139
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
149 octave_idx_type nd = r.ndims (); |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
150 dvx.redim (nd); |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
151 |
23449
c763214a8260
maint: Use convention 'int *x' for naming pointers.
Rik <rik@octave.org>
parents:
23220
diff
changeset
|
152 const X *xvec = x.fortran_vec (); |
c763214a8260
maint: Use convention 'int *x' for naming pointers.
Rik <rik@octave.org>
parents:
23220
diff
changeset
|
153 R *rvec = r.fortran_vec (); |
13139
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
154 |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
155 // Fold the common leading dimensions. |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
156 octave_idx_type start, ldr = 1; |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
157 for (start = 0; start < nd; start++) |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
158 { |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
159 if (dvr(start) != dvx(start)) |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
160 break; |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
161 ldr *= dvr(start); |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
162 } |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
163 |
23577
80c42f4cca13
maint: Deprecate is_empty and replace with isempty.
Rik <rik@octave.org>
parents:
23475
diff
changeset
|
164 if (r.isempty ()) |
13139
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
165 ; // do nothing |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
166 else if (start == nd) |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
167 op_vv (r.numel (), rvec, xvec); |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
168 else |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
169 { |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
170 // Determine the type of the low-level loop. |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
171 bool xsing = false; |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
172 if (ldr == 1) |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
173 { |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
174 xsing = dvx(start) == 1; |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
175 if (xsing) |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
176 { |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
177 ldr *= dvr(start) * dvx(start); |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
178 start++; |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
179 } |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
180 } |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
181 |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
182 dim_vector cdvx = dvx.cumulative (); |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
183 // Nullify singleton dims to achieve a spread effect. |
13700
782dc237a02d
Pass correct integer type to std::max in bsxfun-defs.cc
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13139
diff
changeset
|
184 for (int i = std::max (start, octave_idx_type (1)); i < nd; i++) |
13139
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
185 { |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
186 if (dvx(i) == 1) |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
187 cdvx(i-1) = 0; |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
188 } |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
189 |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
190 octave_idx_type niter = dvr.numel (start); |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
191 // The index array. |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
192 OCTAVE_LOCAL_BUFFER_INIT (octave_idx_type, idx, nd, 0); |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
193 for (octave_idx_type iter = 0; iter < niter; iter++) |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
194 { |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
195 octave_quit (); |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
196 |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
197 // Compute indices. |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
198 // FIXME: performance impact noticeable? |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
199 octave_idx_type xidx = cdvx.cum_compute_index (idx); |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
200 octave_idx_type ridx = dvr.compute_index (idx); |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
201 |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
202 // Apply the low-level loop. |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
203 if (xsing) |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
204 op_vs (ldr, rvec + ridx, xvec[xidx]); |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
205 else |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
206 op_vv (ldr, rvec + ridx, xvec + xidx); |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
207 |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
208 dvr.increment_index (idx + start, start); |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
209 } |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
210 } |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
211 } |
aa4a23337a0f
Enable BSX in-place for missing assignment operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13012
diff
changeset
|
212 |
22197
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
213 #define BSXFUN_OP_DEF(OP, ARRAY) \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
214 ARRAY bsxfun_ ## OP (const ARRAY& x, const ARRAY& y) |
9747
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
215 |
22197
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
216 #define BSXFUN_OP2_DEF(OP, ARRAY, ARRAY1, ARRAY2) \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
217 ARRAY bsxfun_ ## OP (const ARRAY1& x, const ARRAY2& y) |
9827
c15a5ed0da58
optimize bsxfun (@power, ...)
Jaroslav Hajek <highegg@gmail.com>
parents:
9747
diff
changeset
|
218 |
22197
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
219 #define BSXFUN_REL_DEF(OP, ARRAY) \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
220 boolNDArray bsxfun_ ## OP (const ARRAY& x, const ARRAY& y) |
9747
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
221 |
22197
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
222 #define BSXFUN_OP_DEF_MXLOOP(OP, ARRAY, LOOP) \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
223 BSXFUN_OP_DEF(OP, ARRAY) \ |
10362
b47ab50a6aa8
simplify appliers in mx-inlines.cc
Jaroslav Hajek <highegg@gmail.com>
parents:
10142
diff
changeset
|
224 { return do_bsxfun_op<ARRAY::element_type, ARRAY::element_type, ARRAY::element_type> \ |
22197
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
225 (x, y, LOOP, LOOP, LOOP); } |
9747
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
226 |
22197
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
227 #define BSXFUN_OP2_DEF_MXLOOP(OP, ARRAY, ARRAY1, ARRAY2, LOOP) \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
228 BSXFUN_OP2_DEF(OP, ARRAY, ARRAY1, ARRAY2) \ |
10362
b47ab50a6aa8
simplify appliers in mx-inlines.cc
Jaroslav Hajek <highegg@gmail.com>
parents:
10142
diff
changeset
|
229 { return do_bsxfun_op<ARRAY::element_type, ARRAY1::element_type, ARRAY2::element_type> \ |
22197
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
230 (x, y, LOOP, LOOP, LOOP); } |
9827
c15a5ed0da58
optimize bsxfun (@power, ...)
Jaroslav Hajek <highegg@gmail.com>
parents:
9747
diff
changeset
|
231 |
22197
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
232 #define BSXFUN_REL_DEF_MXLOOP(OP, ARRAY, LOOP) \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
233 BSXFUN_REL_DEF(OP, ARRAY) \ |
10362
b47ab50a6aa8
simplify appliers in mx-inlines.cc
Jaroslav Hajek <highegg@gmail.com>
parents:
10142
diff
changeset
|
234 { return do_bsxfun_op<bool, ARRAY::element_type, ARRAY::element_type> \ |
22197
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
235 (x, y, LOOP, LOOP, LOOP); } |
9747
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
236 |
22197
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
237 #define BSXFUN_STDOP_DEFS_MXLOOP(ARRAY) \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
238 BSXFUN_OP_DEF_MXLOOP (add, ARRAY, mx_inline_add) \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
239 BSXFUN_OP_DEF_MXLOOP (sub, ARRAY, mx_inline_sub) \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
240 BSXFUN_OP_DEF_MXLOOP (mul, ARRAY, mx_inline_mul) \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
241 BSXFUN_OP_DEF_MXLOOP (div, ARRAY, mx_inline_div) \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
242 BSXFUN_OP_DEF_MXLOOP (min, ARRAY, mx_inline_xmin) \ |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19697
diff
changeset
|
243 BSXFUN_OP_DEF_MXLOOP (max, ARRAY, mx_inline_xmax) |
9747
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
244 |
22197
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
245 #define BSXFUN_STDREL_DEFS_MXLOOP(ARRAY) \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
246 BSXFUN_REL_DEF_MXLOOP (eq, ARRAY, mx_inline_eq) \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
247 BSXFUN_REL_DEF_MXLOOP (ne, ARRAY, mx_inline_ne) \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
248 BSXFUN_REL_DEF_MXLOOP (lt, ARRAY, mx_inline_lt) \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
249 BSXFUN_REL_DEF_MXLOOP (le, ARRAY, mx_inline_le) \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
250 BSXFUN_REL_DEF_MXLOOP (gt, ARRAY, mx_inline_gt) \ |
9747
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
251 BSXFUN_REL_DEF_MXLOOP (ge, ARRAY, mx_inline_ge) |
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
252 |
13012
15eefbd9d4e8
Implement a few missing automatic bsxfun power operators
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
11586
diff
changeset
|
253 //For bsxfun power with mixed integer/float types |
22197
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
254 #define BSXFUN_POW_MIXED_MXLOOP(INT_TYPE) \ |
13012
15eefbd9d4e8
Implement a few missing automatic bsxfun power operators
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
11586
diff
changeset
|
255 BSXFUN_OP2_DEF_MXLOOP (pow, INT_TYPE, INT_TYPE, NDArray, mx_inline_pow) \ |
22197
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
256 BSXFUN_OP2_DEF_MXLOOP (pow, INT_TYPE, INT_TYPE, FloatNDArray, mx_inline_pow) \ |
13012
15eefbd9d4e8
Implement a few missing automatic bsxfun power operators
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
11586
diff
changeset
|
257 BSXFUN_OP2_DEF_MXLOOP (pow, INT_TYPE, NDArray, INT_TYPE, mx_inline_pow) \ |
15eefbd9d4e8
Implement a few missing automatic bsxfun power operators
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
11586
diff
changeset
|
258 BSXFUN_OP2_DEF_MXLOOP (pow, INT_TYPE, FloatNDArray, INT_TYPE, mx_inline_pow) |
15eefbd9d4e8
Implement a few missing automatic bsxfun power operators
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
11586
diff
changeset
|
259 |
9747
7bda650b691a
add omitted files from 26abff55f6fe
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
260 #endif |