1.4.9 instable

Nouveautes concernant Xcas.
News about Xcas

Modérateur : xcasadmin

parisse
Messages : 5734
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

1.4.9 instable

Message par parisse » lun. sept. 11, 2017 12:49 pm

J'ai mis en ligne des binaires instables (versions 1.4.9 linux debian, win64, mac) avec :
1/ un pre-interpreteur qui detecte de la syntaxe Python (de base uniquement, c'est pour le lycee), ainsi que quelques commandes issues du monde Python (par ex. range, randint, shuffle). Dans Xcas, on peut desormais choisir Python comme syntaxe.
2/ de nouvelles commandes d'optimisation ecrites par Luka Marohnic (documentees en anglais dans cascmd_en.tex)
Il y a surement des bugs a corriger avant d'en faire une version stable, mais je pense que le temps passe a implementer de la compatibilite Python n'est pas du temps perdu...

parisse
Messages : 5734
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: 1.4.9 instable

Message par parisse » lun. sept. 18, 2017 2:23 pm

Mise a jour. La compatibilite Python devrait etre un peu meilleure. J'ai aussi ajoute une optimisation pour les petites boucles "standards" (j variant de a a b avec a et b entiers). Et pour les germanistes, l'aide courte est disponible en allemand.

parisse
Messages : 5734
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: 1.4.9 instable

Message par parisse » mer. sept. 20, 2017 1:19 pm

Nouvelle mise a jour.

parisse
Messages : 5734
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: 1.4.9 instable

Message par parisse » jeu. sept. 21, 2017 12:28 pm

Nouvelle mise a jour.
Correction d'un bug dans les optimisations pour les boucles. Le support de for/in devrait maintenant etre a nouveau compatible avec la syntaxe C, cela impose toutefois d'utiliser des crochets pour des definitions du genre [j^2 for j in range(100) if isprime(j)]
Il faudrait voir quelles sont les fonctions de la librairie standard Python qu'il serait bien d'avoir ou de rendre compatible (il me semble qu'il ne manque pas grand chose de ce qu'il y a sur http://python.lycee.free.fr).

frederic han
Messages : 1137
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

Re: 1.4.9 instable

Message par frederic han » ven. sept. 22, 2017 1:04 pm

Je ne sais pas si c'est simple, mais proche de ce qui est implémenté:

Code : Tout sélectionner

4>> L:=[0,1,2,3,4,5,6,7,8,9]
[0,1,2,3,4,5,6,7,8,9]
// Time 0
15>> L[3:-1]  // un de trop par rapport a python
[3,4,5,6,7,8,9]
// Time 0
16>> L[1:]  // pas implemente

parisse
Messages : 5734
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: 1.4.9 instable

Message par parisse » ven. sept. 22, 2017 4:08 pm

Alors la je ne comprends pas la logique de python, il ne prennent pas en compte le dernier element du : ?? Ca me parait tellement anti-intuitif que je n'ai meme pas verifie. En fait, on ne peut pas acceder aux derniers elements de la liste avec la notation -1. Bon je vais quand meme le faire.

frederic han
Messages : 1137
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

Re: 1.4.9 instable

Message par frederic han » ven. sept. 22, 2017 4:51 pm

en python:

Code : Tout sélectionner

>>> L=[0,1,2,3,4,5,6,7,8,9]
>>> L[-1]
9
>>> L[1:]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> L[2:-0]
[]
>>> L[2:9]
[2, 3, 4, 5, 6, 7, 8]
>>> L[2:10]
[2, 3, 4, 5, 6, 7, 8, 9]
>>> L[10]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range
>>> L[2:100] # ca ne rale pas
[2, 3, 4, 5, 6, 7, 8, 9]
les range et slice sont ferme à gauche et ouvert a droite.
L[-1] donne bien le dernier element. par contre la syntaxe avec : est un slice donc ferme a gauche ouvert a droite. Il semble que l'on ait aussi le droit de deborder sans que ca donne d'erreur.

parisse
Messages : 5734
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: 1.4.9 instable

Message par parisse » ven. sept. 22, 2017 5:45 pm

oui mais tu dois connaitre la taille, or c'est justement l'interet d'utiliser le -1.

parisse
Messages : 5734
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: 1.4.9 instable

Message par parisse » sam. sept. 23, 2017 7:30 am

Bon, j'ai corrige dans le source et mis a jour Xcas pour Firefox

frederic han
Messages : 1137
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

Re: 1.4.9 instable

Message par frederic han » sam. sept. 23, 2017 8:20 am

en python c'est la syntaxe

Code : Tout sélectionner

L[1:]
qui donne de l'indice 1 jusque la fin. sous xcashtml elle n'a pas l'ai implementée mais c'est peut etre genant pour ton parser?

Code : Tout sélectionner

// Python-like syntax, check string delimiters "" and declare local variables.
Translated to Xcas as:
L[1..-1]
:;

parisse
Messages : 5734
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: 1.4.9 instable

Message par parisse » sam. sept. 23, 2017 9:34 am

si, il faut juste que tu rajoutes un ; et n'importe quoi par exemple 1 pour voir le resultat (car je rajoute un :;)

parisse
Messages : 5734
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: 1.4.9 instable

Message par parisse » mar. sept. 26, 2017 2:25 pm

Mise a jour 1.4.9-5, j'ai aussi mis a jour les debian stables.

parisse
Messages : 5734
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: 1.4.9 instable

Message par parisse » ven. sept. 29, 2017 9:10 am

1.4.9-7

parisse
Messages : 5734
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: 1.4.9 instable

Message par parisse » mer. oct. 11, 2017 1:17 pm

1.4.9-13

parisse
Messages : 5734
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: 1.4.9 instable

Message par parisse » mar. oct. 17, 2017 1:59 pm

1.4.9-15:
Ajoute une session exemple Mandelbrot.xws dans le menu Aide>Exemples>demo
Le programme correspondant illustre la possibilite de typer les variables, ce qui permettra ulterieurement de traduire efficacement un programme Xcas en module dynamique C++ lorsque la commande cpp sera au point.
On peut ainsi nettement accelerer les calculs sous linux en compilant le module giac_Mandelbrot.cpp (a recopier depuis /usr/share/giac/examples/Exemples/demo/, la commande compilation est en 1ere ligne et s'execute depuis le menu Tools, Compile d'emacs). Ce fichier a ete presque entierement auto-genere avec la commande cpp(Mandelbrot), j'ai juste modifie les initialisations de complex<double>.

Répondre