## Eigenmath for the Prizm

25 posts
• Page

**1**of**3**•**1**, 2, 3- gbl08ma
- Senior Member
**Posts:**141**Joined:**Wed May 16, 2012 2:50 pm**Location:**Portugal**Calculators:**Casio fx-CG 20

### Eigenmath for the Prizm

During the past two weeks, I have been working on porting the Eigenmath math engine to the Casio Prizm. The official website of Eigenmath is currently at http://gweigt.net/eigenmath.html and the only version available seems to be distributed through the Mac App Store, however if you look around enough on the internet, you'll find Windows, Linux and even Nintendo DS builds. And from on now, Eigenmath is available for the Prizm, too!

As you see, some simple form of natural display is supported. When the natural display output is too large to fit in a single line, the equivalent to Casio's "Line" display mode is used, meaning natural display is disabled.

Matrices small enough to fit in the screen are also displayed in a more natural way.

This port of Eigenmath also includes a function catalog. Help for each function may be included in the future.

Unlike diameter's port of Eigenmath to the fx9860, in this port big numbers are supported and the results are right for 99% of the symbolic calculations. Floating point numbers are also supported, even though the precision could be better. Anyway, for that kind of math, you can use Casio's Run-Mat

Also, the keyboard keys are linked to Eigenmath functions and symbols as much as I could. The ! for factorials can be inserted with the store (→) key.

Unfortunately it is a bit slow. Memory leaks from Beta 1 seem to have been mostly fixed in Beta 2. If you start getting memory/malloc-related errors, exit the add-in (open another) then open Eigenmath again.

System errors should never occur, though.

Known issues (important)

Factorizing x^2+1 returns (x+1)(x-1) which is clearly wrong. The Linux build of Eigenmath, which was built from the same source code that this port was based on, correctly returns x^2+1 when factorizing. I have done tests and couldn't find other problems when factorizing. Please let us know if you find any more wrong results. You have been warned.

Source code

The add-in is licensed under the GNU GPL v2 and source code will appear on my GitHub soon. Right now the build process is quite hackish, it needs

(((Casio's library for the fx9860) with modifications by Simon) converted to GCC format)

along with

((libm and libc) hacked together from (AHelper's fork of libfxcg))

Yeah, that mix is right and I even put parentheses for you to parse better. Right now my development environment is a mess, worse than those parentheses.

Download

Make sure to read the "known issues" above. Also, read the disclaimer that appears when you press F6 when running the add-in.

Download Beta 2

As you see, some simple form of natural display is supported. When the natural display output is too large to fit in a single line, the equivalent to Casio's "Line" display mode is used, meaning natural display is disabled.

Matrices small enough to fit in the screen are also displayed in a more natural way.

This port of Eigenmath also includes a function catalog. Help for each function may be included in the future.

Unlike diameter's port of Eigenmath to the fx9860, in this port big numbers are supported and the results are right for 99% of the symbolic calculations. Floating point numbers are also supported, even though the precision could be better. Anyway, for that kind of math, you can use Casio's Run-Mat

Also, the keyboard keys are linked to Eigenmath functions and symbols as much as I could. The ! for factorials can be inserted with the store (→) key.

Unfortunately it is a bit slow. Memory leaks from Beta 1 seem to have been mostly fixed in Beta 2. If you start getting memory/malloc-related errors, exit the add-in (open another) then open Eigenmath again.

System errors should never occur, though.

Known issues (important)

Factorizing x^2+1 returns (x+1)(x-1) which is clearly wrong. The Linux build of Eigenmath, which was built from the same source code that this port was based on, correctly returns x^2+1 when factorizing. I have done tests and couldn't find other problems when factorizing. Please let us know if you find any more wrong results. You have been warned.

Source code

The add-in is licensed under the GNU GPL v2 and source code will appear on my GitHub soon. Right now the build process is quite hackish, it needs

(((Casio's library for the fx9860) with modifications by Simon) converted to GCC format)

along with

((libm and libc) hacked together from (AHelper's fork of libfxcg))

Yeah, that mix is right and I even put parentheses for you to parse better. Right now my development environment is a mess, worse than those parentheses.

Download

Make sure to read the "known issues" above. Also, read the disclaimer that appears when you press F6 when running the add-in.

Download Beta 2

Last edited by gbl08ma on Thu Sep 05, 2013 10:16 pm, edited 1 time in total.

- helder7
- Senior Member
**Posts:**369**Joined:**Tue Jan 03, 2012 11:24 pm**Calculators:**Casio Afx 1.0, Casio fx-9860 GII SD, Casio Classpad 330, Casio fx-CG 20, Casio Classpad fx-cp400

### Re: Eigenmath for the Prizm

Nice job! Finally prizm received a cas add-in.

Natural display combined with function catalog and linked keys make it more intuitive and easier to use than the fx9860 port.

I will test more in depth tomorrow. Today only had time to test simple algebra (derived functions and some trigonometry).

Natural display combined with function catalog and linked keys make it more intuitive and easier to use than the fx9860 port.

I will test more in depth tomorrow. Today only had time to test simple algebra (derived functions and some trigonometry).

SiO2 + CaCO3 ----------> CaSiO3 + CO2

- scientifix
- Member
**Posts:**37**Joined:**Sat Jun 22, 2013 10:54 am**Calculators:**Casio fx-9860 GII

### Re: Eigenmath for the Prizm

Hey,

Is your add in based on the same source code as the "eigenmath add in by diameter"?

Is your add in (the eigenmath for prizm) portable to the fx9860gII ?

Thanks again an : GOOD JOB (your add in looks great !!) !!

scientifix

Is your add in based on the same source code as the "eigenmath add in by diameter"?

Is your add in (the eigenmath for prizm) portable to the fx9860gII ?

Thanks again an : GOOD JOB (your add in looks great !!) !!

scientifix

- gbl08ma
- Senior Member
**Posts:**141**Joined:**Wed May 16, 2012 2:50 pm**Location:**Portugal**Calculators:**Casio fx-CG 20

### Re: Eigenmath for the Prizm

Other than the Eigenmath , my add-in shares nothing with diameter's port. The problem with eigenmath on the fx9860 is the small amount of RAM and lack of support for big numbers by Casio's SDK.

- gbl08ma
- Senior Member
**Posts:**141**Joined:**Wed May 16, 2012 2:50 pm**Location:**Portugal**Calculators:**Casio fx-CG 20

### Re: Eigenmath for the Prizm

helder, how did the in-depth test go?

- helder7
- Senior Member
**Posts:**369**Joined:**Tue Jan 03, 2012 11:24 pm**Calculators:**Casio Afx 1.0, Casio fx-9860 GII SD, Casio Classpad 330, Casio fx-CG 20, Casio Classpad fx-cp400

### Re: Eigenmath for the Prizm

I did many tests using the various commands and comparing the result with the windows version and I found no new calculation errors/bugs.

Regarding the GUI, I found a situation (calculating a big factorial) that the result does not fit on the screen and as is not possible scroll up/down was not possible to see the complete result. However, I will not suggest to add the scroll function because that would spend more memory and we have a considerably large space for display results (compared for example with fx9860 and his jeuxcasio cas/eigenmath port that also do not have scroll).

I have only one suggestion: link the key combination [shift+ln] to the comamand exp(

Regarding the GUI, I found a situation (calculating a big factorial) that the result does not fit on the screen and as is not possible scroll up/down was not possible to see the complete result. However, I will not suggest to add the scroll function because that would spend more memory and we have a considerably large space for display results (compared for example with fx9860 and his jeuxcasio cas/eigenmath port that also do not have scroll).

I have only one suggestion: link the key combination [shift+ln] to the comamand exp(

SiO2 + CaCO3 ----------> CaSiO3 + CO2

- gbl08ma
- Senior Member
**Posts:**141**Joined:**Wed May 16, 2012 2:50 pm**Location:**Portugal**Calculators:**Casio fx-CG 20

### Re: Eigenmath for the Prizm

I know about the big results not fitting on the screen problem. I thought about implementing scroll but it would be too much work with the current implementation. The current console code is a modification of the one diameter uses in his port, to use PrintMiniFix and work on the Prizm.

Anyway, the current UI is more or less just a placeholder until I develop something more powerful with proper history like Casio's Run-Mat. But that will have to wait for version 2.0.

And you're right about the Shift+Ln key, I forgot about it. Also note that the log and exp functions on Eigenmath are not base-10, but the natural ones. So on Eigenmath log(10) returns 2.30 instead of 1. That's why I put log() on the ln key and it's also why exp is going to be on the ln key.

Anyway, the current UI is more or less just a placeholder until I develop something more powerful with proper history like Casio's Run-Mat. But that will have to wait for version 2.0.

And you're right about the Shift+Ln key, I forgot about it. Also note that the log and exp functions on Eigenmath are not base-10, but the natural ones. So on Eigenmath log(10) returns 2.30 instead of 1. That's why I put log() on the ln key and it's also why exp is going to be on the ln key.

- helder7
- Senior Member
**Posts:**369**Joined:**Tue Jan 03, 2012 11:24 pm**Calculators:**Casio Afx 1.0, Casio fx-9860 GII SD, Casio Classpad 330, Casio fx-CG 20, Casio Classpad fx-cp400

### Re: Eigenmath for the Prizm

I know/checked that eigenmath use log with base (e), not (10). However, I usually work more often with logharitms of base 10. Is there a formula to convert the base of logarithms and as eigenmath support custom functions, a logab function (for exemple) can be easily implemented by final users, just writing a line.

Left below some examples of math functions , if someone needs .

After closing the add-in and open another will be necessary to rewrite the functions again.

Left below some examples of math functions , if someone needs .

- Code: Select all
`logab(a,b)=log(b)/log(a)`

cis(x)=cos(x)+i*sin(x)

npr(n,r)=(n!)/(n-r)!

ncr(n,r)=n!/(r!(n-r)!)

After closing the add-in and open another will be necessary to rewrite the functions again.

SiO2 + CaCO3 ----------> CaSiO3 + CO2

- gbl08ma
- Senior Member
**Posts:**141**Joined:**Wed May 16, 2012 2:50 pm**Location:**Portugal**Calculators:**Casio fx-CG 20

### Re: Eigenmath for the Prizm

Thanks helder for the functions, I'll see what I can do to have Eigenmath run a set of customized lines at the start of the add-in.

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.

To have a log function of base 10 on Eigenmath, one can define it like this:

You will need to use the float function to get the decimal value, or if you always want to see the decimal representation, you can define log10 like this:

Of course, to have exp with base 10 it's as simple as using 10 with power x. If you really really want it...

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.

To have a log function of base 10 on Eigenmath, one can define it like this:

- Code: Select all
`log10(x) = log(x)/log(10)`

You will need to use the float function to get the decimal value, or if you always want to see the decimal representation, you can define log10 like this:

- Code: Select all
`log10(x) = float(log(x)/log(10))`

Of course, to have exp with base 10 it's as simple as using 10 with power x. If you really really want it...

- Code: Select all
`exp10(x)=10^x`

- gbl08ma
- Senior Member
**Posts:**141**Joined:**Wed May 16, 2012 2:50 pm**Location:**Portugal**Calculators:**Casio fx-CG 20

### Re: Eigenmath for the Prizm

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.

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

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.

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

- Code: Select all
`logab(a,b)=log(b)/log(a)`

log10(x)=log(x)/log(10)

ln(x)=log(x)

cis(x)=cos(x)+i*sin(x)

cot(x)=1/tan(x)

coth(x)=cosh(x)/sinh(x)

arccot(x)=arctan(1/x)

arccoth(x)=arctanh(1/x)

sec(x)=1/cos(x)

sech(x)=1/cosh(x)

arcsec(x)=arccos(1/x)

arcsech(x)=arccosh(1/x)

csc(x)=1/sin(x)

csch(x)=1/sinh(x)

arccsc(x)=arcsin(1/x)

arccsch(x)=arcsinh(1/x)

npr(n,r)=(n!)/(n-r)!

ncr(n,r)=n!/(r!(n-r)!)

25 posts
• Page

**1**of**3**•**1**, 2, 3### Who is online

Users browsing this forum: No registered users and 2 guests