如何解决xtensor-blas 不正确的计算
我第一次尝试使用 xtensor-blas。我已经有 lots of difficulties 链接到它,但最后,我已经完成并尝试运行 sample programs。但是,作为输出,我得到第一个 0
和第二个 0,-inf
。
我正在使用 Windows 10 x64
,Clion 2021.1
使用 cmake 3.19.7
安装 xtensor 0.23.4
、xtensor-blas 0.19.0
、openblas 0.3.13
、lapack 3.6.1
、anaconda
使用 Microsoft 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,9}};
auto d = xt::linalg::slogdet(a);
std::cout << std::get<0>(d) << "," << std::get<1>(d) << std::endl; // 1,-34.9450...
}
}
解决方法
问题在于使用奇异矩阵的示例。其行列式应为 0,因为您的代码输出正确。
在 xtensor-blas 的 pull request 中讨论了这种情况,解决方案是更改示例。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。