2 from eigen_ref
import (
12 copyVectorFromConstRef,
13 copyRowVectorFromConstRef,
18 print(
"print matrix:")
20 print(
"calling fill():")
22 assert np.array_equal(mat, np.full(mat.shape, 1.0))
26 fill(mat[:3, :2], 1.0)
28 assert np.array_equal(mat[:3, :2], np.ones((3, 2)))
34 print(
"[asRef(int, int)]")
38 print(
"make second reference:")
42 assert np.array_equal(A_ref, A_ref2)
45 assert np.array_equal(A_ref, A_ref2)
49 data = np.array([[0, 0.2, 0.3, 0.4], [0, 1, 0, 0], [0, 0, 0, 0], [1, 0, 0, 0]])
51 data_strided = data[:, 0]
54 assert np.all(data_strided == data_strided_copy)
56 data_strided_copy = copyRowVectorFromConstRef(data_strided)
57 assert np.all(data_strided == data_strided_copy)
63 assert np.array_equal(ref, mat),
"ref=\n{}\nmat=\n{}".format(ref, mat)
64 assert not (ref.flags.owndata)
65 assert ref.flags.writeable
71 assert np.array_equal(const_ref, mat),
"ref=\n{}\nmat=\n{}".format(const_ref, mat)
72 assert not (const_ref.flags.writeable)
73 assert not (const_ref.flags.owndata)
77 print(
"set mat data to arange()")
79 mat[:, :] = np.arange(rows * cols).reshape(rows, cols)
81 for i, rowsize, colsize
in ([0, 3, 2], [1, 1, 2], [0, 3, 1]):
82 print(
"taking block [{}:{}, {}:{}]".format(i, rowsize + i, 0, colsize))
83 B =
getBlock(mat, i, 0, rowsize, colsize)
84 B = B.reshape(rowsize, colsize)
85 lhs = mat[i : rowsize + i, :colsize]
86 assert np.array_equal(lhs, B),
"got lhs\n{}\nrhs B=\n{}".format(lhs, B)
89 rhs = np.ones((rowsize, colsize))
90 assert np.array_equal(mat[i : rowsize + i, :colsize], rhs)
98 mat_copy[:3, :2] = np.arange(6).reshape(3, 2)
100 assert np.array_equal(mat, mat_copy)
104 super(ModifyBlockImpl, self).__init__()
108 mat[:, :] = np.arange(n * m).reshape(n, m)
110 modify = ModifyBlockImpl()
112 Jref = np.zeros((10, 10))
113 Jref[:2, :3] = np.arange(6).reshape(2, 3)
115 assert np.array_equal(Jref, modify.J)
118 A = np.ones((3, 3)) / 2
119 hasref.Jref[:, :] = A
120 J_true = np.zeros((4, 4))
123 assert np.array_equal(hasref.J, J_true)
136 if __name__ ==
"__main__":
140 mat = np.ones((rows, cols), order=
"F")
Eigen::Ref< MatType > editBlock(Eigen::Ref< MatType > mat, Eigen::DenseIndex i, Eigen::DenseIndex j, Eigen::DenseIndex n, Eigen::DenseIndex m)
Eigen::Ref< MatType > getRefToStatic(const int rows, const int cols)
Get ref to a static matrix of size ( rows, cols )
const Eigen::Ref< const MatType > asConstRef(Eigen::Ref< const MatType > mat)
void printMatrix(const Eigen::Ref< const MatType > mat)
Eigen::Ref< MatType > getBlock(Eigen::Ref< MatType > mat, Eigen::DenseIndex i, Eigen::DenseIndex j, Eigen::DenseIndex n, Eigen::DenseIndex m)
def test_create_const_ref(mat)
def test_edit_block(rows, cols)
Eigen::Ref< MatType > asRef(Eigen::Ref< MatType > mat)
def test_create_ref_to_static(mat)
VecType copyVectorFromConstRef(const Eigen::Ref< const VecType > vec)
void print(const Tensor &tensor)
void fill(Eigen::Ref< MatType > mat, const typename MatType::Scalar &value)