Implementing a computer algebra system in Haskell

José Romildo Malaquias, Carlos Roberto Lopes
2007 Applied Mathematics and Computation  
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
more » ... em 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.
doi:10.1016/j.amc.2007.02.126 fatcat:mqs5h24cjjdgflgqhi2myy5hfu