Hello Andrew,
I have received and read your email, and will have some thoughts about
it, but right now I have quite a bit too much work to think thoroughly
about these things.
I will get back to you most likely around Christmas. Sorry for the delay.
Bruno
On 11/24/14, aparsloe <[log in to unmask]> wrote:
> About a century ago in their "Principia Mathematica" Russell and
> Whitehead established, after enormous labour (p.379 apparently), that
> 1+1=2. It delights me that now, late in 2014, we can put this to the
> test and, indeed, confirm it:
>
> \fp_eval:n { .^. + .**. }
>
> The march of progress!
>
> Please view the preceding little joke as a preemptive strike. I have
> just "finished" a package called calculyx.sty. Among much else it makes
> use of this unusual deployment of the decimal point (specifically
> \fp_eval:n { . } ), and it would inconvenience me considerably were this
> to be prevented. Calculyx runs to about 3900 lines of code (but with
> many formatting lines). Considering that I had never managed more than
> 10 to 20 lines of TeX/LaTeX code before, it is a tribute to the enabling
> powers of expl3. I even began to feel that coding with expl3 was
> intuitive (god help me).
>
> The "roadmap" in interface3.pdf remarks of l3fp that "this module is
> mostly meant as an underlying tool for higherlevel commands. For
> example, one could provide a function to typeset nicely the result of
> floating point computations." When I saw the calculation preceding the
> remark, I realised that it was "made to measure" for the instant preview
> facility in LyX. That is what I have done. One enters an expression in
> the LyX math editor, moves the cursor outside the editor, and after a
> (brief) pause, the calculation is effected and the answer snaps into view.
>
> As well as many modules from l3kernel, the package uses xparse from
> l3packages and l3regex from l3experimental. Because a main routine uses
> the command \clist_reverse:N, which was introduced to l3kernel on 18
> July 2014, the version of l3kernel must be later than this. There is a
> link at http://wiki.lyx.org/Examples/Calculyx to a zipped archive
> currently in a Dropbox folder. I shall wait a while for any feedback
> before considering a more permanent location.
>
> 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. The l3fp machinery is hidden from view.
> Although written specifically for LyX, the package can be used
> independently but one needs to bear in mind that it expects LyXian
> LaTeX. I think this amounts to the following conditions: superscripts
> and subscripts are *always* wrapped in braces and, for the limits on
> summation signs, product signs and integrals, the lower limit *always*
> precedes the upper (e.g. \sum_{n=1}^{7} ). The link
> https://www.dropbox.com/s/7djkyjs44bpraol/Screenshot%2020141124%2013.52.07.png?dl=0
>
> gives a screenshot (.png format) of a one page LaTeX document
> illustrating some examples of calculations, and the resulting pdf.
>
> Calculyx will "digest" a number of functions not covered in l3fp. I have
> implemented the three principal hyperbolic functions and their inverses
> (with the 1 notation: \tanh^{1} ), factorials (the ! notation  and
> why on earth do mathematicians write it *after* the number it
> qualifies?), binomial coefficients, gcd, sums and products, including
> "infinite" sums and products, limits, derivatives (1st & 2nd order) and
> definite integrals in a single variable. I found the pull from one
> function to the next irresistible. Having implemented sums (and
> products), it's hard not to consider factorials and binomial
> coefficients, and doubly hard to resist the siren song of infinite sums.
> Infinite sums lead naturally to limits generally, and it is then only a
> small step to derivatives, and you can hardly have derivatives without
> also having integrals.
>
> In fact I began to feel that there is a tension in l3fp, as if it is
> caught between two forces: one, a restrictive force limiting the set of
> functions to those appropriate to l3kernel, the other an expansionary
> pull of the kind I experienced. What does the kernel need? Let me
> display my ignorance: the four arithmetic functions, integral powers,
> and square roots. That covers things like scaling of fonts and paper
> sizes, calculation of margins, and most shaped paragraphs. But the l3fp
> roadmap mentions things like factorials, the gamma function(!), arrays,
> complex numbers. Yes please, but in the kernel? I am deeply thankful for
> what Bruno has already provided but can't help thinking that the module
> should "go the whole hog" and implement everything (so to speak). To my
> mind that would fit much more naturally as a fullblown LaTeX package
> (in l3packages?).
>
> Andrew
>
