tun*_*nuz 5 c++ linear-algebra double-precision
我正在用C++为一个项目编写一个小而且不充分的线性代数库(对不起).我正在使用双精度数来实现矩阵和运算.我做得对吗?我应该实现模板类吗?周围有更精确的类型吗?
我将使用模板实现类/结构.一开始,你很可能会对just感到满意double
,但我发现在我没有将矩阵实现为模板的每个项目中,我后来后悔了.
此外,它为您提供了使用更有趣的元素代数的机会 - 区间算法,概率分布,复杂数学,定点匹配,子矩阵,简单数学:-)等.
我使用模板编写了一个 C++ 线性代数库。我的想法是,有一天我们可能想要使用复数或扩展精度数。那可能是七年前的事了,我们还没有做到。我们几乎总是使用双精度作为模板类型,并且我们有 typedef 来使这变得简单。
有几次我们反其道而行之,使用小于双精度的类型。例如,我们在此处描述的内存限制应用程序中使用了 float 而不是 double 。但 99.9% 的时间我们都使用双打。
如果您确实使用模板参数,请注意使用整数类型但隐式需要浮点类型。例如,假设您有一个矩阵,其条目全部为整数,因此您使用了matrix<int> 类。但随后你将其传递给线性求解器。现在你的算术是使用整数除法完成的,你的结果是错误的。(我已经做到了!)