如何在面对浮点舍入错误的情况下找到最小累积总和的索引?

问题描述 投票:0回答:1
tall

arr

在-1和1之间的一个数数数数。我的问题是我不能轻易地这样做,因为
float64
中的数字具有非常不同的尺度,因此累积总和中的两个连续值在
arr
算术中可能相同,实际上,在精确算术下它们应该不同。我想回答,如果您有确切的算术,您会得到。
我不需要知道此索引的值。我只需要索引。如何做到这一点总是正确的?
ARR的最大长度为10000。没有权重,因此计算为s
0
= 0,s

i

+1

=s

i +arrfloat64中最小的绝对值为10 -100


我想回答,如果您有确切的算术,您会得到。
如何做到这一点总是正确的?
代码将需要广泛的数学。

仅作为op的某些概念代码,因为不容易获得诸如
c precision numeric
1个回答
0
投票
的类型。
ARR中最糟糕的可能值是1E-100。” - >暗示遇到的最小ULP约为2^(-328-53),[-1.0 ... 1.0]最大的位是2^0,因此我只需要大约

arr
即可扩展到一个整数。

int_least396_t
.

使用
整数类型,并有效地执行定点数学。

int382_t


我认为OP所陈述的目标是真正需要的(旧的XY问题),但是以op为面值,解决方案将需要非常广泛的数学,也许需要多达400位。
我会考虑

a[i]

(并跳过缩放),而不是为初学者而不是
int396_t
,看看这是否解决了较高的级别,但尚未明确的问题。 
@@SimonGoater

    

如果您知道您的数组只有一个最小值,并且可以进行噪音,则可以分析趋势 - 即,如果值向上或下降。如果它从goind向上变化,您就会知道您的最低限度在哪里。

如果您最低限度不止一个,则可能需要使用大数字(或诸如

https://gmplib.org/manual/floating_002dpoint-functions之类的大精度库)。

	
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.