A free, full-featured, graphically laid out, high-precision, scientific calculator for Mac OS X 10.6 and greater (and an older version offering support back to Mac OS X 10.2.8). Full source-code is available too.

Good if you need to enter large expressions or have extended precision. Data Drawers allow statistical data, linear regression and gaussian elimination. All parts of the program support complex numbers and hexadecimal numbers.

Download the current version: Magic Number Machine (v1.0.32). Size: 881kB

Download the source code: Magic Number Machine Xcode 8 project. Size: 983kB

Requires Mac OS X 10.6 or greater (Intel Mac, 32 or 64-bit). Source code requires XCode 8 or greater.

PowerPC users of Mac OS X 10.2.8 to 10.5 can download the special 1.0 Build which incorporates all major bugs fixed up to 1.0.22.

Legacy Note

Magic Number Machine is no longer in active development. The program still works as advertised and I do occasionally release bug fixes, but I will not be adding further features.

While I make the code available, I do not consider it a good example of application design — most of Magic Number Machine was written 15 years ago and I was still learning about application development at the time (evidently attempting to learn from mistakes). If you want to see better-written code to learn how to program applications in Cocoa, please look at the examples on my blog, CocoaWithLove.com.

Program features

The program’s feature list goes something like this:

  • 25 accurate digits of precision
  • Complex numbers
  • Hexdecimal, octal, binary, decimal and 2’s complement display.
  • Floating point numbers, even in non-decimal radices.
  • A full expression history (go back to anything)
  • A graphical display that you can click on to change the entry point
  • Value memory limited only by computer memory.
  • Statistics functions
  • Linear regression
  • Matrix functions including gaussian elimination, inversion and determinants.
  • Large number of scientific constants built-in.

Change history

Changes in 1.0.32: Fixed a crash affecting trigonometry operations and improved 64-bit compatibility.

Changes in 1.0.31: Built using Xcode 8 and code signed.

Changes in 1.0.30: Fixed an issue affecting pasting of expressions. Thanks again to Dennis Liu for providing a solution to this.

Changes in 1.0.29: Updated icon for the application (so I can be mocked about my artistic ability all over again). Added basic export to PDF for the current expression. Included tidy up of display settings submitted by Dennis Liu. Fixed a bug where Italian translations were left out of the build. Fixed a bug where data functions could crash if there was no data.

Changes in 1.0.27: Fixed a bug where a some calculations caused infinite loops (busy/lock-ups) and a crash when the window in the English version was reduced to minimum size.

Changes in 1.0.26: Fixed keyboard focus issue with drawers. Also fixed decimal point keyboard shortcuts in German.

Changes in 1.0.25: Added Italian translations (thanks to Alessio).

Changes in 1.0.24: Fixed an issue where the window didn't appear on startup or disappeared on resizing.

Changes in 1.0.23: Changes include:

  • For locales that use comma as the decimal point, this will now work.
  • Keyboard shortcuts have changed significantly to avoid conflicts in different language locales and to fix the "Clear" button (will now correctly clear the whole expression). New menu item in Help menu will link to help page on keyboard shortcuts.
  • Fixed tooltips in all languages. Non-English languages will now show correct language. English will now show correct keyboard shortcuts.
  • Any division by zero now correctly returns "Not a number" instead of "0".
  • Command-W will now work to close the window.

Changes in 1.0.22: Fixed a minor keyboard focus issue on application hide/unhide.

Thanks

Thanks to the following people:

  • Ramiro Téllez Sanz for the Spanish translation.
  • Bobby Nguyen for the French translation.
  • Frank Nobis for the German translation.
  • Alessio Sassu for the Italian translation.