查找Fortran数组中最近值的索引位置

时间:2014-04-02 12:16:17

标签: fortran binary-search

我有两个排序数组,一个包含因子(数组a),当与另一个数组(数组b)的值相乘时,产生所需的值:

a(idx1) * b(idx2) = value

知道idx2后,我希望找到idx1 avalue提供尽可能接近{{1}}所需的因素。

我已经研究了一些不同的算法(例如like this one),但我觉得在我的特定情况下它们都会遇到浮点运算的潜在问题。

有人可以建议一种避免这种情况的方法吗?

1 个答案:

答案 0 :(得分:6)

如果我理解正确,这个表达

minloc(abs(a-value/b(idx2)))

会将索引返回到a中第一次出现的值a,从而最大限度地减少差异。我希望编译器会编写代码来扫描a中的所有元素,因此这可能不会比利用ab都知道的搜索更快执行排序。在补偿方面,这可以更快地编写,我希望能够进行调试。