Sweet:)
Nitpick: in dark theme, the fraction line didn't invert to white in 1/sqrt(2)
Hey, this is great! Units and LaTeX formatting are two things I use a lot.
Hi all, as a hobby I've been developing a scientific calculator with some neat features.
Available on:
* web (mobile or desktop): https://alexbarry.github.io/AlexCalc/
* Android: https://play.google.com/store/apps/details?id=net.alexbarry....
Some neat features:
* LaTeX equation display (I hated counting brackets on my old graphing calculators back in college, now I wouldn't have to if I wasn't ~10 years late in making this)
* variables (you can store variables with `1 + 2 -> x`, then access them `x^2 - 3`)
* unit operations, and unit conversions, e.g. `10 km / 2 minutes to mph`, or more fancily: `sqrt((3 kOhm + j*100 mH * 1000 kHz)/(1 S + j * 1 nF * 1000 kHz))`
* complex numbers (specifically focused on making it easy to enter complex numbers in polar form, in degrees, e.g. `5 angle 90`, but press the "degree" button)
* can enter input either via button presses or typing, so copying and pasting inputs works well
The core calculator parsing, evaluating, and LaTeX generation is in C++, with CMake build files. Using emscripten[0], this compiles to webassembly for the web version, and I can also compile this for Android and use JNI.
The library converting my generated LaTeX code to graphics is "MathJax"[1], a really nice browser library that I loved working with both in the web version and in the Android WebView.
I'm happy to receive any feedback at all. One big weakness currently are the syntax error messages, I haven't yet implemented a way to point to a particular position where an error occurs. If there is some nice parsing library that I could use instead, I might consider switching to that if it isn't too difficult. Currently the parsing uses a bunch of (fairly simple) regular expressions (e.g. check for number, check for optional unit, check for binary operator, add to stack, collapse stack. This ends up with a tree of nodes, and then this tree can either be evaluated or converted to LaTeX.)
I'm also interested in hearing any strategies for a decent cross platform UI. I didn't want to just include the HTML UI in a WebView on Android, since I figured it wouldn't be a great user experience. Originally I thought it would be small enough that I could just write two separate copies... but it turns out that there is a lot more UI code than I expected (automatically insert multiplication symbols on button presses, input history, storing "recently used units" when the button is pressed, etc...)
TL;DR: try pressing the "vars" and "units" buttons. Also complex numbers by "i" button or pressing "alt" then the now shown "angle" button.
For choosing the desired output unit, press "alt" and the now shown "to units" button. Then enter the desired unit.
Nice project. It's pretty similar to my project CalcuLaTeX (https://calcula.tech) although I think the intended usecase is slightly different