χ\chiCAS(io)

Bernard.Parisse@ujf-grenoble.fr

2018

Contents

Abstract: This document explains how to run efficiently χ\chiCAS on Casio CG50 calculators. χ\chiCAS is an adapted version of the Giac/Xcas computer algebra system (CAS) for this calculator.

CAS are not allowed during exams in some countries, it is the user responsability to check the rules before running χ\chiCAS in an exam. The authors shall not be held responsible for misuse of χ\chiCAS in exam conditions.

This document is interactive, you can modify and run commands by clicking in the ok button or by hitting Enter.

1  Installation

To install or update χ\chiCAS, get on your computer the file khicasen.g3a

Connect the USB cable of the calculator, type F1 for USB key connection and copy the file khicasen.g3a on the calculator-“key” then disconnect the key from your computer.

If you test from the emulator, (PC, Mac), from the main menu of the calculator (MENU), go to Memory then F3 (Import/Export), then F1 (Import files), select the file khicasen.g3a, type F1 to save to the calculator root directory, confirm with F1 if you upgrade. Be patient, the transfert will take several minutes (about 5).

Once the transfert is finished, you should see the snowflake icon of Xcas in the main menu.

2  First steps

From the main menu (MENU), move the cursor to the Xcas icon and hit EXE. This opens a “shell” where you can write most Xcas commands.

For example, type 1/2+1/6 then EXE, you should see the result 2/3 displayed below.

You can copy a command from the history of commands by hitting the up and down arrow keys (once or more) and EXE. Then you can modify the command and run it with EXE. For example, up arrow, EXE, replace 1/6 by 1/3 and hit EXE.

The last result is stored in ans(), hit the Ans calculator key to get it (keys: shift then (-)). It is recommended to store the result in a variable if you want to reuse a result later. There are two ways to store a value in a variable

If you begin a commandline by hitting \rightarrow, the system will automatically insert Ans=>, it is therefore easy to store a result in a variable.

The most popular Xcas commands are available from the Catalog, where they are shortly explained with an example. Hit F4 (CATALOG), choose a submenu, for example Algebra, hit EXE, move the selection to a command, for example factor. Now F6 will display a short help with an example. Hit F2 to copy the example in the commandline. You can run it as is (EXE) or modify it and run it (EXE) if you want to factor another polynomial.

When a command returns an expression, it is displayed in 2d mode. You can move with the pad if the expression is larger than the display. Type + and - to modify the fontsize. Type EXIT to go back to the shell.

Now, try to type the command plot(sin(x)). Hint: type F4 (CATALOG), then select Graphs.

When a command returns a graph, it will be displayed in a 2d frame. You can modify the displayed area with + or - (zoom in or out, (-) does a partial zoomout along OyOy), the cursor keys, / (orthonormalisation of the frame), * (autoscale), VAR or OPTN is a switch to display or hide axis. Type EXIT to go back to the shell.

The KhiCAS menu (F6) has an item 5 Clear that will erase the display and optionally erase the variables (in order to start a new exercice with a fresh CAS). You will see the message /* DEL EXE to */ restart?. Type ON to erase the display only (variables are not erased) or DEL then EXE to erase variables.

Hit MENU to leave χ\chiCAS. If you launch another application, the variables and history will be saved, they will be restored if you come back to χ\chiCAS (except if you disable auto-save from KhiCAS F6 menu). On the emulator, auto-save is sometimes slow (10 to 20 seconds), it’s faster on the calculator. This is also true for other computations, the calculator is faster, up to 4 times faster than my computer.

It is recommended to hit MENU before OFF, otherwise when you power on the calculator, a history command may be added to the commandline (press AC/ON or/and EXE to restore normal behavior).

3  Common CAS commands

3.1  Expand and factor

From catalog, select Algebra

3.2  Calculus

From catalog, select Calculus

3.3  Solvers

From catalog, select Solve.

3.4  Arithmetic

When required, the distinction between integer arithmetic and polynomial arithmetic is done by a prefix i for integer commands. For example ifactor for integer factorization and factor for polynomial factorization (or cfactor for polynomial factorization over C\C). Some commands work for integers and polynomials, like gcd and lcm.

3.4.1  Integer

From catalog, select Arithmetic, Crypto

3.4.2  Polynomials

From catalog, select Polynomials. The default variable is xx, otherwise you can specify it as last optional argument. For example degree(x^2*y) or degree(x^2*y,x) return 2, degree(x^2*y,y) returns 1.

3.5  Linear algebra, vectors, matrices

Xcas does not make distinction between vectors and lists. For example,

v:=[1,2]; w:=[3,4]

onload
defines 2 vectors vv and ww, then dot will compute the scalar product of vv and ww:

A matrix is a list of lists of the same size. You can enter a matrix element by element using the matrix editor (shift-MATR or F6 4). Enter a new variable name to create a new matrix or the name of an existing variable to edit a matrix. For small matrices, it is also convenient to enter them directly in the commandline, for example to define A=(1 2 3 4)A=\left(\begin{array}{cc} 1 & 2 \\ 3 & 4 \end{array}\right) type

A:=[[1,2],[3,4]]

onload
or

It is recommended to store matrices in variables!

If a matrix is defined by a formula, then it’s better to use the matrix command, for example:

returns the matrix where coefficient line jj and column kk is 1j+k+1\frac{1}{j+k+1} (beware, indices begin at 0).

Run idn(n) to get the identity matrix of order nn and ranm(n,m,law,[parameter]) to get a matrix with random coefficients with dimensions n,mn,m. for example



For basic arithmetic on matrices, use keyboard operators (+ - *, inverse). Otherwise, open catalog and select Alglin, Matrices

4  Probabilities and statistics

4.1  Random numbers

From catalog, select Probabilities then
(real in [0,1)[0,1)) or
(integer between 1 and nn). Other commands with prefix rand are available, followed by the name of the law, for example randbinomial(n,p) returns a random integer according to binomial law of parameters n,pn,p. For a random vector or matrix, run ranv or ranm (from Alglin, Matrice submenu), for example for a vector with 10 random reals according to normal law (mean 0, stddev 1), type


4.2  Probabilities

From catalog, select Probabilities (8). There you will find a few distribution laws: binomial, normald, exponentiald and uniformd. Other distribution must be keyed in: chisquared, geometric, multinomial, studentd, fisherd, poisson.

To get the cumulated distribution function, enter the law name then the _cdf suffix (shortcut: select cdf in the catalog at the end and press F1). Inverse cumulated distribution function follows the same principle with _icdf suffix (shortcut: select cdf in the catalog and press F2).

Example : find the centered interval II for the normal law of mean 5000, standard deviation 200, such that the probability to be outside II is 5%

4.3  1-d statistics

The statistic functions are taking lists as arguments, for example

l:=[9,11,6,13,17,10]

onload
From catalog, select Statistics:

For 1-d statistics with frequencies, replace l by two lists of the same length, the first list being the values of the serie, the second list the frequencies. For graphic representations, open catalog, Graphic and select histogram or barplot.

4.4  2-d statistics

From catalog, select Statistics:

5  Graphics

From catalog, select Graphics (shortcut 7).

For simultaneous plots, write commands separated by ;

For display options, press the OPTN key:

6  Programs

You can program either with Xcas-like syntax (English or French) or with Python-like syntax.

Example : function defined by an algebraic expression nom_fonction(parametres):=expression for example simple confidence interval for a frequency pp in a sample of size NN


Test

Second example : more precise confidence interval for a frequency pp in a sample of size NN:

To avoid computing twice the same quantity, one can insert a local variable. Run shift-PRGM to enter function, local, return and ffunction)


The commandline is not well adapted to write these kinds of functions. For non algebraic functions, it is best to run the program editor. Press F6, select New program, enter a filename like conf, then F6, type the program above with the help of the shift-PRGM shortcut for programming structures. Type F6 EXE to check the syntax. Once the program is correct, save it (F6 2), then type EXIT. Now you can call your program from the commandline like this
f(0.5,30)

Third example : a loop printing integer squares from 1 to nn in Python syntax. Check that Python syntax is enabled in the F6 menu, if it is not checked, check it (7). Type F6 New program, enter test for the program name then F6. This should create a file named test.py and open the program editor, you should see the following template for a function definition def f(x):. Replace x by n (press F5 to lock the keyboard in alpha lowercase), move to the end of the line and press EXE to input a newline. Type Shift-PRGM then 3 for, then F5 J space alpha, then Shift-PRGM then 6 in range(a,b). Type 1,n+1) then F1 (:). Type Shift-EXE to insert a newline then Alpha SPACE, F4 (CATALOG), EXE (1 All), P, select print then EXE, type j,j^2) then EXE.

def f(n):
  for j in range(1,n+1):
    print(j,j^2)


Inside Xcas ^ means power, ** is also accepted like in Python.

Now, type F6, select 1. Check syntax. If syntax is correct, you will see Success in the status line. Otherwise, the first error line number and token will be displayed and cursor will be positionned at the line where the error was detected. Note that the error may be before this line but it was only detected later. Note also that if you are using Python syntax compatibility, programming structures are translated into Xcas, errors are displayed after translation, therefore you might see token errors like end that were added by the translator.

If the program is correct, you can save it with the F6 menu (save or save as). You can run it from the commandline by pressing EXIT then for example f(10) should display all squares from 1 to 10.

The turtle is a nice way to learn programming. The turtle is a small robot that you can move, it handles a pen that marks its path. Type F6, New program, enter logo as filename, then select F1 Turtle. You should see efface which mean clear the screen. You can access to the turtle commands using shift-MENU (move the cursor to a command and press F6 for help). For example try avance (forward). Checking the syntax (F6 1 or ON) will display the turtle window moves. You can enter several moves in your script, and organize them in functions. For example:

function square(n)
  repete(4,avance n,tourne_gauche);
ffunction:;
  
efface;
for n from 1 to 10 do
  square(10*n);
od;

Another example of non algebraic function: the euclidean algorithm to compute the GCD of two integers. Press shift-EXE to insert a newline. ! is in the submenu Programmation_cmds (11, shortcut X,θ,TX,\theta,T) Xcas syntax

function pgcd(a,b)
  while b!=0 do
    a,b:=b,irem(a,b);
  od;
  return a;
ffunction


Python syntax

def pgcd(a,b):
  while b!=0:
    a,b=b,a % b
  return a


Check with

If your program has runtime errors or if you want to see it run step by step, run debug on it, for example
debug(pgcd(12345,3425))

Unlike adaptations of Micro-Python by calculator manufacturers (including Casio), the Python syntax in Xcas is fully integrated. You can therefore use all Xcas commands and data types in your programs. This corresponds approximatively to importing Python modules math, cmath, random, scipy, numpy, turtle. There is also a small pixelised graphic commands set (set_pixel(x,y,c), set_pixel() to synchronize display, clearscreen(), draw_line(x1,y1,x2,y2,c), draw_polygon([[x1,y1],[x2,y2],...],c), draw_rectangle(x,y,w,h,c), draw_circle(x,y,r,c), the color+width+filled c parameter is optional, draw_arc(x,y,rx,ry,t1,t2,c) draws an ellipsis arc). And you can somewhat replace matplotlib with graphic commands of χ\chiCAS (point, line, segment, circle, barplot, histogram and all ...plot... commands). Plus you have natural access to data types like rationnals or expressions, and you can run CAS commands on them. The complete list of commands available on the calculator is given in appendix. For documentation on commands not listed in the catalog categories, please refer to Xcas documentation.

7  Keyboard shortcuts.

In programming editor

8  Remarks

This adaptation is not a full version of Xcas because the maximal size for a Casio add-in is too small (2 Mo). There are more complete adaptations of Xcas for calculators, for more informations, refer to Giac/Xcas homepage.

9  Copyright and Thanks to.

10  Developer infos.

To build this add-in, I have installed the gcc cross-compiler for sh3eb CPU following this tutorial (French). I have configured gcc like this
../gcc-5.3.0/configure --target=sh3eb-elf --prefix="$HOME/opt/sh3eb-elf" --disable-nls --disable-shared --disable-multilib --enable-languages=c,c++ --without-headers
Unfortunately, there is no support for sh3eb in the newlib (C librairy) of gcc, nor for libstdc++.

I installed libfxcg.tar.gz with a few modification (corrections of small bugs, added missing functions like qsort, ...), it is available in this folder (unarchive and compile with make). In this folder you will also find tommath.tgz (big integer support) and ustl.tar.gz (standard template library) that I also had to modify to make it work with sh3eb-elf-g++, with partial success, i.e. enough support to build Giac (vector/string/map supported, I/O on files are not supported, there is a custom iostream file for cin/cout minimal support). Unarchive and compile with make.

The file sh3eb-elf.tar.gz is a binary version of gcc/libraries for GNU/Linux debian 9.

The file khicas.tgz is the source of the port of Giac. Run the mkxcas script to compile Giac.

A  Command list.

You can test a command in the commandline at the bottom of the document. To get short help on a command, click on + to increase the document console size, then type ? followed by the commandname.

  

Back to the main page of Giac/Xcas.