The TOPAS symbolic computation system
Computer algebra removes much of the drudgery from mathematics; it allows users to formulate models by using the language of mathematics and to have those models evaluated with little effort. This symbolic form of representation is often thought of as being separate to dedicated computational programs such as Rietveld refinement. These dedicated programs are often written in low level languages; they are relatively inflexible in what they do and modifying them to change functionality in a small manner is often a major programming task. This paper describes a symbolic system that is integrated into the dedicated Rietveld refinement program called TOPAS. The symbolic component allows large functional changes to be made at run time and with a relatively small amount of effort. In addition, the system as a whole reduces the programming complexity at the developmental stage.