For years, I’ve been searching for a good free-form symbolic calculator program that works across multiple desktop operating systems. I think I’ve finally found one worth mentioning. My goals:
- Be able to enter expressions similar to what I could do on a TI-85, back in the day, for example:
- Be able to easily edit and copy previously-entered expressions.
- Input/output hex. I work in hex a lot. This includes expressions (
0x48+0x16) as well as base conversion (
0xC3 as decimalor
0b110101 as decimal) and bitwise math (
0xFC AND 0x7F).
- Lightweight. Quick to load, quick to calculate. Get in, get out. Or leave it running in the background without eating a ton of resources. I don’t need or want Mathematica or Maxima.
- It needs to minimally run on Windows and Mac. Ideally a Linux version would be available, too. I write code on Linux (work) and Mac (home), but my office Windows box ends up being my documentation reference, scratchpad, calculator, and everything else non-coding because I typically run my Linux IDE full-screen (bridged with Synergy, naturally).
I’d previously gotten hooked on Soulver. It’s great on the Mac, but there are not Windows or Linux ports. There is an iOS port, but I can’t stand the data entry. SpeedCrunch is available for all platforms, but like many Open Source programs, the operation and user interface is clunky.
A few months back, I found Calca, “the text editor that loves math,” for Windows and Mac. It literally is a text editor. The trick is that it looks for “=” and interprets these as definition statements and it looks for “=>”, and treats these lines as problems to solve. Everything from “=>” to the end of the line is rewritten to become a read-only answer. For example:
I don’t come close to using all the features in Calca: functions, unit/currency conversion, matrix math, derivatives, and so on. My needs are small, but with the pieces I do use, it performs extremely well.
A few things I don’t like about Calca:
- There are no bitwise shifts or inversions. I sometimes run into cases where a 32-bit integer is composed of several unaligned bit fields. For instance, bits 5..7 might be one field. It would be great to say:
0x1234 >> 5 & 0b111
- I frequently get confused with base conversion syntax. Is it “as dec” or “in dec”? I frequently pick the wrong one.
- Having to type “=>” at the end of each line is typographically awkward. I appreciate Soulver having a second column that auto-updates as you type.
- It would be nice to have a “previous answer” symbol. The TI calculators automatically insert an “Ans” variable (a placeholder for the previous line’s answer) if you start a new line with an operator instead of an operand.
For me, it was worth buying both a Windows and Mac license. I use it all the time.