Category Archives: Casio

Simplex Algorithm on the Casio 9860GII

With matrix capable calculator, simplex algorithm for common maximization problem can be solved easily like in the TI-84.

The Casio 9860GII is also equipped with equivalent matrix operations to solve the same problem.

casiosimplex1

casiosimplex2

casiosimplex4

casiosimplex3

Advertisements

Overclocking Casio fx-9860gII to the max with portable power bank

As discovered previously the overclocking program ftune performed better when USB cable is plugged in, it was not sure back then whether the data link or the extra power supply contributed to the performance boost. It is now confirmed power supply alone will do the trick.

The test is carried out using a Casio Basic program running a parameter searching for a logistic regression equation using the Nelder-Mead algorithm. A portable power bank is plugged to the USB port of the Casio fx-9860gII with ftune.

The tested portable USB power bank comes with 4000mAh capacity and 1A output, and is fully charged. There are 4 blue LED indicator lights.
casiousbpoweroverclock1

The power bank is turned on.
casiousbpoweroverclock2

The test result shown that the program run with power bank finished in 46 seconds, and the one without finished in 93 seconds.

Overclock Tournament Round 3

In previous rounds, Casio fx-9860GII with overclocking software Ftune2 won both rounds in a Nelder-Mead logistic curve fitting speed test, although TI Nspire CAS CX with Nover closed the gap on the second round after a little optimization on the language by declaring most variables local in scope.

In this installment, the comparison focus on the basic calculation rather than the programming environment. This simple integration equation is to be computed by both overclocked calculators:

nspire_vs_casio_sin_0_to_100_eq

Again, Casio with Ftune2 outperform the TI Nspire.nspire_vs_casio_sin_0_to_100

Nspire fight back in the overclock race

In a previous installment, fx-9860GII beats Nspire CX CAS in an overclocking match, computing the parameters for a logistic regression function by the Nelder-Mead algorithm programmed in their respective on-calculator environment. It is quite astonishing not only to see Nspire losing in the speed race, but also by how much it loses.

To give the CX a second chance, while still maintaining the overall fairness, the program on the Nspire is enhanced by localizing variables (33 of them) and nothing else. The declaration of scope for variables is believed to be a common technique for performance boost. The logic of the program remain unchanged, so is the tolerance parameter.

And the results – Nspire is catching up by doubled performance from 63 seconds to 33 seconds!

nspire_vs_casio_nelder_mead2

Casio fx-9860GII Equation Solver performance improvement by overclocking

In last installment, the Casio overclocking utility Ftune2 improved the speed performance of a Nelder-Mead program by 4.5 times. For standard calculations, more impressive results are obtained from this nice utility. In this test, the standard normal distribution function is applied in the Casio fx9860GII Equation Solver and the task is to find the Z variable (as “T” in the below screen), given the cumulative probability distribution of 0.9 (as “A” in the below screen).

casio-solver

A=1÷(√(2π))×∫(e^(-X²÷2),-999,T)

In other words, the solver’s task is to find Z from the given area of 0.9 as shaded in the below chart, which is obtained for verifying the solver’s result of 1.28155156 using the command
Graph Y=P(1.28155156).

casio-solver1

And here is the result on speed performance:

00:38 No overclocking, back-lit OFF
00:40 No overclocking, back-lit ON
00:06 Overclocked 265.42 MHz, USB OFF, back-lit OFF
00:07 Overclocked 265.42 MHz, USB OFF, back-lit ON
00:05 Overclocked 265.42 MHz, USB ON, back-lit OFF
00:05 Overclocked 265.42 MHz, USB ON, back-lit ON

The performance gain by overclocking is 7.6 to 8 times, depending whether the back-lit is on for non-overclocked runs.

For the same equation solving by the TI Nspire using nsolve(), it took 01:30 to return a result of 1.28155156555.

However, using the built-in standard functions NormCD() for the Casio and normCdf() for the TI as below

Casio fx-9860GII

A=NormCD(-999,T)

TI Nspire

nsolve(normCdf(-∞,x,0,1)=0.9,x)

both units return results instantaneously (Nspire returns 1.28155193868 while Casio returns 1.281551566).

A comparison on performance of overclocked Nspire CX CAS and fx-9860GII

Overclocking CPU is a trick to yield better performance in speed without any change to hardware or software. At clock frequency higher than those specified by the hardware manufacturer, this technique consumes more electricity as a tradeoff. This used to be referring to PC but thanks to the “openness” of modern calculators and efforts from hobbyists and developers, we are able to unlock the true power of our advanced calculators. In this case, a comparison of TI Nspire CX CAS and Casio fx-9860GII is carried out. The result is quite surprising. For the test case, a Nelder-Mead algorithm programmed in the calculators’ default on-calc programming environment is used as the benchmark. This mean no native code is used. At the same time, no special optimization is done for each of the test-beds. The program will then run a test data set to find the three parameters for a logistic regression function for a coffee shop sales prediction scenario. For fairness, the same initial set of parameters are used for the Nelder-Mead algorithm, as well as the tolerance level (1E-12). The results obtained from both calculators are verified to exact to 4 decimal places. For overclocking, the TI is running ndless with Nover 3. And the Casio is on Ftune2 v1.01. Only one overclocking performance is measured for the TI in the test which is the max stable obtainable from my hardware, 234 MHz. On the Casio, several settings are attempted, ranging from 58.98, 29.49, 117.96, 235.93, and finally 265.42 MHz. It should also be noted that the trials are done while the USB cable is plugged in, where a better performance can be obtained on overclocked Casio. Until there are definitive explanation for this, I can only speculate the Casio will be running at higher voltage while on USB and that somehow improved the performance, pretty much like the ATmel 3.3V and 5V difference. The results on performance are plotted below, with the x-axis the CPU overclocking rate and y-axis the relative performance (higher the better). nspire_vs_casio_nelder_mead1 While the Nspire CX CAS defaults at 132 MHz, the Casio already wins at 117.96 MHz by finishing the test case twice as fast. On the Nspire,1.5 times performance gain is obtained from the max overclock rate. At max overclock 265.42 MHz, the Casio runs almost 4.5 times faster than normal.

In next installment, measurements on performance by Ftune2 for the Casio will reveal the improvements by overclocking to the standard calculation functions (i.e. non-programming).

Implementing Nelder-Mead on Casio fx-9860GII

The Nelder-Mead algorithm is a very versatile optimization technique that is easy to implement. Having covered on how such a program in the TI-nSpire can help in estimating GARCH parameters, fitting logistic regression and Gompertz curve, I have decided to give it a try on a Casio fx-9860GII. It will also be an interesting opportunity to see the comparison of how these two calculators perform.

Compared to the more sophisticated programming features available on the TI-nSpire, programming the Nelder-Mead using the Casio language on the fx-9860GII is quite a challenge. Variables are limited to 28 and only single alphabet variable name is supported. Extra porting efforts are needed to deal with array features which must be borrowed from the fixed 26 List and 26 Matrix memory, and lack of elseif construct (not a big deal usually but just required extra effort in porting programming especially for those with nested loops). Fortunately, the expression evaluation feature is present on the Casio which is an important part for a dynamic implementation of the algorithm, otherwise there will be a strong cohesion between the algorithm itself and the function it handles.

For a quick porting, the structure and variables of the original program from the TI-Basic are preserved without much adaptations except those that are required for the program to work on the fx-9860GII like changing variable names to single alphabets, mapping arrays into Matrices and Lists etc.

After exhausting almost all 28 variables and 10+ matrices, it is about time to do a speed comparison. As used previously to benchmark the same program on the TI-nSpire, the Rosenbrog function is used again. For a fair comparison, the same initial parameter set {10,10} will be used on both machines.

casio-nelder-mead-1

casio-nelder-mead-2

And the result on performance:

0:22 Nspire CX CAS
1:25 fx-9860GII (version with in-line objective function)
1:28 fx-9860GII (version with objective function as string variable)

It is not that bad for the clock speed from the Casio (no overclocking) and also worth mention is that no particular optimization was done during code porting, and also the fact that the program is in Casio BASIC which is an interpreted language with execution performance far below native C.

In next installment, exciting results on boosted performance by overclocking will be posted for the same algorithm on the same hardware.

All programming on the Casio was done on the real calculator. The keys are nice and soft. With a user-friendly and consistent menu system to code the program, porting an existing program is not as tedious as previously thought, but rather a pleasant journey to learn another calculator as well as a refreshment to the Nelder-Mead algorithm.