Back to results

Massachusetts Institute of Technology

Symbolic-numeric programming in scientific computing

Abstract

dc:description.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.

Degree

thesis:*
Name thesis:degree_name
Doctoral
Department dc:contributor.department
Massachusetts Institute of Technology. Department of Mathematics
Grantor dc:publisher
Massachusetts Institute of Technology
Year dc:date.issued
2024

Author and committee

dc:creator, dc:contributor.*
Author dc:creator
  • Gowda, Shashi
Advisor dc:contributor.advisor
  • Edelman, Alan

Rights

dc:rights
Statement dc:rights
  • In Copyright - Educational Use Permitted
  • Copyright retained by author(s)

Identifiers

dc:identifier.*
Handle dc:identifier.uri
https://hdl.handle.net/1721.1/155320
OAI identifier oai:identifier
oai:dspace.mit.edu:1721.1/155320

Chain of custody

source
Harvested from
MIT
Base URL
dspace.mit.edu/oai/request
Last updated
2026-07-22
Source record
OAI-PMH GetRecord
related terms
citation

Gowda, Shashi. Symbolic-numeric programming in scientific computing. Massachusetts Institute of Technology, 2024. https://hdl.handle.net/1721.1/155320