0

我第一次尝试使用 xtensor-blas。我在链接到它时遇到了很多困难,但最后,我做到了,并尝试运行示例程序。但是,作为输出,我得到0了第一个和0, -inf第二个。

我正在使用Windows 10 x64, Clion 2021.1
Installed cmake 3.19.7, xtensor 0.23.4, xtensor-blas 0.19.0, openblas 0.3.13, lapack 3.6.1using anaconda
Compiled usingMicrosoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29910\bin\HostX64\x64\cl.exe

cmake_minimum_required(VERSION 3.19)
project(tstxtensor6)

set(CMAKE_CXX_STANDARD 20)

find_package(xtensor)
find_package(xtensor-blas)
add_executable(${PROJECT_NAME} main.cpp)

target_link_libraries(${PROJECT_NAME} xtensor xtensor-blas)
#include <xtensor-blas/xlinalg.hpp>

int main()
{
    {
        xt::xarray<double> a = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
        auto d = xt::linalg::det(a);
        std::cout << d << std::endl;  // 6.661338e-16
    }
    {
        xt::xarray<double> a = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
        auto d = xt::linalg::slogdet(a);
        std::cout << std::get<0>(d) << ", " << std::get<1>(d) << std::endl;  // 1, -34.9450...
    }
}
4

1 回答 1

0

问题在于使用奇异矩阵的示例。当您的代码正确输出时,它的行列式应该是 0。

这个案例在xtensor-blas的拉取请求中进行了讨论,解决方案是更改示例。

于 2021-04-05T17:26:05.387 回答