data Double双精度浮点数.希望这种类型在范围和精度上至少与IEEE双精度类型相同.
GHC/Haskell是否也提供扩展精度(80位)浮点数,也许使用一些外部库?
floating-point haskell ghc floating-point-precision extended-precision
我有一段代码来计算Helmholtz-Hodge分解.我一直在我的Mac OS Yosemite上运行,它运行得很好.然而,一个月前,我的Mac变得非常慢(它真的很旧),我选择购买新的笔记本电脑(Windows 8.1,戴尔).
在安装了所有Python库等之后,我继续我的工作运行相同的代码(在Git中版本化).然后结果非常奇怪,与旧笔记本中获得的结果完全不同.
例如,我所做的是构造矩阵a和b(非常长的微积分)然后我称之为求解器:
s = numpy.linalg.solve(a, b)
Run Code Online (Sandbox Code Playgroud)
这是返回a(错误,并且在我的Mac中获得的结果不同,这是正确的).
然后,我尝试使用:
s = scipy.linalg.solve(a, b)
Run Code Online (Sandbox Code Playgroud)
程序以代码0退出,但在其中间.然后,我做了一个简单的测试:
print 'here1'
s = scipy.linalg.solve(a, b)
print 'here2'
Run Code Online (Sandbox Code Playgroud)
并且here2从未打印过.
我试过了:
print 'here1'
x, info = numpy.linalg.cg(a, b)
print 'here2'
Run Code Online (Sandbox Code Playgroud)
同样的事情发生了.
使用后我也尝试检查解决方案numpy.linalg.solve:
print numpy.allclose(numpy.dot(a, s), b)
Run Code Online (Sandbox Code Playgroud)
我有一个False(?!).
我不知道发生了什么,如何找到解决方案,我只知道在我的Mac上运行相同的代码,但如果我可以在其他平台上运行它会非常好.现在我陷入了这个问题(不再使用Mac)并且没有任何关于原因的线索.
最奇怪的是,我没有收到运行时警告的任何错误,根本没有反馈.
感谢您的任何帮助.
编辑:
Numpy Suit测试结果:

Scipy Suit测试结果:

UPDATE some_table SET some_float_field=1919.987 WHERE id=123
SELECT * FROM some_table WHERE id=123
Run Code Online (Sandbox Code Playgroud)
其中some_float_field是一个定义为"float"的字段(没有任何特定的大小值).
预期结果值为1919.987; 相反,它被舍入到1919.99
为什么?32位(单精度)浮子具有足够的精度,可以正确存储!
我有以下重复的简单代码重复几次,我想为一个函数:
for i in range(10):
id = "some id string looked up in dict"
val = 63.4568900932840928 # some floating point number in dict corresponding to "id"
tabStr += '%-15s = %6.1f\n' % (id,val)
Run Code Online (Sandbox Code Playgroud)
我希望能够调用此函数:def printStr(precision)
凡瓶坯上面的代码,并返回tabStr与val到precision小数点.
例如:printStr(3)
将返回63.457了val在tabStr.
任何想法如何实现这种功能?
我目前正在研究进行多精度浮点运算的代码.为了正常工作,该代码要求在明确定义的点处将值降低到最终精度.因此,即使将中间结果计算到80位扩展精度浮点寄存器,在某些时候也必须将其四舍五入为后续操作的64位双精度.
代码使用宏INEXACT来描述此要求,但没有完美的定义.在GCC手册中提到-fexcess-precision=standard的办法迫使流延和赋值操作定义良好的精度.但是,它还写道:
对于C以外的语言,未实现"-fexcess-precision = standard"
现在我正在考虑将这些想法移植到C++(如果有人知道现有的实现,则欢迎评论).所以我似乎无法将该开关用于C++.但是没有任何开关的g ++默认行为是什么?是否有更多类似C++的方法来控制过度精度的处理?
我想对于我目前的用例,我可能会-mfpmath=sse在任何情况下使用,据我所知,这不应该产生任何过多的精度.但我仍然很好奇.
c++ floating-point gcc floating-point-precision extended-precision
我对什么max_digits10代表感到困惑.根据其文档,对于所有整数类型,它为0.浮点类型的公式max_digits10看起来类似于int's digits10'.
示例代码:
int main() {
float f = 123.542;
int i = (int)f;
printf("%d\n",i);
}
Run Code Online (Sandbox Code Playgroud) 你什么时候使用fp:strict而不是fp:exact?如果我想要"更精确"的计算并避免舍入错误,使用前者会更好吗?什么是使用后者的启发式?
c++ floating-point visual-studio-2010 visual-c++ floating-point-precision
我必须将一些项目的价格放在mysql表中.在创建我正在使用的表时,DECIMAL(10,2)因为我在逗号后不需要超过2位数(例如:123,45将被接受作为输入,但123,456将被舍入为123,45与PHP).
第一个问题:使用DECIMAL(10,2),如何知道逗号之前可以存储多少个数字?我知道它不是10,因为10只是Mysql在使用这些数字进行数学运算时所使用的精度:那么数字本身的长度是指定的吗?
第二个问题:我使用PHP来舍入用户输入以适应数据类型(逗号后面带有2个数字的浮点数).我该如何使用它mysqli->bind_param来插入这些数据?我应该使用哪些数据类型(来自文档)bind_param(可能:为什么)?
Character Description
i corresponding variable has type integer
d corresponding variable has type double
s corresponding variable has type string
b corresponding variable is a blob and will be sent in packets
Run Code Online (Sandbox Code Playgroud) php floating-point mysqli floating-accuracy floating-point-precision
我开发了一种科学应用(模拟在细胞核中移动的染色体).将染色体分成小片段,使用4x4旋转矩阵围绕随机轴旋转.
问题是模拟执行数千亿次旋转,因此浮点舍入误差会呈指数级增长并逐渐增长,因此随着时间的推移,碎片会"漂浮"并与染色体的其余部分分离.
我在C++中使用双精度.软件暂时在CPU上运行,但将移植到CUDA,模拟最多可持续1个月.
我不知道我怎么能以某种方式重新规范化染色体,因为所有的片段都被链接在一起(你可以把它看成是一个双重链接列表),但我认为如果可能的话,这将是最好的想法.
你有什么建议吗 ?我觉得有点迷茫.
非常感谢你,
H.
编辑:添加了简化的示例代码.您可以假设所有矩阵数学都是经典实现.
// Rotate 1000000 times
for (int i = 0; i < 1000000; ++i)
{
// Pick a random section start
int istart = rand() % chromosome->length;
// Pick the end 20 segments further (cyclic)
int iend = (istart + 20) % chromosome->length;
// Build rotation axis
Vector4 axis = chromosome->segments[istart].position - chromosome->segments[iend].position;
axis.normalize();
// Build rotation matrix and translation vector
Matrix4 rotm(axis, rand() / float(RAND_MAX));
Vector4 oldpos = chromosome->segments[istart].position; …Run Code Online (Sandbox Code Playgroud) c++ scientific-computing matrix-multiplication floating-point-precision