## Computational Divided Differencing and Divided-Difference Arithmetics

### Cached

### Download Links

- [www.cs.wisc.edu]
- [www.cs.wisc.edu]
- [www.cs.wisc.edu]
- [research.cs.wisc.edu]
- DBLP

### Other Repositories/Bibliography

Citations: | 1 - 0 self |

### BibTeX

@MISC{Reps_computationaldivided,

author = {Thomas W. Reps and Louis B. Rall},

title = {Computational Divided Differencing and Divided-Difference Arithmetics},

year = {}

}

### OpenURL

### Abstract

Tools for computational differentiation transform a program that computes a numerical function F(x) into a related program that computes F′(x) (the derivative of F). This paper describes how techniques similar to those used in computational-differentiation tools can be used to implement other program transformations—in particular, avariety of transformations for computational divided differencing. Wediscuss how computational divided-differencing techniques could lead to faster and more robust programs in scientific and graphics applications. We also describe how these ideas relate to the numerical-finite-differencing techniques that motivated Robert Paige’s work on finite differencing of set-valued expressions in SETL programs. Dedicated to the memory of Robert Paige, 1947-1999. 1.

### Citations

1378 |
Program slicing
- Weiser
- 1984
(Show Context)
Citation Context ... to a set of program elements S is a projection of the program that includes only program elements that might affect (either directly or transitively) the values of the variables used at members of S =-=[67,51,31]-=-. Given aprogram that computes a function F, one version of the slicing problem focuses on creating the slice by symbolically composing the original program with an appropriate projection function π ,... |

1322 | A Practical Guide to Splines - Boor - 1978 |

985 | A theory of type polymorphism in programming
- Milner
- 1978
(Show Context)
Citation Context ...nism for implementing the divideddifference arithmetics that are described in this paper. Compared to other methods of providing polymorphism in programming languages, such as parametric polymorphism =-=[47]-=- and inheritance polymorphism [11], operator overloading has always been something of a poor cousin. In the programming-languages community, operator overloading is sometimes referred to as “ad hoc po... |

735 | Interprocedural slicing using dependence graphs
- Horwitz, Reps, et al.
- 1990
(Show Context)
Citation Context ... to a set of program elements S is a projection of the program that includes only program elements that might affect (either directly or transitively) the values of the variables used at members of S =-=[67,51,31]-=-. Given aprogram that computes a function F, one version of the slicing problem focuses on creating the slice by symbolically composing the original program with an appropriate projection function π ,... |

564 | Program Analysis and Specialization for the C Programming Language
- Andersen
- 1994
(Show Context)
Citation Context ...ntiation and computational divided differencing, operator overloading provides a convenient implementation mechanism for a wide variety of other interesting applications, including partial evaluation =-=[1]-=-, safe pointers [2], and expression templates [66].sACKNOWLEDGEMENTS − 43 − We are grateful for discussions with Chris Bischof, Carl de Boor, James O’Brien, and Richard Zippel about various aspects of... |

512 | A Semantics of Multiple Inheritance
- Cardelli
- 1984
(Show Context)
Citation Context ...ifference arithmetics that are described in this paper. Compared to other methods of providing polymorphism in programming languages, such as parametric polymorphism [47] and inheritance polymorphism =-=[11]-=-, operator overloading has always been something of a poor cousin. In the programming-languages community, operator overloading is sometimes referred to as “ad hoc polymorphism”, a term that has pejor... |

378 |
Evaluating Derivatives. Principles and Techniques of Algorithmic Differentiation
- Griewank, Walther
- 2008
(Show Context)
Citation Context ...programming-languages community is the work that has been done by numerical analysts on tools for computational differentiation (also known as automatic differentiation or algorithmic differentiation)=-=[68,56,26,5,27]-=-: • Giv en aprogram that computes a numerical function F(x), a computational-differentiation tool creates a related program that computes F′(x)(the derivative of F). Applications of computational diff... |

301 |
The program dependence graph in a software development environment
- Ottenstein, Ottenstein
(Show Context)
Citation Context ... to a set of program elements S is a projection of the program that includes only program elements that might affect (either directly or transitively) the values of the variables used at members of S =-=[67,51,31]-=-. Given aprogram that computes a function F, one version of the slicing problem focuses on creating the slice by symbolically composing the original program with an appropriate projection function π ,... |

285 | Using program slices in software maintenance
- Gallagher, Lyle
- 1991
(Show Context)
Citation Context ... elements that are not textually contiguous. Slicing, and subsequent manipulation of slices, has applications in many software-engineering tools, including ones for program understanding, maintenance =-=[22]-=-, debugging [45], testing [6,3], differencing [30,32], specialization [63], reuse [49], and merging [30]. Less well known in the programming-languages community is the work that has been done by numer... |

242 | Integrating non-interfering versions of programs
- Horwitz, Prins, et al.
- 1988
(Show Context)
Citation Context ...ng, and subsequent manipulation of slices, has applications in many software-engineering tools, including ones for program understanding, maintenance [22], debugging [45], testing [6,3], differencing =-=[30,32]-=-, specialization [63], reuse [49], and merging [30]. Less well known in the programming-languages community is the work that has been done by numerical analysts on tools for computational differentiat... |

221 | Efficient detection of all pointer and array access errors
- Austin, Breach, et al.
- 1994
(Show Context)
Citation Context ...ational divided differencing, operator overloading provides a convenient implementation mechanism for a wide variety of other interesting applications, including partial evaluation [1], safe pointers =-=[2]-=-, and expression templates [66].sACKNOWLEDGEMENTS − 43 − We are grateful for discussions with Chris Bischof, Carl de Boor, James O’Brien, and Richard Zippel about various aspects of the work described... |

179 | Partial evaluation of computation process - an approach to a compiler-compiler
- Futamura
- 1971
(Show Context)
Citation Context ...(h(x)).) Examples of such tools include partial evaluators and programslicers: • A partial evaluator creates a specialized version of a program when only part of the program’s input has been supplied =-=[21,10,34]-=-. A partial evaluator transforms a program that performs a computation F( 〈s, d 〉), where F operates on a pair of inputs 〈s, d 〉; when s is known, partial evaluation of the program with respect to s r... |

162 | Expression Templates - Veldhuizen - 1995 |

143 | On automatic differentiation
- Griewank
- 1989
(Show Context)
Citation Context ...(G(v)) F’(G(v))*G’(v) The computational-differentiation technique summarized above is what is known as forward-mode differentiation. A different computational-differentiation technique, re verse mode =-=[37,65,33,24,25]-=-, is generally preferable when the number of independent variables is much greater than the number of dependent variables. However, although it is possible to develop a reverse-mode version of computa... |

137 |
Automatic Differentiation: Techniques and Applications
- Rall
- 1981
(Show Context)
Citation Context ...programming-languages community is the work that has been done by numerical analysts on tools for computational differentiation (also known as automatic differentiation or algorithmic differentiation)=-=[68,56,26,5,27]-=-: • Giv en aprogram that computes a numerical function F(x), a computational-differentiation tool creates a related program that computes F′(x)(the derivative of F). Applications of computational diff... |

117 | Finite differencing of computable expressions
- Paige, Koenig
- 1982
(Show Context)
Citation Context ...how our work on computational differencing relates to the numerical-finite-differencing techniques that motivated Robert Paige’s work on finite differencing of set-valued expressions in SETL programs =-=[52,53]-=-. These ideas are illustrated by means of numerous examples, and implementations of them in the form of C++ class definitions (“divided-difference arithmetics”) are sketched. The divided-differencing ... |

115 |
Incremental program testing using program dependence graphs
- Bates, Horwitz
- 1993
(Show Context)
Citation Context ...ly contiguous. Slicing, and subsequent manipulation of slices, has applications in many software-engineering tools, including ones for program understanding, maintenance [22], debugging [45], testing =-=[6,3]-=-, differencing [30,32], specialization [63], reuse [49], and merging [30]. Less well known in the programming-languages community is the work that has been done by numerical analysts on tools for comp... |

103 |
Elementary numerical analysis: an algorithmic approach
- Conte, deBoor
- 1980
(Show Context)
Citation Context ... approach: • Divided differences are the basis for a wide variety of numerical techniques, including algorithms for polynomial interpolation, numerical integration, and solving differential equations =-=[13]-=-. • Finite differences on an evenly spaced grid (which can be obtained from divided differences on an evenly spaced grid) can be used to quickly generate a function’s values at any number of points th... |

98 | Identifying the semantic and textual differences between two versions of a program
- Horwitz
- 1990
(Show Context)
Citation Context ...ng, and subsequent manipulation of slices, has applications in many software-engineering tools, including ones for program understanding, maintenance [22], debugging [45], testing [6,3], differencing =-=[30,32]-=-, specialization [63], reuse [49], and merging [30]. Less well known in the programming-languages community is the work that has been done by numerical analysts on tools for computational differentiat... |

89 |
Adifor 2.0: Automatic Differentiation of Fortran 77 Programs
- BISCHOF, CARLE, et al.
- 1996
(Show Context)
Citation Context ...o build a special-purpose preprocessor to carry out the statement-doubling transformation that was illustrated in Examples 2.2 and 2.3. Examples of systems that use the latter approach include ADIFOR =-=[7,8]-=- and ADIC [9]. 6 Limitations of Computational Differentiation The reader should understand that computational differentiation has certain limitations. One limitation comes from the fact that a program... |

84 | ADIC — An Extensible Automatic Differentiation Tool for ANSI-C
- Bischof, Roh, et al.
- 1996
(Show Context)
Citation Context ...al-purpose preprocessor to carry out the statement-doubling transformation that was illustrated in Examples 2.2 and 2.3. Examples of systems that use the latter approach include ADIFOR [7,8] and ADIC =-=[9]-=-. 6 Limitations of Computational Differentiation The reader should understand that computational differentiation has certain limitations. One limitation comes from the fact that a programF′(x) that re... |

82 | Programming languages and their compilers: Preliminary notes - Cocke - 1969 |

78 |
Eds): Automatic Differentiation of Algorithms: Theory, Implementation, and Applications
- Griewank, Corliss
(Show Context)
Citation Context ...rogramming-languages community is the work that has been done by numerical analysts on tools for computational differentiation (also known as automatic differentiation or algorithmic differentiation) =-=[68,56,26,5,27]-=-: • Giv en aprogram that computes a numerical function F(x), a computational-differentiation tool creates a related program that computes F′(x) (the derivative of F). Applications of computational dif... |

63 |
C++ Toolbox for Verified Computing: Basic Numerical Problems
- Hammer, Hocks, et al.
- 1995
(Show Context)
Citation Context .../or subscripts on C++ identifiers.) 4 Another bright spot has been the application of interval arithmetic to the verification of the accuracy ofcomputed results, for many basic numerical computations =-=[28,29]-=-. i=1 (2.1)sMathematical notation Programming notation Prod(x) = k − 5 − Function Derivative Π fi(x) Prod′(x) = i=1 k i=1 float Prod(float x){ float ans = 1.0; for (int i = 1; i <= k; i++){ ans = ans ... |

62 |
C++ Toolbox for Verified Computing
- Hammer, Hocks, et al.
- 1995
(Show Context)
Citation Context .../or subscripts on C++ identifiers.) 4 Another bright spot has been the application of interval arithmetic to the verification of the accuracy ofcomputed results, for many basic numerical computations =-=[28,29]-=-. i=1 (2.1)sMathematical notation Programming notation Prod(x) = k − 5 − Function Derivative Π fi(x) Prod′(x) = i=1 k i=1 float Prod(float x){ float ans = 1.0; for (int i = 1; i <= k; i++){ ans = ans ... |

61 |
Automated support for legacy code understanding
- Ning, Engberts, et al.
- 1994
(Show Context)
Citation Context ...lices, has applications in many software-engineering tools, including ones for program understanding, maintenance [22], debugging [45], testing [6,3], differencing [30,32], specialization [63], reuse =-=[49]-=-, and merging [30]. Less well known in the programming-languages community is the work that has been done by numerical analysts on tools for computational differentiation (also known as automatic diff... |

55 | Program specialization via program slicing
- Reps, Turnidge
- 1996
(Show Context)
Citation Context ... the slice by symbolically composing the original program with an appropriate projection function π ,where π characterizes what part of F’s output should be discarded and what part should be retained =-=[63]-=-. Program slicing creates a program that computes F π ,where F π (x) = (π F)(x). Program-slicing tools allow one to find semantically meaningful decompositions of programs, where the decompositions co... |

49 | Using Semantic Differencing to Reduce the Cost of Regression Testing
- Binkley
- 1992
(Show Context)
Citation Context ...ly contiguous. Slicing, and subsequent manipulation of slices, has applications in many software-engineering tools, including ones for program understanding, maintenance [22], debugging [45], testing =-=[6,3]-=-, differencing [30,32], specialization [63], reuse [49], and merging [30]. Less well known in the programming-languages community is the work that has been done by numerical analysts on tools for comp... |

44 |
A simple automatic derivative evaluation program
- Wengert
- 1964
(Show Context)
Citation Context ...programming-languages community is the work that has been done by numerical analysts on tools for computational differentiation (also known as automatic differentiation or algorithmic differentiation)=-=[68,56,26,5,27]-=-: • Giv en aprogram that computes a numerical function F(x), a computational-differentiation tool creates a related program that computes F′(x)(the derivative of F). Applications of computational diff... |

39 | Systematic derivation of incremental programs
- Liu, Teitelbaum
- 1995
(Show Context)
Citation Context ...mations can be applied to derive algorithms for incremental-computation problems (i.e., problems in which the goal is to maintain the value of some function F(x)asthe input x undergoes small changes) =-=[38,39,40,41,43]-=-. Both Paige [52] and Paige and Koenig [53] provide lengthy discussions of the roots of the ideas that are developed in those papers. The basic idea for optimizing SETL loops is described as a general... |

37 | Interval Slopes for Rational Functions and Associated Centered Forms - Krawczyk, Neumaier - 1985 |

27 |
level iterators and a method for automatically designing data structure representation
- EARLEY
- 1975
(Show Context)
Citation Context ...o ofmany works that Paige wrote about this subject, and these ideas were implemented in his RAPTS system [53,54]. Some of the techniques that Paige explored have their roots in earlier work by Earley =-=[15,16]-=-. Independently of and contemporaneously with Paige, similar loop-optimization methods targeted toward very-high-level set-theoretic languages were investigated by Fong and Ullman [18,19,20]. More rec... |

27 | Dynamic programming via static incrementalization
- Liu, Stoller
- 1999
(Show Context)
Citation Context ...mations can be applied to derive algorithms for incremental-computation problems (i.e., problems in which the goal is to maintain the value of some function F(x)asthe input x undergoes small changes) =-=[38,39,40,41,43]-=-. Both Paige [52] and Paige and Koenig [53] provide lengthy discussions of the roots of the ideas that are developed in those papers. The basic idea for optimizing SETL loops is described as a general... |

27 | Efcient Detection of All Pointer and Array Access Errors - Austin, Breach, et al. - 1994 |

27 | Finite dierencing of computable expressions - Paige, Koenig - 1982 |

26 |
Induction variables in very high-level languages
- Fong, Ullman
- 1976
(Show Context)
Citation Context ...rk by Earley [15,16]. Independently of and contemporaneously with Paige, similar loop-optimization methods targeted toward very-high-level set-theoretic languages were investigated by Fong and Ullman =-=[18,19,20]-=-. More recently, Liu and Stoller have used some extensions of these ideas to optimize array computations [42] and recursive programs [44]. Liu et al. have also shown how such transformations can be ap... |

26 | From recursion to iteration: what are the optimizations
- Liu, Stoller
- 1999
(Show Context)
Citation Context ...theoretic languages were investigated by Fong and Ullman [18,19,20]. More recently, Liu and Stoller have used some extensions of these ideas to optimize array computations [42] and recursive programs =-=[44]-=-. Liu et al. have also shown how such transformations can be applied to derive algorithms for incremental-computation problems (i.e., problems in which the goal is to maintain the value of some functi... |

23 |
The appliation of partial evaluation to ray-tracing
- Mogensen
- 1986
(Show Context)
Citation Context ...input, respectively.) Partial evaluation is useful for removing interpretive overhead, and can also speed up programs that have two arguments that change value at different rates (such as ray tracing =-=[48]-=-). • The slice of a program with respect to a set of program elements S is a projection of the program that includes only program elements that might affect (either directly or transitively) the value... |

22 | Caching intermediate results for program improvement
- Liu, Teitelbaum
- 1995
(Show Context)
Citation Context ...mations can be applied to derive algorithms for incremental-computation problems (i.e., problems in which the goal is to maintain the value of some function F(x)asthe input x undergoes small changes) =-=[38,39,40,41,43]-=-. Both Paige [52] and Paige and Koenig [53] provide lengthy discussions of the roots of the ideas that are developed in those papers. The basic idea for optimizing SETL loops is described as a general... |

22 | Discovering auxiliary information for incremental computation
- Liu, Stoller, et al.
- 1996
(Show Context)
Citation Context |

22 | On Automatic Dierentiation - Griewank - 1989 |

22 | C++ Toolbox for Veri Computing - Hammer, Hocks, et al. - 1994 |

21 |
Simultaneuos Computation of Functions, Partial Derivatives and Estimates for Rounding Errors - Complexity and Practicality
- Iri
- 1984
(Show Context)
Citation Context ...(G(v)) F’(G(v))*G’(v) The computational-differentiation technique summarized above is what is known as forward-mode differentiation. A different computational-differentiation technique, re verse mode =-=[37,65,33,24,25]-=-, is generally preferable when the number of independent variables is much greater than the number of dependent variables. However, although it is possible to develop a reverse-mode version of computa... |

21 |
Experiments on Slicing-Based Debugging Tools
- Lyle, Weiser
- 1986
(Show Context)
Citation Context ...re not textually contiguous. Slicing, and subsequent manipulation of slices, has applications in many software-engineering tools, including ones for program understanding, maintenance [22], debugging =-=[45]-=-, testing [6,3], differencing [30,32], specialization [63], reuse [49], and merging [30]. Less well known in the programming-languages community is the work that has been done by numerical analysts on... |

19 |
Exception handling in derivative computation with nonarchimedean calculus
- Shamseddine, Berz
- 1996
(Show Context)
Citation Context ...m [17,4,27]. Some additional problems that can arise with computational differentiation are identified in [17]. Anumber of different approaches to these problems have been discussed in the literature =-=[17,4,64,36,27]-=-. Computational divided differencing has some similar (or even worse) problems. All of these issues are outside the scope of the present paper; the problem of finding appropriate ways to generalize th... |

18 |
The Chain Rule Revisited in Scientific Computing
- Griewank
- 1991
(Show Context)
Citation Context ...(G(v)) F’(G(v))*G’(v) The computational-differentiation technique summarized above is what is known as forward-mode differentiation. A different computational-differentiation technique, re verse mode =-=[37,65,33,24,25]-=-, is generally preferable when the number of independent variables is much greater than the number of dependent variables. However, although it is possible to develop a reverse-mode version of computa... |

15 | Loop optimization for aggregate array computations
- Liu, Stoller
- 1998
(Show Context)
Citation Context ... toward very-high-level set-theoretic languages were investigated by Fong and Ullman [18,19,20]. More recently, Liu and Stoller have used some extensions of these ideas to optimize array computations =-=[42]-=- and recursive programs [44]. Liu et al. have also shown how such transformations can be applied to derive algorithms for incremental-computation problems (i.e., problems in which the goal is to maint... |

14 | Transformational Programming -- Applications to Algorithms and Systems - Paige - 1983 |

13 | ADIFOR 2.0: Automatic Dierentiation of Fortran 77 Programs - Bischof, Carle, et al. - 1996 |

12 | ADIFOR: Automatic differentiation in a source translation environment
- Bischof, Carle, et al.
- 1992
(Show Context)
Citation Context ...o build a special-purpose preprocessor to carry out the statement-doubling transformation that was illustrated in Examples 2.2 and 2.3. Examples of systems that use the latter approach include ADIFOR =-=[7,8]-=- and ADIC [9]. 6 Limitations of Computational Differentiation The reader should understand that computational differentiation has certain limitations. One limitation comes from the fact that a program... |