I guess the Unicode output is nice but I feel like my biggest issue is one with input. One thing that is annoying is you get half way through your line and realise you need an opening paren several terms ago. It can take a load of time to find the place to put it and a load of effort to make sure things are correctly balanced. I feel like the operator I wish I had is something like “extend the left operand leftwards” e.g. go from this (with cursor represented by a bar):
a + b * x + c /|
to this:
a + (b * x + c) /|
And apply again to get this:
(a + b * x + c) /|
It (e.g.) let’s you write fractions without needing to use loads of parens (which have a cost as they must be balanced) or needing to think about whether the numerator will have more than one term.
I guess with rich input I’d also want to see the output in “big” mode.
Another way to try to make input easier is to use rpn. This has advantages and disadvantages.
Currently the calculator I most use is gnu Calc (I also use R occasionally for calculating quantiles). GNU Calc is the calculator built into emacs. It has an rpn interface and an algebraic one. A nice feature of the algebraic interface is that you can use $ to mean “the top entry on the stack” and so you can incrementally build up an equation. A second feature is selections. Their internal implementation is weird (based on hidden “functions” and rewrite rules) but they work fantastically well for modifying and manipulating the inside of a formula or equation. It also has a “big” display format which looks a bit like this one except that it predates Unicode symbols being common and so is pure ascii. (It also has tex output and emacs has image support but no one has put the two together yet)
Mainly I use Calc because I’m in emacs anyway and it has a ton of features that are easy to access (eg arbitrary precision floats, bignums, modular arithmetic support, complex numbers, interval arithmetic, vectors, matrices, algebra, curve plotting/fitting, unit conversions, ...). I feel like the variable support isn’t great. I feel like I want to eg have some set of variables, defined to be various input numbers, and write formulae in terms of them and then get the formula on the left without variables substituted and it’s numeric evaluation (with them substituted) on the right. There’s something weakly like this using => but it doesn’t compose well. If you add a => 1 to b => 3, you don’t get a + b => 4, you get (a => 1) + (b => 3). (I think. My memory is a bit rusty for the last example).
I guess with rich input I’d also want to see the output in “big” mode.
Another way to try to make input easier is to use rpn. This has advantages and disadvantages.
Currently the calculator I most use is gnu Calc (I also use R occasionally for calculating quantiles). GNU Calc is the calculator built into emacs. It has an rpn interface and an algebraic one. A nice feature of the algebraic interface is that you can use $ to mean “the top entry on the stack” and so you can incrementally build up an equation. A second feature is selections. Their internal implementation is weird (based on hidden “functions” and rewrite rules) but they work fantastically well for modifying and manipulating the inside of a formula or equation. It also has a “big” display format which looks a bit like this one except that it predates Unicode symbols being common and so is pure ascii. (It also has tex output and emacs has image support but no one has put the two together yet)
Mainly I use Calc because I’m in emacs anyway and it has a ton of features that are easy to access (eg arbitrary precision floats, bignums, modular arithmetic support, complex numbers, interval arithmetic, vectors, matrices, algebra, curve plotting/fitting, unit conversions, ...). I feel like the variable support isn’t great. I feel like I want to eg have some set of variables, defined to be various input numbers, and write formulae in terms of them and then get the formula on the left without variables substituted and it’s numeric evaluation (with them substituted) on the right. There’s something weakly like this using => but it doesn’t compose well. If you add a => 1 to b => 3, you don’t get a + b => 4, you get (a => 1) + (b => 3). (I think. My memory is a bit rusty for the last example).