相关疑难解决方法(0)

为什么将0.1f改为0会使性能降低10倍?

为什么这段代码,

const float x[16] = {  1.1,   1.2,   1.3,     1.4,   1.5,   1.6,   1.7,   1.8,
                       1.9,   2.0,   2.1,     2.2,   2.3,   2.4,   2.5,   2.6};
const float z[16] = {1.123, 1.234, 1.345, 156.467, 1.578, 1.689, 1.790, 1.812,
                     1.923, 2.034, 2.145,   2.256, 2.367, 2.478, 2.589, 2.690};
float y[16];
for (int i = 0; i < 16; i++)
{
    y[i] = x[i];
}

for (int j = 0; j < 9000000; j++)
{
    for (int i = 0; i < 16; i++)
    {
        y[i] *= …
Run Code Online (Sandbox Code Playgroud)

c++ floating-point performance compilation visual-studio-2010

1491
推荐指数
5
解决办法
14万
查看次数

什么是次正规浮点数?

isnormal()参考页面告诉:

确定给定的浮点数arg是否正常,即既不是零,也不是正常,无限,也不是NaN.

数字为零,无限或NaN很清楚它意味着什么.但它也说低于正常.什么时候是一个数字次正常?

c++ floating-point ieee-754 c++11

65
推荐指数
3
解决办法
2万
查看次数

C中浮点数据类型的范围?

我正在读一本C书,谈论浮点范围,作者给出了表:

Type     Smallest Positive Value  Largest value      Precision
====     =======================  =============      =========
float    1.17549 x 10^-38         3.40282 x 10^38    6 digits
double   2.22507 x 10^-308        1.79769 x 10^308   15 digits
Run Code Online (Sandbox Code Playgroud)

我不知道最小正值和最大值列中的数字来自哪里.

c floating-point ieee-754

33
推荐指数
4
解决办法
10万
查看次数

避免在C++中使用非正规值

在长时间搜索性能错误后,我读到了非正规浮点值.

显然,非规范化的浮点值可能是主要的性能问题,如此问题所示: 为什么将0.1f更改为0会使性能降低10倍?

我有一个Intel Core 2 Duo,我正在使用gcc进行编译-O2.

那我该怎么办?我可以以某种方式指示g ++避免非正规值吗?如果没有,我可以以某种方式测试一个float是否是非正规的?

c++ floating-point performance

24
推荐指数
4
解决办法
2万
查看次数

VB中值“6.37066138261923E-314”的意义是什么?

我一直在查看我正在查看的 vb 代码中对特定值的引用,并想知道是否有人对重要性有任何线索。

var_ret_1 = Int((6.37066138261923E-314 / 32))

loc_0046BBAE: Var_Ret_2 = CDbl((6.37066138261923E-314 - 6.37066138261923E-314))
loc_0046BBC4: fcomp real8 ptr var_5C
loc_0046BBE3: Err.Raise
loc_0046BBE9:
loc_0046BBF5: If word ptr [ecx] < 0 Then GoTo loc_0046BBFD
loc_0046BBF7: Err.Raise
loc_0046BBFD:
loc_0046BC00: shl eax, 04h
loc_0046BC03: edi+edi*4 = edi+edi*4 - word ptr var_28
loc_0046BC0E: shl eax, 04h
loc_0046BC11: esi+esi*4 = esi+esi*4 - word ptr [ecx]
loc_0046BC38: Var_Ret_3 = CDbl((6.37066138261923E-314 - 6.37066138261923E-314))
loc_0046BC4E: fcomp real8 ptr var_68
loc_0046BC6F: edi = word ptr [eax] - 1```
Run Code Online (Sandbox Code Playgroud)

vb6

5
推荐指数
1
解决办法
157
查看次数