It only seems to have been mentioned a couple of times in passing, but Alan Eliasen's Frink calculator and programming language (https://frinklang.org/) makes unit conversions simple (converting to SI internally then back to any desired target units. User-defined units may be added, too.) Very good time and calandar functions, with astronomical functions and units, leap seconds (or not, if you prefer). It uses arbitrary-precision math or rational numbers when possible. It has advanced interval arithmetic to keep track of error bounds, if desired. Complex math. Arbitrarily-dimensional, non-rectangular, heterogeneous arrays (but not matrix math, only a little symbolic algebra, no calculus to speak of.)

It runs on anything with a JVM. It installs with just a couple of clicks on regular computers of any OS as well as smartphones, or it can be used via a web interface. It has been under development for several years and still gets multiple updates nearly every week, so it has reached a good state of refinement. It can act as an interactive desk calculator with a terminal-window like interface and command and results history, or as a serious programming tool with GUI, graphics, self-evaluation, anonymous functions, regexp, some OOP, Java introspection etc., etc.

Many other features that are often useful but not explicitly physics-oriented are also built-in, such as working with currency conversions, historical inflation-adjusted values of the dollar and the the GB pound, natural language translations, number theory functions, arithmetic in bases up to 36.

One tip: while it has a very predictable order of operations, it isn't always what you meant. Use parentheses to keep units and numbers together in a denominator, or parts of fractions together in exponents.

I have pasted in the list of features from the introduction on the Frink page (https://frinklang.org/)- I never knew there were so many weird ones! (What do you measure in sturgeons? in crocodiles? Read and find out.) Some of them have amusing comments -he's scathing about the candela.

It runs on anything with a JVM. It installs with just a couple of clicks on regular computers of any OS as well as smartphones, or it can be used via a web interface. It has been under development for several years and still gets multiple updates nearly every week, so it has reached a good state of refinement. It can act as an interactive desk calculator with a terminal-window like interface and command and results history, or as a serious programming tool with GUI, graphics, self-evaluation, anonymous functions, regexp, some OOP, Java introspection etc., etc.

Many other features that are often useful but not explicitly physics-oriented are also built-in, such as working with currency conversions, historical inflation-adjusted values of the dollar and the the GB pound, natural language translations, number theory functions, arithmetic in bases up to 36.

One tip: while it has a very predictable order of operations, it isn't always what you meant. Use parentheses to keep units and numbers together in a denominator, or parts of fractions together in exponents.

I have pasted in the list of features from the introduction on the Frink page (https://frinklang.org/)- I never knew there were so many weird ones! (What do you measure in sturgeons? in crocodiles? Read and find out.) Some of them have amusing comments -he's scathing about the candela.

For those with a short attention span like me, here are some of the features of Frink.

Tracks units of measure (feet, meters, tons, dollars, watts, etc.) through all calculations and allows you to add, subtract, multiply, and divide them effortlessly, and makes sure the answer comes out correct, even if you mix units like gallons and liters.

Arbitrary-precision math, including huge integers and floating-point numbers, rational numbers (that is, fractions like 1/3 are kept without loss of precision,) complex numbers, and intervals.

Advanced mathematical functions including trigonometric functions (even for complex numbers,) factoring and primality testing, and base conversions.

Unit Conversion between thousands of unit types with a huge built-in data file.

Date/time math (add offsets to dates, find out intervals between times,) timezone conversions, and user-modifiable date formats.

Translates between several human languages, including English, French, German, Spanish, Portuguese, Dutch, Korean, Japanese, Russian, Chinese, Swedish, and Arabic.

Calculates historical buying power of the U.S. dollar and British pound.

Calculates exchange rates between most of the world's currencies.

Powerful Perl-like regular expression capabilities and text processing.

Supports Unicode throughout, allowing processing of almost all of the world's languages.

Supports Interval Arithmetic (also known as Interval Computations) in calculations, allowing you to automagically calculate error bounds and uncertainties in all of your calculations.

Reads HTTP and FTP-based URLs as easily as reading local files, allowing fetching of live web-based data.

Runs on most major operating systems (anything with Java 1.1 or later,) as an applet, through a web-based interface, on a wireless Palm VII, on an HDML- or WML-based webphone, and on many mobile phones and hand-held devices.

Installs itself on your system in seconds using Java Web Start and automatically keeps itself updated when new versions of Frink are released.

Runs with a Graphical User Interface (Swing, AWT, and Android) or a command-line interface.

User interface has a Programming Mode which allows you to write, edit, save, and run extremely powerful programs even on a handheld device.

Frink has a simple but powerful system for drawing graphics which are resizable, support transparency and anti-aliasing, and can be printed or written to image files. Graphics can also have exact lengths, so that a 3-centimeter line is three centimeters long when printed.

Powers Frink Server Pages, a system for providing dynamic web pages powered by Frink.

Frink is a full-fledged programming language with arrays, dictionaries, sets, functions, loops, even object-oriented programming and self-evaluation.

Frink allows Object-Oriented Programming, which allows you to create complex data structures that are still easy to use.

Java Introspection layer allows you to call any Java code from within Frink.

Frink can also be embedded in a Java program, giving your Java programs all the power of Frink.

Did I mention it's free?

Last edited by a moderator: