Last edited by gbl08ma on 08 Sep 2019 06:30:02 am; edited 11 times in total

This is a port of the Eigenmath math engine to the Casio Prizm in the form of an add-in, providing numerous math functions not originally available in these calculators, including symbolic computation.

This add-in has serious compatibility problems with the fx-CG 50, because I hardcoded the VRAM address and it changed on the fx-CG50 (and possibly recent OS versions of the fx-CG 10/20), leading to UI display issues. But worry not: someone has released a patched version for this more recent model. See here: https://github.com/gbl08ma/eigenmath/issues/9

Download links are near the end of this post, on the "Download" section.
Many more screenshots here

Features
In addition to the complete feature set of the text-only version of Eigenmath, this port also supports some things exclusive to graphical versions, including graph plotting, script creation and execution and a function catalog with help for each function.
As you can see in the screenshots, results are displayed in "natural" or "pretty-print" form whenever possible. When typing a command, brackets are easier to match, thanks to a color highlight. One can recall commands previously entered, to run them verbatim or to write new ones based on them.
10 lines of content are displayed at once, but one can see the previous 200 lines of output by pressing Shift then Up or Down, to enter scrolling mode.

Calculations with big numbers are supported without losing accuracy, meaning even things like 100! (factorial of 100) will work. If desired, one can turn fractions or big numbers into scientific notation, by using the "float" command.

Eigenmath is faster than the Prizm OS for most calculations, and for certain function graphs too.

The state of the add-in is saved when exiting, so that when you come back, your command history, output and symbols (variables and custom functions) are there like when you left (this behavior can be disabled).

You can add commands to be run whenever the terminal is cleared (with the "clear" command), so that you can have custom functions and constants always at your disposal. Certain keys, normally unused, can also be made to run Eigenmath expressions. This includes the function keys F1 through F4 and F6.

The add-in can work as a eActivity strip, and you can set a script to run when the strip is opened. This script is stored inside the eActivity file, meaning that it will work on any calculator with Eigenmath installed, by simply transferring the eActivity.

This port shows floating point numbers with 10 significant digits, has two additional commands called "random" and "finetiming", and certain variables are checked to trigger special UI behavior. See this page for more information.

Result reliability
This port was tested, and gives the same results as the desktop version of Eigenmath. Of course, whether such results are right is out of my control. Nobody is responsible for any problems Eigenmath may cause, so use it responsibly.

Installation instructions
To install, connect the Prizm calculator to the computer with a miniUSB<->USB cable. On the calculator, press F1 when a pop-up appears on the screen. Wait for the USB connection to be established. When it's finished, your Prizm will appear on your computer as if it were a pendisk.

Copy "eigenmath.g3a" to the root folder of the calculator (i.e., out of any folders but inside the "pendisk") and safely remove it. Wait for the calculator to finish "updating the Main Memory". When it does, you should notice a new Main Menu item, called "Eigenmath".

Usage instructions
You should read the Eigenmath manual (at least the beginning) if you are not familiar with Eigenmath in general.

To see instructions on how to use this port (focused on the port-specific features), click here.

If you are planning on hosting this Eigenmath port on calculator software archives, please use the unmodified ZIP file which has the Read-Me and license files.
Still, I would appreciate you didn't host it yourself, and just linked to the above links. It makes updating easier and also lets me count the downloads better.
For sending directly to your friends' calculators, you only need to send the g3a file.

Last words
This Eigenmath port is the result of over one year of research, work and extensive testing. Eigenmath itself has been in development for over ten years. That said, we or the original Eigenmath authors can't guarantee you will have no problems using the add-in or that everything will work as described. You are welcome to report problems, as well as modify the source code to your needs as long as you respect the license.

We hope you enjoy using this Eigenmath port as much as we did developing it. And if this add-in ever becomes useful, you just found a secret feature

This looks really really neat! I'll have to check it out when I get home. It's been fun watching you get it up and running in IRC, and I'm glad you were able to get most of your issues fixed. Very well done!

Congratulations on the first even mostly-functioning CAS for the Casio Prizm. This is a huge step forward, and I'm sure Prizm users will be very happy that this exists. As Merthsoft said, it has been enjoyable watching you pull the pieces together for this on the forum and on Cemetech's IRC channel, and the finished product certainly looks worth all that effort. Good luck tracking down the bugs and getting this to a non-beta release state!

I wonder if a port would be possible in some fashion to the CSE? I highly doubt it could be done in BASIC to a point that would be usable.

Good luck getting them issues sorted out!

Even in Assembly, it would probably end up being about a 20-page app, given how poorly SDCC optimizes. If we could convince AHelper and jacobly to resume work on their LLVM work, though, it might be feasible.

Dumb question, can it solve eigensystems? It would be nice to check my awnsers on the exams.

Read the Eigenmath manual to find the answer. I think there are some eigen-related commands... eigenval, eigenvec...

The CSE lacks enough memory and processing power to run Eigenmath, I think, even if you managed to compile it for a Z80 CPU. Even on the Prizm, Eigenmath is already quite slow and suffers from lack-of-memory issues. The Nspire on the other hand would be able to run Eigenmath without any problem (lots of memory available) and at a decent speed.
You may have better luck with other math engines. Eigenmath isn't known for being fast, even though it's fairly portable. Rewriting it in assembly would be simply too much work.

I have good news. The developer of Eigenmath (to whom I had complained about the memory leak problems a while ago) emailed me a fix for the memory leak he found. I haven't tested it yet, let's see.

Spenceboy98 wrote:

I was also thinking maybe you could have a dark theme(or customizable colors)?

No.

Spenceboy98 wrote:

I would also like the the scrolling up(and being able to move side to side to insert or add stuff).

Scrolling left and right to insert text is doable, scrolling up to see the output history needs a big buffer for the output and a lot of modifications to diameter's console system.

flyingfisch wrote:

could you make the up and down keys scroll through the command history? Like in BASH?

Input history is more doable since less memory is needed, also one can set a fixed number like 20 history entries... still, at the current maximum of 1000 bytes per input line, that would already be quite a lot of RAM.

Last edited by gbl08ma on 06 Sep 2013 06:22:02 am; edited 2 times in total

Beta 2 is out, fixing the memory leaks that happened with some calculations (most noticeable with defint, integral and derivative). The download short link is the same and it points to the same long URL - only the binary that's there for download is different.

The size of Beta 2 is 317,3 KiB and its sha1 sum is:
4a5857da5359e91ae72091fa17a1f2ba668c4e0b
You can also check which version you have by pressing F6 while the add-in is running.

New feature:
You can now have something like a script run every time you start Eigenmath for the Prizm. Simply put your commands (one per line) as you would do on the calculator, on a file called eigensup.txt.

This file should go on the root of the Storage Memory. It should have Windows line endings (CR+LF or "\r\n"). Saving it with Windows' notepad will usually do the trick.

I recommend the following startup script (with suggestions from helder and Lionel Debroux):

looks great! could you make the catalog work like casio default, where if you press a letter it goes to the first entry beginning with that letter? Also, could you make an f-key option to insert special chars?

Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.