Calculs

Tout ce qui concerne le langage TeX/LaTeX et ses variantes. Ce langage est utilisable sur le forum via les balises tex.
[participation réservée aux utilisateurs inscrits]
Règles du forum
Merci de soigner la rédaction de vos messages et de consulter ce sujet avant de poster. Pensez également à utiliser la fonction recherche du forum.
zariski63
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 525
Inscription : jeudi 14 octobre 2010, 09:20
Statut actuel : Enseignant
Localisation : Clermont-Ferrand

Calculs

Message non lu par zariski63 »

Bonjour !
Une toute petite question...
Pour effectuer des calculs dans Latex ou Tex (à fortiori), que vaudrait-il mieux utiliser ?
Le package Fp ? Lua ? Python ? Latex3 ? ou autre ,
Je sais Tex très mauvais en calcul à virgule flottante...
Merci pour vos réponses qui seront probablement selon les goûts ou arguments de chacun.
un bon petit
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 995
Inscription : vendredi 12 juin 2009, 22:35
Statut actuel : Enseignant
Localisation : Chambéry
Contact :

Re: calculs

Message non lu par un bon petit »

Question très imprécise.
Quels genre de calcul : scientifique, entier, grand entiers ???
Avec TeX ou LaTeX ? Il est évident que lua et python n'appartiennent pas à LaTeX, donc hors jeu ici.

Le mieux est sans doute de vous faire une idée par vous même :
https://www.ctan.org/topic/calculation

Puisqu'on sent que vous voulez absolument une réponse : pour TeX, je préconise l'excellent apnum. Sinon, l3fp ou son wrapper xfp (voir la doc de latex 3 interfaces).
Programmer en TeX, TeXpérimental
zariski63
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 525
Inscription : jeudi 14 octobre 2010, 09:20
Statut actuel : Enseignant
Localisation : Clermont-Ferrand

Re: calculs

Message non lu par zariski63 »

A vrai dire j'attendais une réponse de votre part et je savais que vous trouveriez ma question très imprécise.
Je pensais en fait à du calcul "scientifique".
D'ailleurs je suis étonné que vous mettiez en avant l3fp; je pensais que vous aviez une aversion à Latex3.
J'ai potassé l3fp, c'est un peu déroutant mais finalement cela reste dans la sphère Tex; cela me semble assez puissant bien que la syntaxe soit très verbeuse.
un bon petit
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 995
Inscription : vendredi 12 juin 2009, 22:35
Statut actuel : Enseignant
Localisation : Chambéry
Contact :

Re: calculs

Message non lu par un bon petit »

zariski63 a écrit : mardi 30 mars 2021, 16:07A vrai dire j'attendais une réponse de votre part et je savais que vous trouveriez ma question très imprécise.
Ah ? C'est donc un petit jeu ? J'étais pas au courant...

zariski63 a écrit : mardi 30 mars 2021, 16:07D'ailleurs je suis étonné que vous mettiez en avant l3fp; je pensais que vous aviez une aversion à Latex3.
Amusant.

C'est sans doute à cause de cette « aversion » que depuis plus de 2 ans, j'ai choisi xfp comme moteur de calcul dans spreadtab !
Programmer en TeX, TeXpérimental
zariski63
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 525
Inscription : jeudi 14 octobre 2010, 09:20
Statut actuel : Enseignant
Localisation : Clermont-Ferrand

Re: calculs

Message non lu par zariski63 »

Houlà ne prenez pas la mouche, je connais simplement vos compétences (excellentes ) en TeX, aussi j'attendais votre réponse avec impatience.
Nul jeu là-dedans évidemment.
Actuellement je travaille votre livre (que je possède) et j'avoue depuis faire une forte consommation d'aspirine. C'est une façon complétement différente de programmer mais tellement puissante.
Je suis en train de tester "apnum" dont j'ignorais l'existence. Bien plus précis que "l3fp" il me semble.
un bon petit
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 995
Inscription : vendredi 12 juin 2009, 22:35
Statut actuel : Enseignant
Localisation : Chambéry
Contact :

Re: calculs

Message non lu par un bon petit »

zariski63 a écrit : mardi 30 mars 2021, 16:28C'est une façon complétement différente de programmer mais tellement puissante.
Un langage de macros. Il y a le langage M4 aussi (qui lui, est assez répandu).
zariski63 a écrit : mardi 30 mars 2021, 16:28 Je suis en train de tester "apnum" dont j'ignorais l'existence. Bien plus précis que "l3fp" il me semble.
J'avoue ne pas avoir comparé la rapidité de apnum et l3fp. Mais quelle importance tant qu'on ne fait pas des calculs massifs. Et si l'on fait des calculs massifs, on n'utilise pas TeX.
Ceci dit, contrairement à l3fp, apnum permet de choisir la précision mais l'inconvénient est qu'il n'est pas purement développable (pour qui sait programmer en TeX, cela n'a pas grande importance, soit dit en passant).
Programmer en TeX, TeXpérimental
zariski63
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 525
Inscription : jeudi 14 octobre 2010, 09:20
Statut actuel : Enseignant
Localisation : Clermont-Ferrand

Re: calculs

Message non lu par zariski63 »

je vous remercie , comme toujours vous avez su me répondre clairement. M4 ? connais pas, étant très curieux je vais jeter un oeil là dessus.
Bonne soirée.
ps : je risque de poser encore des questions à l'avenir... :D
un bon petit
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 995
Inscription : vendredi 12 juin 2009, 22:35
Statut actuel : Enseignant
Localisation : Chambéry
Contact :

Re: Calculs

Message non lu par un bon petit »

Du coup, poussé par la curiosité, j'ai fait un petit concours de vitesse.
Pour les calculs arithmétiques, l3fp est environ 6% plus rapide que apnum. Quasi égalité donc...

Pour les calculs scientifiques, il n'y a pas photo, l3fp est environ 8 fois plus rapide que apnum. :crazy:

Code : Tout sélectionner

\documentclass{article}
\def\benchmark#1{% 200 fois
	\pdfresettimer
	#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1%
	#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1%
	#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1%
	#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1%
	#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1%
	#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1%
	#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1%
	#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1%
	#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1%
	#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1%
	\the\pdfelapsedtime\ secondes d'échelle\par
}
\usepackage{xfp}
\input apnum.tex
\begin{document}
\parindent0pt
\apFRAC=15
\section{Calcul de 10-9*(8-7*6+5*(4+2*3)-2)+1}
\benchmark{\evaldef\A{10-9*(8-7*6+5*(4+2*3)-2)+1}}
\benchmark{\edef\A{\fpeval{10-9*(8-7*6+5*(4+2*3)-2)+1}}}

\section{Calcul de $\sqrt{3\cos\frac\pi{13}-2\sin\frac\pi7}$}
\benchmark{\evaldef\A{\SQRT{3*\COS{\PI/13}-2*\SIN{\PI/7}}}}
\benchmark{\edef\A{\fpeval{sqrt(3*cos(pi/13)-2*sin(pi/7))}}}
\end{document}
Programmer en TeX, TeXpérimental
zariski63
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 525
Inscription : jeudi 14 octobre 2010, 09:20
Statut actuel : Enseignant
Localisation : Clermont-Ferrand

Re: Calculs

Message non lu par zariski63 »

Effectivement !!!

Par contre chez moi le "\pdfresettimer" ne passe pas par lualatex, mais passe par pdflatex.

Au passage je butte sur un truc tout bête surement : je n'arrive pas à afficher correctement en notation scientifique le résultat de
$7458^{78}$ : \fpeval{7458^78}
où je souhaiterais supprimer les décimales inutiles.
J'ai essayer avec "siunitx" mais rien n'y fait.
gigiair
Utilisateur chevronné
Utilisateur chevronné
Messages : 2804
Inscription : samedi 08 juillet 2006, 20:56
Localisation : Saint Bonnet Elvert

Re: Calculs

Message non lu par gigiair »

$7458^{78}=116023393561784448147331090923764290318142718785990630403664010857756484930786768062762287750824797489359296360298038165126226579620227054240267470975172529066616300004607016950331382862325103955375708092862283621128381012725623596511343521729995026436570471628204876393720363867635596632173950726569984$

C'est un nombre entier écrit en base dix avec 303 chiffres. Il se peut que LaTeX soit un peu débordé, il vaudrait mieux que tu fabrique l'affichage que tu désires « à la main».

Dans le format "%.6e" il s'affiche "1.160234e+302"
Dernière modification par gigiair le mardi 30 mars 2021, 20:32, modifié 1 fois.
JJR.
LaTeXien migrateur.
un bon petit
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 995
Inscription : vendredi 12 juin 2009, 22:35
Statut actuel : Enseignant
Localisation : Chambéry
Contact :

Re: Calculs

Message non lu par un bon petit »

zariski63 a écrit : mardi 30 mars 2021, 19:42 Par contre chez moi le "\pdfresettimer" ne passe pas par lualatex, mais passe par pdflatex.
Bien évidemment, comme toutes les primitives qui commencent par \pdf, elles sont intrinsèques au moteur pdfTeX.
zariski63 a écrit : mardi 30 mars 2021, 19:42 J'ai essayer avec "siunitx" mais rien n'y fait.
Pourquoi vous ne montrez pas votre code ?
C'est pourtant d'une grande simplicité :

Code : Tout sélectionner

\documentclass{article}
\usepackage{xparse,siunitx}
\ExplSyntaxOn
\NewDocumentCommand\dispfpeval{m}{\num{\fp_to_scientific:n{#1}}}
\ExplSyntaxOff
\begin{document}
\dispfpeval{7458^78}
\end{document}
Programmer en TeX, TeXpérimental
zariski63
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 525
Inscription : jeudi 14 octobre 2010, 09:20
Statut actuel : Enseignant
Localisation : Clermont-Ferrand

Re: Calculs

Message non lu par zariski63 »

Ralala si j avais une once de vos capacités je cesserais d embêter avec mes problèmes. Je dis bravo et vous remercie chaleureusement. Le soir arrivant il me faisait peine d investiguer du côté de Latex3. Je testerai cela demain. Bonne soirée maître es TeX !!!
gigiair
Utilisateur chevronné
Utilisateur chevronné
Messages : 2804
Inscription : samedi 08 juillet 2006, 20:56
Localisation : Saint Bonnet Elvert

Re: Calculs

Message non lu par gigiair »

Pour ma part, rien de miraculeux. Il existe des dizaines de logiciels capables d'effectuer ces calculs et d'en donner une approximation au format désiré.
Je note que celle qui est proposée par UBP est « fausse » Le dernier chiffre est un 4 alors qu'il devrait être 5. ("1.160233935617845e+302" vs "1.160233935617844e+302") Grave erreur que tous tes lecteurs détecteraient instantanément :)
JJR.
LaTeXien migrateur.
un bon petit
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 995
Inscription : vendredi 12 juin 2009, 22:35
Statut actuel : Enseignant
Localisation : Chambéry
Contact :

Re: Calculs

Message non lu par un bon petit »

zariski63 a écrit : mardi 30 mars 2021, 20:56 Je dis bravo et vous remercie chaleureusement
Cet ECM est donné dans la doc de interfaces3 à la page 234 ! Je l'ai vu après, mais c'est exactement le même code.
Programmer en TeX, TeXpérimental
jcs
Utilisateur chevronné
Utilisateur chevronné
Messages : 1388
Inscription : lundi 24 novembre 2008, 22:17
Statut actuel : Autre

Re: Calculs

Message non lu par jcs »

Bonjour

Je ne comprends pas pourquoi la seizième décimale devrait être un 5 puisque après les deux 4 en arrive un troisième. On arrondit bien alors en dessous.
zariski63
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 525
Inscription : jeudi 14 octobre 2010, 09:20
Statut actuel : Enseignant
Localisation : Clermont-Ferrand

Re: Calculs

Message non lu par zariski63 »

En effet, voilà ce que donne Maple.
7458^78 =
1160233935617844481473310909237642903181427187859906304036640108\
57756484930786768062762287750824797489359296360298038165126226\
57962022705424026747097517252906661630000460701695033138286232\
51039553757080928622836211283810127256235965113435217299950264\
36570471628204876393720363867635596632173950726569984
Mais alors l'arrondi de 444 serait 445.
Quoiqu'il en soit je n'ai pas besoin d'une telle précision, c'est simplement de la curiosité.

J'ai glané une amélioration du code précédent portant sur le nombre de décimales désiré; le voici :

Code : Tout sélectionner

\documentclass[12pt]{article}

\usepackage{xfp}
\usepackage{siunitx}

\ExplSyntaxOn
\NewExpandableDocumentCommand\scientificB{ o m }{%
     \IfNoValueTF{#1}{\num{\fp_to_scientific:n{#2}}}%
                     {\num[#1]{\fp_to_scientific:n{#2}}}}
\ExplSyntaxOff

\begin{document}

\scientificB{7458^{78}}

\scientificB[round-mode=places,round-precision=6]{7458^{78}}

\end{document}
un bon petit
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 995
Inscription : vendredi 12 juin 2009, 22:35
Statut actuel : Enseignant
Localisation : Chambéry
Contact :

Re: Calculs

Message non lu par un bon petit »

Mouais. Complication inutile à mon avis. J'écrirais

Code : Tout sélectionner

\NewExpandableDocumentCommand\scientificB{om}{\num[#1]{\fp_to_scientific:n{#2}}}
Programmer en TeX, TeXpérimental
zariski63
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 525
Inscription : jeudi 14 octobre 2010, 09:20
Statut actuel : Enseignant
Localisation : Clermont-Ferrand

Re: Calculs

Message non lu par zariski63 »

Trop fort !
Je me disais aussi, c'est trop beau pour ne pas être remanié :lol:
un bon petit
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 995
Inscription : vendredi 12 juin 2009, 22:35
Statut actuel : Enseignant
Localisation : Chambéry
Contact :

Re: Calculs

Message non lu par un bon petit »

zariski63 a écrit : mercredi 31 mars 2021, 19:15 Je me disais aussi, c'est trop beau pour ne pas être remanié :lol:
C'est pas pour en remettre une couche, mais vous avez vraiment besoin que votre macro soit purement développable ?

Si la réponse est non (ce qui est presque sûrement le cas), utilisez plutôt \NewDocumentCommand.
Programmer en TeX, TeXpérimental
zariski63
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 525
Inscription : jeudi 14 octobre 2010, 09:20
Statut actuel : Enseignant
Localisation : Clermont-Ferrand

Re: Calculs

Message non lu par zariski63 »

A vrai dire, au risque de passer pour un être ignare (tant pis le ridicule ne tue pas), quelle est la différence ?
Répondre