使用循环不变量的复杂示例

时间:2013-06-04 13:06:57

标签: loops

任何人都可以使用loop invariant提供一个复杂的示例sum(int n)这样的示例是如此微不足道,以至于无法显示loop invariant的强大功能。我想要一个不那么明显的例子,我们可以使用像loop invariant这样的方法来解决它。

1 个答案:

答案 0 :(得分:2)

Wikipedia示例非常好:

for (int i = 0; i < n; i++) {
    x = y + z;
    a[i] = 6 * i + x * x;
}

可以移动两个不变量(y + z和x * x)。此示例的优点是,在应用LICM之后,您可以对代码应用其他优化以使某些操作非常简单。

关于这方面的论文/幻灯片/课程有很多,你肯定能找到一个令人满意的例子。