Page 2 sur 2

Re: mathml

Publié : lun. avr. 28, 2014 10:17 am
par frederic han
Salut,

j'ai un petit pb avec le mathml.

Code : Tout sélectionner

Digits:=12;
10.0**(-13)*i;
3+10.0**(-13)*i;
ont des problemes en mathml.

Je propose ligne 1101 de permutter 2 tests et de modifier le cas partie im nulle.

Code : Tout sélectionner

      case _CPLX:
	if (!is_zero(re(e,contextptr)))
	    part_re="<mn>"+re(e,contextptr).print(contextptr)+"</mn>";
	if (!is_zero(im(e,contextptr))){
	  if (is_positive(im(e,contextptr),contextptr)){
	    if (!is_zero(re(e,contextptr)))
	      part_re+="<mo>+</mo>";
	  }
	  else
	    part_re+="<mo>-</mo>";
	}
	if (!is_one(-im(e,contextptr)) && ! is_one(im(e,contextptr)))
	  part_im="<mn>"+abs(im(e,contextptr),contextptr).print(contextptr)+"</mn>"+part_im;	
        //the is_zero test should be the last one  
	//Ex: 3+10.0**(-13)*i avec Digits 12 et 10.0**(-13)*i avec Digits 12 et 
	if (is_zero(im(e,contextptr))){
	  part_im="";
	  if (is_zero(re(e,contextptr)))
	    part_re="<mn>0.0</mn>";
	}
      	return part_re+part_im;
      case _IDNT:                        


D'autre part, je ne trouve pas logique ligne 1092 de limiter l'affichage a 5 chiffres:

Code : Tout sélectionner

      case _DOUBLE_:                        
	/* FH: pas logique
        if (fabs(e._DOUBLE_val)<1.1e-5)
	  return "<mn>0.0</mn>";
	else
	*/
	  return "<mn>"+e.print(contextptr)+"</mn>"; 


Fred

Re: mathml

Publié : lun. avr. 28, 2014 12:08 pm
par parisse
je te laisse juge! envoie-moi le mathml.cc, je l'integrerai dans la prochaine version du source la semaine prochaine (la je viens juste de mettre a jour le tar.bz2 depuis mon lieu de vacances et je ne pense pas y retoucher cette semaine).

Re: mathml

Publié : ven. sept. 19, 2014 8:16 am
par frederic han
Dans la conversion mathml les poly1 apparaissent comme des listes ordinaires.
le diff suivant ajoute un poly1 comme sous giac/xcas.

Code : Tout sélectionner

--- mathml.cc~	2014-05-06 12:29:20.000000000 +0200
+++ mathml.cc	2014-09-18 09:06:34.000000000 +0200
@@ -183,7 +183,10 @@
     if (type==_SEQ__VECT) s.append("(\" close=\")\">");
     else {
       if (type==_SET__VECT) s.append("{\" close=\"}\">");
-      else s.append("[\" close=\"]\">");
+      else{
+	if (type==_POLY1__VECT) s.append("poly1[\" close=\"]\">");
+        else s.append("[\" close=\"]\">");
+	}
     }
     s.append("<mrow>");
     vecteur::const_iterator it=v.begin(),itend=v.end();
macbookito(fred)$ 
Aussi, je ne sais pas comment traiter les rootof.
si on fait:

Code : Tout sélectionner

rootof(x^3+x+1):=j
en mathml c'est la version avec rootof qui est affichee, comment peut on attraper ce j?

Re: mathml

Publié : ven. sept. 19, 2014 10:28 am
par parisse
J'integre ton patch.
Pour rootof, il faut ajouter un cas particulier un peu comme pour at_pnt et appeler la methode print(contextptr) du gen, qui appellera printasrootof de alg_ext.cc qui se charge de remplacer les rootof qui ont un nom.

Re: mathml

Publié : sam. nov. 21, 2015 10:40 am
par frederic han
SAlut,
J'ai l'impression que giac 1.2.2 met un retour a la ligne dans les nombres de plus de 50 chiffres. Je ne sais pas si c'est standard ou pas de faire ca, mais le moteur mathml de Qt n'aime pas (qcas n'affiche rien du coup)

approx(pi,50)

Re: mathml

Publié : sam. nov. 21, 2015 11:27 am
par parisse
j'ai ajoute un decoupage quand ca depasse 50, mais on peut tres bien le reserver a emscripten.

Re: mathml

Publié : sam. nov. 21, 2015 12:55 pm
par frederic han
effectivement ca serait mieux pour qcas.