Symbolic-numeric programming in scientific computing
Name
gowda-gowda-phd-math-2024-thesis.pdf
Description
Thesis PDF
Size
709.71 KB
Format
Adobe PDF
Checksum (MD5)
275d18763c8741cd691a71f773475069
Author(s)
Gowda, Shashi
Advisor(s)
Edelman, Alan
Date Issued
May 2024
Publisher
Massachusetts Institute of Technology
Abstract
Scientific programming languages should pursue two goals: closeness to mathematical notation, and the ability to express efficient numerical algorithms. To meet these goals simultaneously, languages use imperative surface syntaxes that mimic mathematical notation. However, mimicking does not make them the same—mathematics is declarative, pliable, and caters to exploratory human nature; but algorithms are imperative and must cater to machines. Hence, there is a fundamental limit to this approach and we leave the expressive power of the symbolic representation on the table.
In this thesis, we ask the question: How can symbolic and numerical modes of computing co-exist, one informing the other? As an answer, we develop a symbolic-numeric system that can trace through numerical code to produce symbolic expressions, and turn symbolic expressions back into high-quality numerical code at staged compilation time. This allows the scientific user to generate code with the full power of algebraic manipulation and to treat numerical code as the symbolic artifact it is. We identified siloing of symbolic software into 3 categories which currently each reproduce similar forms of symbolic capabilities, but cannot share code between each other. Our work demonstrates that this siloing is not essential and an ecosystem of symbolic-numeric libraries can thrive in symbiosis.
Our system is adaptable to any domain: users can define 1) Symbolic variables of any type 2) the set of primitive (symbolically indivisible) functions in the domain, 3) the propagation of partial information, and 4) pattern-based rewrites and simplification rules. There is a tendency in scientific computing to create a “compiler for every problem” starting from scratch every time. Every such effort erects its own towers of symbolic and numerical capabilites. A system like ours eliminates this redundancy and lets every scientific user be a “compiler designer” without any prior knowledge of compiler development.
MIT Department
Massachusetts Institute of Technology. Department of Mathematics
Massachusetts Institute of Technology. Center for Computational Science and Engineering
Terms of Use
In Copyright - Educational Use Permitted
Copyright retained by author(s)
Persistent DSpace Link