Implementing a computer algebra system in Haskell.

There are basically two kinds of mathematical computation, numerical and symbolic. Numerical algorithms are usually implemented in strongly typed languages, and compiled with a view to efficiency. Symbolic algorithms are mostly written for interpreters in untyped languages. Therefore, symbolic mathe...

Full description

Bibliographic Details
Authors: Malaquias, José Romildo, Lopes, Carlos Roberto
Format: article
Status:Published version
Publication Date:2007
Country:Brasil
Institution:Universidade Federal de Ouro Preto (UFOP)
Repository:Repositório Institucional da UFOP
Language:English
OAI Identifier:oai:repositorio.ufop.br:123456789/4361
Online Access:http://www.repositorio.ufop.br/handle/123456789/4361
https://doi.org/10.1016/j.amc.2007.02.126
Access Level:Open access
Keyword:Computer algebra
Mixed computation
Functional programming
Haskell
Description
Summary:There are basically two kinds of mathematical computation, numerical and symbolic. Numerical algorithms are usually implemented in strongly typed languages, and compiled with a view to efficiency. Symbolic algorithms are mostly written for interpreters in untyped languages. Therefore, symbolic mathematics is usually slow, and bug ridden. Since symbolic algorithms are usually more difficult to implement, there are also very few computer algebra systems. This paper presents a computer algebra system that is both fast, and implemented in a strongly typed language, and designed to accept compiled extensions. The authors describe a scheme to achieve these goals without creating difficulties for the end-user. The reason for creating this new computer algebra system is to make feasible mixed computation, i.e., programming software that needs both numerical computation and computer algebra. For instance, Finite Element Methods require a lot of number crunching as well as computer algebra to perform triangularization, manipulating shape functions, etc. Mixed computation requires speed and safety that interpreted computer algebra cannot provide.