Casworks = Numworks + calcul formel multi-plateformes.Bernard.Parisse@univ-grenoble-alpes.frJuin 2023/Janvier 2026 |
Résumé: Casworks est un prototype d’intégration du calcul formel de Xcas dans l’environnement Numworks (utilisant la dernière version redistribuable de leur logiciel système Epsilon), qui fonctionne sur les calculatrices Casio Graph 90, TI Nspire et simulateur Web. Dans ce document, je présente l’utilisation de l’environnement Numworks sur ces plateforme, puis un petit historique de son développement. Je conclus sur les potentialités d’un tel développement.
Début mai 2023, un développeur de pseudonyme “Heath” a annoncé sur le forum anglophone cemetech le portage sur les Casio FXCG50 et Graph 90 d’Upsilon, ce qui permet d’utiliser l’environnement Numworks (de 2021) sur une calculatrice Casio. Ce portage fait suite à un prototype de portage pour TI Nspire par Kerry Shen en janvier 2023.
J’ai tout de suite été intéressé par les potentialités d’un tel portage, et j’ai commencé par ajouter ce qui me semblait indispensable pour l’utiliser pour travailler, à savoir retrouver ses données lorsqu’on quitte l’environnement Numworks sur la Casio puis on revient dessus. Puis j’ai généralisé le portage pour les TI Nspire (j’ignorais l’existence du travail de Kerry Shen). Et je me suis dit qu’il serait intéressant d’y ajouter du calcul formel de Xcas. Après quelques semaines de développement et de mise au point, le lien Upsilon-Xcas fonctionne (j’avais fait un travail analogue en aout-septembre 2019, voir en fin de document). Je me suis alors posé la question du portage sur les calculatrices Numworks elles-mêmes. Il n’y a pas de problèmes particulier sur l’émulateur Web. Mais les calculatrices Numworks sont verrouillées (sauf les plus anciennes qui n’ont pas été mises à jour) et il n’y a pas assez de mémoire sur les N0110. Par contre si Numworks s’y intéressait, ce serait tout à fait possible sur les modèles N0120 introduits en 2021/22 (mais pas sur les N0115).
On ouvre le navigateur à l’adresse
du simulateur
ou on flashe ce QR-code

On voit alors une calculatrice virtuelle,
ici le menu principal de la Numworks

ou l’affichage d’un graphe (commande plot(x+i*y) dans KhiCAS)

On peut taper au clavier ou cliquer sur les touches de la calculatrice.
Bon à savoir :
kcasfr.html par xcasfr.html
(Xcas light) ou xcas.html (Xcas comme sur PC).
^, AltGr-^ sur un clavier
PC français) pour sauvegarder l’état de la calculatrice, ainsi
lorsque vous la rechargerez, vous pourrez continuer vos calculs
sans recommencer de zéro.
L’installation sur Casio est très simple, on récupère les fichiers
upsilon.g3a
et
xcas.ac2 (optionnel, pour disposer du calcul formel. Si on teste
sur l’émulateur Casio, il faut utiliser xcas.882. Attention
ce n’est pas compatible avec le simlateur Casio sur clef USB),
on branche la Casio Graph 90 sur l’ordinateur,
on tape F1 sur la calculatrice pour la faire reconnaitre
comme une clef USB par l’ordinateur, on copie les fichiers
upsilon.g3a et xcas.ac2 sur la clef-calculatrice, et voilà.
Ensuite il suffit de se déplacer
dans le MENU principal Casio jusqu’à voir Upsilon puis on le lance
avec EXE et on se retrouve comme sur une Numworks de mi-2021,
avec dans l’application de Calculs quelques commandes de calcul formel de Xcas,
un module Python de calcul scientifique, un module d’arithmétique,
et un module permettant d’utiliser les commandes de Xcas depuis Python.
Pour plus d’informations sur l’environnement Numworks, on pourra
consulter le manuel
de l’OS Epsilon de Numworks (attention, il y a quelques différences
suite aux évolutions récentes d’Epsilon) et le site
d’Upsilon.
Bon à savoir :
OPTN correspond à la touche Toolbox
de Numworks,
MENU remplace la touche Home. 
MENU ou DEL depuis le menu
principal d’Upsilon. Si cela ne fonctionne pas, tapez d’abord
sur la touche VARS.
On peut échanger des données entre l’environnement Numworks de la Casio
et la Casio : depuis le menu principal d’Upsilon, taper sur la touche
VARS. Il apparait une double liste, d’un coté les scripts Python
d’Upsilon, de l’autre les scripts Python en mémoire de sauvegarde de la Casio.

On peut modifier la sélection ci-dessus en rouge avec les touches du
curseur, si on tape sur EXE ou sur la touche →,
on copie le fichier sélectionné d’un
environnement à l’autre (pour un script Python recopié vers Upsilon,
l’appui sur EXE au lieu de → indique à Upsilon que
le script doit être automatiquement exécuté
quand on ouvre la console d’exécution).
Lorsqu’un répertoire est sélectionné
dans l’environnement Casio, EXE permet d’entrer dans ce répertoire
(parent_dir permet de remonter dans l’arborescence
et l’appui sur la touche de division permet de remonter directement
au niveau racine).
L’appui sur la touche OPTN permet d’afficher la liste de tous
les fichiers/enregistrements au lieu de n’afficher que
les scripts Python (sur Casio, les fichiers trop gros
ne sont pas affichés). Si un fichier a l’extension nws,
il s’agit d’une sauvegarde complète de l’environnement Numworks,
en tapant EXE lorsqu’il est sélectionné, on charge la sauvegarde
(qui efface l’état courant de la Numworks).
En tapant sur la touche → (au-dessus de la touche AC/ON)
puis un numéro de sauvegarde de 1 à 9, on peut sauvegarder l’état
actuel de la Numworks.
Une fois les échanges entre environnements effectués, on peut taper
sur EXIT pour quitter.
Un des avantages de l’utilisation de l’environnement Numworks dans la Casio, c’est qu’il permet de sauvegarder des scripts dans la flash de la calculatrice (plus de risque de les perdre en cas de reset), scripts que l’on peut ensuite échanger en local avec un PC, ce qui n’est pas possible avec l’OS de Numworks (à ce jour, le constructeur propose uniquement la sauvegarde sur ses propres serveurs, ce qui nécessite une connexion cable PC-calculatrice et une connexion Internet, et installe une dépendance au constructeur).
Notez qu’on peut accéder aux scripts Python de l’environnement Casio
avec la commande import, sans avoir besoin de les recopier
dans l’environnement Numworks.
Il faut posséder une calculatrice avec une version pas trop récente du système d’exploitation (surtout ne faites pas de mise à jour sur le site de TI) pour pouvoir y installer Ndless et upsilon.tns. Pour disposer de l’interaction avec le calcul formel, il faut aussi installer xcasnws.tns.
La touche Toolbox de la Numworks correspond à la touche menu de la TI, la touche Home de la Numworks correspond à la touche doc de la TI (doc est une abbréviation de documents, pas de documentation).
Le logiciel tourne de manière identique sur les différentes plateformes, il faut juste se souvenir des équivalents des touches Toolbox et Home de la Numworks sur les Casio et TI Nspire.
On peut même effectuer une sauvegarde des données de l’environnement
(historique des calculs et scripts Python)
sur une plateforme et la réutiliser sur une autre plateforme.
Par exemple, vous préparez des données dans l’émulateur, vous sauvegardez
sous le nom nwstate.nws en cliquant sur l’icone de
disquette. Vous pouvez ensuite transférer sur une calculatrice
Casio en branchant la calculatrice sur le PC. Depuis la Casio,
on lance Upsilon, puis touche VARS et OPTN, on sélectionne
le fichier nwstate.nws et on tape EXE.
Pour transférer de/vers une TI Nspire, il faut enlever ou rajouter
l’extension .tns au nom de fichier, par exemple
nwstate.nws.tns.
Les données de l’application fonction/suite ne sont pas compatibles.
Pour transférer une définition de fonction, on peut la définir
dans l’historique de Calculs, en tapant par exemple
sin(x2) → f(x)
ce qui la créera automatiquement dans l’application Fonction.
Les TI Nspire CX et CX2 sont plus puissante que les Casio Graph 90 et les Numworks, mais elles sont significativement plus chères (compter 120 à 140 euros pour les Nspire non CAS et 140 à 160 euros pour les CAS à la rentrée), alors que Numworks et Graph 90 étaient dans la même zone de prix (avec les offres de rentrée sous forme de cagnottes, c’était 70 euros pour une Casio Graph 90, 72 à 75 euros pour Numworks). La Graph Math+ qui succède à la Graph 90 n’a pas encore vraiment trouvé son public, les prix hors rentrée sont plus élevés et l’utilisation de χCAS sur les Graph Math+ nécessite l’installation du jailbreak MPM. On va donc comparer les Casio Graph 90 et Numworks.
On dispose sur la Casio d’un espace de stockage de 16M, qui peut servir pour les scripts Python (256 fois plus de place que les 64K de stockage de l’environnement Numworks). La capacité totale est de 32M de flash de la Casio, 16M sont réservés à l’OS et 16M aux données et programmes utilisateur. En comparaison la Numworks n’a que 8M de flash et l’OS Epsilon de Numworks n’offre aucune solution de stockage de données utilisateur en flash.
La Graph 90 dispose aussi de 8M de mémoire vive (RAM) contre 256K sur les Numworks N0110 et N0115 ou 560K sur les N0120, mais actuellement Numworks bride les N0120, qui n’ont accès qu’à 256K. Sur les Casio, une partie de la mémoire sert au système, et Upsilon en utilise une partie pour charger Xcas. Python dispose de 192K de mémoire de travail dans Upsilon+Xcas sur les Casio (et même 2.9M si on n’installe pas la partie calcul formel), contre 64K sur une Numworks.
La résolution d’écran de la Graph 90 est un peu supérieure à celle de la Numworks (+15%: 224x396 contre 240x320).
Le processeur de la Numworks est plus rapide sur la Numworks que sur la Casio. Ce qui entraine une consommation électrique supérieure (970mW contre 70mW d’après les mesures de TI-Planet) et nécessite une alimentation par batterie contre 4 piles AAA sur la Casio. C’est plus simple à recharger sur la Numworks, mais cela impacte la durée de vie de la calculatrice, il n’est pas possible de remplacer la batterie sur une Numworks sans ouvrir la calculatrice, alors qu’on est à peu près certain de pouvoir disposer de piles AAA dans 20 ou 30 ans...
On bénéficie aussi sur la Casio de tout l’environnement Casio (dont tableur, géométrie, application 3d, et tous les addins développés par la communauté, dont la version complète de χCAS) y compris en mode examen depuis mai 2025.
Les menus de l’application Calcul ont été modifiés pour tenir compte
de l’interaction avec le calcul formel de Xcas. On trouve un nouveau menu
Algèbre avec des commandes de développement, factorisation, simplification,
résolution d’équations (directement dans Calcul,
sans passer par l’application Résoudre)
le menu Calculs est un peu étoffé avec une commande pour calculer
une limite et une commande pour calculer un développement de Taylor.
Nouveau menu d’arithmétique avec PGCD, PPCM, test de primalité,
identité de Bézout, calcul de an (mod m ) par exponentiation
rapide.


On peut définir des variables et des fonctions, qui seront dupliquées
dans l’environnement Numworks et Xcas, donc utilisables
dans l’application Fonction, par exemple :
x2−3x+1 → f(x)
Certaines commandes de Xcas ne sont pas dans les menus, mais
restent utilisables dans Calculs, il faut les taper en toutes lettres.
Mais l’utilisation dans Calculs est limitée par les garde-fous de
l’environnement Numworks, qui n’admet pas par exemple les signes
>, < ou =, ne permet pas les fonctions utilisateurs non définies,
n’accepte pas de fonction utilisateur à plusieurs arguments, n’a pas
de type vecteur, etc. Au niveau du lycée toutefois, cela ne devrait
pas être trop gênant, sauf pour la commande limite qui mériterait
un aménagement spécifique (actuellement il faut passer
en argument une matrice ligne avec 3 arguments, par exemple sin(x)/x,
x et 0).
S’il est impossible d’utiliser une commande de Xcas dans Calculs, il
reste possible de le faire depuis une console Python, en tapant
from cas import *, puis la commande xcas avec
en argument une chaine de caractères à évaluer, par exemple
xcas("factor(x**4-1)") ou xcas("desolve(y''+y=0)")

Il est toutefois plus judicieux dans ce cas
d’installer les versions de χCAS
pour Casio Graph 90 ou TI Nspire.
Dans l’application Python, vous pouvez utiliser le module d’arithmétique
qui contient des commandes identiques à celles du menu d’arithmétique
de l’application Calculs:
gcd, lcm, ifactor, isprime, nextprime, iegcd
(PGCD, PPCM, factorisation,
test de primalité, prochain nombre premier, identité de Bézout,
on peut utiliser pow pour l’exponentiation rapide)
ainsi que deux commandes utiles pour
faire de la crypto asc et char qui convertissent
une chaine de caractères en liste de codes ASCII et réciproquement.
Par exemple pour faire un RSA (avec des clefs de tailles relativement
petites)
from arit import *
# exponentiation rapide sur une liste
def powmod(l,e,n):
L=l.copy()
for j in range(len(L)):
L[j]=pow(L[j],e,n)
return L
# creation de la paire clef publique/privee
p=nextprime(10**4) # on peut utiliser de l'aleatoire
q=nextprime(10**5)
n=p*q
f=(p-1)*(q-1) # indicatrice d'Euler
e=257
res=iegcd(e,f) # doit renvoyer 1 comme PGCD (dernier element de res)
c=res[0]+f # clef secrete
# cryptage d'un message avec la clef publique (e,n)
s="Bonjour"
l=asc(s)
lcrypt=powmod(l,e,n)
# le destinataire decrypte le message avec sa clef secrete
powmod(lcrypt,c,n)
# dans un vrai systeme, il faut regrouper les caracteres
# par bloc, sinon on peut facilement decrypter sans connaitre c
# et il faut de l'aleatoire dans la creation des paires de clef
Numworks est apparu sur le marché fin aout 2017 et a conquis en quelques années plus du tiers du marché des calculatrices graphiques en France. Une de leurs spécificités sur laquelle Numworks a pas mal communiqué, c’est que le logiciel de leur calculatrice était open-source, c’est très certainement un des arguments clefs qui leur a permis de se faire connaitre au début. Pour être précis, en 2017, la licence d’Epsilon était assez restrictive, car elle ne permettait pas la redistribution. La communauté s’en est plaint, et a été entendue en mai 2018, la licence est devenue plus souple, permettant les modifications et la redistribution à des fins non commerciales. La communauté a alors pu développer des évolutions d’Epsilon, dont les plus connues sont principalement Omega, et dans une moindre mesure Upsilon et Khi. Ces trois firmwares alternatifs ont en commun de pouvoir exécuter des applications tierces, dont mon système de calcul formel χCAS (sur les modèles N0110 commercialisés à partir de l’été 2019), mais de manière isolée (pas dans l’application Calculs).
Malheureusement, en 2020/2021, Numworks a considéré que l’ouverture des sources ayant permis ces projets était contraire à ses intérêts économiques pour développer son activité à l’étranger (Portugal, Pays-Bas, Etats-Unis), en raison du risque de fraude au mode examen et des examens où le calcul formel est interdit. Numworks a pris un virage sécuritaire à 180 degrés, ils ont changé la licence d’Epsilon qui n’offre plus aucune liberté de modification/redistribution, et surtout ils ont développé un logiciel permettant de verrouiller les calculatrices (Numworks est le seul à pouvoir effectuer des modifications et mises à jours de l’OS). Ce verrouillage a été appliqué sans préavis à des dizaines de milliers de calculatrices au cours des mises à jours conseillées par Numworks depuis la rentrée 2021, Numworks n’a jamais averti les utilisateurs qu’ils allaient perdre la possibilité d’utiliser les logiciels développés par la communauté (calcul formel, tableur, graphes/géométrie 3d, ...) ainsi que les fonctionnalités de calcul symbolique qu’ils avaient eux-mêmes développées (ces fonctionnalités sont réactivées dans Upsilon). Au printemps 2022, une faille dans le verrouillage a permis à quelques utilisateurs de déverrouiller leurs calculatrices, mais la faille a été bien vite corrigée, et depuis il n’existe aucun moyen public de déverrouiller une Numworks (cela reste possible en ouvrant la calculatrice sur les N0110, mais pas encore sur les N0115 et N0120).
Ce virage sécuritaire a provoqué l’arrêt du développement d’Omega, le “fork” le plus actif d’Epsilon. Upsilon est né de la volonté de poursuivre malgré tout un firmware alternatif, avec des nouvelles fonctionnalités dont l’intégration d’un module Python de calcul scientifique (ulab, qui est aujourd’hui disponible sur la version la plus récente d’Epsilon) et d’une liseuse de documents compatible avec LATEX. Khi est un fork d’Omega que j’ai optimisé pour l’utilisation de χCAS. Aucun de ces deux forks ne peut intégrer les améliorations d’Epsilon versions 16 et au-delà.
En guise de compensation, Numworks a ajouté la possibilité d’installer des programmes développés par des tiers, mais dans des conditions tellement restrictives que pratiquement personne ne propose de tels programmes. En effet, non seulement ces programmes sont inaccessibles en mode examen (alors qu’avant le verrouillage on pouvait utiliser un firmware tiers avec χCAS en mode examen), mais ils sont inactivés au moindre crash ou reset, rendant tout développement très fastidieux et toute utilisation aléatoire (il n’y a pas non plus à ma connaissance d’environnement de développement permettant la mise au point de manière efficace contrairement à ce que j’utilise actuellement). Les fonctionnalités proposées par le kit de développement sont minimalistes en comparaison de Casio ou TI. Mais surtout pour installer facilement une application tierce il faut passer par le site de Numworks, qui pourrait donc décider de les censurer à sa guise. Le minimum que la communauté attendait pour une calculatrice présentée au départ comme open-source, c’est un environnement de développement au niveau de celui proposé par Casio!
Casio était parmi les constructeurs le plus ouvert aux développements tiers sur le milieu de gamme graphique. La possibilité d’ajouter des programmes (“addins”) au menu principal est prévue dans l’OS et Casio a publié dans les années 2010 un kit de développement logiciel (fonctionnant sous Windows), qui a lui-même donné naissance à plusieurs kits utilisant le compilateur libre gcc. Le plus récent, gint, est activement maintenu par “Lephenixnoir”, c’est avec ce kit que Upsilon a été porté sur les Casio. Mais la sortie de la Graph Math+ (fxcg100 à l’étranger) a mis un terme au support des addins tiers. La communauté a développé un jailbreak, le MPM, qui permet quand même de faire tourner certains addins, mais on est passé du support officiel à une tolérance du constructeur.
TI a toujours lutté contre le développement tiers sur les TI Nspire (il n’existe pas pour le moment de version ndless compatible avec les versions à jour de l’OS des Nspire CX et CX2) et a fermé la porte de l’assembleur sur les TI83/84. Il existe toutefois un contournement, artifice, sur lequel TI ferme les yeux pour le moment.
HP n’a publié aucune information permmettant de faire du développement natif sur les HP Prime, ce qui était possible auparavant sur les HP48, 49 et 50. Il existe un projet d’OS alternatif ExistOS pour les HP39gii, et rien n’empêche matériellement d’avoir la même chose pour les HP Prime G1 (pour les modèles plus récents G2, le boot est par contre sécurisé).
Pouvoir utiliser l’environnement Numworks sur d’autres calculatrices Casio est une prouesse technique qui pourrait faciliter la vie des enseignants et élèves, en permettant l’intégration aisée d’un parc hétérogène de calculatrices et même d’élèves non équipés de calculatrices en utilisant le simulateur web sur leur smartphone (cf. la section 2.4). L’environnement Numworks est actuellement porté sur les Casio Graph 90 et les calculatrices TI Nspire compatibles avec ndless (version optimisée pour les CX et CX2) mais cela ne concerne que les calculatrices d’occasion avec un OS non mis à jour. On pourrait imaginer avoir la même chose sur d’autres calculatrices suffisamment puissantes, il existe d’ailleurs un firmware prototype basé sur Epsilon pour HP Prime par Jean-Baptiste Boric.
Malheureusement, il y a un obstacle institutionnel à la diffusion d’un environnemet unique pour plusieurs calculatrices : c’est le mode examen, lorsqu’il est activé, l’environnement Numworks n’est plus accessible sur les Casio. Une raison de plus de supprimer ce mode examen inégalitaire (cf. ce document). Cela favoriserait une saine concurrence entre constructeurs, il est paradoxal que Numworks continue à vendre chaque année des dizaines de milliers de calculatrices bridées en mémoire au niveau des années 1990 après s’être moqué de leurs concurrents sur le thème des calculatrices qui n’ont pas évolué depuis 30 ans!
Inversement, la possibilité de tester l’environnement Numworks sur Casio et TI Nspire pourrait permettre à Numworks de se faire connaitre à l’étranger auprès d’un public connaissant les TI et Casio et inciter Casio et TI à améliorer leurs propres applications.
La question du futur des calculatrices mériterait d’ailleurs un débat, les constructeurs voudraient bien remplacer le paiement unique d’une calculatrice physique par un abonnement annuel pour la calculatrice virtuelle. Les prix annoncés par TI et Casio sont de l’ordre de 25 euros par an, sur une scolarité lycée on arrive au prix d’une calculatrice couleur, mais là il faut en plus fournir l’équipement et à la fin du lycée on n’a plus rien! Par contre pour les éditeurs c’est tout bénéfice, pas d’intermédiaires, et des frais matériels moins importants, essentiellement les serveurs. Si on prend à coeur les questions de sobriété énergétique, le maintien de l’utilisation des calculatrices devrait pourtant s’imposer : une calculatrice consomme très peu d’énergie (en particulier les modèles monochromes sans rétro-éclairage), beaucoup moins qu’une tablette ou un ordinateur, ne nécessite pas d’accès réseau et de maintenance de serveur, est très robuste et pourra encore fonctionner dans plusieurs décennies pour les modèles à piles (pour les modèles à batteries, c’est beaucoup plus incertain, il faut d’abord pouvoir les remplacer facilement, ce qui est le cas chez tous les constructeurs à l’exception de Numworks, et il faut trouver un modèle compatible).
Une longue remarque pour finir : avec l’aide de développeurs comme J.B Boric et Damien Nicolet, j’avais mis au point une interaction entre l’application Calcul et Xcas dès aout-septembre 2019, dans un firmware prototype, et j’en avais informé Numworks en espérant trouver un arrangement sur les licences de logiciel (elles sont incompatibles) afin de pouvoir rendre ce firmware public. Mon objectif était d’avoir (enfin) une calculatrice graphique formelle de milieu de gamme sur le marché. Malheureusement, Numworks n’a pas souhaité donner suite. Damien Nicolet a alors du mettre au point un système pour bien séparer les deux logiciels, ce sont les applications externes pour Numworks : χCAS est une application externe (avec sa propre interface, développée pour le portage de Xcas sur les Casio Graph 90), complètement séparée de la partie Numworks, il n’y a pas d’interaction dans l’application Calculs. Aujourd’hui, l’interaction avec l’application Calculs est possible parce que les deux logiciels sont dans deux binaires bien distincts qui se compilent séparément, chacun avec leurs sources, et j’ai ajouté une exception à la licence GPL3 de Xcas, pour permettre les appels par une application sous licence Creative Common CC BY-NC-SA 4.0 pour une utilisation personnelle non commerciale sur calculatrice ou émulateur de calculatrice.
Mais cela fait des années de perdus, une interface facile à prendre en main pour le calcul formel non disponible sur les Numworks, non utilisable en mode examen sur les Casio. Quel dommage! Les seuls à se réjouir dans l’affaire, ce sont les opposants inconditionnels au calcul formel, qui sont persuadés que les difficultés en manipulation algébrique des élèves viennent des calculatrices. Avec plus de 95% des élèves qui ont des calculatrices non formelles, le responsable est évidemment à chercher ailleurs et n’est pas difficile à trouver, ce sont les diminutions des heures de maths dans le secondaire, conséquences du manque de candidats aux concours, conséquences du manque d’attractivité du métier de prof (dégradation des conditions de salaires et de travail).
Le code source du projet Upsilon Numworks. et mes modifications pour Casio ou simulateur web (compile avec emscripten 1.40).
Licences : Upsilon, Xcas (GPL3 avec exception).
Les discussions sur le développement sont sur ce fil sur tiplanet et ce fil en anglais sur cemetech