Calculs
-
- Utilisateur éprouvé
- Messages : 525
- Inscription : jeudi 14 octobre 2010, 09:20
- Statut actuel : Enseignant
- Localisation : Clermont-Ferrand
Calculs
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.
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.
-
- Utilisateur éprouvé
- Messages : 995
- Inscription : vendredi 12 juin 2009, 22:35
- Statut actuel : Enseignant
- Localisation : Chambéry
- Contact :
Re: calculs
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).
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
-
- Utilisateur éprouvé
- Messages : 525
- Inscription : jeudi 14 octobre 2010, 09:20
- Statut actuel : Enseignant
- Localisation : Clermont-Ferrand
Re: calculs
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.
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.
-
- Utilisateur éprouvé
- Messages : 995
- Inscription : vendredi 12 juin 2009, 22:35
- Statut actuel : Enseignant
- Localisation : Chambéry
- Contact :
Re: calculs
Ah ? C'est donc un petit jeu ? J'étais pas au courant...
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
-
- Utilisateur éprouvé
- Messages : 525
- Inscription : jeudi 14 octobre 2010, 09:20
- Statut actuel : Enseignant
- Localisation : Clermont-Ferrand
Re: calculs
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.
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.
-
- Utilisateur éprouvé
- Messages : 995
- Inscription : vendredi 12 juin 2009, 22:35
- Statut actuel : Enseignant
- Localisation : Chambéry
- Contact :
Re: calculs
Un langage de macros. Il y a le langage M4 aussi (qui lui, est assez répandu).
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
-
- Utilisateur éprouvé
- Messages : 525
- Inscription : jeudi 14 octobre 2010, 09:20
- Statut actuel : Enseignant
- Localisation : Clermont-Ferrand
Re: calculs
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...
Bonne soirée.
ps : je risque de poser encore des questions à l'avenir...
-
- Utilisateur éprouvé
- Messages : 995
- Inscription : vendredi 12 juin 2009, 22:35
- Statut actuel : Enseignant
- Localisation : Chambéry
- Contact :
Re: Calculs
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.
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.
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
-
- Utilisateur éprouvé
- Messages : 525
- Inscription : jeudi 14 octobre 2010, 09:20
- Statut actuel : Enseignant
- Localisation : Clermont-Ferrand
Re: Calculs
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}$ :
où je souhaiterais supprimer les décimales inutiles.
J'ai essayer avec "siunitx" mais rien n'y fait.
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.
-
- Utilisateur chevronné
- Messages : 2804
- Inscription : samedi 08 juillet 2006, 20:56
- Localisation : Saint Bonnet Elvert
Re: Calculs
$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"
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.
LaTeXien migrateur.
-
- Utilisateur éprouvé
- Messages : 995
- Inscription : vendredi 12 juin 2009, 22:35
- Statut actuel : Enseignant
- Localisation : Chambéry
- Contact :
Re: Calculs
Bien évidemment, comme toutes les primitives qui commencent par
\pdf
, elles sont intrinsèques au moteur pdfTeX.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
-
- Utilisateur éprouvé
- Messages : 525
- Inscription : jeudi 14 octobre 2010, 09:20
- Statut actuel : Enseignant
- Localisation : Clermont-Ferrand
Re: Calculs
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 !!!
-
- Utilisateur chevronné
- Messages : 2804
- Inscription : samedi 08 juillet 2006, 20:56
- Localisation : Saint Bonnet Elvert
Re: Calculs
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
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.
LaTeXien migrateur.
-
- Utilisateur éprouvé
- Messages : 995
- Inscription : vendredi 12 juin 2009, 22:35
- Statut actuel : Enseignant
- Localisation : Chambéry
- Contact :
Re: Calculs
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
-
- Utilisateur chevronné
- Messages : 1388
- Inscription : lundi 24 novembre 2008, 22:17
- Statut actuel : Autre
Re: Calculs
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.
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.
-
- Utilisateur éprouvé
- Messages : 525
- Inscription : jeudi 14 octobre 2010, 09:20
- Statut actuel : Enseignant
- Localisation : Clermont-Ferrand
Re: Calculs
En effet, voilà ce que donne Maple.
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 :
Mais alors l'arrondi de 444 serait 445.7458^78 =
1160233935617844481473310909237642903181427187859906304036640108\
57756484930786768062762287750824797489359296360298038165126226\
57962022705424026747097517252906661630000460701695033138286232\
51039553757080928622836211283810127256235965113435217299950264\
36570471628204876393720363867635596632173950726569984
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}
-
- Utilisateur éprouvé
- Messages : 995
- Inscription : vendredi 12 juin 2009, 22:35
- Statut actuel : Enseignant
- Localisation : Chambéry
- Contact :
Re: Calculs
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
-
- Utilisateur éprouvé
- Messages : 525
- Inscription : jeudi 14 octobre 2010, 09:20
- Statut actuel : Enseignant
- Localisation : Clermont-Ferrand
Re: Calculs
Trop fort !
Je me disais aussi, c'est trop beau pour ne pas être remanié
Je me disais aussi, c'est trop beau pour ne pas être remanié
-
- Utilisateur éprouvé
- Messages : 995
- Inscription : vendredi 12 juin 2009, 22:35
- Statut actuel : Enseignant
- Localisation : Chambéry
- Contact :
Re: Calculs
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
-
- Utilisateur éprouvé
- Messages : 525
- Inscription : jeudi 14 octobre 2010, 09:20
- Statut actuel : Enseignant
- Localisation : Clermont-Ferrand
Re: Calculs
A vrai dire, au risque de passer pour un être ignare (tant pis le ridicule ne tue pas), quelle est la différence ?