Calculyx

I've written a LaTeX package called "calculyx" which numerically evaluates mathematical expressions in LyX "before one's eyes" using instant preview. It is written in the expl3 language of LaTeX3 but is used just like any other LaTeX package. There is a link at http://wiki.lyx.org/Examples/Calculyx to a zipped archive currently in a Dropbox folder, and a screenshot (.png format) of a one-page LaTeX document and the resulting pdf with a few example calculations at https://www.dropbox.com/s/7djkyjs44bpraol/Screenshot%202014-11-24%2013.52.07.png?dl=0. The LaTeX may look complicated, but using LyX, all that is as ever hidden. One simply enters expressions in the LyX math editor as usual.


Calculyx requires the three LaTeX3 bundles l3kernel, l3packages and l3experimental. Because a main routine uses a command that was introduced to l3kernel on 18 July 2014, the version of l3kernel must be later than this. The calculational engine for calculyx is the floating point module l3fp in l3kernel.


I have tried to ensure as much as possible that calculyx reads expressions as mathematicians write them. For instance it will "digest" \sin 3x - 3\sin x + 4\sin^{3} x (for a specified value of x, say \pi/6) without parentheses around the arguments and with the superscript in the "wrong" but familiar place. It will "digest" the common arithmetic operators, plus variants like \times and \div, the familiar trigonometric and hyperbolic functions and their inverses, the exponential and natural logarithm, fractions (\frac, \tfrac), square root and \surd, factorials ( using !), binomial coefficients (\binom, \tbinom), \gcd, sums and products (\sum, \prod) including "infinite" sums and products, limits (\lim), derivatives (1st and 2nd order), including Cartesian 2-d and 3-d Laplacians, and definite integrals in one variable. Results are generally presented in the form: expression = result. There is also a (multi-column) table creating command and another which will iterate a function (for the chaos theorists).


The package contains a novelty that I think could be exploited more widely. Some calculations are computationally intensive. So as not to burden the compilation of the pdf with them, these calculations can be "parked" either in a LyX note or in an inactive branch. Instant preview works in both places (with a caveat for LyX notes). The result of the calculation can be saved to a LaTeX control sequence. Calculyx automatically saves such control sequences to a file. They are then available for inserting elsewhere in the document -- even at the start, long before the place where the calculation is performed. If you are prepared to set up a converter and copier, then the file containing the control sequences can be saved in the document directory -- or copied to other directories whereby the results of those "parked" calculations are made available to these other documents. By this means selected items in LyX notes or inactive branches can play a part in compilation to pdf.

Andrew