Quand je calcule quelque chose, je deviens parfois les résultats intermédiaires trop gros pour le système pgf
. On peut utiliser la bibliothèque fpu
. Jai lu à ce sujet dans le TikZ & PGF
manuel (voir page 627), ici et ici mais jobtiens toujours cette erreur:
Paragraph ended before `\pgfflt@readlowlevelfloat` was complete.
Quest-ce qui ne va pas?
Voici mon code:
\documentclass{scrartcl} \usepackage{tikz} \usetikzlibrary{fpu} \begin{document} %data values: \def\RTable{{100,100.391,100.781,101.172,101.562,101.953,102.343,102.733,103.123,103.513,103.903,104.292,104.682,105.071,105.46,105.849,106.238,106.627,107.016,107.405,107.794,108.182,108.57,108.959,109.347,109.735,110.123,110.51,110.898,111.286,111.673,112.06,112.447,112.835,113.221,113.608,113.995,114.382,114.768,115.155,115.541,115.927,116.313,116.699,117.085,117.47,117.856,118.241,118.627,119.012,119.397,119.782,120.167,120.552,120.936,121.321,121.705,122.09,122.474,122.858,123.242,123.626,124.009,124.393,124.777,125.16,125.543,125.926,126.309,126.692,127.075,127.458,127.84,128.223,128.605,128.987,129.37,129.752,130.133,130.515,130.897}} %prints the result to the console: \pgfkeys{/pgf/fpu} \foreach \i in {0, ..., 80} { \pgfmathparse{abs(\RTable[\i] - 100 - 3.0897 / 8 * \i)}\i, \pgfmathresult\\ } \pgfkeys{/pgf/fpu=false} \end{document}
Mise à jour :
Jutilise une macro de ici (grâce à Le chat de Schrödinger ). Consultez mon MWE:
\documentclass{scrartcl} \usepackage{tikz} \usetikzlibrary{fpu} \newcommand\pgfmathparseFPU[1]{ \begingroup \pgfkeys{ /pgf/fpu, /pgf/fpu/output format = fixed } \pgfmathparse{#1} \pgfmathsmuggle \pgfmathresult \endgroup} \begin{document} %data values: \def\UABmValues{{14.9, 15.8, 17.7, 18.3, 19, 20, 21.1, 22.2, 24.3, 26.9, 30.1}} %prints the result to the console: \foreach[count = \i from 0] \k in {30, 35, ..., 80} { \pgfmathparseFPU{-25500 / (\UABmValues[\i] / 1000 - 255 / 52) - 5200 - 3.0897 / 8 * \k}\i, \pgfmathresult\\ } \end{document}
et obtenez toujours une erreur
Paragraph ended before `\pgfflt@readlowlevelfloat` was complete.
. Quest-ce que je me trompe?
Merci pour votre aide et vos efforts à lavance!
Commentaires
Réponse
Cela ressemble à un travail pour le FPU LaTeX3:
\documentclass{article} \usepackage{expl3} \ExplSyntaxOn \cs_new_eq:NN \fpeval \fp_eval:n \cs_new_eq:NN \clistitem \clist_item:Nn \cs_new_eq:NN \foreachint \int_step_inline:nnnn \ExplSyntaxOff \begin{document} %data values: \def\RTable{100,100.391,100.781,101.172,101.562,101.953,102.343,102.733,103.123,103.513,103.903,104.292,104.682,105.071,105.46,105.849,106.238,106.627,107.016,107.405,107.794,108.182,108.57,108.959,109.347,109.735,110.123,110.51,110.898,111.286,111.673,112.06,112.447,112.835,113.221,113.608,113.995,114.382,114.768,115.155,115.541,115.927,116.313,116.699,117.085,117.47,117.856,118.241,118.627,119.012,119.397,119.782,120.167,120.552,120.936,121.321,121.705,122.09,122.474,122.858,123.242,123.626,124.009,124.393,124.777,125.16,125.543,125.926,126.309,126.692,127.075,127.458,127.84,128.223,128.605,128.987,129.37,129.752,130.133,130.515,130.897} %prints the result to the console: \foreachint{1}{1}{81}{% #1, \fpeval{abs(\clistitem\RTable{#1} - 100 - 3.0897 / 8 * (#1 - 1))}\\ } \end{document}
(La convention dans expl3
consiste à indexer à partir de 1 car cela correspond au cas dutilisation le plus courant: la composition. Jai donc indexé la liste à partir de un mais corrigé pour indexer à partir de zéro pour léquation elle-même.)
Commentaires
- Bonjour @Joseph Wright! Merci pour votre réponse Je lai testé. 1. Bien sûr, cela fonctionne, mais la variable dindex doit commencer par zéro (pour mon objectif spécial). 2. Les résultats de votre réponse sont différents. Les résultats corrects devraient ressembler à une parabole descendante, voir ici . Les résultats de votre réponse ressemblent à une parabole ouverte vers le haut. Peut-être que je fais quelque chose de mal. 3. Quoi quil en soit, je ne peux ‘ utiliser votre réponse à ma question (voir le lien ci-dessus). Que dites-vous?
- @ Su-47 Je ne ‘ Je ne sais pas ce que vous voulez dire à propos de ‘ le lien ci-dessus ‘
- Le lien au point 2 probablement ( tex.stackexchange.com/questions/348739/ … ).
- Bonjour @Joseph Wright et @Torbj ø rn T.! Désolé pour la longue absence. Merci pour vos commentaires. Torbj ø rn T. a raison Je voulais dire ce lien . Maintenant, le résultat est juste. Mais comme je lai dit dans mon dernier commentaire, je ne peux ‘ t utiliser la réponse ci-dessus pour résoudre ma autre question (voir le lien ci-dessus). Si je comprends bien actuellement, il ny a aucun moyen dutiliser des tableaux et
fpu
ensemble dansTikZ
? Existe-t-il une autre solution, peut-être une autre structure de données sous forme de tableaux?
\pgfkeys{pgf/fpu=false}
ne fera pas ce quil dit sur létain à moins que cela nait été récemment corrigé.\foreach[count = \i from 0] \k in {30, 35, ..., 80} { \pgfmathsetmacro{\myval}{\UABmValues[\i]} \pgfmathparseFPU{-25500/(\myval/1000-255/52)-5200-3.0897/8*\k}\i, \pgfmathresult\\ }
fonctionne. Pour linstant,fpu
ne prend pas en charge deux ou trois choses, y compris la manipulation dentiers et ce type dextraction de liste. Vous devez donc extraire lentrée sansfpu
.