Page 9 sur 13

Re: La NumWorks réinventée avec la N0110 - rentrée 2019

Message non luPosté: 06 Sep 2019, 16:49
de stevetuc
Thanks for the clarification. Appreciated.

Re: La NumWorks réinventée avec la N0110 - rentrée 2019

Message non luPosté: 06 Sep 2019, 17:00
de critor
You're welcome. :)

Re: La NumWorks réinventée avec la N0110 - rentrée 2019

Message non luPosté: 08 Sep 2019, 07:45
de stevetuc
critor a écrit:Here are the 3 HP Prime versions :

Code: Tout sélectionner
EXPORT seuil(d)
BEGIN
  LOCAL n:=0;
  LOCAL u:=2.;
  d:=d^2;
  WHILE (u-1)^2≥d DO
    u:=1+(1/((1-u)*(n+1)));
    n:=n+1;
  END;
  RETURN [n,u];
END;


Code: Tout sélectionner
#CAS
seuilc(d):=
begin
  local n:=0;
  local u:=2.;
  d:=d^2;
  while (u-1)^2≥d do
    u:=1+(1/((1-u)*(n+1)));
    n:=n+1;
  end;
  return [n,u];
end;
#end


Code: Tout sélectionner
#CAS
def hastime():
  try:
    monotonic()
    return True
  except:
    return False

def seuilp(d=.008):
  timed,n=hastime(),0
  start,stop,u=0 or timed and monotonic(),1,2.
  d=d**2
  while (u-1)**2>=d:
    u=1+(1/((1-u)*(n+1)))
    n=n+1
  return [(timed and monotonic() or 1)-start,n,u]
#end


Id like to request some help in running these benchmarks, im not so familiar with the python syntax.
I tried the python code on my Prime G1 and also prime android app

In both cases it returns:
[1 9948 1.00799947081]

I checked return variables separately and timed is returned as 0 , monotonic is returned as monotonic and start as false:

return [timed,monotonic(),start,n,u]
Gives
[0,monotonic,False,9948,1.00799947081]

There is no timing setup in the other two programs so I assume this was added using native commands like time or TICKS()

I guess im missing some setup somewhere. How can I get timed and monotonic() to return the timings using prime python syntax?

Re: La NumWorks réinventée avec la N0110 - rentrée 2019

Message non luPosté: 08 Sep 2019, 09:50
de critor
Sorry, the Python script time functions don't work on the HP Prime, only with a real Python implementation.
I didn't bother to remove them from the HP Prime Python script, because they aren't in the loop and thus aren't really interfering with the benchmarks.
You need to use time(seuil(0.008))

For information, I've just posted more comprehensive benchmarks :
viewtopic.php?t=22948&p=245063#p245063
The HP Prime is tested 4 times :
  1. float test in HPPPL (same as in this topic)
  2. float test in HPPPL-CAS
  3. float test in Python
  4. integer test in Python

With the Python integer test, the HP Prime G2 is faster than the NumWorks N0110.

Re: La NumWorks réinventée avec la N0110 - rentrée 2019

Message non luPosté: 13 Sep 2019, 17:55
de coco33920
J'ai testé l'installation de giac-n110 avec le dockerfile de @zardam et ça marche super B-)
Merci beaucoup à vous tous pour le travail :D !
Je n'ai juste pas trop compris pourquoi renommer l'application python "KhiCAS" ( je suppose du nom de l'implémentation de giac sur les TI & Casio ? )

EDIT : Je me met à tester les fonctionnalités je peux vous rapporter les eventuels bugs
Colin.

Re: La NumWorks réinventée avec la N0110 - rentrée 2019

Message non luPosté: 13 Sep 2019, 20:07
de parisse
KhiCAS est le nom que j'ai choisi en jouant sur le fait que la lettre Khi ressemble a un X, comme Xcas donc, mais KhiCAS se prononce comme kick-ass, c'est un pied de nez a tous les censeurs qui veulent empecher Xcas et le calcul formel en general (ce qui arrange bien les constructeurs de calculatrice qui le vendent sur des modeles chers).
Il devrait y avoir bientot du nouveau... J'ai un prototype de firmware ou KhiCAS remplace le shell Python. C'est encore loin d'etre complet, mais les E/S des programmes marchent (input/print/editeur de script). Et bien sur tous les calculs avec des lignes de commande qui sont impossibles a entrer dans l'app de calcul. Je n'arrive pas a compiler pour le moment simultanement l'app Python et l'app Khicas, i.e. ou l'evaluateur de Python est remplace par Khicas, il y a des erreurs de compilation que je ne comprends pas (il faut dire que l'OS d'epsilon est ecrit dans un style complement a l'oppose du mien...). Mais ce n'est peut-etre pas grave, en fait je me demande s'il ne vaut pas mieux avoir une seule application Python/Khicas et une commande pour basculer l'evaluateur de l'un vers l'autre.

Re: La NumWorks réinventée avec la N0110 - rentrée 2019

Message non luPosté: 13 Sep 2019, 20:08
de coco33920
Ok merci pour les explications :)

Re: La NumWorks réinventée avec la N0110 - rentrée 2019

Message non luPosté: 14 Sep 2019, 10:20
de coco33920
Voilà j'ai testé toutes les fonctionnalités qui sont dans la Toolbox et wow c'est vraiment super !
J'ai trouvé quelques bugs parfois.

Fonctionnalités :

Réels

Racines n-ième : le moteur de calcul inverse l'indice et le radicande ( voir image racine exemple ). La racine n-ième fonctionne sur Epsilon 11.2 stock Image
Logarithme : Renvoi "undef" pour toute autre base que e. La fonction log(n) renvoi un logarithme naturel ce qui en fait une redite de ln(n). Fonctionne sous Epsilon 11.2 stock
Valeur absolue : fonctionne

Algèbre

normal : fonctionnel
factor : fonctionnel
solve : fonctionnel
csolve : fonctionnel
partfrac : répète ce qu'on lui donne donc je suppose que ça fonctionne
simplify : fonctionnel

Calculs

:warning: Variables : utiliser "=" et pas "sto->"

diff : fonctionnel
integral : fonctionnel
limit : fonctionne ( sauf dans le cas où x tends vers + ou - l'infini la calculatrice se reset alors )
ptayl : aucune idée au delà de mes compétence mais ça devrait fonctionner normalement je n'ai pas pu vérifier
somme : fonctionnel
produit : fonctionnel

Complexes

Tout est fonctionnel ici ( module, argument, partie réelle, partie imaginaire, conjugé )

Dénombrement

Tout est fonctionnel ( binomial & permutation )

Arithmétique

PGCD : fonctionnel
lcm : fonctionnel
ifactor : retourne ce qu'on lui donne
iegcd : je ne comprend pas comment vérifier donc aucune idée
irem : fonctionnel
iquo : fonctionnel

Matrices

identity : fonctionnel
randmatrix : fonctionnel
dim : fonctionnel
inverse : fonctionnel
matpow : fonctionnel
det : fonctionnel
transpose : fonctionnel
trace : fonctionnel
rref : fonctionnel
ker : undef
egvl : fonctionnel
egv : fonctionnel

Random

Tout est fonctionnel ( random, randint, floor, frac, ceil, round )

Trigo Hyperbolique

Tout est fonctionnel ( cosh, sinh, tanh, acosh, asinh, atanh )

Intervalle fluctuation

prediction95 : rend undef ( testé avec p = 0,531 et n = 723, fonctionne sur epsilon 11.2 )
prediction : idem à prediction95
confidence : idem à prediction95


En tout cas c'est un boulot de dingue encore merci à vous tous B-)
EDIT : Ajout de comment faire pour les variables ( merci @parisse ). Les resets de calculatrices sont sûrement toutes une erreur de ma part donc quasiment tout est fonctionnel !!!
EDIT 2 : Sur la dernière version de zardam avec le test proposé par @parisse la calcultrice ne se reset plus et les fonctions solve, csolve, egvl et egv sont fonctionnelles
( Testé sur un N0110 )

Re: La NumWorks réinventée avec la N0110 - rentrée 2019

Message non luPosté: 14 Sep 2019, 13:36
de parisse
J'ai corrige un probleme ce matin, depuis que les E/S sont fonctionnelles, tout calcul qui affiche un warning dans Calculs engendre un reset, par exemple solve avec une expression au lieu d'une equation. Solution: supprimer un assert dans la fonction mp_hal_stdout_tx_strn_cooked dans le fichier python/port/port.cpp, et remplacer par un test
Code: Tout sélectionner
void mp_hal_stdout_tx_strn_cooked(const char * str, size_t len) {
  if (sCurrentExecutionEnvironment != nullptr)
    sCurrentExecutionEnvironment->printText(str, len);


Pour stocker une valeur dans une variable, il faut pour le moment utiliser = comme en Python, par exemple a=2 ou a=ranm(3,3) (matrice aleatoire 3 par 3). Il faut que je capture le caractere de sto> (naturellement avec tous les codes utf8 possibles, ce n'est jamais le meme qui est choisi entre HP, Casio, etc.). D'ailleurs si quelqu'un sait quel est le code UTF8 utilise par Numworks, ca me ferait gagner du temps :-)
Bon, de toutes facons, les calculs dans Calculs sont brides, parce que le moteur d'affichage utilise poincare, il faut que les entrees soient compatibles avec la Numworks de base, ce qui limite pas mal. Ainsi la derivee de Numworks prend 3 arguments, alors qu'une derivee formelle n'en a besoin que de deux, mais on est oblige de lui en donner 3 dans Calculs, ici on mettra en 3eme argument le nombre de derivations souhaite, donc pratiquement toujours 1 (sauf si on veut etudier la convexite).
Je vais regarder pour la racine n-ieme et le log, pas sur que je puisse adapter, sinon le probleme de la limite en l'infini est que poincare ne veut pas parser +infinity. Pour les fonctions de prediction, je ne pense pas les garder, vu que les stats inferentielles passent plus ou moins a la trappe, de toutes facons c'est super simple a programmer.
Ca devrait beaucoup mieux marcher dans le shell (et sans lenteur du au moteur d'affichage).

Re: La NumWorks réinventée avec la N0110 - rentrée 2019

Message non luPosté: 14 Sep 2019, 13:38
de coco33920
Ok merci,
pour le reset je m'en doutais que c'etait du à une erreur de ma part et que c'est une sorte d'erreur :)
et merci pour l'explication pour les variables :D
J'ai édité mon message pour prendre en compte tout ça
Colin.