Symbolic-numeric programming in scientific computing
Author(s)
Gowda, Shashi![Thumbnail](/bitstream/handle/1721.1/155320/gowda-gowda-phd-math-2024-thesis.pdf.jpg?sequence=3&isAllowed=y)
DownloadThesis PDF (709.7Kb)
Advisor
Edelman, Alan
Terms of use
Metadata
Show full item recordAbstract
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.
Date issued
2024-05Department
Massachusetts Institute of Technology. Department of Mathematics; Massachusetts Institute of Technology. Center for Computational Science and EngineeringPublisher
Massachusetts Institute of Technology