- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
这个问题听起来可能有点奇怪:我想使用 Boost 的 ublas 和 ATLAS/Lapack 进行数字矩阵计算。我正在使用 Boost numeric bindings在这两个库之间进行交互。但是,要么我就是找不到它,要么没有关于如何使用这些绑定(bind)的适当文档。另外,我是 Boost 的新手(实际上通常是 C++),所以我很难找到如何在我的代码中使用 Lapack 提供的函数。
我最终要解决的问题是找到对称带状矩阵的特征值和特征向量。据我了解,我会使用 lapack::steqr
为了这。问题是,我不知道如何正确调用函数。在数字绑定(bind)的代码中,我可以看到类似这样的内容:
template <typename D, typename E, typename Z, typename W>
inline
int steqr( char compz, D& d, E& e, Z& z, W& work ) {
int const n = traits::vector_size (d);
assert( traits::vector_size (e) == n-1 );
assert( traits::matrix_size1 (z) == n );
assert( traits::matrix_size2 (z) == n );
assert( compz=='N' || compz=='V' || compz=='I' );
...
现在,我该如何处理?我试过 steqr<double, double, double, double>(...)
和双数组,这是行不通的。然后,为了找出要使用的正确参数,我选择了其中一个断言并试图找到任何适用于 traits::matrix_size1(...)
的东西。 - 即使我无法编译,既不使用双数组也不使用 ublas::matrix
.
所以我的问题是,一般来说:当我找到这样一个没有完整文档的库时,我如何找到如何调用函数?我主要来自 C,对所有这些模板感到非常困惑。真的是追踪代码中所有内容的唯一方法吗?或者有什么小技巧?或者我是否可以从错误消息中提取信息?
此类错误消息的一个示例是,对于以下代码:
ublas::matrix<double> empty(N,N);
std::cout << traits::matrix_size1<ublas::matrix>(empty) << std::endl;
然后我在编译过程中得到:
eigenvalues.cpp:40:85: error: no matching function for call to ‘matrix_size1(boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >&)’
eigenvalues.cpp:40:85: note: candidate is:
/usr/include/boost/numeric/bindings/traits/matrix_traits.hpp:148:18: note: template<class M> std::ptrdiff_t boost::numeric::bindings::traits::matrix_size1(M&)
候选人列在那里可能很有用,但我只是不知道如何阅读这一行并相应地调整我的代码。
同样:这个问题有点笼统,关于如何处理这样的事情。我知道类和模板的基本概念,但这对我的知识来说有点太抽象了。
最佳答案
由于我不太精通模板化的 c++,我个人发现使用 cblas
接口(interface)要容易得多,它只是原始 Fortran 代码的一个薄包装。
在这种方法中,您必须为矩阵创建自己的类,这与 Fortran 对矩阵是什么的理解兼容。最简单的方法可能是继承自 std::vector
或 std::valarray
并提供您自己的索引操作。是的,这有点工作。但它并不像听起来那么糟糕:-)。
顺便提一下,请注意使用带有 double 参数的单精度例程 (ssteqr
)。 LAPACK 不会报告任何错误,但结果将是完全错误的。
关于c++ - 如何读取C++代码或: What to do without documentation?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8456255/
我尝试理解[c代码 -> 汇编]代码 void node::Check( data & _data1, vector& _data2) { -> push ebp -> mov ebp,esp ->
我需要在当前表单(代码)的上下文中运行文本文件中的代码。其中一项要求是让代码创建新控件并将其添加到当前窗体。 例如,在Form1.cs中: using System.Windows.Forms; ..
我有此 C++ 代码并将其转换为 C# (.net Framework 4) 代码。有没有人给我一些关于 malloc、free 和 sprintf 方法的提示? int monate = ee; d
我的网络服务器代码有问题 #include #include #include #include #include #include #include int
给定以下 html 代码,将列表中的第三个元素(即“美丽”一词)以斜体显示的 CSS 代码是什么?当然,我可以给这个元素一个 id 或一个 class,但 html 代码必须保持不变。谢谢
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 7 年前。
我试图制作一个宏来避免重复代码和注释。 我试过这个: #define GrowOnPage(any Page, any Component) Component.Width := Page.Surfa
我正在尝试将我的旧 C++ 代码“翻译”成头条新闻所暗示的 C# 代码。问题是我是 C# 中的新手,并不是所有的东西都像 C++ 中那样。在 C++ 中这些解决方案运行良好,但在 C# 中只是不能。我
在 Windows 10 上工作,R 语言的格式化程序似乎没有在 Visual Studio Code 中完成它的工作。我试过R support for Visual Studio Code和 R-T
我正在处理一些报告(计数),我必须获取不同参数的计数。非常简单但乏味。 一个参数的示例查询: qCountsEmployee = ( "select count(*) from %s wher
最近几天我尝试从 d00m 调试网络错误。我开始用尽想法/线索,我希望其他 SO 用户拥有可能有用的宝贵经验。我希望能够提供所有相关信息,但我个人无法控制服务器环境。 整个事情始于用户注意到我们应用程
我有一个 app.js 文件,其中包含如下 dojo amd 模式代码: require(["dojo/dom", ..], function(dom){ dom.byId('someId').i
我对“-gencode”语句中的“code=sm_X”选项有点困惑。 一个例子:NVCC 编译器选项有什么作用 -gencode arch=compute_13,code=sm_13 嵌入库中? 只有
我为我的表格使用 X-editable 框架。 但是我有一些问题。 $(document).ready(function() { $('.access').editable({
我一直在通过本教程学习 flask/python http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-wo
我想将 Vim 和 EMACS 用于 CNC、G 代码和 M 代码。 Vim 或 EMACS 是否有任何语法或模式来处理这种类型的代码? 最佳答案 一些快速搜索使我找到了 this vim 和 thi
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve this
这个问题在这里已经有了答案: Enabling markdown highlighting in Vim (5 个回答) 6年前关闭。 当我在 Vim 中编辑包含 Markdown 代码的 READM
我正在 Swift3 iOS 中开发视频应用程序。基本上我必须将视频 Assets 和音频与淡入淡出效果合并为一个并将其保存到 iPhone 画廊。为此,我使用以下方法: private func d
pipeline { agent any stages { stage('Build') { steps { e
我是一名优秀的程序员,十分优秀!