小编Max*_*axB的帖子

如何从QR分解输出中获得Q?

来自LAPACK的DGEQRF和SGEQRF以打包格式返回QR因式分解的Q部分。打开包装似乎需要O(k^3)步骤(k个低档产品),而且似乎不是很简单。另外,k对我来说,进行顺序乘法的数值稳定性还不清楚。

LAPACK是否包括用于解包Q的子例程,如果没有,我应该怎么做?

fortran matrix linear-algebra lapack qr-decomposition

4
推荐指数
1
解决办法
1355
查看次数

在Cython和Boost.Python中扩展NumPy的相对优势是什么?

我需要加快一些在NumPy数组上工作的算法.他们将使用std::vector一些更先进的STL数据结构.

我已将我的选择范围缩小到Cython(现在包装大多数STL容器)和Boost.Python(现在内置支持NumPy).

根据我作为程序员的经验,我知道有时需要几个月的时间来使用框架来揭示其隐藏的问题(因为它们很少被其门徒用作谈话点),所以你的帮助可能会为我节省大量时间.

在Cython和Boost.Python中扩展NumPy的相对优缺点是什么?

numpy cython boost-python

4
推荐指数
1
解决办法
1874
查看次数

Rust缺少增量编译意味着什么呢?

我是一个局外人,试图看看Rust是否适合我的项目.

我读过Rust缺少渐进式编译(尽管有beta版功能).

  1. 这类似于在C++的头文件中实现所有内容(就像在很多Boost中一样)?

  2. 如果以上是正确的,这是否会将Rust限制为具有较小依赖性的相当小的项目?(如果QtKDE只是标题库,那么使用它们的程序开发起来会非常痛苦,因为每次你想编译自己的代码时都会有效地重新编译Qt/KDE.)

incremental-linking incremental-build rust incremental-compiler

4
推荐指数
1
解决办法
593
查看次数

如果频繁替换函数,Julia 会垃圾收集旧代码吗?

在典型的应用程序中,代码不会被替换太多,因此在进程退出之前旧代码是否被释放是无关紧要的。但是,我想到的用例并不典型。如果我要大量替换函数,Julia 会垃圾收集旧代码(源代码、编译代码和所有中间表示)吗?

julia

4
推荐指数
1
解决办法
50
查看次数

pytorch:NLLLossignore_index默认值

在 pytorch NLLLoss文档中,ignore_index 的默认值是 -100 而不是通常的None,有什么特殊原因吗?似乎任何负值都是等价的。

顺便说一句,我想忽略索引的原因可能是什么?谢谢!

python torch pytorch

4
推荐指数
1
解决办法
814
查看次数

当给定 const string& 时,为什么 make_pair<string, string>() 不调用复制构造函数?

GCC 和 Clang 都拒绝编译这个:

\n
#include <string>\n#include <utility>\n\nusing namespace std;\n\nint main() {\n    const string s = "12345";\n    const string& r = s;\n\n    auto p = std::make_pair<string, string>(r, r);\n}\n
Run Code Online (Sandbox Code Playgroud)\n

海湾合作委员会 说:

\n
error: cannot bind rvalue reference of type \xe2\x80\x98std::__cxx11::basic_string<char>&&\xe2\x80\x99 to lvalue of type \xe2\x80\x98const std::string\xe2\x80\x99 {aka \xe2\x80\x98const std::__cxx11::basic_string<char>\xe2\x80\x99}\n
Run Code Online (Sandbox Code Playgroud)\n

虽然 Clang 说:

\n
error: no matching function for call to 'make_pair'\n
Run Code Online (Sandbox Code Playgroud)\n

既然我给出了make_pair显式类型,为什么它不从中构造新字符串const string&

\n
\n

这个编译:

\n
auto p = std::make_pair<string, string>(string(r), string(r));\n
Run Code Online (Sandbox Code Playgroud)\n

c++ templates reference rvalue lvalue

4
推荐指数
1
解决办法
181
查看次数

将整数视为较小整数 UB 的数组吗?

将整数视为较小整数 UB 的数组吗?

比如这段代码中是否有UB:

#include <iostream>
#include <cstdint>
#include <algorithm> // sort

void sort_bytes(std::uint32_t& x) {
    std::uint8_t* p = (std::uint8_t*)&x;

    std::sort(p, p+4);
}

void sort_words(std::uint32_t& x) {
    std::uint16_t* p = (std::uint16_t*)&x;

    std::sort(p, p+2);
}


int main() {
    const std::uint32_t x = 1234342542u;
    std::uint32_t y = x, z = x;
    std::cout << x << std::endl;
    sort_bytes(y);
    std::cout << y << std::endl;
    sort_words(z);
    std::cout << z << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

c++ undefined-behavior

4
推荐指数
1
解决办法
130
查看次数

不同的线程可以写入同一Vec的不同部分吗?

我有10个线程Vec,长度为100.

我可以在0-9元素(例如,排序它们)上使用线程0,而线程1正在处理元素10-19等等吗?

或者我必须使用Vec<Vec<>>这个吗?(我宁愿避免,因为元素在内存中不再是连续的)

rust

3
推荐指数
1
解决办法
460
查看次数

?序言拒绝假设推理查询?

我怀疑 ?Prolog 的主要实现 teyjus 可能有点被遗弃,但是 ?Prolog 是一个迷人的 Prolog,它应该让你使用高阶逻辑、假设推理和其他东西,这就是为什么我尝试使用它。

文件“example.sig”:

sig example.

kind person, language type.

type hans person.
type german, french, italian language.

type grade person -> o.
type take person -> language -> o.
Run Code Online (Sandbox Code Playgroud)

文件“example.mod”:

module example.

(grade P) :- (take P german), (take P french).
(grade P) :- (take P german), (take P italian).

take hans french.
Run Code Online (Sandbox Code Playgroud)

但是,当我编译和加载它时,虽然它似乎可以工作,但假设的推理查询被拒绝:

[example] ?- take X Y.

The answer substitution:
Y = french
X = hans

More solutions (y/n)? y

no (more) …
Run Code Online (Sandbox Code Playgroud)

prolog logic-programming lambda-prolog

3
推荐指数
1
解决办法
127
查看次数

3
推荐指数
1
解决办法
101
查看次数