Oh my . . . I think I am in love with a program.
For years, I have used SpeedCrunch or RealCalc as a calculator, depending on OS, and an old program called MasterConverter or some annoying Android thing that so often lost my programmed conversions I shall not even name it.
At last, though, I have come across Frink.
Let's look at an example. For warp speed calculation where I intend to find the multiple of lightspeed shown, I historically had to take the pieces given . . . say, "6.37 light-years? That's a two day trip!" and work out the details. I used to do it by hand, but eventually made it so it would be a calculator value of 3.whatever light-years per day, and then I'd have to copy and paste that into a converter where I'd already programmed in light-years per day (and ly/wk, ly/hr, etc.) at lightspeed so that it would spit out a multiple of lightspeed as my desired velocity in multiples of c.
With Frink, it's baked in, and looks like this:
6.37 ly / (2 days) -> c
(I knew I was going to like it when the documentation featured an estimate of the density of the Independence Day mothership. . . . did he know the #StarshipVolumetrics guy was coming, or what?)
It also gives nary a damn about mixed units or, in most cases, number words, as this "Q Who" reference indicates:
7000 ly / (two years + seven months + three days + 18 hours) -> c
You can also make it output relatively plain-English time figures. By default it can output a time in hours, minutes, and seconds, but it is relatively easy to set up an output in years, months, and days along with it, and it has mean planet distances in it, too. So if I want to know how long it would take me to go to Pluto at 4 times the speed of light, in plain English, it looks like this, out of the box:
plutodist / (4c) -> HMS
1 hours, 22 min, 11.3448705904402705 sec
While this isn't precise for a particular day in April, 2151, this "Broken Bow" math is basically valid:
2neptunedist / (6 min) -> c
It even does interval calculations with "best guess" feature, though it's a little clunky at the moment . . .
time = new interval[118, 128, 168]
[118, 128, 168]
dist = new interval[25, 26.1, 29.9]
[25, 26.1, 29.9]
dist ly / (time hrs) -> c
[36525/28 (approx. 1304.4642857142857), 1787.4421875, 2221.2152542372881357]
Whatever, I am digging it.