一句话:提出可组合的后向稳定性定义与范畴 Shel,并实现工具 eggshel 自动合成数值程序的后向误差界。
后向稳定性是数值算法的重要性质:浮点程序对某输入产生的输出,恰好是附近输入在实数下的精确结果。现有工具多针对前向误差,后向误差分析自动化不足。本文提出形式化框架,对一大类数值程序进行可靠、自动的后向误差分析。作者先给出后向稳定性定义的可组合推广,覆盖多种浮点操作;再构造范畴 Shel,其中态射建模稳定的数值程序,并展示其结构支持丰富分析;最后实现 eggshel,在 Shel 的语法子范畴中自动搜索以证明程序后向稳定。算法能处理变量复用这一难题,作者证明其可靠性,并为一批此前自动化分析难以处理的程序合成后向误差界。
Backward stability is a desirable property for a well-designed numerical algorithm: given an input, a backward stable floating-point program produces the exact output for a nearby input. While automated tools for bounding the forward error of a numerical program are well-established, few existing tools target backward error analysis. We present a formal framework that enables sound, automated backward error analysis for a broad class of numerical programs. First, we propose a novel generalization of the definition of backward stability that is both compositional and flexible, satisfied by a wide range of floating-point operations. Second, based on this generalization, we develop the category Shel where morphisms model stable numerical programs, and show that structures in Shel support a rich variety of backward error analyses. Third, we implement a tool, eggshel, that automatically searches within a syntactic subcategory of Shel to prove backward stability for a given program. Our algorithm handles many programs with variable reuse, a known challenge in backward error analysis. We prove soundness of our algorithm and use our tool to synthesize backward error bounds for a suite of programs that were previously beyond the reach of automated analysis.