Når jeg beregner noe, blir noen ganger delresultatene for store for pgf
-systemet. Man kan bruke fpu
biblioteket. Jeg leste om det i TikZ & PGF
manualen (se side 627), her og her men jeg får fortsatt denne feilen:
Paragraph ended before `\pgfflt@readlowlevelfloat` was complete.
Hva er galt?
Her er koden min:
\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}
Oppdatering :
Jeg «bruker en makro fra her (takket være Schrödinger «katt ). Se min 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}
og få fortsatt en
Paragraph ended before `\pgfflt@readlowlevelfloat` was complete.
feil. Hva har jeg feil?
Takk for hjelpen og innsatsen på forhånd!
Kommentarer
Svar
Høres ut som en jobb for LaTeX3 FPU:
\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}
(Konvensjonen i expl3
er å indeksere fra 1 da dette stemmer overens med det vanligste bruksområdet: typesetting. Jeg har derfor indeksert listen fra en, men korrigert til indeks fra null for selve ligningen.)
Kommentarer
- Hei @Joseph Wright! Takk for svaret ditt. Jeg testet det. 1. Selvfølgelig fungerer det, men indeksvariabelen skal begynne med null (for mitt spesielle formål). 2. Resultatene av svaret ditt er forskjellige. De riktige resultatene skal se ut som en nedadgående parabel se her . Resultatene av svaret ditt ser ut som en åpnet oppover parabel. Kanskje jeg gjør noe galt. 3. Uansett kan jeg ' ikke bruke svaret på spørsmålet mitt (se lenken over). Hva sier du?
- @ Su-47 Jeg vet ikke ' hva du mener om ' lenken over '
- Koblingen i punkt 2 sannsynligvis ( tex.stackexchange.com/questions/348739/ … ).
- Hallo @Joseph Wright og @Torbj ø rn T.! Beklager det lange fraværet. Takk for dine kommentarer. Torbj ø rn T. har rett jeg mente denne lenken . Nå er resultatet riktig. Men som jeg sa i min siste kommentar, kan jeg ' ikke bruke svaret ovenfor for å løse et annet spørsmål (se lenken ovenfor). Hvis jeg forstår riktig for øyeblikket, er det ingen måte å bruke matriser og
fpu
sammen iTikZ
? Er det en annen løsning, kanskje en annen datastruktur som arrays?
\pgfkeys{pgf/fpu=false}
ikke vil gjøre det det står på blikket med mindre det nylig er løst.\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\\ }
fungerer. Per nå støtterfpu
ikke et par ting, inkludert heltallmanipulering, og denne typen listeutvinning. Så du må trekke ut oppføringen utenfpu
.