Coverage Report

Created: 2025-11-28 06:44

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/rust/registry/src/index.crates.io-1949cf8c6b5b557f/ndarray-0.16.1/src/impl_ops.rs
Line
Count
Source
1
// Copyright 2014-2016 bluss and ndarray developers.
2
//
3
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
4
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
5
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
6
// option. This file may not be copied, modified, or distributed
7
// except according to those terms.
8
9
use crate::dimension::DimMax;
10
use crate::Zip;
11
use num_complex::Complex;
12
13
/// Elements that can be used as direct operands in arithmetic with arrays.
14
///
15
/// For example, `f64` is a `ScalarOperand` which means that for an array `a`,
16
/// arithmetic like `a + 1.0`, and, `a * 2.`, and `a += 3.` are allowed.
17
///
18
/// In the description below, let `A` be an array or array view,
19
/// let `B` be an array with owned data,
20
/// and let `C` be an array with mutable data.
21
///
22
/// `ScalarOperand` determines for which scalars `K` operations `&A @ K`, and `B @ K`,
23
/// and `C @= K` are defined, as ***right hand side operands***, for applicable
24
/// arithmetic operators (denoted `@`).
25
///
26
/// ***Left hand side*** scalar operands are not related to this trait
27
/// (they need one `impl` per concrete scalar type); but they are still
28
/// implemented for the same types, allowing operations
29
/// `K @ &A`, and `K @ B` for primitive numeric types `K`.
30
///
31
/// This trait ***does not*** limit which elements can be stored in an array in general.
32
/// Non-`ScalarOperand` types can still participate in arithmetic as array elements in
33
/// in array-array operations.
34
pub trait ScalarOperand: 'static + Clone {}
35
impl ScalarOperand for bool {}
36
impl ScalarOperand for i8 {}
37
impl ScalarOperand for u8 {}
38
impl ScalarOperand for i16 {}
39
impl ScalarOperand for u16 {}
40
impl ScalarOperand for i32 {}
41
impl ScalarOperand for u32 {}
42
impl ScalarOperand for i64 {}
43
impl ScalarOperand for u64 {}
44
impl ScalarOperand for i128 {}
45
impl ScalarOperand for u128 {}
46
impl ScalarOperand for isize {}
47
impl ScalarOperand for usize {}
48
impl ScalarOperand for f32 {}
49
impl ScalarOperand for f64 {}
50
impl ScalarOperand for Complex<f32> {}
51
impl ScalarOperand for Complex<f64> {}
52
53
macro_rules! impl_binary_op(
54
    ($trt:ident, $operator:tt, $mth:ident, $iop:tt, $doc:expr) => (
55
/// Perform elementwise
56
#[doc=$doc]
57
/// between `self` and `rhs`,
58
/// and return the result.
59
///
60
/// `self` must be an `Array` or `ArcArray`.
61
///
62
/// If their shapes disagree, `self` is broadcast to their broadcast shape.
63
///
64
/// **Panics** if broadcasting isn’t possible.
65
impl<A, B, S, S2, D, E> $trt<ArrayBase<S2, E>> for ArrayBase<S, D>
66
where
67
    A: Clone + $trt<B, Output=A>,
68
    B: Clone,
69
    S: DataOwned<Elem=A> + DataMut,
70
    S2: Data<Elem=B>,
71
    D: Dimension + DimMax<E>,
72
    E: Dimension,
73
{
74
    type Output = ArrayBase<S, <D as DimMax<E>>::Output>;
75
    #[track_caller]
76
0
    fn $mth(self, rhs: ArrayBase<S2, E>) -> Self::Output
77
    {
78
0
        self.$mth(&rhs)
79
0
    }
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::arith::Add<ndarray::ArrayBase<_, _>>>::add
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::arith::Sub<ndarray::ArrayBase<_, _>>>::sub
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::bit::BitOr<ndarray::ArrayBase<_, _>>>::bitor
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::bit::BitXor<ndarray::ArrayBase<_, _>>>::bitxor
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::bit::Shl<ndarray::ArrayBase<_, _>>>::shl
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::bit::Shr<ndarray::ArrayBase<_, _>>>::shr
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::arith::Mul<ndarray::ArrayBase<_, _>>>::mul
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::arith::Div<ndarray::ArrayBase<_, _>>>::div
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::arith::Rem<ndarray::ArrayBase<_, _>>>::rem
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::bit::BitAnd<ndarray::ArrayBase<_, _>>>::bitand
80
}
81
82
/// Perform elementwise
83
#[doc=$doc]
84
/// between `self` and reference `rhs`,
85
/// and return the result.
86
///
87
/// `rhs` must be an `Array` or `ArcArray`.
88
///
89
/// If their shapes disagree, `self` is broadcast to their broadcast shape,
90
/// cloning the data if needed.
91
///
92
/// **Panics** if broadcasting isn’t possible.
93
impl<'a, A, B, S, S2, D, E> $trt<&'a ArrayBase<S2, E>> for ArrayBase<S, D>
94
where
95
    A: Clone + $trt<B, Output=A>,
96
    B: Clone,
97
    S: DataOwned<Elem=A> + DataMut,
98
    S2: Data<Elem=B>,
99
    D: Dimension + DimMax<E>,
100
    E: Dimension,
101
{
102
    type Output = ArrayBase<S, <D as DimMax<E>>::Output>;
103
    #[track_caller]
104
0
    fn $mth(self, rhs: &ArrayBase<S2, E>) -> Self::Output
105
    {
106
0
        if self.ndim() == rhs.ndim() && self.shape() == rhs.shape() {
107
0
            let mut out = self.into_dimensionality::<<D as DimMax<E>>::Output>().unwrap();
108
0
            out.zip_mut_with_same_shape(rhs, clone_iopf(A::$mth));
109
0
            out
110
        } else {
111
0
            let (lhs_view, rhs_view) = self.broadcast_with(&rhs).unwrap();
112
0
            if lhs_view.shape() == self.shape() {
113
0
                let mut out = self.into_dimensionality::<<D as DimMax<E>>::Output>().unwrap();
114
0
                out.zip_mut_with_same_shape(&rhs_view, clone_iopf(A::$mth));
115
0
                out
116
            } else {
117
0
                Zip::from(&lhs_view).and(&rhs_view).map_collect_owned(clone_opf(A::$mth))
118
            }
119
        }
120
0
    }
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::arith::Add<&ndarray::ArrayBase<_, _>>>::add
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::arith::Sub<&ndarray::ArrayBase<_, _>>>::sub
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::bit::BitOr<&ndarray::ArrayBase<_, _>>>::bitor
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::bit::BitXor<&ndarray::ArrayBase<_, _>>>::bitxor
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::bit::Shl<&ndarray::ArrayBase<_, _>>>::shl
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::bit::Shr<&ndarray::ArrayBase<_, _>>>::shr
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::arith::Mul<&ndarray::ArrayBase<_, _>>>::mul
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::arith::Div<&ndarray::ArrayBase<_, _>>>::div
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::arith::Rem<&ndarray::ArrayBase<_, _>>>::rem
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::bit::BitAnd<&ndarray::ArrayBase<_, _>>>::bitand
121
}
122
123
/// Perform elementwise
124
#[doc=$doc]
125
/// between reference `self` and `rhs`,
126
/// and return the result.
127
///
128
/// `rhs` must be an `Array` or `ArcArray`.
129
///
130
/// If their shapes disagree, `self` is broadcast to their broadcast shape,
131
/// cloning the data if needed.
132
///
133
/// **Panics** if broadcasting isn’t possible.
134
impl<'a, A, B, S, S2, D, E> $trt<ArrayBase<S2, E>> for &'a ArrayBase<S, D>
135
where
136
    A: Clone + $trt<B, Output=B>,
137
    B: Clone,
138
    S: Data<Elem=A>,
139
    S2: DataOwned<Elem=B> + DataMut,
140
    D: Dimension,
141
    E: Dimension + DimMax<D>,
142
{
143
    type Output = ArrayBase<S2, <E as DimMax<D>>::Output>;
144
    #[track_caller]
145
0
    fn $mth(self, rhs: ArrayBase<S2, E>) -> Self::Output
146
0
    where
147
    {
148
0
        if self.ndim() == rhs.ndim() && self.shape() == rhs.shape() {
149
0
            let mut out = rhs.into_dimensionality::<<E as DimMax<D>>::Output>().unwrap();
150
0
            out.zip_mut_with_same_shape(self, clone_iopf_rev(A::$mth));
151
0
            out
152
        } else {
153
0
            let (rhs_view, lhs_view) = rhs.broadcast_with(self).unwrap();
154
0
            if rhs_view.shape() == rhs.shape() {
155
0
                let mut out = rhs.into_dimensionality::<<E as DimMax<D>>::Output>().unwrap();
156
0
                out.zip_mut_with_same_shape(&lhs_view, clone_iopf_rev(A::$mth));
157
0
                out
158
            } else {
159
0
                Zip::from(&lhs_view).and(&rhs_view).map_collect_owned(clone_opf(A::$mth))
160
            }
161
        }
162
0
    }
Unexecuted instantiation: <&ndarray::ArrayBase<_, _> as core::ops::arith::Add<ndarray::ArrayBase<_, _>>>::add
Unexecuted instantiation: <&ndarray::ArrayBase<_, _> as core::ops::bit::BitOr<ndarray::ArrayBase<_, _>>>::bitor
Unexecuted instantiation: <&ndarray::ArrayBase<_, _> as core::ops::bit::BitXor<ndarray::ArrayBase<_, _>>>::bitxor
Unexecuted instantiation: <&ndarray::ArrayBase<_, _> as core::ops::bit::Shl<ndarray::ArrayBase<_, _>>>::shl
Unexecuted instantiation: <&ndarray::ArrayBase<_, _> as core::ops::bit::Shr<ndarray::ArrayBase<_, _>>>::shr
Unexecuted instantiation: <&ndarray::ArrayBase<_, _> as core::ops::arith::Sub<ndarray::ArrayBase<_, _>>>::sub
Unexecuted instantiation: <&ndarray::ArrayBase<_, _> as core::ops::arith::Mul<ndarray::ArrayBase<_, _>>>::mul
Unexecuted instantiation: <&ndarray::ArrayBase<_, _> as core::ops::arith::Div<ndarray::ArrayBase<_, _>>>::div
Unexecuted instantiation: <&ndarray::ArrayBase<_, _> as core::ops::arith::Rem<ndarray::ArrayBase<_, _>>>::rem
Unexecuted instantiation: <&ndarray::ArrayBase<_, _> as core::ops::bit::BitAnd<ndarray::ArrayBase<_, _>>>::bitand
163
}
164
165
/// Perform elementwise
166
#[doc=$doc]
167
/// between references `self` and `rhs`,
168
/// and return the result as a new `Array`.
169
///
170
/// If their shapes disagree, `self` and `rhs` is broadcast to their broadcast shape,
171
/// cloning the data if needed.
172
///
173
/// **Panics** if broadcasting isn’t possible.
174
impl<'a, A, B, S, S2, D, E> $trt<&'a ArrayBase<S2, E>> for &'a ArrayBase<S, D>
175
where
176
    A: Clone + $trt<B, Output=A>,
177
    B: Clone,
178
    S: Data<Elem=A>,
179
    S2: Data<Elem=B>,
180
    D: Dimension + DimMax<E>,
181
    E: Dimension,
182
{
183
    type Output = Array<A, <D as DimMax<E>>::Output>;
184
    #[track_caller]
185
0
    fn $mth(self, rhs: &'a ArrayBase<S2, E>) -> Self::Output {
186
0
        let (lhs, rhs) = if self.ndim() == rhs.ndim() && self.shape() == rhs.shape() {
187
0
            let lhs = self.view().into_dimensionality::<<D as DimMax<E>>::Output>().unwrap();
188
0
            let rhs = rhs.view().into_dimensionality::<<D as DimMax<E>>::Output>().unwrap();
189
0
            (lhs, rhs)
190
        } else {
191
0
            self.broadcast_with(rhs).unwrap()
192
        };
193
0
        Zip::from(lhs).and(rhs).map_collect(clone_opf(A::$mth))
194
0
    }
Unexecuted instantiation: <&ndarray::ArrayBase<_, _> as core::ops::arith::Add<&ndarray::ArrayBase<_, _>>>::add
Unexecuted instantiation: <&ndarray::ArrayBase<_, _> as core::ops::bit::BitOr<&ndarray::ArrayBase<_, _>>>::bitor
Unexecuted instantiation: <&ndarray::ArrayBase<_, _> as core::ops::bit::BitXor<&ndarray::ArrayBase<_, _>>>::bitxor
Unexecuted instantiation: <&ndarray::ArrayBase<_, _> as core::ops::bit::Shl<&ndarray::ArrayBase<_, _>>>::shl
Unexecuted instantiation: <&ndarray::ArrayBase<_, _> as core::ops::bit::Shr<&ndarray::ArrayBase<_, _>>>::shr
Unexecuted instantiation: <&ndarray::ArrayBase<_, _> as core::ops::arith::Sub<&ndarray::ArrayBase<_, _>>>::sub
Unexecuted instantiation: <&ndarray::ArrayBase<_, _> as core::ops::arith::Mul<&ndarray::ArrayBase<_, _>>>::mul
Unexecuted instantiation: <&ndarray::ArrayBase<_, _> as core::ops::arith::Div<&ndarray::ArrayBase<_, _>>>::div
Unexecuted instantiation: <&ndarray::ArrayBase<_, _> as core::ops::arith::Rem<&ndarray::ArrayBase<_, _>>>::rem
Unexecuted instantiation: <&ndarray::ArrayBase<_, _> as core::ops::bit::BitAnd<&ndarray::ArrayBase<_, _>>>::bitand
195
}
196
197
/// Perform elementwise
198
#[doc=$doc]
199
/// between `self` and the scalar `x`,
200
/// and return the result (based on `self`).
201
///
202
/// `self` must be an `Array` or `ArcArray`.
203
impl<A, S, D, B> $trt<B> for ArrayBase<S, D>
204
    where A: Clone + $trt<B, Output=A>,
205
          S: DataOwned<Elem=A> + DataMut,
206
          D: Dimension,
207
          B: ScalarOperand,
208
{
209
    type Output = ArrayBase<S, D>;
210
0
    fn $mth(mut self, x: B) -> ArrayBase<S, D> {
211
0
        self.map_inplace(move |elt| {
212
0
            *elt = elt.clone() $operator x.clone();
213
0
        });
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::arith::Add<_>>::add::{closure#0}
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::bit::BitAnd<_>>::bitand::{closure#0}
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::bit::BitOr<_>>::bitor::{closure#0}
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::bit::BitXor<_>>::bitxor::{closure#0}
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::bit::Shl<_>>::shl::{closure#0}
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::bit::Shr<_>>::shr::{closure#0}
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::arith::Sub<_>>::sub::{closure#0}
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::arith::Mul<_>>::mul::{closure#0}
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::arith::Div<_>>::div::{closure#0}
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::arith::Rem<_>>::rem::{closure#0}
214
0
        self
215
0
    }
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::arith::Add<_>>::add
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::bit::BitAnd<_>>::bitand
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::bit::BitOr<_>>::bitor
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::bit::BitXor<_>>::bitxor
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::bit::Shl<_>>::shl
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::bit::Shr<_>>::shr
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::arith::Sub<_>>::sub
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::arith::Mul<_>>::mul
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::arith::Div<_>>::div
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::arith::Rem<_>>::rem
216
}
217
218
/// Perform elementwise
219
#[doc=$doc]
220
/// between the reference `self` and the scalar `x`,
221
/// and return the result as a new `Array`.
222
impl<'a, A, S, D, B> $trt<B> for &'a ArrayBase<S, D>
223
    where A: Clone + $trt<B, Output=A>,
224
          S: Data<Elem=A>,
225
          D: Dimension,
226
          B: ScalarOperand,
227
{
228
    type Output = Array<A, D>;
229
0
    fn $mth(self, x: B) -> Self::Output {
230
0
        self.map(move |elt| elt.clone() $operator x.clone())
Unexecuted instantiation: <&ndarray::ArrayBase<_, _> as core::ops::arith::Add<_>>::add::{closure#0}
Unexecuted instantiation: <&ndarray::ArrayBase<_, _> as core::ops::bit::BitAnd<_>>::bitand::{closure#0}
Unexecuted instantiation: <&ndarray::ArrayBase<_, _> as core::ops::bit::BitOr<_>>::bitor::{closure#0}
Unexecuted instantiation: <&ndarray::ArrayBase<_, _> as core::ops::bit::BitXor<_>>::bitxor::{closure#0}
Unexecuted instantiation: <&ndarray::ArrayBase<_, _> as core::ops::bit::Shl<_>>::shl::{closure#0}
Unexecuted instantiation: <&ndarray::ArrayBase<_, _> as core::ops::bit::Shr<_>>::shr::{closure#0}
Unexecuted instantiation: <&ndarray::ArrayBase<_, _> as core::ops::arith::Sub<_>>::sub::{closure#0}
Unexecuted instantiation: <&ndarray::ArrayBase<_, _> as core::ops::arith::Mul<_>>::mul::{closure#0}
Unexecuted instantiation: <&ndarray::ArrayBase<_, _> as core::ops::arith::Div<_>>::div::{closure#0}
Unexecuted instantiation: <&ndarray::ArrayBase<_, _> as core::ops::arith::Rem<_>>::rem::{closure#0}
231
0
    }
Unexecuted instantiation: <&ndarray::ArrayBase<_, _> as core::ops::arith::Add<_>>::add
Unexecuted instantiation: <&ndarray::ArrayBase<_, _> as core::ops::bit::BitAnd<_>>::bitand
Unexecuted instantiation: <&ndarray::ArrayBase<_, _> as core::ops::bit::BitOr<_>>::bitor
Unexecuted instantiation: <&ndarray::ArrayBase<_, _> as core::ops::bit::BitXor<_>>::bitxor
Unexecuted instantiation: <&ndarray::ArrayBase<_, _> as core::ops::bit::Shl<_>>::shl
Unexecuted instantiation: <&ndarray::ArrayBase<_, _> as core::ops::bit::Shr<_>>::shr
Unexecuted instantiation: <&ndarray::ArrayBase<_, _> as core::ops::arith::Sub<_>>::sub
Unexecuted instantiation: <&ndarray::ArrayBase<_, _> as core::ops::arith::Mul<_>>::mul
Unexecuted instantiation: <&ndarray::ArrayBase<_, _> as core::ops::arith::Div<_>>::div
Unexecuted instantiation: <&ndarray::ArrayBase<_, _> as core::ops::arith::Rem<_>>::rem
232
}
233
    );
234
);
235
236
// Pick the expression $a for commutative and $b for ordered binop
237
macro_rules! if_commutative {
238
    (Commute { $a:expr } or { $b:expr }) => {
239
        $a
240
    };
241
    (Ordered { $a:expr } or { $b:expr }) => {
242
        $b
243
    };
244
}
245
246
macro_rules! impl_scalar_lhs_op {
247
    // $commutative flag. Reuse the self + scalar impl if we can.
248
    // We can do this safely since these are the primitive numeric types
249
    ($scalar:ty, $commutative:ident, $operator:tt, $trt:ident, $mth:ident, $doc:expr) => (
250
// these have no doc -- they are not visible in rustdoc
251
// Perform elementwise
252
// between the scalar `self` and array `rhs`,
253
// and return the result (based on `self`).
254
impl<S, D> $trt<ArrayBase<S, D>> for $scalar
255
    where S: DataOwned<Elem=$scalar> + DataMut,
256
          D: Dimension,
257
{
258
    type Output = ArrayBase<S, D>;
259
0
    fn $mth(self, rhs: ArrayBase<S, D>) -> ArrayBase<S, D> {
260
        if_commutative!($commutative {
261
0
            rhs.$mth(self)
262
        } or {{
263
0
            let mut rhs = rhs;
264
0
            rhs.map_inplace(move |elt| {
265
0
                *elt = self $operator *elt;
266
0
            });
Unexecuted instantiation: <i8 as core::ops::arith::Sub<ndarray::ArrayBase<_, _>>>::sub::{closure#0}
Unexecuted instantiation: <i8 as core::ops::arith::Div<ndarray::ArrayBase<_, _>>>::div::{closure#0}
Unexecuted instantiation: <i8 as core::ops::arith::Rem<ndarray::ArrayBase<_, _>>>::rem::{closure#0}
Unexecuted instantiation: <u8 as core::ops::bit::Shl<ndarray::ArrayBase<_, _>>>::shl::{closure#0}
Unexecuted instantiation: <u8 as core::ops::bit::Shr<ndarray::ArrayBase<_, _>>>::shr::{closure#0}
Unexecuted instantiation: <i16 as core::ops::arith::Sub<ndarray::ArrayBase<_, _>>>::sub::{closure#0}
Unexecuted instantiation: <i16 as core::ops::arith::Div<ndarray::ArrayBase<_, _>>>::div::{closure#0}
Unexecuted instantiation: <i16 as core::ops::arith::Rem<ndarray::ArrayBase<_, _>>>::rem::{closure#0}
Unexecuted instantiation: <i16 as core::ops::bit::Shl<ndarray::ArrayBase<_, _>>>::shl::{closure#0}
Unexecuted instantiation: <i16 as core::ops::bit::Shr<ndarray::ArrayBase<_, _>>>::shr::{closure#0}
Unexecuted instantiation: <i8 as core::ops::bit::Shl<ndarray::ArrayBase<_, _>>>::shl::{closure#0}
Unexecuted instantiation: <i8 as core::ops::bit::Shr<ndarray::ArrayBase<_, _>>>::shr::{closure#0}
Unexecuted instantiation: <u8 as core::ops::arith::Sub<ndarray::ArrayBase<_, _>>>::sub::{closure#0}
Unexecuted instantiation: <u8 as core::ops::arith::Div<ndarray::ArrayBase<_, _>>>::div::{closure#0}
Unexecuted instantiation: <u8 as core::ops::arith::Rem<ndarray::ArrayBase<_, _>>>::rem::{closure#0}
Unexecuted instantiation: <u16 as core::ops::arith::Sub<ndarray::ArrayBase<_, _>>>::sub::{closure#0}
Unexecuted instantiation: <u16 as core::ops::arith::Div<ndarray::ArrayBase<_, _>>>::div::{closure#0}
Unexecuted instantiation: <u16 as core::ops::arith::Rem<ndarray::ArrayBase<_, _>>>::rem::{closure#0}
Unexecuted instantiation: <i32 as core::ops::bit::Shr<ndarray::ArrayBase<_, _>>>::shr::{closure#0}
Unexecuted instantiation: <u32 as core::ops::arith::Sub<ndarray::ArrayBase<_, _>>>::sub::{closure#0}
Unexecuted instantiation: <u32 as core::ops::arith::Div<ndarray::ArrayBase<_, _>>>::div::{closure#0}
Unexecuted instantiation: <u32 as core::ops::arith::Rem<ndarray::ArrayBase<_, _>>>::rem::{closure#0}
Unexecuted instantiation: <u32 as core::ops::bit::Shl<ndarray::ArrayBase<_, _>>>::shl::{closure#0}
Unexecuted instantiation: <u32 as core::ops::bit::Shr<ndarray::ArrayBase<_, _>>>::shr::{closure#0}
Unexecuted instantiation: <i64 as core::ops::arith::Sub<ndarray::ArrayBase<_, _>>>::sub::{closure#0}
Unexecuted instantiation: <u16 as core::ops::bit::Shl<ndarray::ArrayBase<_, _>>>::shl::{closure#0}
Unexecuted instantiation: <u16 as core::ops::bit::Shr<ndarray::ArrayBase<_, _>>>::shr::{closure#0}
Unexecuted instantiation: <i32 as core::ops::arith::Sub<ndarray::ArrayBase<_, _>>>::sub::{closure#0}
Unexecuted instantiation: <i32 as core::ops::arith::Div<ndarray::ArrayBase<_, _>>>::div::{closure#0}
Unexecuted instantiation: <i32 as core::ops::arith::Rem<ndarray::ArrayBase<_, _>>>::rem::{closure#0}
Unexecuted instantiation: <i32 as core::ops::bit::Shl<ndarray::ArrayBase<_, _>>>::shl::{closure#0}
Unexecuted instantiation: <i64 as core::ops::arith::Div<ndarray::ArrayBase<_, _>>>::div::{closure#0}
Unexecuted instantiation: <i64 as core::ops::arith::Rem<ndarray::ArrayBase<_, _>>>::rem::{closure#0}
Unexecuted instantiation: <isize as core::ops::arith::Sub<ndarray::ArrayBase<_, _>>>::sub::{closure#0}
Unexecuted instantiation: <isize as core::ops::arith::Div<ndarray::ArrayBase<_, _>>>::div::{closure#0}
Unexecuted instantiation: <isize as core::ops::arith::Rem<ndarray::ArrayBase<_, _>>>::rem::{closure#0}
Unexecuted instantiation: <isize as core::ops::bit::Shl<ndarray::ArrayBase<_, _>>>::shl::{closure#0}
Unexecuted instantiation: <isize as core::ops::bit::Shr<ndarray::ArrayBase<_, _>>>::shr::{closure#0}
Unexecuted instantiation: <usize as core::ops::arith::Sub<ndarray::ArrayBase<_, _>>>::sub::{closure#0}
Unexecuted instantiation: <i64 as core::ops::bit::Shl<ndarray::ArrayBase<_, _>>>::shl::{closure#0}
Unexecuted instantiation: <i64 as core::ops::bit::Shr<ndarray::ArrayBase<_, _>>>::shr::{closure#0}
Unexecuted instantiation: <u64 as core::ops::arith::Sub<ndarray::ArrayBase<_, _>>>::sub::{closure#0}
Unexecuted instantiation: <u64 as core::ops::arith::Div<ndarray::ArrayBase<_, _>>>::div::{closure#0}
Unexecuted instantiation: <u64 as core::ops::arith::Rem<ndarray::ArrayBase<_, _>>>::rem::{closure#0}
Unexecuted instantiation: <u64 as core::ops::bit::Shl<ndarray::ArrayBase<_, _>>>::shl::{closure#0}
Unexecuted instantiation: <u64 as core::ops::bit::Shr<ndarray::ArrayBase<_, _>>>::shr::{closure#0}
Unexecuted instantiation: <usize as core::ops::arith::Div<ndarray::ArrayBase<_, _>>>::div::{closure#0}
Unexecuted instantiation: <usize as core::ops::arith::Rem<ndarray::ArrayBase<_, _>>>::rem::{closure#0}
Unexecuted instantiation: <u128 as core::ops::arith::Sub<ndarray::ArrayBase<_, _>>>::sub::{closure#0}
Unexecuted instantiation: <u128 as core::ops::arith::Div<ndarray::ArrayBase<_, _>>>::div::{closure#0}
Unexecuted instantiation: <u128 as core::ops::arith::Rem<ndarray::ArrayBase<_, _>>>::rem::{closure#0}
Unexecuted instantiation: <u128 as core::ops::bit::Shl<ndarray::ArrayBase<_, _>>>::shl::{closure#0}
Unexecuted instantiation: <u128 as core::ops::bit::Shr<ndarray::ArrayBase<_, _>>>::shr::{closure#0}
Unexecuted instantiation: <usize as core::ops::bit::Shl<ndarray::ArrayBase<_, _>>>::shl::{closure#0}
Unexecuted instantiation: <usize as core::ops::bit::Shr<ndarray::ArrayBase<_, _>>>::shr::{closure#0}
Unexecuted instantiation: <i128 as core::ops::arith::Sub<ndarray::ArrayBase<_, _>>>::sub::{closure#0}
Unexecuted instantiation: <i128 as core::ops::arith::Div<ndarray::ArrayBase<_, _>>>::div::{closure#0}
Unexecuted instantiation: <i128 as core::ops::arith::Rem<ndarray::ArrayBase<_, _>>>::rem::{closure#0}
Unexecuted instantiation: <i128 as core::ops::bit::Shl<ndarray::ArrayBase<_, _>>>::shl::{closure#0}
Unexecuted instantiation: <i128 as core::ops::bit::Shr<ndarray::ArrayBase<_, _>>>::shr::{closure#0}
Unexecuted instantiation: <f32 as core::ops::arith::Sub<ndarray::ArrayBase<_, _>>>::sub::{closure#0}
Unexecuted instantiation: <f32 as core::ops::arith::Div<ndarray::ArrayBase<_, _>>>::div::{closure#0}
Unexecuted instantiation: <f32 as core::ops::arith::Rem<ndarray::ArrayBase<_, _>>>::rem::{closure#0}
Unexecuted instantiation: <f64 as core::ops::arith::Sub<ndarray::ArrayBase<_, _>>>::sub::{closure#0}
Unexecuted instantiation: <f64 as core::ops::arith::Div<ndarray::ArrayBase<_, _>>>::div::{closure#0}
Unexecuted instantiation: <f64 as core::ops::arith::Rem<ndarray::ArrayBase<_, _>>>::rem::{closure#0}
Unexecuted instantiation: <num_complex::Complex<f32> as core::ops::arith::Sub<ndarray::ArrayBase<_, _>>>::sub::{closure#0}
Unexecuted instantiation: <num_complex::Complex<f32> as core::ops::arith::Div<ndarray::ArrayBase<_, _>>>::div::{closure#0}
Unexecuted instantiation: <num_complex::Complex<f64> as core::ops::arith::Sub<ndarray::ArrayBase<_, _>>>::sub::{closure#0}
Unexecuted instantiation: <num_complex::Complex<f64> as core::ops::arith::Div<ndarray::ArrayBase<_, _>>>::div::{closure#0}
267
0
            rhs
268
        }})
269
0
    }
Unexecuted instantiation: <i8 as core::ops::arith::Add<ndarray::ArrayBase<_, _>>>::add
Unexecuted instantiation: <i8 as core::ops::arith::Sub<ndarray::ArrayBase<_, _>>>::sub
Unexecuted instantiation: <i8 as core::ops::arith::Mul<ndarray::ArrayBase<_, _>>>::mul
Unexecuted instantiation: <i8 as core::ops::arith::Div<ndarray::ArrayBase<_, _>>>::div
Unexecuted instantiation: <i8 as core::ops::arith::Rem<ndarray::ArrayBase<_, _>>>::rem
Unexecuted instantiation: <u8 as core::ops::bit::Shl<ndarray::ArrayBase<_, _>>>::shl
Unexecuted instantiation: <u8 as core::ops::bit::Shr<ndarray::ArrayBase<_, _>>>::shr
Unexecuted instantiation: <i16 as core::ops::arith::Add<ndarray::ArrayBase<_, _>>>::add
Unexecuted instantiation: <i16 as core::ops::arith::Sub<ndarray::ArrayBase<_, _>>>::sub
Unexecuted instantiation: <i16 as core::ops::arith::Mul<ndarray::ArrayBase<_, _>>>::mul
Unexecuted instantiation: <i16 as core::ops::arith::Div<ndarray::ArrayBase<_, _>>>::div
Unexecuted instantiation: <i16 as core::ops::arith::Rem<ndarray::ArrayBase<_, _>>>::rem
Unexecuted instantiation: <i16 as core::ops::bit::BitAnd<ndarray::ArrayBase<_, _>>>::bitand
Unexecuted instantiation: <i16 as core::ops::bit::BitOr<ndarray::ArrayBase<_, _>>>::bitor
Unexecuted instantiation: <i16 as core::ops::bit::BitXor<ndarray::ArrayBase<_, _>>>::bitxor
Unexecuted instantiation: <i16 as core::ops::bit::Shl<ndarray::ArrayBase<_, _>>>::shl
Unexecuted instantiation: <i16 as core::ops::bit::Shr<ndarray::ArrayBase<_, _>>>::shr
Unexecuted instantiation: <u16 as core::ops::arith::Add<ndarray::ArrayBase<_, _>>>::add
Unexecuted instantiation: <i8 as core::ops::bit::BitAnd<ndarray::ArrayBase<_, _>>>::bitand
Unexecuted instantiation: <i8 as core::ops::bit::BitOr<ndarray::ArrayBase<_, _>>>::bitor
Unexecuted instantiation: <i8 as core::ops::bit::BitXor<ndarray::ArrayBase<_, _>>>::bitxor
Unexecuted instantiation: <i8 as core::ops::bit::Shl<ndarray::ArrayBase<_, _>>>::shl
Unexecuted instantiation: <i8 as core::ops::bit::Shr<ndarray::ArrayBase<_, _>>>::shr
Unexecuted instantiation: <u8 as core::ops::arith::Add<ndarray::ArrayBase<_, _>>>::add
Unexecuted instantiation: <u8 as core::ops::arith::Sub<ndarray::ArrayBase<_, _>>>::sub
Unexecuted instantiation: <u8 as core::ops::arith::Mul<ndarray::ArrayBase<_, _>>>::mul
Unexecuted instantiation: <u8 as core::ops::arith::Div<ndarray::ArrayBase<_, _>>>::div
Unexecuted instantiation: <u8 as core::ops::arith::Rem<ndarray::ArrayBase<_, _>>>::rem
Unexecuted instantiation: <u8 as core::ops::bit::BitAnd<ndarray::ArrayBase<_, _>>>::bitand
Unexecuted instantiation: <u8 as core::ops::bit::BitOr<ndarray::ArrayBase<_, _>>>::bitor
Unexecuted instantiation: <u8 as core::ops::bit::BitXor<ndarray::ArrayBase<_, _>>>::bitxor
Unexecuted instantiation: <u16 as core::ops::arith::Sub<ndarray::ArrayBase<_, _>>>::sub
Unexecuted instantiation: <u16 as core::ops::arith::Mul<ndarray::ArrayBase<_, _>>>::mul
Unexecuted instantiation: <u16 as core::ops::arith::Div<ndarray::ArrayBase<_, _>>>::div
Unexecuted instantiation: <u16 as core::ops::arith::Rem<ndarray::ArrayBase<_, _>>>::rem
Unexecuted instantiation: <u16 as core::ops::bit::BitAnd<ndarray::ArrayBase<_, _>>>::bitand
Unexecuted instantiation: <i32 as core::ops::bit::Shr<ndarray::ArrayBase<_, _>>>::shr
Unexecuted instantiation: <u32 as core::ops::arith::Add<ndarray::ArrayBase<_, _>>>::add
Unexecuted instantiation: <u32 as core::ops::arith::Sub<ndarray::ArrayBase<_, _>>>::sub
Unexecuted instantiation: <u32 as core::ops::arith::Mul<ndarray::ArrayBase<_, _>>>::mul
Unexecuted instantiation: <u32 as core::ops::arith::Div<ndarray::ArrayBase<_, _>>>::div
Unexecuted instantiation: <u32 as core::ops::arith::Rem<ndarray::ArrayBase<_, _>>>::rem
Unexecuted instantiation: <u32 as core::ops::bit::BitAnd<ndarray::ArrayBase<_, _>>>::bitand
Unexecuted instantiation: <u32 as core::ops::bit::BitOr<ndarray::ArrayBase<_, _>>>::bitor
Unexecuted instantiation: <u32 as core::ops::bit::BitXor<ndarray::ArrayBase<_, _>>>::bitxor
Unexecuted instantiation: <u32 as core::ops::bit::Shl<ndarray::ArrayBase<_, _>>>::shl
Unexecuted instantiation: <u32 as core::ops::bit::Shr<ndarray::ArrayBase<_, _>>>::shr
Unexecuted instantiation: <i64 as core::ops::arith::Add<ndarray::ArrayBase<_, _>>>::add
Unexecuted instantiation: <i64 as core::ops::arith::Sub<ndarray::ArrayBase<_, _>>>::sub
Unexecuted instantiation: <u16 as core::ops::bit::BitOr<ndarray::ArrayBase<_, _>>>::bitor
Unexecuted instantiation: <u16 as core::ops::bit::BitXor<ndarray::ArrayBase<_, _>>>::bitxor
Unexecuted instantiation: <u16 as core::ops::bit::Shl<ndarray::ArrayBase<_, _>>>::shl
Unexecuted instantiation: <u16 as core::ops::bit::Shr<ndarray::ArrayBase<_, _>>>::shr
Unexecuted instantiation: <i32 as core::ops::arith::Add<ndarray::ArrayBase<_, _>>>::add
Unexecuted instantiation: <i32 as core::ops::arith::Sub<ndarray::ArrayBase<_, _>>>::sub
Unexecuted instantiation: <i32 as core::ops::arith::Mul<ndarray::ArrayBase<_, _>>>::mul
Unexecuted instantiation: <i32 as core::ops::arith::Div<ndarray::ArrayBase<_, _>>>::div
Unexecuted instantiation: <i32 as core::ops::arith::Rem<ndarray::ArrayBase<_, _>>>::rem
Unexecuted instantiation: <i32 as core::ops::bit::BitAnd<ndarray::ArrayBase<_, _>>>::bitand
Unexecuted instantiation: <i32 as core::ops::bit::BitOr<ndarray::ArrayBase<_, _>>>::bitor
Unexecuted instantiation: <i32 as core::ops::bit::BitXor<ndarray::ArrayBase<_, _>>>::bitxor
Unexecuted instantiation: <i32 as core::ops::bit::Shl<ndarray::ArrayBase<_, _>>>::shl
Unexecuted instantiation: <i64 as core::ops::arith::Mul<ndarray::ArrayBase<_, _>>>::mul
Unexecuted instantiation: <i64 as core::ops::arith::Div<ndarray::ArrayBase<_, _>>>::div
Unexecuted instantiation: <i64 as core::ops::arith::Rem<ndarray::ArrayBase<_, _>>>::rem
Unexecuted instantiation: <i64 as core::ops::bit::BitAnd<ndarray::ArrayBase<_, _>>>::bitand
Unexecuted instantiation: <i64 as core::ops::bit::BitOr<ndarray::ArrayBase<_, _>>>::bitor
Unexecuted instantiation: <isize as core::ops::arith::Add<ndarray::ArrayBase<_, _>>>::add
Unexecuted instantiation: <isize as core::ops::arith::Sub<ndarray::ArrayBase<_, _>>>::sub
Unexecuted instantiation: <isize as core::ops::arith::Mul<ndarray::ArrayBase<_, _>>>::mul
Unexecuted instantiation: <isize as core::ops::arith::Div<ndarray::ArrayBase<_, _>>>::div
Unexecuted instantiation: <isize as core::ops::arith::Rem<ndarray::ArrayBase<_, _>>>::rem
Unexecuted instantiation: <isize as core::ops::bit::BitAnd<ndarray::ArrayBase<_, _>>>::bitand
Unexecuted instantiation: <isize as core::ops::bit::BitOr<ndarray::ArrayBase<_, _>>>::bitor
Unexecuted instantiation: <isize as core::ops::bit::BitXor<ndarray::ArrayBase<_, _>>>::bitxor
Unexecuted instantiation: <isize as core::ops::bit::Shl<ndarray::ArrayBase<_, _>>>::shl
Unexecuted instantiation: <isize as core::ops::bit::Shr<ndarray::ArrayBase<_, _>>>::shr
Unexecuted instantiation: <usize as core::ops::arith::Add<ndarray::ArrayBase<_, _>>>::add
Unexecuted instantiation: <usize as core::ops::arith::Sub<ndarray::ArrayBase<_, _>>>::sub
Unexecuted instantiation: <usize as core::ops::arith::Mul<ndarray::ArrayBase<_, _>>>::mul
Unexecuted instantiation: <i64 as core::ops::bit::BitXor<ndarray::ArrayBase<_, _>>>::bitxor
Unexecuted instantiation: <i64 as core::ops::bit::Shl<ndarray::ArrayBase<_, _>>>::shl
Unexecuted instantiation: <i64 as core::ops::bit::Shr<ndarray::ArrayBase<_, _>>>::shr
Unexecuted instantiation: <u64 as core::ops::arith::Add<ndarray::ArrayBase<_, _>>>::add
Unexecuted instantiation: <u64 as core::ops::arith::Sub<ndarray::ArrayBase<_, _>>>::sub
Unexecuted instantiation: <u64 as core::ops::arith::Mul<ndarray::ArrayBase<_, _>>>::mul
Unexecuted instantiation: <u64 as core::ops::arith::Div<ndarray::ArrayBase<_, _>>>::div
Unexecuted instantiation: <u64 as core::ops::arith::Rem<ndarray::ArrayBase<_, _>>>::rem
Unexecuted instantiation: <u64 as core::ops::bit::BitAnd<ndarray::ArrayBase<_, _>>>::bitand
Unexecuted instantiation: <u64 as core::ops::bit::BitOr<ndarray::ArrayBase<_, _>>>::bitor
Unexecuted instantiation: <u64 as core::ops::bit::BitXor<ndarray::ArrayBase<_, _>>>::bitxor
Unexecuted instantiation: <u64 as core::ops::bit::Shl<ndarray::ArrayBase<_, _>>>::shl
Unexecuted instantiation: <u64 as core::ops::bit::Shr<ndarray::ArrayBase<_, _>>>::shr
Unexecuted instantiation: <usize as core::ops::arith::Div<ndarray::ArrayBase<_, _>>>::div
Unexecuted instantiation: <usize as core::ops::arith::Rem<ndarray::ArrayBase<_, _>>>::rem
Unexecuted instantiation: <usize as core::ops::bit::BitAnd<ndarray::ArrayBase<_, _>>>::bitand
Unexecuted instantiation: <usize as core::ops::bit::BitOr<ndarray::ArrayBase<_, _>>>::bitor
Unexecuted instantiation: <usize as core::ops::bit::BitXor<ndarray::ArrayBase<_, _>>>::bitxor
Unexecuted instantiation: <u128 as core::ops::arith::Sub<ndarray::ArrayBase<_, _>>>::sub
Unexecuted instantiation: <u128 as core::ops::arith::Mul<ndarray::ArrayBase<_, _>>>::mul
Unexecuted instantiation: <u128 as core::ops::arith::Div<ndarray::ArrayBase<_, _>>>::div
Unexecuted instantiation: <u128 as core::ops::arith::Rem<ndarray::ArrayBase<_, _>>>::rem
Unexecuted instantiation: <u128 as core::ops::bit::BitAnd<ndarray::ArrayBase<_, _>>>::bitand
Unexecuted instantiation: <u128 as core::ops::bit::BitOr<ndarray::ArrayBase<_, _>>>::bitor
Unexecuted instantiation: <u128 as core::ops::bit::BitXor<ndarray::ArrayBase<_, _>>>::bitxor
Unexecuted instantiation: <u128 as core::ops::bit::Shl<ndarray::ArrayBase<_, _>>>::shl
Unexecuted instantiation: <u128 as core::ops::bit::Shr<ndarray::ArrayBase<_, _>>>::shr
Unexecuted instantiation: <bool as core::ops::bit::BitAnd<ndarray::ArrayBase<_, _>>>::bitand
Unexecuted instantiation: <bool as core::ops::bit::BitOr<ndarray::ArrayBase<_, _>>>::bitor
Unexecuted instantiation: <bool as core::ops::bit::BitXor<ndarray::ArrayBase<_, _>>>::bitxor
Unexecuted instantiation: <f32 as core::ops::arith::Add<ndarray::ArrayBase<_, _>>>::add
Unexecuted instantiation: <usize as core::ops::bit::Shl<ndarray::ArrayBase<_, _>>>::shl
Unexecuted instantiation: <usize as core::ops::bit::Shr<ndarray::ArrayBase<_, _>>>::shr
Unexecuted instantiation: <i128 as core::ops::arith::Add<ndarray::ArrayBase<_, _>>>::add
Unexecuted instantiation: <i128 as core::ops::arith::Sub<ndarray::ArrayBase<_, _>>>::sub
Unexecuted instantiation: <i128 as core::ops::arith::Mul<ndarray::ArrayBase<_, _>>>::mul
Unexecuted instantiation: <i128 as core::ops::arith::Div<ndarray::ArrayBase<_, _>>>::div
Unexecuted instantiation: <i128 as core::ops::arith::Rem<ndarray::ArrayBase<_, _>>>::rem
Unexecuted instantiation: <i128 as core::ops::bit::BitAnd<ndarray::ArrayBase<_, _>>>::bitand
Unexecuted instantiation: <i128 as core::ops::bit::BitOr<ndarray::ArrayBase<_, _>>>::bitor
Unexecuted instantiation: <i128 as core::ops::bit::BitXor<ndarray::ArrayBase<_, _>>>::bitxor
Unexecuted instantiation: <i128 as core::ops::bit::Shl<ndarray::ArrayBase<_, _>>>::shl
Unexecuted instantiation: <i128 as core::ops::bit::Shr<ndarray::ArrayBase<_, _>>>::shr
Unexecuted instantiation: <u128 as core::ops::arith::Add<ndarray::ArrayBase<_, _>>>::add
Unexecuted instantiation: <f32 as core::ops::arith::Sub<ndarray::ArrayBase<_, _>>>::sub
Unexecuted instantiation: <f32 as core::ops::arith::Mul<ndarray::ArrayBase<_, _>>>::mul
Unexecuted instantiation: <f32 as core::ops::arith::Div<ndarray::ArrayBase<_, _>>>::div
Unexecuted instantiation: <f32 as core::ops::arith::Rem<ndarray::ArrayBase<_, _>>>::rem
Unexecuted instantiation: <f64 as core::ops::arith::Add<ndarray::ArrayBase<_, _>>>::add
Unexecuted instantiation: <f64 as core::ops::arith::Sub<ndarray::ArrayBase<_, _>>>::sub
Unexecuted instantiation: <f64 as core::ops::arith::Mul<ndarray::ArrayBase<_, _>>>::mul
Unexecuted instantiation: <f64 as core::ops::arith::Div<ndarray::ArrayBase<_, _>>>::div
Unexecuted instantiation: <f64 as core::ops::arith::Rem<ndarray::ArrayBase<_, _>>>::rem
Unexecuted instantiation: <num_complex::Complex<f32> as core::ops::arith::Add<ndarray::ArrayBase<_, _>>>::add
Unexecuted instantiation: <num_complex::Complex<f32> as core::ops::arith::Sub<ndarray::ArrayBase<_, _>>>::sub
Unexecuted instantiation: <num_complex::Complex<f32> as core::ops::arith::Mul<ndarray::ArrayBase<_, _>>>::mul
Unexecuted instantiation: <num_complex::Complex<f32> as core::ops::arith::Div<ndarray::ArrayBase<_, _>>>::div
Unexecuted instantiation: <num_complex::Complex<f64> as core::ops::arith::Add<ndarray::ArrayBase<_, _>>>::add
Unexecuted instantiation: <num_complex::Complex<f64> as core::ops::arith::Sub<ndarray::ArrayBase<_, _>>>::sub
Unexecuted instantiation: <num_complex::Complex<f64> as core::ops::arith::Mul<ndarray::ArrayBase<_, _>>>::mul
Unexecuted instantiation: <num_complex::Complex<f64> as core::ops::arith::Div<ndarray::ArrayBase<_, _>>>::div
270
}
271
272
// Perform elementwise
273
// between the scalar `self` and array `rhs`,
274
// and return the result as a new `Array`.
275
impl<'a, S, D> $trt<&'a ArrayBase<S, D>> for $scalar
276
    where S: Data<Elem=$scalar>,
277
          D: Dimension,
278
{
279
    type Output = Array<$scalar, D>;
280
0
    fn $mth(self, rhs: &ArrayBase<S, D>) -> Self::Output {
281
        if_commutative!($commutative {
282
0
            rhs.$mth(self)
283
        } or {
284
0
            rhs.map(move |elt| self.clone() $operator elt.clone())
Unexecuted instantiation: <i8 as core::ops::arith::Sub<&ndarray::ArrayBase<_, _>>>::sub::{closure#0}
Unexecuted instantiation: <i8 as core::ops::arith::Div<&ndarray::ArrayBase<_, _>>>::div::{closure#0}
Unexecuted instantiation: <i8 as core::ops::arith::Rem<&ndarray::ArrayBase<_, _>>>::rem::{closure#0}
Unexecuted instantiation: <u8 as core::ops::bit::Shl<&ndarray::ArrayBase<_, _>>>::shl::{closure#0}
Unexecuted instantiation: <u8 as core::ops::bit::Shr<&ndarray::ArrayBase<_, _>>>::shr::{closure#0}
Unexecuted instantiation: <i16 as core::ops::arith::Sub<&ndarray::ArrayBase<_, _>>>::sub::{closure#0}
Unexecuted instantiation: <i16 as core::ops::arith::Div<&ndarray::ArrayBase<_, _>>>::div::{closure#0}
Unexecuted instantiation: <i16 as core::ops::arith::Rem<&ndarray::ArrayBase<_, _>>>::rem::{closure#0}
Unexecuted instantiation: <i16 as core::ops::bit::Shl<&ndarray::ArrayBase<_, _>>>::shl::{closure#0}
Unexecuted instantiation: <i16 as core::ops::bit::Shr<&ndarray::ArrayBase<_, _>>>::shr::{closure#0}
Unexecuted instantiation: <i8 as core::ops::bit::Shl<&ndarray::ArrayBase<_, _>>>::shl::{closure#0}
Unexecuted instantiation: <i8 as core::ops::bit::Shr<&ndarray::ArrayBase<_, _>>>::shr::{closure#0}
Unexecuted instantiation: <u8 as core::ops::arith::Sub<&ndarray::ArrayBase<_, _>>>::sub::{closure#0}
Unexecuted instantiation: <u8 as core::ops::arith::Div<&ndarray::ArrayBase<_, _>>>::div::{closure#0}
Unexecuted instantiation: <u8 as core::ops::arith::Rem<&ndarray::ArrayBase<_, _>>>::rem::{closure#0}
Unexecuted instantiation: <u16 as core::ops::arith::Sub<&ndarray::ArrayBase<_, _>>>::sub::{closure#0}
Unexecuted instantiation: <u16 as core::ops::arith::Div<&ndarray::ArrayBase<_, _>>>::div::{closure#0}
Unexecuted instantiation: <u16 as core::ops::arith::Rem<&ndarray::ArrayBase<_, _>>>::rem::{closure#0}
Unexecuted instantiation: <i32 as core::ops::bit::Shr<&ndarray::ArrayBase<_, _>>>::shr::{closure#0}
Unexecuted instantiation: <u32 as core::ops::arith::Sub<&ndarray::ArrayBase<_, _>>>::sub::{closure#0}
Unexecuted instantiation: <u32 as core::ops::arith::Div<&ndarray::ArrayBase<_, _>>>::div::{closure#0}
Unexecuted instantiation: <u32 as core::ops::arith::Rem<&ndarray::ArrayBase<_, _>>>::rem::{closure#0}
Unexecuted instantiation: <u32 as core::ops::bit::Shl<&ndarray::ArrayBase<_, _>>>::shl::{closure#0}
Unexecuted instantiation: <u32 as core::ops::bit::Shr<&ndarray::ArrayBase<_, _>>>::shr::{closure#0}
Unexecuted instantiation: <i64 as core::ops::arith::Sub<&ndarray::ArrayBase<_, _>>>::sub::{closure#0}
Unexecuted instantiation: <u16 as core::ops::bit::Shl<&ndarray::ArrayBase<_, _>>>::shl::{closure#0}
Unexecuted instantiation: <u16 as core::ops::bit::Shr<&ndarray::ArrayBase<_, _>>>::shr::{closure#0}
Unexecuted instantiation: <i32 as core::ops::arith::Sub<&ndarray::ArrayBase<_, _>>>::sub::{closure#0}
Unexecuted instantiation: <i32 as core::ops::arith::Div<&ndarray::ArrayBase<_, _>>>::div::{closure#0}
Unexecuted instantiation: <i32 as core::ops::arith::Rem<&ndarray::ArrayBase<_, _>>>::rem::{closure#0}
Unexecuted instantiation: <i32 as core::ops::bit::Shl<&ndarray::ArrayBase<_, _>>>::shl::{closure#0}
Unexecuted instantiation: <i64 as core::ops::arith::Div<&ndarray::ArrayBase<_, _>>>::div::{closure#0}
Unexecuted instantiation: <i64 as core::ops::arith::Rem<&ndarray::ArrayBase<_, _>>>::rem::{closure#0}
Unexecuted instantiation: <isize as core::ops::arith::Sub<&ndarray::ArrayBase<_, _>>>::sub::{closure#0}
Unexecuted instantiation: <isize as core::ops::arith::Div<&ndarray::ArrayBase<_, _>>>::div::{closure#0}
Unexecuted instantiation: <isize as core::ops::arith::Rem<&ndarray::ArrayBase<_, _>>>::rem::{closure#0}
Unexecuted instantiation: <isize as core::ops::bit::Shl<&ndarray::ArrayBase<_, _>>>::shl::{closure#0}
Unexecuted instantiation: <isize as core::ops::bit::Shr<&ndarray::ArrayBase<_, _>>>::shr::{closure#0}
Unexecuted instantiation: <usize as core::ops::arith::Sub<&ndarray::ArrayBase<_, _>>>::sub::{closure#0}
Unexecuted instantiation: <i64 as core::ops::bit::Shl<&ndarray::ArrayBase<_, _>>>::shl::{closure#0}
Unexecuted instantiation: <i64 as core::ops::bit::Shr<&ndarray::ArrayBase<_, _>>>::shr::{closure#0}
Unexecuted instantiation: <u64 as core::ops::arith::Sub<&ndarray::ArrayBase<_, _>>>::sub::{closure#0}
Unexecuted instantiation: <u64 as core::ops::arith::Div<&ndarray::ArrayBase<_, _>>>::div::{closure#0}
Unexecuted instantiation: <u64 as core::ops::arith::Rem<&ndarray::ArrayBase<_, _>>>::rem::{closure#0}
Unexecuted instantiation: <u64 as core::ops::bit::Shl<&ndarray::ArrayBase<_, _>>>::shl::{closure#0}
Unexecuted instantiation: <u64 as core::ops::bit::Shr<&ndarray::ArrayBase<_, _>>>::shr::{closure#0}
Unexecuted instantiation: <usize as core::ops::arith::Div<&ndarray::ArrayBase<_, _>>>::div::{closure#0}
Unexecuted instantiation: <usize as core::ops::arith::Rem<&ndarray::ArrayBase<_, _>>>::rem::{closure#0}
Unexecuted instantiation: <u128 as core::ops::arith::Sub<&ndarray::ArrayBase<_, _>>>::sub::{closure#0}
Unexecuted instantiation: <u128 as core::ops::arith::Div<&ndarray::ArrayBase<_, _>>>::div::{closure#0}
Unexecuted instantiation: <u128 as core::ops::arith::Rem<&ndarray::ArrayBase<_, _>>>::rem::{closure#0}
Unexecuted instantiation: <u128 as core::ops::bit::Shl<&ndarray::ArrayBase<_, _>>>::shl::{closure#0}
Unexecuted instantiation: <u128 as core::ops::bit::Shr<&ndarray::ArrayBase<_, _>>>::shr::{closure#0}
Unexecuted instantiation: <usize as core::ops::bit::Shl<&ndarray::ArrayBase<_, _>>>::shl::{closure#0}
Unexecuted instantiation: <usize as core::ops::bit::Shr<&ndarray::ArrayBase<_, _>>>::shr::{closure#0}
Unexecuted instantiation: <i128 as core::ops::arith::Sub<&ndarray::ArrayBase<_, _>>>::sub::{closure#0}
Unexecuted instantiation: <i128 as core::ops::arith::Div<&ndarray::ArrayBase<_, _>>>::div::{closure#0}
Unexecuted instantiation: <i128 as core::ops::arith::Rem<&ndarray::ArrayBase<_, _>>>::rem::{closure#0}
Unexecuted instantiation: <i128 as core::ops::bit::Shl<&ndarray::ArrayBase<_, _>>>::shl::{closure#0}
Unexecuted instantiation: <i128 as core::ops::bit::Shr<&ndarray::ArrayBase<_, _>>>::shr::{closure#0}
Unexecuted instantiation: <f32 as core::ops::arith::Sub<&ndarray::ArrayBase<_, _>>>::sub::{closure#0}
Unexecuted instantiation: <f32 as core::ops::arith::Div<&ndarray::ArrayBase<_, _>>>::div::{closure#0}
Unexecuted instantiation: <f32 as core::ops::arith::Rem<&ndarray::ArrayBase<_, _>>>::rem::{closure#0}
Unexecuted instantiation: <f64 as core::ops::arith::Sub<&ndarray::ArrayBase<_, _>>>::sub::{closure#0}
Unexecuted instantiation: <f64 as core::ops::arith::Div<&ndarray::ArrayBase<_, _>>>::div::{closure#0}
Unexecuted instantiation: <f64 as core::ops::arith::Rem<&ndarray::ArrayBase<_, _>>>::rem::{closure#0}
Unexecuted instantiation: <num_complex::Complex<f32> as core::ops::arith::Sub<&ndarray::ArrayBase<_, _>>>::sub::{closure#0}
Unexecuted instantiation: <num_complex::Complex<f32> as core::ops::arith::Div<&ndarray::ArrayBase<_, _>>>::div::{closure#0}
Unexecuted instantiation: <num_complex::Complex<f64> as core::ops::arith::Sub<&ndarray::ArrayBase<_, _>>>::sub::{closure#0}
Unexecuted instantiation: <num_complex::Complex<f64> as core::ops::arith::Div<&ndarray::ArrayBase<_, _>>>::div::{closure#0}
285
        })
286
0
    }
Unexecuted instantiation: <i8 as core::ops::arith::Add<&ndarray::ArrayBase<_, _>>>::add
Unexecuted instantiation: <i8 as core::ops::arith::Sub<&ndarray::ArrayBase<_, _>>>::sub
Unexecuted instantiation: <i8 as core::ops::arith::Mul<&ndarray::ArrayBase<_, _>>>::mul
Unexecuted instantiation: <i8 as core::ops::arith::Div<&ndarray::ArrayBase<_, _>>>::div
Unexecuted instantiation: <i8 as core::ops::arith::Rem<&ndarray::ArrayBase<_, _>>>::rem
Unexecuted instantiation: <u8 as core::ops::bit::Shl<&ndarray::ArrayBase<_, _>>>::shl
Unexecuted instantiation: <u8 as core::ops::bit::Shr<&ndarray::ArrayBase<_, _>>>::shr
Unexecuted instantiation: <i16 as core::ops::arith::Add<&ndarray::ArrayBase<_, _>>>::add
Unexecuted instantiation: <i16 as core::ops::arith::Sub<&ndarray::ArrayBase<_, _>>>::sub
Unexecuted instantiation: <i16 as core::ops::arith::Mul<&ndarray::ArrayBase<_, _>>>::mul
Unexecuted instantiation: <i16 as core::ops::arith::Div<&ndarray::ArrayBase<_, _>>>::div
Unexecuted instantiation: <i16 as core::ops::arith::Rem<&ndarray::ArrayBase<_, _>>>::rem
Unexecuted instantiation: <i16 as core::ops::bit::BitAnd<&ndarray::ArrayBase<_, _>>>::bitand
Unexecuted instantiation: <i16 as core::ops::bit::BitOr<&ndarray::ArrayBase<_, _>>>::bitor
Unexecuted instantiation: <i16 as core::ops::bit::BitXor<&ndarray::ArrayBase<_, _>>>::bitxor
Unexecuted instantiation: <i16 as core::ops::bit::Shl<&ndarray::ArrayBase<_, _>>>::shl
Unexecuted instantiation: <i16 as core::ops::bit::Shr<&ndarray::ArrayBase<_, _>>>::shr
Unexecuted instantiation: <u16 as core::ops::arith::Add<&ndarray::ArrayBase<_, _>>>::add
Unexecuted instantiation: <i8 as core::ops::bit::BitAnd<&ndarray::ArrayBase<_, _>>>::bitand
Unexecuted instantiation: <i8 as core::ops::bit::BitOr<&ndarray::ArrayBase<_, _>>>::bitor
Unexecuted instantiation: <i8 as core::ops::bit::BitXor<&ndarray::ArrayBase<_, _>>>::bitxor
Unexecuted instantiation: <i8 as core::ops::bit::Shl<&ndarray::ArrayBase<_, _>>>::shl
Unexecuted instantiation: <i8 as core::ops::bit::Shr<&ndarray::ArrayBase<_, _>>>::shr
Unexecuted instantiation: <u8 as core::ops::arith::Add<&ndarray::ArrayBase<_, _>>>::add
Unexecuted instantiation: <u8 as core::ops::arith::Sub<&ndarray::ArrayBase<_, _>>>::sub
Unexecuted instantiation: <u8 as core::ops::arith::Mul<&ndarray::ArrayBase<_, _>>>::mul
Unexecuted instantiation: <u8 as core::ops::arith::Div<&ndarray::ArrayBase<_, _>>>::div
Unexecuted instantiation: <u8 as core::ops::arith::Rem<&ndarray::ArrayBase<_, _>>>::rem
Unexecuted instantiation: <u8 as core::ops::bit::BitAnd<&ndarray::ArrayBase<_, _>>>::bitand
Unexecuted instantiation: <u8 as core::ops::bit::BitOr<&ndarray::ArrayBase<_, _>>>::bitor
Unexecuted instantiation: <u8 as core::ops::bit::BitXor<&ndarray::ArrayBase<_, _>>>::bitxor
Unexecuted instantiation: <u16 as core::ops::arith::Sub<&ndarray::ArrayBase<_, _>>>::sub
Unexecuted instantiation: <u16 as core::ops::arith::Mul<&ndarray::ArrayBase<_, _>>>::mul
Unexecuted instantiation: <u16 as core::ops::arith::Div<&ndarray::ArrayBase<_, _>>>::div
Unexecuted instantiation: <u16 as core::ops::arith::Rem<&ndarray::ArrayBase<_, _>>>::rem
Unexecuted instantiation: <u16 as core::ops::bit::BitAnd<&ndarray::ArrayBase<_, _>>>::bitand
Unexecuted instantiation: <i32 as core::ops::bit::Shr<&ndarray::ArrayBase<_, _>>>::shr
Unexecuted instantiation: <u32 as core::ops::arith::Add<&ndarray::ArrayBase<_, _>>>::add
Unexecuted instantiation: <u32 as core::ops::arith::Sub<&ndarray::ArrayBase<_, _>>>::sub
Unexecuted instantiation: <u32 as core::ops::arith::Mul<&ndarray::ArrayBase<_, _>>>::mul
Unexecuted instantiation: <u32 as core::ops::arith::Div<&ndarray::ArrayBase<_, _>>>::div
Unexecuted instantiation: <u32 as core::ops::arith::Rem<&ndarray::ArrayBase<_, _>>>::rem
Unexecuted instantiation: <u32 as core::ops::bit::BitAnd<&ndarray::ArrayBase<_, _>>>::bitand
Unexecuted instantiation: <u32 as core::ops::bit::BitOr<&ndarray::ArrayBase<_, _>>>::bitor
Unexecuted instantiation: <u32 as core::ops::bit::BitXor<&ndarray::ArrayBase<_, _>>>::bitxor
Unexecuted instantiation: <u32 as core::ops::bit::Shl<&ndarray::ArrayBase<_, _>>>::shl
Unexecuted instantiation: <u32 as core::ops::bit::Shr<&ndarray::ArrayBase<_, _>>>::shr
Unexecuted instantiation: <i64 as core::ops::arith::Add<&ndarray::ArrayBase<_, _>>>::add
Unexecuted instantiation: <i64 as core::ops::arith::Sub<&ndarray::ArrayBase<_, _>>>::sub
Unexecuted instantiation: <u16 as core::ops::bit::BitOr<&ndarray::ArrayBase<_, _>>>::bitor
Unexecuted instantiation: <u16 as core::ops::bit::BitXor<&ndarray::ArrayBase<_, _>>>::bitxor
Unexecuted instantiation: <u16 as core::ops::bit::Shl<&ndarray::ArrayBase<_, _>>>::shl
Unexecuted instantiation: <u16 as core::ops::bit::Shr<&ndarray::ArrayBase<_, _>>>::shr
Unexecuted instantiation: <i32 as core::ops::arith::Add<&ndarray::ArrayBase<_, _>>>::add
Unexecuted instantiation: <i32 as core::ops::arith::Sub<&ndarray::ArrayBase<_, _>>>::sub
Unexecuted instantiation: <i32 as core::ops::arith::Mul<&ndarray::ArrayBase<_, _>>>::mul
Unexecuted instantiation: <i32 as core::ops::arith::Div<&ndarray::ArrayBase<_, _>>>::div
Unexecuted instantiation: <i32 as core::ops::arith::Rem<&ndarray::ArrayBase<_, _>>>::rem
Unexecuted instantiation: <i32 as core::ops::bit::BitAnd<&ndarray::ArrayBase<_, _>>>::bitand
Unexecuted instantiation: <i32 as core::ops::bit::BitOr<&ndarray::ArrayBase<_, _>>>::bitor
Unexecuted instantiation: <i32 as core::ops::bit::BitXor<&ndarray::ArrayBase<_, _>>>::bitxor
Unexecuted instantiation: <i32 as core::ops::bit::Shl<&ndarray::ArrayBase<_, _>>>::shl
Unexecuted instantiation: <i64 as core::ops::arith::Mul<&ndarray::ArrayBase<_, _>>>::mul
Unexecuted instantiation: <i64 as core::ops::arith::Div<&ndarray::ArrayBase<_, _>>>::div
Unexecuted instantiation: <i64 as core::ops::arith::Rem<&ndarray::ArrayBase<_, _>>>::rem
Unexecuted instantiation: <i64 as core::ops::bit::BitAnd<&ndarray::ArrayBase<_, _>>>::bitand
Unexecuted instantiation: <i64 as core::ops::bit::BitOr<&ndarray::ArrayBase<_, _>>>::bitor
Unexecuted instantiation: <isize as core::ops::arith::Add<&ndarray::ArrayBase<_, _>>>::add
Unexecuted instantiation: <isize as core::ops::arith::Sub<&ndarray::ArrayBase<_, _>>>::sub
Unexecuted instantiation: <isize as core::ops::arith::Mul<&ndarray::ArrayBase<_, _>>>::mul
Unexecuted instantiation: <isize as core::ops::arith::Div<&ndarray::ArrayBase<_, _>>>::div
Unexecuted instantiation: <isize as core::ops::arith::Rem<&ndarray::ArrayBase<_, _>>>::rem
Unexecuted instantiation: <isize as core::ops::bit::BitAnd<&ndarray::ArrayBase<_, _>>>::bitand
Unexecuted instantiation: <isize as core::ops::bit::BitOr<&ndarray::ArrayBase<_, _>>>::bitor
Unexecuted instantiation: <isize as core::ops::bit::BitXor<&ndarray::ArrayBase<_, _>>>::bitxor
Unexecuted instantiation: <isize as core::ops::bit::Shl<&ndarray::ArrayBase<_, _>>>::shl
Unexecuted instantiation: <isize as core::ops::bit::Shr<&ndarray::ArrayBase<_, _>>>::shr
Unexecuted instantiation: <usize as core::ops::arith::Add<&ndarray::ArrayBase<_, _>>>::add
Unexecuted instantiation: <usize as core::ops::arith::Sub<&ndarray::ArrayBase<_, _>>>::sub
Unexecuted instantiation: <usize as core::ops::arith::Mul<&ndarray::ArrayBase<_, _>>>::mul
Unexecuted instantiation: <i64 as core::ops::bit::BitXor<&ndarray::ArrayBase<_, _>>>::bitxor
Unexecuted instantiation: <i64 as core::ops::bit::Shl<&ndarray::ArrayBase<_, _>>>::shl
Unexecuted instantiation: <i64 as core::ops::bit::Shr<&ndarray::ArrayBase<_, _>>>::shr
Unexecuted instantiation: <u64 as core::ops::arith::Add<&ndarray::ArrayBase<_, _>>>::add
Unexecuted instantiation: <u64 as core::ops::arith::Sub<&ndarray::ArrayBase<_, _>>>::sub
Unexecuted instantiation: <u64 as core::ops::arith::Mul<&ndarray::ArrayBase<_, _>>>::mul
Unexecuted instantiation: <u64 as core::ops::arith::Div<&ndarray::ArrayBase<_, _>>>::div
Unexecuted instantiation: <u64 as core::ops::arith::Rem<&ndarray::ArrayBase<_, _>>>::rem
Unexecuted instantiation: <u64 as core::ops::bit::BitAnd<&ndarray::ArrayBase<_, _>>>::bitand
Unexecuted instantiation: <u64 as core::ops::bit::BitOr<&ndarray::ArrayBase<_, _>>>::bitor
Unexecuted instantiation: <u64 as core::ops::bit::BitXor<&ndarray::ArrayBase<_, _>>>::bitxor
Unexecuted instantiation: <u64 as core::ops::bit::Shl<&ndarray::ArrayBase<_, _>>>::shl
Unexecuted instantiation: <u64 as core::ops::bit::Shr<&ndarray::ArrayBase<_, _>>>::shr
Unexecuted instantiation: <usize as core::ops::arith::Div<&ndarray::ArrayBase<_, _>>>::div
Unexecuted instantiation: <usize as core::ops::arith::Rem<&ndarray::ArrayBase<_, _>>>::rem
Unexecuted instantiation: <usize as core::ops::bit::BitAnd<&ndarray::ArrayBase<_, _>>>::bitand
Unexecuted instantiation: <usize as core::ops::bit::BitOr<&ndarray::ArrayBase<_, _>>>::bitor
Unexecuted instantiation: <usize as core::ops::bit::BitXor<&ndarray::ArrayBase<_, _>>>::bitxor
Unexecuted instantiation: <u128 as core::ops::arith::Sub<&ndarray::ArrayBase<_, _>>>::sub
Unexecuted instantiation: <u128 as core::ops::arith::Mul<&ndarray::ArrayBase<_, _>>>::mul
Unexecuted instantiation: <u128 as core::ops::arith::Div<&ndarray::ArrayBase<_, _>>>::div
Unexecuted instantiation: <u128 as core::ops::arith::Rem<&ndarray::ArrayBase<_, _>>>::rem
Unexecuted instantiation: <u128 as core::ops::bit::BitAnd<&ndarray::ArrayBase<_, _>>>::bitand
Unexecuted instantiation: <u128 as core::ops::bit::BitOr<&ndarray::ArrayBase<_, _>>>::bitor
Unexecuted instantiation: <u128 as core::ops::bit::BitXor<&ndarray::ArrayBase<_, _>>>::bitxor
Unexecuted instantiation: <u128 as core::ops::bit::Shl<&ndarray::ArrayBase<_, _>>>::shl
Unexecuted instantiation: <u128 as core::ops::bit::Shr<&ndarray::ArrayBase<_, _>>>::shr
Unexecuted instantiation: <bool as core::ops::bit::BitAnd<&ndarray::ArrayBase<_, _>>>::bitand
Unexecuted instantiation: <bool as core::ops::bit::BitOr<&ndarray::ArrayBase<_, _>>>::bitor
Unexecuted instantiation: <bool as core::ops::bit::BitXor<&ndarray::ArrayBase<_, _>>>::bitxor
Unexecuted instantiation: <f32 as core::ops::arith::Add<&ndarray::ArrayBase<_, _>>>::add
Unexecuted instantiation: <usize as core::ops::bit::Shl<&ndarray::ArrayBase<_, _>>>::shl
Unexecuted instantiation: <usize as core::ops::bit::Shr<&ndarray::ArrayBase<_, _>>>::shr
Unexecuted instantiation: <i128 as core::ops::arith::Add<&ndarray::ArrayBase<_, _>>>::add
Unexecuted instantiation: <i128 as core::ops::arith::Sub<&ndarray::ArrayBase<_, _>>>::sub
Unexecuted instantiation: <i128 as core::ops::arith::Mul<&ndarray::ArrayBase<_, _>>>::mul
Unexecuted instantiation: <i128 as core::ops::arith::Div<&ndarray::ArrayBase<_, _>>>::div
Unexecuted instantiation: <i128 as core::ops::arith::Rem<&ndarray::ArrayBase<_, _>>>::rem
Unexecuted instantiation: <i128 as core::ops::bit::BitAnd<&ndarray::ArrayBase<_, _>>>::bitand
Unexecuted instantiation: <i128 as core::ops::bit::BitOr<&ndarray::ArrayBase<_, _>>>::bitor
Unexecuted instantiation: <i128 as core::ops::bit::BitXor<&ndarray::ArrayBase<_, _>>>::bitxor
Unexecuted instantiation: <i128 as core::ops::bit::Shl<&ndarray::ArrayBase<_, _>>>::shl
Unexecuted instantiation: <i128 as core::ops::bit::Shr<&ndarray::ArrayBase<_, _>>>::shr
Unexecuted instantiation: <u128 as core::ops::arith::Add<&ndarray::ArrayBase<_, _>>>::add
Unexecuted instantiation: <f32 as core::ops::arith::Sub<&ndarray::ArrayBase<_, _>>>::sub
Unexecuted instantiation: <f32 as core::ops::arith::Mul<&ndarray::ArrayBase<_, _>>>::mul
Unexecuted instantiation: <f32 as core::ops::arith::Div<&ndarray::ArrayBase<_, _>>>::div
Unexecuted instantiation: <f32 as core::ops::arith::Rem<&ndarray::ArrayBase<_, _>>>::rem
Unexecuted instantiation: <f64 as core::ops::arith::Add<&ndarray::ArrayBase<_, _>>>::add
Unexecuted instantiation: <f64 as core::ops::arith::Sub<&ndarray::ArrayBase<_, _>>>::sub
Unexecuted instantiation: <f64 as core::ops::arith::Mul<&ndarray::ArrayBase<_, _>>>::mul
Unexecuted instantiation: <f64 as core::ops::arith::Div<&ndarray::ArrayBase<_, _>>>::div
Unexecuted instantiation: <f64 as core::ops::arith::Rem<&ndarray::ArrayBase<_, _>>>::rem
Unexecuted instantiation: <num_complex::Complex<f32> as core::ops::arith::Add<&ndarray::ArrayBase<_, _>>>::add
Unexecuted instantiation: <num_complex::Complex<f32> as core::ops::arith::Sub<&ndarray::ArrayBase<_, _>>>::sub
Unexecuted instantiation: <num_complex::Complex<f32> as core::ops::arith::Mul<&ndarray::ArrayBase<_, _>>>::mul
Unexecuted instantiation: <num_complex::Complex<f32> as core::ops::arith::Div<&ndarray::ArrayBase<_, _>>>::div
Unexecuted instantiation: <num_complex::Complex<f64> as core::ops::arith::Add<&ndarray::ArrayBase<_, _>>>::add
Unexecuted instantiation: <num_complex::Complex<f64> as core::ops::arith::Sub<&ndarray::ArrayBase<_, _>>>::sub
Unexecuted instantiation: <num_complex::Complex<f64> as core::ops::arith::Mul<&ndarray::ArrayBase<_, _>>>::mul
Unexecuted instantiation: <num_complex::Complex<f64> as core::ops::arith::Div<&ndarray::ArrayBase<_, _>>>::div
287
}
288
    );
289
}
290
291
mod arithmetic_ops
292
{
293
    use super::*;
294
    use crate::imp_prelude::*;
295
296
    use std::ops::*;
297
298
0
    fn clone_opf<A: Clone, B: Clone, C>(f: impl Fn(A, B) -> C) -> impl FnMut(&A, &B) -> C
299
    {
300
0
        move |x, y| f(x.clone(), y.clone())
301
0
    }
302
303
0
    fn clone_iopf<A: Clone, B: Clone>(f: impl Fn(A, B) -> A) -> impl FnMut(&mut A, &B)
304
    {
305
0
        move |x, y| *x = f(x.clone(), y.clone())
306
0
    }
307
308
0
    fn clone_iopf_rev<A: Clone, B: Clone>(f: impl Fn(A, B) -> B) -> impl FnMut(&mut B, &A)
309
    {
310
0
        move |x, y| *x = f(y.clone(), x.clone())
311
0
    }
312
313
    impl_binary_op!(Add, +, add, +=, "addition");
314
    impl_binary_op!(Sub, -, sub, -=, "subtraction");
315
    impl_binary_op!(Mul, *, mul, *=, "multiplication");
316
    impl_binary_op!(Div, /, div, /=, "division");
317
    impl_binary_op!(Rem, %, rem, %=, "remainder");
318
    impl_binary_op!(BitAnd, &, bitand, &=, "bit and");
319
    impl_binary_op!(BitOr, |, bitor, |=, "bit or");
320
    impl_binary_op!(BitXor, ^, bitxor, ^=, "bit xor");
321
    impl_binary_op!(Shl, <<, shl, <<=, "left shift");
322
    impl_binary_op!(Shr, >>, shr, >>=, "right shift");
323
324
    macro_rules! all_scalar_ops {
325
        ($int_scalar:ty) => (
326
            impl_scalar_lhs_op!($int_scalar, Commute, +, Add, add, "addition");
327
            impl_scalar_lhs_op!($int_scalar, Ordered, -, Sub, sub, "subtraction");
328
            impl_scalar_lhs_op!($int_scalar, Commute, *, Mul, mul, "multiplication");
329
            impl_scalar_lhs_op!($int_scalar, Ordered, /, Div, div, "division");
330
            impl_scalar_lhs_op!($int_scalar, Ordered, %, Rem, rem, "remainder");
331
            impl_scalar_lhs_op!($int_scalar, Commute, &, BitAnd, bitand, "bit and");
332
            impl_scalar_lhs_op!($int_scalar, Commute, |, BitOr, bitor, "bit or");
333
            impl_scalar_lhs_op!($int_scalar, Commute, ^, BitXor, bitxor, "bit xor");
334
            impl_scalar_lhs_op!($int_scalar, Ordered, <<, Shl, shl, "left shift");
335
            impl_scalar_lhs_op!($int_scalar, Ordered, >>, Shr, shr, "right shift");
336
        );
337
    }
338
    all_scalar_ops!(i8);
339
    all_scalar_ops!(u8);
340
    all_scalar_ops!(i16);
341
    all_scalar_ops!(u16);
342
    all_scalar_ops!(i32);
343
    all_scalar_ops!(u32);
344
    all_scalar_ops!(i64);
345
    all_scalar_ops!(u64);
346
    all_scalar_ops!(isize);
347
    all_scalar_ops!(usize);
348
    all_scalar_ops!(i128);
349
    all_scalar_ops!(u128);
350
351
    impl_scalar_lhs_op!(bool, Commute, &, BitAnd, bitand, "bit and");
352
    impl_scalar_lhs_op!(bool, Commute, |, BitOr, bitor, "bit or");
353
    impl_scalar_lhs_op!(bool, Commute, ^, BitXor, bitxor, "bit xor");
354
355
    impl_scalar_lhs_op!(f32, Commute, +, Add, add, "addition");
356
    impl_scalar_lhs_op!(f32, Ordered, -, Sub, sub, "subtraction");
357
    impl_scalar_lhs_op!(f32, Commute, *, Mul, mul, "multiplication");
358
    impl_scalar_lhs_op!(f32, Ordered, /, Div, div, "division");
359
    impl_scalar_lhs_op!(f32, Ordered, %, Rem, rem, "remainder");
360
361
    impl_scalar_lhs_op!(f64, Commute, +, Add, add, "addition");
362
    impl_scalar_lhs_op!(f64, Ordered, -, Sub, sub, "subtraction");
363
    impl_scalar_lhs_op!(f64, Commute, *, Mul, mul, "multiplication");
364
    impl_scalar_lhs_op!(f64, Ordered, /, Div, div, "division");
365
    impl_scalar_lhs_op!(f64, Ordered, %, Rem, rem, "remainder");
366
367
    impl_scalar_lhs_op!(Complex<f32>, Commute, +, Add, add, "addition");
368
    impl_scalar_lhs_op!(Complex<f32>, Ordered, -, Sub, sub, "subtraction");
369
    impl_scalar_lhs_op!(Complex<f32>, Commute, *, Mul, mul, "multiplication");
370
    impl_scalar_lhs_op!(Complex<f32>, Ordered, /, Div, div, "division");
371
372
    impl_scalar_lhs_op!(Complex<f64>, Commute, +, Add, add, "addition");
373
    impl_scalar_lhs_op!(Complex<f64>, Ordered, -, Sub, sub, "subtraction");
374
    impl_scalar_lhs_op!(Complex<f64>, Commute, *, Mul, mul, "multiplication");
375
    impl_scalar_lhs_op!(Complex<f64>, Ordered, /, Div, div, "division");
376
377
    impl<A, S, D> Neg for ArrayBase<S, D>
378
    where
379
        A: Clone + Neg<Output = A>,
380
        S: DataOwned<Elem = A> + DataMut,
381
        D: Dimension,
382
    {
383
        type Output = Self;
384
        /// Perform an elementwise negation of `self` and return the result.
385
0
        fn neg(mut self) -> Self
386
        {
387
0
            self.map_inplace(|elt| {
388
0
                *elt = -elt.clone();
389
0
            });
390
0
            self
391
0
        }
392
    }
393
394
    impl<'a, A, S, D> Neg for &'a ArrayBase<S, D>
395
    where
396
        &'a A: 'a + Neg<Output = A>,
397
        S: Data<Elem = A>,
398
        D: Dimension,
399
    {
400
        type Output = Array<A, D>;
401
        /// Perform an elementwise negation of reference `self` and return the
402
        /// result as a new `Array`.
403
0
        fn neg(self) -> Array<A, D>
404
        {
405
0
            self.map(Neg::neg)
406
0
        }
407
    }
408
409
    impl<A, S, D> Not for ArrayBase<S, D>
410
    where
411
        A: Clone + Not<Output = A>,
412
        S: DataOwned<Elem = A> + DataMut,
413
        D: Dimension,
414
    {
415
        type Output = Self;
416
        /// Perform an elementwise unary not of `self` and return the result.
417
0
        fn not(mut self) -> Self
418
        {
419
0
            self.map_inplace(|elt| {
420
0
                *elt = !elt.clone();
421
0
            });
422
0
            self
423
0
        }
424
    }
425
426
    impl<'a, A, S, D> Not for &'a ArrayBase<S, D>
427
    where
428
        &'a A: 'a + Not<Output = A>,
429
        S: Data<Elem = A>,
430
        D: Dimension,
431
    {
432
        type Output = Array<A, D>;
433
        /// Perform an elementwise unary not of reference `self` and return the
434
        /// result as a new `Array`.
435
0
        fn not(self) -> Array<A, D>
436
        {
437
0
            self.map(Not::not)
438
0
        }
439
    }
440
}
441
442
mod assign_ops
443
{
444
    use super::*;
445
    use crate::imp_prelude::*;
446
447
    macro_rules! impl_assign_op {
448
        ($trt:ident, $method:ident, $doc:expr) => {
449
            use std::ops::$trt;
450
451
            #[doc=$doc]
452
            /// If their shapes disagree, `rhs` is broadcast to the shape of `self`.
453
            ///
454
            /// **Panics** if broadcasting isn’t possible.
455
            impl<'a, A, S, S2, D, E> $trt<&'a ArrayBase<S2, E>> for ArrayBase<S, D>
456
            where
457
                A: Clone + $trt<A>,
458
                S: DataMut<Elem = A>,
459
                S2: Data<Elem = A>,
460
                D: Dimension,
461
                E: Dimension,
462
            {
463
                #[track_caller]
464
0
                fn $method(&mut self, rhs: &ArrayBase<S2, E>) {
465
0
                    self.zip_mut_with(rhs, |x, y| {
466
0
                        x.$method(y.clone());
467
0
                    });
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::arith::AddAssign<&ndarray::ArrayBase<_, _>>>::add_assign::{closure#0}
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::arith::SubAssign<&ndarray::ArrayBase<_, _>>>::sub_assign::{closure#0}
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::arith::MulAssign<&ndarray::ArrayBase<_, _>>>::mul_assign::{closure#0}
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::arith::DivAssign<&ndarray::ArrayBase<_, _>>>::div_assign::{closure#0}
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::arith::RemAssign<&ndarray::ArrayBase<_, _>>>::rem_assign::{closure#0}
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::bit::BitAndAssign<&ndarray::ArrayBase<_, _>>>::bitand_assign::{closure#0}
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::bit::BitOrAssign<&ndarray::ArrayBase<_, _>>>::bitor_assign::{closure#0}
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::bit::BitXorAssign<&ndarray::ArrayBase<_, _>>>::bitxor_assign::{closure#0}
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::bit::ShlAssign<&ndarray::ArrayBase<_, _>>>::shl_assign::{closure#0}
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::bit::ShrAssign<&ndarray::ArrayBase<_, _>>>::shr_assign::{closure#0}
468
0
                }
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::arith::AddAssign<&ndarray::ArrayBase<_, _>>>::add_assign
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::arith::SubAssign<&ndarray::ArrayBase<_, _>>>::sub_assign
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::arith::MulAssign<&ndarray::ArrayBase<_, _>>>::mul_assign
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::arith::DivAssign<&ndarray::ArrayBase<_, _>>>::div_assign
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::arith::RemAssign<&ndarray::ArrayBase<_, _>>>::rem_assign
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::bit::BitAndAssign<&ndarray::ArrayBase<_, _>>>::bitand_assign
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::bit::BitOrAssign<&ndarray::ArrayBase<_, _>>>::bitor_assign
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::bit::BitXorAssign<&ndarray::ArrayBase<_, _>>>::bitxor_assign
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::bit::ShlAssign<&ndarray::ArrayBase<_, _>>>::shl_assign
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::bit::ShrAssign<&ndarray::ArrayBase<_, _>>>::shr_assign
469
            }
470
471
            #[doc=$doc]
472
            impl<A, S, D> $trt<A> for ArrayBase<S, D>
473
            where
474
                A: ScalarOperand + $trt<A>,
475
                S: DataMut<Elem = A>,
476
                D: Dimension,
477
            {
478
0
                fn $method(&mut self, rhs: A) {
479
0
                    self.map_inplace(move |elt| {
480
0
                        elt.$method(rhs.clone());
481
0
                    });
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::arith::SubAssign<_>>::sub_assign::{closure#0}
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::arith::MulAssign<_>>::mul_assign::{closure#0}
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::arith::DivAssign<_>>::div_assign::{closure#0}
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::arith::RemAssign<_>>::rem_assign::{closure#0}
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::bit::BitAndAssign<_>>::bitand_assign::{closure#0}
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::arith::AddAssign<_>>::add_assign::{closure#0}
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::bit::BitOrAssign<_>>::bitor_assign::{closure#0}
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::bit::BitXorAssign<_>>::bitxor_assign::{closure#0}
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::bit::ShlAssign<_>>::shl_assign::{closure#0}
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::bit::ShrAssign<_>>::shr_assign::{closure#0}
482
0
                }
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::arith::SubAssign<_>>::sub_assign
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::arith::MulAssign<_>>::mul_assign
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::arith::DivAssign<_>>::div_assign
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::arith::RemAssign<_>>::rem_assign
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::bit::BitAndAssign<_>>::bitand_assign
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::arith::AddAssign<_>>::add_assign
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::bit::BitOrAssign<_>>::bitor_assign
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::bit::BitXorAssign<_>>::bitxor_assign
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::bit::ShlAssign<_>>::shl_assign
Unexecuted instantiation: <ndarray::ArrayBase<_, _> as core::ops::bit::ShrAssign<_>>::shr_assign
483
            }
484
        };
485
    }
486
487
    impl_assign_op!(
488
        AddAssign,
489
        add_assign,
490
        "Perform `self += rhs` as elementwise addition (in place).\n"
491
    );
492
    impl_assign_op!(
493
        SubAssign,
494
        sub_assign,
495
        "Perform `self -= rhs` as elementwise subtraction (in place).\n"
496
    );
497
    impl_assign_op!(
498
        MulAssign,
499
        mul_assign,
500
        "Perform `self *= rhs` as elementwise multiplication (in place).\n"
501
    );
502
    impl_assign_op!(
503
        DivAssign,
504
        div_assign,
505
        "Perform `self /= rhs` as elementwise division (in place).\n"
506
    );
507
    impl_assign_op!(
508
        RemAssign,
509
        rem_assign,
510
        "Perform `self %= rhs` as elementwise remainder (in place).\n"
511
    );
512
    impl_assign_op!(
513
        BitAndAssign,
514
        bitand_assign,
515
        "Perform `self &= rhs` as elementwise bit and (in place).\n"
516
    );
517
    impl_assign_op!(
518
        BitOrAssign,
519
        bitor_assign,
520
        "Perform `self |= rhs` as elementwise bit or (in place).\n"
521
    );
522
    impl_assign_op!(
523
        BitXorAssign,
524
        bitxor_assign,
525
        "Perform `self ^= rhs` as elementwise bit xor (in place).\n"
526
    );
527
    impl_assign_op!(
528
        ShlAssign,
529
        shl_assign,
530
        "Perform `self <<= rhs` as elementwise left shift (in place).\n"
531
    );
532
    impl_assign_op!(
533
        ShrAssign,
534
        shr_assign,
535
        "Perform `self >>= rhs` as elementwise right shift (in place).\n"
536
    );
537
}