Skip to content

Unexpected results from xt::linalg::matrix_power with even exponents #234

@tienviitta

Description

@tienviitta

I have unexpexcted results from the matrix_power with even exponents.

void ex1_mpow_run() {
    xt::xarray<double> arr1{{1, 1, 0}, {1, 0, 1}, {0, 0, 0}};
    std::cout << "arr1:" << std::endl << arr1 << std::endl;
    for (long n = 2; n < 8; ++n) {
        xt::xarray<double> arr_n = xt::linalg::matrix_power(arr1, n);
        std::cout << "arr^" << n << ":" << std::endl << arr_n << std::endl;
    }
}

This will give me:

arr1:
{{ 1.,  1.,  0.},
 { 1.,  0.,  1.},
 { 0.,  0.,  0.}}
arr^2:
{{ 2.,  1.,  1.},
 { 1.,  1.,  0.},
 { 0.,  0.,  0.}}
arr^3:
{{ 3.,  2.,  1.},
 { 2.,  1.,  1.},
 { 0.,  0.,  0.}}
arr^4:
{{ 1.,  1.,  0.},
 { 1.,  0.,  1.},
 { 0.,  0.,  0.}}
arr^5:
{{ 8.,  5.,  3.},
 { 5.,  3.,  2.},
 { 0.,  0.,  0.}}
arr^6:
{{ 3.,  2.,  1.},
 { 2.,  1.,  1.},
 { 0.,  0.,  0.}}
arr^7:
{{ 21.,  13.,   8.},
 { 13.,   8.,   5.},
 {  0.,   0.,   0.}}

When I expect these to be as from Octave:

arr1 =
   1   1   0
   1   0   1
   0   0   0
>> arr1 ^ 2
ans =
   2   1   1
   1   1   0
   0   0   0
>> arr1 ^ 3
ans =
   3   2   1
   2   1   1
   0   0   0
>> arr1 ^ 4
ans =
   5   3   2
   3   2   1
   0   0   0
>> arr1 ^ 5
ans =
   8   5   3
   5   3   2
   0   0   0
>> arr1 ^ 6
ans =
   13    8    5
    8    5    3
    0    0    0
>> arr1 ^ 7
ans =
   21   13    8
   13    8    5
    0    0    0

Have I misunderstood something on the usage of this matrix_power? I'm on Ubuntu 22.04 with packages:

lapack                    3.9.0                    netlib    conda-forge
libblas                   3.9.0           19_linux64_openblas    conda-forge
libcblas                  3.9.0           19_linux64_openblas    conda-forge
liblapack                 3.9.0           19_linux64_openblas    conda-forge
liblapacke                3.9.0           19_linux64_openblas    conda-forge
libopenblas               0.3.24          pthreads_h413a1c8_0    conda-forge
openblas                  0.3.24          pthreads_h7a3da1a_0    conda-forge
...
xsimd                     7.6.0                h4bd325d_0    conda-forge
xtensor                   0.23.10              h4bd325d_0    conda-forge
xtensor-blas              0.19.2               h4bd325d_0    conda-forge
...

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions