Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
tienviitta opened this issue Oct 18, 2023 · 0 comments
Open

Comments

@tienviitta
Copy link

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
...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant