summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex')
-rw-r--r--Master/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex3445
1 files changed, 1723 insertions, 1722 deletions
diff --git a/Master/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex b/Master/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex
index bda29cb51b7..006d6ea4046 100644
--- a/Master/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex
+++ b/Master/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex
@@ -13,23 +13,23 @@
\pgfkeys{
- % The bug 3430171 (wrong minus sign spacing in pgfmathprintnumber)
- % has been fixed in 2.10 CVS. Since it changes the spacing, its
- % effects can be undone with this compatibility switch.
- /pgf/compat/number printer/.is choice,
- /pgf/compat/number printer/2.10/.code={%
- \def\pgfmathprintnumber@begingroup{\bgroup}%
- \def\pgfmathprintnumber@endgroup{\egroup}%
- },
- % I do not know the version number of the next release at this
- % time. Please be so kind and KEEP THIS NAME INTACT. Add an alias
- % if needed.
- /pgf/compat/number printer/next after 2.10/.code={%
- \def\pgfmathprintnumber@begingroup{\begingroup}%
- \def\pgfmathprintnumber@endgroup{\endgroup}%
- },
- % activate the fix by default.
- /pgf/compat/number printer/next after 2.10,%
+ % The bug 3430171 (wrong minus sign spacing in pgfmathprintnumber)
+ % has been fixed in 2.10 CVS. Since it changes the spacing, its
+ % effects can be undone with this compatibility switch.
+ /pgf/compat/number printer/.is choice,
+ /pgf/compat/number printer/2.10/.code={%
+ \def\pgfmathprintnumber@begingroup{\bgroup}%
+ \def\pgfmathprintnumber@endgroup{\egroup}%
+ },
+ % I do not know the version number of the next release at this
+ % time. Please be so kind and KEEP THIS NAME INTACT. Add an alias
+ % if needed.
+ /pgf/compat/number printer/next after 2.10/.code={%
+ \def\pgfmathprintnumber@begingroup{\begingroup}%
+ \def\pgfmathprintnumber@endgroup{\endgroup}%
+ },
+ % activate the fix by default.
+ /pgf/compat/number printer/next after 2.10,%
}
@@ -55,7 +55,7 @@
% can be changed with options.
\def\pgfmathfloat@round@precision{2}
-% I introduced this to access the "original" precision in case a
+% I introduced this to acces the "original" precision in case a
% formatted changes it locally... in this case, the formatter may
% overwrite \pgfmathfloat@round@precision@orig to provide the original
% one.
@@ -70,7 +70,7 @@
% [FLAGS] MANTISSE EXPONENT
% meaning
% [+-]X.XXXXXXX*10^C
-% where
+% where
% X.XXXXXX is a mantissa with first number != 0, C is an integer and
% FLAGS contains the sign and some other special cases.
%
@@ -78,7 +78,7 @@
% computation is COMPLETELY STRING BASED.
% This allows numbers such at 10000000 or 5.23e-10 to be represented
% properly, although TeX-registers would produce overflow/underflow
-% errors in these cases.
+% errors in these cases.
%
% It is to be used to compute logs, because log(X*10^Y) = log(X) + log(10)*Y
%
@@ -98,12 +98,12 @@
% FLAGS MANTISSE 'e' EXPONENT
% where
% FLAGS is a number in [0-5] where
-% 0 == '0' (the number is +- 0.0),
-% 1 == '+',
-% 2 == '-',
-% 3 == 'not a number'
-% 4 == '+ infinity'
-% 5 == '- infinity'
+% 0 == '0' (the number is +- 0.0),
+% 1 == '+',
+% 2 == '-',
+% 3 == 'not a number'
+% 4 == '+ infinity'
+% 5 == '- infinity'
%
% MANTISSE is a normalised number 1 <= M < 10. It always contains a
% period and at least one digit after the period.
@@ -116,15 +116,15 @@
% \pgfmathfloatparsenumber{141.212}
% -> \pgfmathresult = 11.41212e2
\def\pgfmathfloatparsenumber#1{%
- \begingroup
- \edef\pgfmathresult{#1}%
- \expandafter\pgfflt@impl\pgfmathresult\pgfflt@EOI
- \ifpgfmathfloatparsenumberpendingperiod
- \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok.0}%
- \fi
- \pgfmathfloatcreate{\the\pgfmathfloat@a@S}{\the\pgfmathfloat@a@Mtok}{\the\pgfmathfloat@a@E}%
- \pgfmath@smuggleone\pgfmathresult
- \endgroup
+ \begingroup
+ \edef\pgfmathresult{#1}%
+ \expandafter\pgfflt@impl\pgfmathresult\pgfflt@EOI
+ \ifpgfmathfloatparsenumberpendingperiod
+ \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok.0}%
+ \fi
+ \pgfmathfloatcreate{\the\pgfmathfloat@a@S}{\the\pgfmathfloat@a@Mtok}{\the\pgfmathfloat@a@E}%
+ \pgfmath@smuggleone\pgfmathresult
+ \endgroup
}
% The same as \pgfmathfloatparsenumber, but does not perform sanity checking.
@@ -135,36 +135,36 @@
% register #2, mantissa to dimen register #3 and exponent to count
% register #4.
\def\pgfmathfloattoregisters#1#2#3#4{%
- \expandafter\pgfmathfloat@decompose#1\relax{#2}{#3}{#4}%
+ \expandafter\pgfmathfloat@decompose#1\relax{#2}{#3}{#4}%
}
% the same, but writes the mantissa into a token register.
\def\pgfmathfloattoregisterstok#1#2#3#4{%
- \expandafter\pgfmathfloat@decompose@tok#1\relax{#2}{#3}{#4}%
+ \expandafter\pgfmathfloat@decompose@tok#1\relax{#2}{#3}{#4}%
}
% Extracts the flags of #1 into the count register #2.
\def\pgfmathfloatgetflags#1#2{%
- \expandafter\pgfmathfloat@decompose@F#1\relax{#2}%
+ \expandafter\pgfmathfloat@decompose@F#1\relax{#2}%
}
% Extracts the flags of #1 into the macro #2.
\def\pgfmathfloatgetflagstomacro#1#2{%
- \expandafter\pgfmathfloat@decompose@Fmacro#1\relax{#2}%
+ \expandafter\pgfmathfloat@decompose@Fmacro#1\relax{#2}%
}%
% Extracts the mantissa of #1 into the dimen register #2.
\def\pgfmathfloatgetmantissa#1#2{%
- \expandafter\pgfmathfloat@decompose@M#1\relax{#2}%
+ \expandafter\pgfmathfloat@decompose@M#1\relax{#2}%
}
\let\pgfmathfloatgetmantisse=\pgfmathfloatgetmantissa
% Extracts the mantissa of #1 into the token register #2.
\def\pgfmathfloatgetmantissatok#1#2{%
- \expandafter\pgfmathfloat@decompose@Mtok#1\relax{#2}%
+ \expandafter\pgfmathfloat@decompose@Mtok#1\relax{#2}%
}
\let\pgfmathfloatgetmantissetok=\pgfmathfloatgetmantissatok
% Extracts the exponent of #1 into the count register #2.
\def\pgfmathfloatgetexponent#1#2{%
- \expandafter\pgfmathfloat@decompose@E#1\relax{#2}%
+ \expandafter\pgfmathfloat@decompose@E#1\relax{#2}%
}
@@ -179,22 +179,22 @@
% format.
\def\pgfmathfloat@to@FMeE@style#1{\expandafter\pgfmathfloat@to@FMeE@style@#1\relax\relax}%
\def\pgfmathfloat@to@FMeE@style@#1#2{%
- \ifx#2Y%
- \expandafter\pgfmathfloat@to@FMeE@style@@%
- \else
- \expandafter\pgfmathfloat@to@FMeE@style@error%
- \fi
- #1#2%
+ \ifx#2Y%
+ \expandafter\pgfmathfloat@to@FMeE@style@@%
+ \else
+ \expandafter\pgfmathfloat@to@FMeE@style@error%
+ \fi
+ #1#2%
}%
\def\pgfmathfloat@to@FMeE@style@@#1Y#2e#3]\relax\relax{\def\pgfmathresult{#1#2e#3}}%
\def\pgfmathfloat@to@FMeE@style@error#1\relax\relax{%
- \begingroup
- \pgfmathfloatparsenumber@handleerror{wrong lowlevel format}{#1}{#1}%
- \xdef\pgfmathfloat@decompose@TMP{%
- \noexpand\pgfmathfloatcreate{\the\pgfmathfloat@a@S}{\the\pgfmathfloat@a@Mtok}{\the\pgfmathfloat@a@E}%
- }%
- \endgroup
- \pgfmathfloat@decompose@TMP
+ \begingroup
+ \pgfmathfloatparsenumber@handleerror{wrong lowlevel format}{#1}{#1}%
+ \xdef\pgfmathfloat@decompose@TMP{%
+ \noexpand\pgfmathfloatcreate{\the\pgfmathfloat@a@S}{\the\pgfmathfloat@a@Mtok}{\the\pgfmathfloat@a@E}%
+ }%
+ \endgroup
+ \pgfmathfloat@decompose@TMP
}%
@@ -208,12 +208,12 @@
% \expandafter\pgfmathfloat@decompose\pgfmathresult\relax\pgfmathfloat@a@S\pgfmathfloat@a@M\pgfmathfloat@a@E
% -> the three temp registers contain flags, mantissa and exponent
\def\pgfmathfloat@decompose#1#2{% sanitize!
- \ifx#2Y%
- \expandafter\pgfmathfloat@decompose@%
- \else
- \expandafter\pgfmathfloat@decompose@error%
- \fi
- #1#2%
+ \ifx#2Y%
+ \expandafter\pgfmathfloat@decompose@%
+ \else
+ \expandafter\pgfmathfloat@decompose@error%
+ \fi
+ #1#2%
}
\def\pgfmathfloat@decompose@#1Y#2e#3]\relax#4#5#6{%
#4=#1\relax
@@ -227,12 +227,12 @@
% \expandafter\pgfmathfloat@decompose@tok\pgfmathresult\relax\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
% -> the three temp registers contain flags, mantissa and exponent
\def\pgfmathfloat@decompose@tok#1#2{%
- \ifx#2Y%
- \expandafter\pgfmathfloat@decompose@tok@%
- \else
- \expandafter\pgfmathfloat@decompose@tok@error%
- \fi
- #1#2%
+ \ifx#2Y%
+ \expandafter\pgfmathfloat@decompose@tok@%
+ \else
+ \expandafter\pgfmathfloat@decompose@tok@error%
+ \fi
+ #1#2%
}%
\def\pgfmathfloat@decompose@tok@#1Y#2e#3]\relax#4#5#6{%
#4=#1\relax
@@ -243,44 +243,44 @@
% \expandafter\pgfmathfloat@decompose@tok\pgfmathresult\relax\pgfmathfloat@a@S
% -> \pgfmathfloat@a@S contains the flags field.
\def\pgfmathfloat@decompose@F#1#2{%
- \ifx#2Y%
- \expandafter\pgfmathfloat@decompose@F@%
- \else
- \expandafter\pgfmathfloat@decompose@F@error%
- \fi
- #1#2%
+ \ifx#2Y%
+ \expandafter\pgfmathfloat@decompose@F@%
+ \else
+ \expandafter\pgfmathfloat@decompose@F@error%
+ \fi
+ #1#2%
}%
\def\pgfmathfloat@decompose@Fmacro#1#2{%
- \ifx#2Y%
- \expandafter\pgfmathfloat@decompose@Fmacro@%
- \else
- \expandafter\pgfmathfloat@decompose@F@error%
- \fi
- #1#2%
+ \ifx#2Y%
+ \expandafter\pgfmathfloat@decompose@Fmacro@%
+ \else
+ \expandafter\pgfmathfloat@decompose@F@error%
+ \fi
+ #1#2%
}%
\def\pgfmathfloat@decompose@M#1#2{%
- \ifx#2Y%
- \expandafter\pgfmathfloat@decompose@M@%
- \else
- \expandafter\pgfmathfloat@decompose@M@error%
- \fi
- #1#2%
+ \ifx#2Y%
+ \expandafter\pgfmathfloat@decompose@M@%
+ \else
+ \expandafter\pgfmathfloat@decompose@M@error%
+ \fi
+ #1#2%
}%
\def\pgfmathfloat@decompose@E#1#2{%
- \ifx#2Y%
- \expandafter\pgfmathfloat@decompose@E@%
- \else
- \expandafter\pgfmathfloat@decompose@E@error%
- \fi
- #1#2%
+ \ifx#2Y%
+ \expandafter\pgfmathfloat@decompose@E@%
+ \else
+ \expandafter\pgfmathfloat@decompose@E@error%
+ \fi
+ #1#2%
}%
\def\pgfmathfloat@decompose@Mtok#1#2{%
- \ifx#2Y%
- \expandafter\pgfmathfloat@decompose@Mtok@%
- \else
- \expandafter\pgfmathfloat@decompose@Mtok@error%
- \fi
- #1#2%
+ \ifx#2Y%
+ \expandafter\pgfmathfloat@decompose@Mtok@%
+ \else
+ \expandafter\pgfmathfloat@decompose@Mtok@error%
+ \fi
+ #1#2%
}%
\def\pgfmathfloat@decompose@F@#1Y#2e#3]\relax#4{#4=#1\relax}%
\def\pgfmathfloat@decompose@Fmacro@#1Y#2e#3]\relax#4{\def#4{#1}}%
@@ -289,67 +289,67 @@
\def\pgfmathfloat@decompose@E@#1Y#2e#3]\relax#4{#4=#3\relax}%
\def\pgfmathfloat@decompose@error#1\relax#2#3#4{%
- \begingroup
- \pgfmathfloatparsenumber@handleerror{wrong lowlevel format}{#1}{#1}%
- \xdef\pgfmathfloat@decompose@TMP{%
- \noexpand#2=\the\pgfmathfloat@a@S\space
- \noexpand#3=\the\pgfmathfloat@a@Mtok pt
- \noexpand#4=\the\pgfmathfloat@a@E\space
- }%
- \endgroup
- \pgfmathfloat@decompose@TMP
+ \begingroup
+ \pgfmathfloatparsenumber@handleerror{wrong lowlevel format}{#1}{#1}%
+ \xdef\pgfmathfloat@decompose@TMP{%
+ \noexpand#2=\the\pgfmathfloat@a@S\space
+ \noexpand#3=\the\pgfmathfloat@a@Mtok pt
+ \noexpand#4=\the\pgfmathfloat@a@E\space
+ }%
+ \endgroup
+ \pgfmathfloat@decompose@TMP
}%
\def\pgfmathfloat@decompose@tok@error#1\relax#2#3#4{%
- \begingroup
- \pgfmathfloatparsenumber@handleerror{wrong lowlevel format}{#1}{#1}%
- \xdef\pgfmathfloat@decompose@TMP{%
- \noexpand#2=\the\pgfmathfloat@a@S\space
- \noexpand#3={\the\pgfmathfloat@a@Mtok}%
- \noexpand#4=\the\pgfmathfloat@a@E\space
- }%
- \endgroup
- \pgfmathfloat@decompose@TMP
+ \begingroup
+ \pgfmathfloatparsenumber@handleerror{wrong lowlevel format}{#1}{#1}%
+ \xdef\pgfmathfloat@decompose@TMP{%
+ \noexpand#2=\the\pgfmathfloat@a@S\space
+ \noexpand#3={\the\pgfmathfloat@a@Mtok}%
+ \noexpand#4=\the\pgfmathfloat@a@E\space
+ }%
+ \endgroup
+ \pgfmathfloat@decompose@TMP
}%
\def\pgfmathfloat@decompose@F@error#1\relax#2{%
- \begingroup
- \pgfmathfloatparsenumber@handleerror{wrong lowlevel format}{#1}{#1}%
- \xdef\pgfmathfloat@decompose@TMP{\noexpand#2=\the\pgfmathfloat@a@S\space}%
- \endgroup
- \pgfmathfloat@decompose@TMP
+ \begingroup
+ \pgfmathfloatparsenumber@handleerror{wrong lowlevel format}{#1}{#1}%
+ \xdef\pgfmathfloat@decompose@TMP{\noexpand#2=\the\pgfmathfloat@a@S\space}%
+ \endgroup
+ \pgfmathfloat@decompose@TMP
}%
\def\pgfmathfloat@decompose@M@error#1\relax#2{%
- \begingroup
- \pgfmathfloatparsenumber@handleerror{wrong lowlevel format}{#1}{#1}%
- \xdef\pgfmathfloat@decompose@TMP{\noexpand#2=\the\pgfmathfloat@a@Mtok pt }%
- \endgroup
- \pgfmathfloat@decompose@TMP
+ \begingroup
+ \pgfmathfloatparsenumber@handleerror{wrong lowlevel format}{#1}{#1}%
+ \xdef\pgfmathfloat@decompose@TMP{\noexpand#2=\the\pgfmathfloat@a@Mtok pt }%
+ \endgroup
+ \pgfmathfloat@decompose@TMP
}%
\def\pgfmathfloat@decompose@Mtok@error#1\relax#2{%
- \begingroup
- \pgfmathfloatparsenumber@handleerror{wrong lowlevel format}{#1}{#1}%
- \xdef\pgfmathfloat@decompose@TMP{\noexpand#2={\the\pgfmathfloat@a@Mtok}}%
- \endgroup
- \pgfmathfloat@decompose@TMP
+ \begingroup
+ \pgfmathfloatparsenumber@handleerror{wrong lowlevel format}{#1}{#1}%
+ \xdef\pgfmathfloat@decompose@TMP{\noexpand#2={\the\pgfmathfloat@a@Mtok}}%
+ \endgroup
+ \pgfmathfloat@decompose@TMP
}%
\def\pgfmathfloat@decompose@E@error#1\relax#2{%
- \begingroup
- \pgfmathfloatparsenumber@handleerror{wrong lowlevel format}{#1}{#1}%
- \xdef\pgfmathfloat@decompose@TMP{\noexpand#2=\the\pgfmathfloat@a@E\space}%
- \endgroup
- \pgfmathfloat@decompose@TMP
+ \begingroup
+ \pgfmathfloatparsenumber@handleerror{wrong lowlevel format}{#1}{#1}%
+ \xdef\pgfmathfloat@decompose@TMP{\noexpand#2=\the\pgfmathfloat@a@E\space}%
+ \endgroup
+ \pgfmathfloat@decompose@TMP
}%
% Takes a floating point number #1 as input and writes flags to macro
% #2, mantissa to macro #3 and exponent to macro #4.
\def\pgfmathfloattomacro#1#2#3#4{%
- \begingroup
- \expandafter\pgfmathfloat@decompose@tok#1\relax\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
- \xdef\pgfmathfloat@glob@TMP{%
- \noexpand\def\noexpand#2{\the\pgfmathfloat@a@S}%
- \noexpand\def\noexpand#3{\the\pgfmathfloat@a@Mtok}%
- \noexpand\def\noexpand#4{\the\pgfmathfloat@a@E}%
- }%
- \endgroup
- \pgfmathfloat@glob@TMP
+ \begingroup
+ \expandafter\pgfmathfloat@decompose@tok#1\relax\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
+ \xdef\pgfmathfloat@glob@TMP{%
+ \noexpand\def\noexpand#2{\the\pgfmathfloat@a@S}%
+ \noexpand\def\noexpand#3{\the\pgfmathfloat@a@Mtok}%
+ \noexpand\def\noexpand#4{\the\pgfmathfloat@a@E}%
+ }%
+ \endgroup
+ \pgfmathfloat@glob@TMP
}
@@ -358,7 +358,7 @@
%
% All arguments are characters and will be expanded using '\edef'.
\def\pgfmathfloatcreate#1#2#3{%
- \edef\pgfmathresult{#1Y#2e#3]}%
+ \edef\pgfmathresult{#1Y#2e#3]}%
}%
% This is the character present in any low-level floating point
% number. It is assumed to be the SECOND character of a float (after
@@ -373,54 +373,54 @@
% \pgfmathfloattofixed{142e1}
% -> \pgfmathresult = 42.0
\def\pgfmathfloattofixed@#1{%
- \begingroup
- \expandafter\pgfmathfloat@decompose@tok#1\relax\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
- \ifcase\pgfmathfloat@a@S
- \def\pgfmathresult{0.0}%
- \or
- \expandafter\pgfmathfloattofixed@impl\the\pgfmathfloat@a@Mtok\relax
- \or
- \expandafter\pgfmathfloattofixed@impl\the\pgfmathfloat@a@Mtok\relax
- \pgfmathfloat@a@Mtok=\expandafter{\pgfmathresult}%
- \edef\pgfmathresult{-\the\pgfmathfloat@a@Mtok}%
- \or\def\pgfmathresult{nan}%
- \or\def\pgfmathresult{inf}%
- \or\def\pgfmathresult{-inf}%
- \fi
- \pgfmath@smuggleone\pgfmathresult
- \endgroup
+ \begingroup
+ \expandafter\pgfmathfloat@decompose@tok#1\relax\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
+ \ifcase\pgfmathfloat@a@S
+ \def\pgfmathresult{0.0}%
+ \or
+ \expandafter\pgfmathfloattofixed@impl\the\pgfmathfloat@a@Mtok\relax
+ \or
+ \expandafter\pgfmathfloattofixed@impl\the\pgfmathfloat@a@Mtok\relax
+ \pgfmathfloat@a@Mtok=\expandafter{\pgfmathresult}%
+ \edef\pgfmathresult{-\the\pgfmathfloat@a@Mtok}%
+ \or\def\pgfmathresult{nan}%
+ \or\def\pgfmathresult{inf}%
+ \or\def\pgfmathresult{-inf}%
+ \fi
+ \pgfmath@smuggleone\pgfmathresult
+ \endgroup
}
\let\pgfmathfloattofixed=\pgfmathfloattofixed@
% Converts a float to an integer (in integer format).
%
-% @see \pgfmathfloatint
+% @see \pgfmathfloatint
\def\pgfmathfloattoint#1{%
- \pgfmathfloattofixed{#1}%
- \expandafter\pgfmathfloattoint@@\pgfmathresult\relax
+ \pgfmathfloattofixed{#1}%
+ \expandafter\pgfmathfloattoint@@\pgfmathresult\relax
}%
\def\pgfmathfloattoint@@#1.#2\relax{%
- \def\pgfmathresult{#1}%
+ \def\pgfmathresult{#1}%
}%
% Converts a floating point number to scientific format 1.234e5.
%
% This operation is very fast.
\def\pgfmathfloattosci@#1{%
- \begingroup
- \expandafter\pgfmathfloat@decompose@tok#1\relax\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
- \ifcase\pgfmathfloat@a@S
- \def\pgfmathresult{0.0e0}%
- \or
- \edef\pgfmathresult{\the\pgfmathfloat@a@Mtok e\the\pgfmathfloat@a@E}%
- \or
- \edef\pgfmathresult{-\the\pgfmathfloat@a@Mtok e\the\pgfmathfloat@a@E}%
- \or\def\pgfmathresult{nan}%
- \or\def\pgfmathresult{inf}%
- \or\def\pgfmathresult{-inf}%
- \fi
- \pgfmath@smuggleone\pgfmathresult
- \endgroup
+ \begingroup
+ \expandafter\pgfmathfloat@decompose@tok#1\relax\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
+ \ifcase\pgfmathfloat@a@S
+ \def\pgfmathresult{0.0e0}%
+ \or
+ \edef\pgfmathresult{\the\pgfmathfloat@a@Mtok e\the\pgfmathfloat@a@E}%
+ \or
+ \edef\pgfmathresult{-\the\pgfmathfloat@a@Mtok e\the\pgfmathfloat@a@E}%
+ \or\def\pgfmathresult{nan}%
+ \or\def\pgfmathresult{inf}%
+ \or\def\pgfmathresult{-inf}%
+ \fi
+ \pgfmath@smuggleone\pgfmathresult
+ \endgroup
}%
\let\pgfmathfloattosci=\pgfmathfloattosci@
@@ -430,36 +430,36 @@
\def\pgfmathfloatvalueof#1{\expandafter\pgfmathfloatvalueof@@#1@@}%
% Make it fool proof such that the following arguments work:
-% \pgfmathfloatvalueof{1Y1.0e1} -> 1.0e1
-% \pgfmathfloatvalueof{2Y1.0e1} -> -1.0e1
+% \pgfmathfloatvalueof{1Y1.0e1} -> 1.0e1
+% \pgfmathfloatvalueof{2Y1.0e1} -> -1.0e1
% and wrong arguments as well:
-% \pgfmathfloatvalueof{1} -> 1
-% \pgfmathfloatvalueof{1e2} -> 1e2
+% \pgfmathfloatvalueof{1} -> 1
+% \pgfmathfloatvalueof{1e2} -> 1e2
\def\pgfmathfloatvalueof@@#1#2{%
- \if#2Y%
- % keep in mind that \pgfmathfloatvalueof should be expandable!
- % We must not use \let here. Let's hope that #1 and #2 are
- % single tokens (not something which was enclosed by curly
- % braces...)
- \expandafter\pgfmathfloatvalueof@@@\expandafter#1\expandafter#2%
- \else
- % Oh - no float!? Ok, we cannot report errors in this context.
- % So: make it a feature and return the input argument as-is.
- % Might be useful, in fact...
- \expandafter\pgfmathfloatvalueof@abort\expandafter#1\expandafter#2%
- \fi
+ \if#2Y%
+ % keep in mind that \pgfmathfloatvalueof should be expandable!
+ % We must not use \let here. Let's hope that #1 and #2 are
+ % single tokens (not something which was enclosed by curly
+ % braces...)
+ \expandafter\pgfmathfloatvalueof@@@\expandafter#1\expandafter#2%
+ \else
+ % Oh - no float!? Ok, we cannot report errors in this context.
+ % So: make it a feature and return the input argument as-is.
+ % Might be useful, in fact...
+ \expandafter\pgfmathfloatvalueof@abort\expandafter#1\expandafter#2%
+ \fi
}
\def\pgfmathfloatvalueof@@@#1Y#2e#3]@@{%
- \ifcase#1 %
- 0.0e0%
- \or
- #2e#3%
- \or
- -#2e#3%
- \or nan%
- \or inf%
- \or -inf%
- \fi
+ \ifcase#1 %
+ 0.0e0%
+ \or
+ #2e#3%
+ \or
+ -#2e#3%
+ \or nan%
+ \or inf%
+ \or -inf%
+ \fi
}%
\def\pgfmathfloatvalueof@abort#1@@{#1}%
@@ -472,7 +472,7 @@
% See \pgfmathroundtozerofill if you want trailing zeros and fixed
% width.
%
-% This method is PURELY text based and can work with arbitrary
+% This method is PURELY text based and can work with arbirtrary
% precision (well, limited to TeX's stack size and integer size).
%
% Examples:
@@ -487,16 +487,16 @@
%
% SIDE EFFECT: the global variable \ifpgfmathfloatroundhasperiod will be set.
\def\pgfmathroundto#1{%
- \pgfmathfloatroundhasperiodtrue
- \begingroup
- \pgfmathfloat@fixed@digits@after@periodfalse
- \pgfmathroundto@impl{#1}%
- \pgfmath@smuggleone\pgfmathresult
- \endgroup
+ \pgfmathfloatroundhasperiodtrue
+ \begingroup
+ \pgfmathfloat@fixed@digits@after@periodfalse
+ \pgfmathroundto@impl{#1}%
+ \pgfmath@smuggleone\pgfmathresult
+ \endgroup
}
-% Overloaded method.
+% Overloaded method.
%
% This variant always uses a FIXED number behind the period and fills
% in zeros if necessary.
@@ -509,255 +509,255 @@
%
% SIDE EFFECT: the global variable \ifpgfmathfloatroundhasperiod will be set.
\def\pgfmathroundtozerofill#1{%
- \pgfmathfloatroundhasperiodtrue
- \begingroup
- \pgfmathfloat@fixed@digits@after@periodtrue
- \pgfmathroundto@impl{#1}%
- \pgfmath@smuggleone\pgfmathresult
- \endgroup
+ \pgfmathfloatroundhasperiodtrue
+ \begingroup
+ \pgfmathfloat@fixed@digits@after@periodtrue
+ \pgfmathroundto@impl{#1}%
+ \pgfmath@smuggleone\pgfmathresult
+ \endgroup
}
% see \pgfmathprintnumber@fixed@style for docs
\def\pgfmathprintnumber@fixed@styleDEFAULT#1#2#3e#4\relax{%
- \begingroup
- \pgfkeysgetvalue{/pgf/number format/set decimal separator}\pgfmathprintnumber@fixed@styleDEFAULT@DEC@SEP
- \pgfkeysgetvalue{/pgf/number format/@dec sep mark}\pgfmathprintnumber@fixed@styleDEFAULT@DEC@SEP@MARK
- \pgfkeysgetvalue{/pgf/number format/set thousands separator}\pgfmathprintnumber@fixed@styleDEFAULT@THOUSAND@SEP
- \c@pgf@counta=#4\relax % it is the exponent here.
- \ifnum#2=0
- \c@pgf@counta=0
- \fi
- \def\pgfmathresult{}%
- \ifpgfmathfloatroundhasperiod
- \expandafter\pgfmathprintnumber@fixed@styleDEFAULT@impl@period#1\pgfmathfloat@EOI
- \else
- \expandafter\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod#1\pgfmathfloat@EOI\pgfmathfloat@EOI\pgfmathfloat@EOI%
- \begingroup
- \toks0=\expandafter{\pgfmathresult}%
- \toks1=\expandafter{\pgfmathprintnumber@fixed@styleDEFAULT@DEC@SEP@MARK}%
- \xdef\pgfmathfloat@glob@TMP{\the\toks0 \the\toks1 }%
- \endgroup
- \let\pgfmathresult=\pgfmathfloat@glob@TMP
- \fi
- \pgfmath@smuggleone\pgfmathresult
- \endgroup
+ \begingroup
+ \pgfkeysgetvalue{/pgf/number format/set decimal separator}\pgfmathprintnumber@fixed@styleDEFAULT@DEC@SEP
+ \pgfkeysgetvalue{/pgf/number format/@dec sep mark}\pgfmathprintnumber@fixed@styleDEFAULT@DEC@SEP@MARK
+ \pgfkeysgetvalue{/pgf/number format/set thousands separator}\pgfmathprintnumber@fixed@styleDEFAULT@THOUSAND@SEP
+ \c@pgf@counta=#4\relax % it is the exponent here.
+ \ifnum#2=0
+ \c@pgf@counta=0
+ \fi
+ \def\pgfmathresult{}%
+ \ifpgfmathfloatroundhasperiod
+ \expandafter\pgfmathprintnumber@fixed@styleDEFAULT@impl@period#1\pgfmathfloat@EOI
+ \else
+ \expandafter\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod#1\pgfmathfloat@EOI\pgfmathfloat@EOI\pgfmathfloat@EOI%
+ \begingroup
+ \toks0=\expandafter{\pgfmathresult}%
+ \toks1=\expandafter{\pgfmathprintnumber@fixed@styleDEFAULT@DEC@SEP@MARK}%
+ \xdef\pgfmathfloat@glob@TMP{\the\toks0 \the\toks1 }%
+ \endgroup
+ \let\pgfmathresult=\pgfmathfloat@glob@TMP
+ \fi
+ \pgfmath@smuggleone\pgfmathresult
+ \endgroup
}
\def\pgfmathprintnumber@fixed@styleDEFAULT@impl@period#1.#2\pgfmathfloat@EOI{%
- \ifpgfmathprintnumberskipzeroperiod
- \def\pgfmathfloat@loc@TMPb{#1}%
- \ifx\pgfmathfloatparsenumber@tok@ZERO\pgfmathfloat@loc@TMPb
- \else
- \def\pgfmathfloat@loc@TMPc{-0}%
- \ifx\pgfmathfloat@loc@TMPc\pgfmathfloat@loc@TMPb
- \def\pgfmathresult{-}%
- \else
- \def\pgfmathfloat@loc@TMPc{+0}%
- \ifx\pgfmathfloat@loc@TMPc\pgfmathfloat@loc@TMPb
- \def\pgfmathresult{+}%
- \else
- \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod#1\pgfmathfloat@EOI\pgfmathfloat@EOI\pgfmathfloat@EOI
- \fi
- \fi
- \fi
- \else
- \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod#1\pgfmathfloat@EOI\pgfmathfloat@EOI\pgfmathfloat@EOI
- \fi
- \ifpgfmathprintnumber@thousand@sep@in@fractional
- \let\pgfmathresultfractional\pgfutil@empty%
- \pgfmathprintnumber@thousand@sep@in@fractional#2MMMM\@@
- \else
- \def\pgfmathresultfractional{#2}%
- \fi
- \begingroup
- \toks0=\expandafter{\pgfmathresult}%
- \toks1=\expandafter{\pgfmathprintnumber@fixed@styleDEFAULT@DEC@SEP@MARK}%
- \toks2=\expandafter{\pgfmathprintnumber@fixed@styleDEFAULT@DEC@SEP}%
- \toks3=\expandafter{\pgfmathresultfractional}%
- \xdef\pgfmathfloat@glob@TMP{\the\toks0 \the\toks1 \the\toks2 \the\toks3 }%
- \endgroup
- \let\pgfmathresult=\pgfmathfloat@glob@TMP
+ \ifpgfmathprintnumberskipzeroperiod
+ \def\pgfmathfloat@loc@TMPb{#1}%
+ \ifx\pgfmathfloatparsenumber@tok@ZERO\pgfmathfloat@loc@TMPb
+ \else
+ \def\pgfmathfloat@loc@TMPc{-0}%
+ \ifx\pgfmathfloat@loc@TMPc\pgfmathfloat@loc@TMPb
+ \def\pgfmathresult{-}%
+ \else
+ \def\pgfmathfloat@loc@TMPc{+0}%
+ \ifx\pgfmathfloat@loc@TMPc\pgfmathfloat@loc@TMPb
+ \def\pgfmathresult{+}%
+ \else
+ \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod#1\pgfmathfloat@EOI\pgfmathfloat@EOI\pgfmathfloat@EOI
+ \fi
+ \fi
+ \fi
+ \else
+ \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod#1\pgfmathfloat@EOI\pgfmathfloat@EOI\pgfmathfloat@EOI
+ \fi
+ \ifpgfmathprintnumber@thousand@sep@in@fractional
+ \let\pgfmathresultfractional\pgfutil@empty%
+ \pgfmathprintnumber@thousand@sep@in@fractional#2MMMM\@@
+ \else
+ \def\pgfmathresultfractional{#2}%
+ \fi
+ \begingroup
+ \toks0=\expandafter{\pgfmathresult}%
+ \toks1=\expandafter{\pgfmathprintnumber@fixed@styleDEFAULT@DEC@SEP@MARK}%
+ \toks2=\expandafter{\pgfmathprintnumber@fixed@styleDEFAULT@DEC@SEP}%
+ \toks3=\expandafter{\pgfmathresultfractional}%
+ \xdef\pgfmathfloat@glob@TMP{\the\toks0 \the\toks1 \the\toks2 \the\toks3 }%
+ \endgroup
+ \let\pgfmathresult=\pgfmathfloat@glob@TMP
}%
% assigns \pgfmathresult such that it contains the formatted result.
% It assumes that none of the following tokens contains a period.
\def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod{%
- \ifx\pgfmathprintnumber@fixed@styleDEFAULT@THOUSAND@SEP\pgfutil@empty
- \def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT{%
- \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@printall}%
- \else
- \ifnum\c@pgf@counta<0\relax % exponent of the number in this context
- \def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT{%
- \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@printall}%
- \else
- \ifnum\c@pgf@counta<\pgfkeysvalueof{/pgf/number format/min exponent for 1000 sep}\relax
- \def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT{%
- \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@printall}%
- \else
- \advance\c@pgf@counta by1 % counta:= total number of digits, N.
- \c@pgf@countb=\c@pgf@counta
- \divide\c@pgf@countb by3 % countb := N DIV 3
- \c@pgf@countc=\c@pgf@countb
- \multiply\c@pgf@countc by3
- \advance\c@pgf@counta by-\c@pgf@countc% now counta := N MOD 3
- \def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT{%
- \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@printsign
- }%
- \fi
- \fi
- \fi
- \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT
+ \ifx\pgfmathprintnumber@fixed@styleDEFAULT@THOUSAND@SEP\pgfutil@empty
+ \def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT{%
+ \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@printall}%
+ \else
+ \ifnum\c@pgf@counta<0\relax % exponent of the number in this context
+ \def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT{%
+ \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@printall}%
+ \else
+ \ifnum\c@pgf@counta<\pgfkeysvalueof{/pgf/number format/min exponent for 1000 sep}\relax
+ \def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT{%
+ \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@printall}%
+ \else
+ \advance\c@pgf@counta by1 % counta:= total number of digits, N.
+ \c@pgf@countb=\c@pgf@counta
+ \divide\c@pgf@countb by3 % countb := N DIV 3
+ \c@pgf@countc=\c@pgf@countb
+ \multiply\c@pgf@countc by3
+ \advance\c@pgf@counta by-\c@pgf@countc% now counta := N MOD 3
+ \def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT{%
+ \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@printsign
+ }%
+ \fi
+ \fi
+ \fi
+ \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT
}
\def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@printsign#1{%
- \def\pgfmathfloat@loc@TMPb{#1}%
- \ifx\pgfmathfloat@loc@TMPb\pgfmathfloatparsenumber@tok@MINUS
- \expandafter\def\expandafter\pgfmathresult\expandafter{\pgfmathresult #1}%
- \let\pgfmathfloat@loc@TMPb=\pgfutil@empty
- \else
- \ifx\pgfmathfloat@loc@TMPb\pgfmathfloatparsenumber@tok@PLUS
- \expandafter\def\expandafter\pgfmathresult\expandafter{\pgfmathresult #1}%
- \let\pgfmathfloat@loc@TMPb=\pgfutil@empty
- \else
- \ifpgfmathprintnumber@showpositive
- \expandafter\def\expandafter\pgfmathresult\expandafter{\pgfmathresult +}%
- \fi
- \fi
- \fi
- \ifnum\c@pgf@counta>0 % \c@pgf@counta = N MOD 3 in this context
- \def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT{%
- \expandafter\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@printtrailingdigits\pgfmathfloat@loc@TMPb
- }%
- \else
- \def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT{%
- \expandafter\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@counteverythird\pgfmathfloat@loc@TMPb
- }%
- \fi
- \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT
+ \def\pgfmathfloat@loc@TMPb{#1}%
+ \ifx\pgfmathfloat@loc@TMPb\pgfmathfloatparsenumber@tok@MINUS
+ \expandafter\def\expandafter\pgfmathresult\expandafter{\pgfmathresult #1}%
+ \let\pgfmathfloat@loc@TMPb=\pgfutil@empty
+ \else
+ \ifx\pgfmathfloat@loc@TMPb\pgfmathfloatparsenumber@tok@PLUS
+ \expandafter\def\expandafter\pgfmathresult\expandafter{\pgfmathresult #1}%
+ \let\pgfmathfloat@loc@TMPb=\pgfutil@empty
+ \else
+ \ifpgfmathprintnumber@showpositive
+ \expandafter\def\expandafter\pgfmathresult\expandafter{\pgfmathresult +}%
+ \fi
+ \fi
+ \fi
+ \ifnum\c@pgf@counta>0 % \c@pgf@counta = N MOD 3 in this context
+ \def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT{%
+ \expandafter\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@printtrailingdigits\pgfmathfloat@loc@TMPb
+ }%
+ \else
+ \def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT{%
+ \expandafter\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@counteverythird\pgfmathfloat@loc@TMPb
+ }%
+ \fi
+ \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT
}
\def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@printtrailingdigits#1#2{%
- \ifcase\c@pgf@counta % = N MOD 3 in this context
- % does not happen per construction
- \or
- \expandafter\def\expandafter\pgfmathresult\expandafter{\pgfmathresult #1}%
- \def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT{%
- \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@counteverythird#2%
- }%
- \or
- \expandafter\def\expandafter\pgfmathresult\expandafter{\pgfmathresult #1#2}%
- \def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT{%
- \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@counteverythird%
- }%
- \fi
- \ifnum\c@pgf@countb>0\relax % \c@pgf@countb = N DIV 3 in this context
- \begingroup
- \toks0=\expandafter{\pgfmathresult}%
- \toks1=\expandafter{\pgfmathprintnumber@fixed@styleDEFAULT@THOUSAND@SEP}%
- \xdef\pgfmathfloat@glob@TMP{\the\toks0 \the\toks1 }%
- \endgroup
- \let\pgfmathresult=\pgfmathfloat@glob@TMP
- \fi
- \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT
+ \ifcase\c@pgf@counta % = N MOD 3 in this context
+ % does not happen per construction
+ \or
+ \expandafter\def\expandafter\pgfmathresult\expandafter{\pgfmathresult #1}%
+ \def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT{%
+ \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@counteverythird#2%
+ }%
+ \or
+ \expandafter\def\expandafter\pgfmathresult\expandafter{\pgfmathresult #1#2}%
+ \def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT{%
+ \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@counteverythird%
+ }%
+ \fi
+ \ifnum\c@pgf@countb>0\relax % \c@pgf@countb = N DIV 3 in this context
+ \begingroup
+ \toks0=\expandafter{\pgfmathresult}%
+ \toks1=\expandafter{\pgfmathprintnumber@fixed@styleDEFAULT@THOUSAND@SEP}%
+ \xdef\pgfmathfloat@glob@TMP{\the\toks0 \the\toks1 }%
+ \endgroup
+ \let\pgfmathresult=\pgfmathfloat@glob@TMP
+ \fi
+ \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT
}
\def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@counteverythird#1#2#3{%
- \ifnum\c@pgf@countb>0\relax
- \expandafter\def\expandafter\pgfmathresult\expandafter{\pgfmathresult #1#2#3}%
- \advance\c@pgf@countb by-1
- \ifnum\c@pgf@countb>0\relax
- \begingroup
- \toks0=\expandafter{\pgfmathresult}%
- \toks1=\expandafter{\pgfmathprintnumber@fixed@styleDEFAULT@THOUSAND@SEP}%
- \xdef\pgfmathfloat@glob@TMP{\the\toks0 \the\toks1 }%
- \endgroup
- \let\pgfmathresult=\pgfmathfloat@glob@TMP
- \fi
- \def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT{%
- \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@counteverythird%
- }%
- \else
- % in this case, #1#2#3 are expected to be
- % \pgfmathfloat@EOI\pgfmathfloat@EOI\pgfmathfloat@EOI
- %--------------------------------------------------
- % \def\pgfmathfloat@loc@TMPb{\pgfmathfloat@EOI\pgfmathfloat@EOI\pgfmathfloat@EOI}%
- % \def\pgfmathfloat@loc@TMPc{#1#2#3}%
- % \ifx\pgfmathfloat@loc@TMPc\pgfmathfloat@loc@TMPb
- % \else
- % \pgfmath@error{INTERNAL ERROR in fixed style - The input sequence did not terminate as expected; which indicates a wrong exponent argument provided to \string\pgfmathprintnumber@fixed@style}{}%
- % \fi
- %--------------------------------------------------
- \let\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT=\relax
- \fi
- \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT
+ \ifnum\c@pgf@countb>0\relax
+ \expandafter\def\expandafter\pgfmathresult\expandafter{\pgfmathresult #1#2#3}%
+ \advance\c@pgf@countb by-1
+ \ifnum\c@pgf@countb>0\relax
+ \begingroup
+ \toks0=\expandafter{\pgfmathresult}%
+ \toks1=\expandafter{\pgfmathprintnumber@fixed@styleDEFAULT@THOUSAND@SEP}%
+ \xdef\pgfmathfloat@glob@TMP{\the\toks0 \the\toks1 }%
+ \endgroup
+ \let\pgfmathresult=\pgfmathfloat@glob@TMP
+ \fi
+ \def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT{%
+ \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@counteverythird%
+ }%
+ \else
+ % in thise case, #1#2#3 are expected to be
+ % \pgfmathfloat@EOI\pgfmathfloat@EOI\pgfmathfloat@EOI
+ %--------------------------------------------------
+ % \def\pgfmathfloat@loc@TMPb{\pgfmathfloat@EOI\pgfmathfloat@EOI\pgfmathfloat@EOI}%
+ % \def\pgfmathfloat@loc@TMPc{#1#2#3}%
+ % \ifx\pgfmathfloat@loc@TMPc\pgfmathfloat@loc@TMPb
+ % \else
+ % \pgfmath@error{INTERNAL ERROR in fixed style - The input sequence did not terminate as expected; which indicates a wrong exponent argument provided to \string\pgfmathprintnumber@fixed@style}{}%
+ % \fi
+ %--------------------------------------------------
+ \let\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT=\relax
+ \fi
+ \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT
}
% \pgfmathprintnumber@thousand@sep@in@fractional 01234525MMMM\@@
% ->
% 012<sep>345<sep>25
\def\pgfmathprintnumber@thousand@sep@in@fractional#1#2#3#4{%
- \if#4M%
- % Ok, no further separator
- \def\pgfmathprint@next{\pgfmathprintnumber@thousand@sep@in@fractional@finish#1#2#3#4}%
- \else
- \begingroup
- \toks0=\expandafter{\pgfmathresultfractional}%
- \toks1={#1#2#3}%
- \toks2=\expandafter{\pgfmathprintnumber@fixed@styleDEFAULT@THOUSAND@SEP}%
- \xdef\pgfmathfloat@glob@TMP{\the\toks0 \the\toks1 \the\toks2 }%
- \endgroup
- \let\pgfmathresultfractional=\pgfmathfloat@glob@TMP
- \def\pgfmathprint@next{\pgfmathprintnumber@thousand@sep@in@fractional#4}%
- \fi
- \pgfmathprint@next
+ \if#4M%
+ % Ok, no further separator
+ \def\pgfmathprint@next{\pgfmathprintnumber@thousand@sep@in@fractional@finish#1#2#3#4}%
+ \else
+ \begingroup
+ \toks0=\expandafter{\pgfmathresultfractional}%
+ \toks1={#1#2#3}%
+ \toks2=\expandafter{\pgfmathprintnumber@fixed@styleDEFAULT@THOUSAND@SEP}%
+ \xdef\pgfmathfloat@glob@TMP{\the\toks0 \the\toks1 \the\toks2 }%
+ \endgroup
+ \let\pgfmathresultfractional=\pgfmathfloat@glob@TMP
+ \def\pgfmathprint@next{\pgfmathprintnumber@thousand@sep@in@fractional#4}%
+ \fi
+ \pgfmathprint@next
}%
\def\pgfmathprintnumber@thousand@sep@in@fractional@finish#1M{%
- \expandafter\def\expandafter\pgfmathresultfractional\expandafter{\pgfmathresultfractional #1}%
- \pgfmathprintnumber@thousand@sep@in@fractional@finish@
+ \expandafter\def\expandafter\pgfmathresultfractional\expandafter{\pgfmathresultfractional #1}%
+ \pgfmathprintnumber@thousand@sep@in@fractional@finish@
}%
\def\pgfmathprintnumber@thousand@sep@in@fractional@finish@#1\@@{}%
\def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@printall#1{%
- \def\pgfmathfloat@loc@TMPb{#1}%
- \let\pgfmathfloat@loc@TMPc=\pgfutil@empty
- \ifx\pgfmathfloat@loc@TMPb\pgfmathfloatparsenumber@tok@MINUS
- \else
- \ifx\pgfmathfloat@loc@TMPb\pgfmathfloatparsenumber@tok@PLUS
- \else
- \ifpgfmathprintnumber@showpositive
- \def\pgfmathfloat@loc@TMPc{+}%
- \fi
- \fi
- \fi
- \expandafter\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@printall@\pgfmathfloat@loc@TMPc#1%
+ \def\pgfmathfloat@loc@TMPb{#1}%
+ \let\pgfmathfloat@loc@TMPc=\pgfutil@empty
+ \ifx\pgfmathfloat@loc@TMPb\pgfmathfloatparsenumber@tok@MINUS
+ \else
+ \ifx\pgfmathfloat@loc@TMPb\pgfmathfloatparsenumber@tok@PLUS
+ \else
+ \ifpgfmathprintnumber@showpositive
+ \def\pgfmathfloat@loc@TMPc{+}%
+ \fi
+ \fi
+ \fi
+ \expandafter\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@printall@\pgfmathfloat@loc@TMPc#1%
}
\def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@printall@#1\pgfmathfloat@EOI\pgfmathfloat@EOI\pgfmathfloat@EOI{%
- \expandafter\def\expandafter\pgfmathresult\expandafter{\pgfmathresult #1}%
+ \expandafter\def\expandafter\pgfmathresult\expandafter{\pgfmathresult #1}%
}%
% @deprecated. It has been replaced by \pgfmathprintnumber@fixed@styleDEFAULT
% #1 maybe a macro
\def\pgfmathprintnumber@fixed@stylePERIOD#1#2#3e#4\relax{%
- \def\pgfmathresult{#1}%
+ \def\pgfmathresult{#1}%
}
% @deprecated. It has been replaced by \pgfmathprintnumber@fixed@styleDEFAULT
% #1 maybe a macro
\def\pgfmathprintnumber@fixed@styleCOMMA#1#2#3e#4\relax{%
- \ifpgfmathfloatroundhasperiod
- \expandafter\pgfmathprintnumber@fixed@styleCOMMA@impl#1\pgfmathfloat@EOI
- \else
- \def\pgfmathresult{#1}%
- \fi
+ \ifpgfmathfloatroundhasperiod
+ \expandafter\pgfmathprintnumber@fixed@styleCOMMA@impl#1\pgfmathfloat@EOI
+ \else
+ \def\pgfmathresult{#1}%
+ \fi
}
\def\pgfmathprintnumber@fixed@styleCOMMA@impl#1.#2\pgfmathfloat@EOI{\def\pgfmathresult{#1{,}#2}}
% The default style to display fixed point numbers.
%
-% It does not apply numerics, but it is responsible for typesetting the
+% It does not apply numerics, but it is responsable for typesetting the
% rounded number.
% It can access the \ifpgfmathfloatroundhasperiod boolean.
%
% Arguments:
% #1#2#3e#4\relax
-% Input:
+% Input:
% #1 the fixed point number to be displayed (maybe a macro).
% #2#3e#4: the (possibly unformatted) floating point representation
% which belongs to #1. This format is returned (only!) by
@@ -766,7 +766,7 @@
\let\pgfmathprintnumber@fixed@style=\pgfmathprintnumber@fixed@styleDEFAULT
-% Rounds a normalized floating point number to \pgfmathfloat@round@precision
+% Rounds a normalized floating point number to \pgfmathfloat@round@precision
% digits precision and writes the result to \pgfmathresult.
%
% This method uses \pgfmathroundto for the mantissa.
@@ -776,13 +776,13 @@
% SIDE EFFECT: the global variable \ifpgfmathfloatroundhasperiod will be set to
% whether the final mantissa #5 has a period or not.
\def\pgfmathfloatround#1{%
- \pgfmathfloatroundhasperiodtrue
- \begingroup
- \pgfmathfloat@fixed@digits@after@periodfalse
- \expandafter\pgfmathfloat@decompose@tok#1\relax\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
- \pgfmathfloatround@impl
- \pgfmath@smuggleone\pgfmathresult
- \endgroup
+ \pgfmathfloatroundhasperiodtrue
+ \begingroup
+ \pgfmathfloat@fixed@digits@after@periodfalse
+ \expandafter\pgfmathfloat@decompose@tok#1\relax\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
+ \pgfmathfloatround@impl
+ \pgfmath@smuggleone\pgfmathresult
+ \endgroup
}
% Overload.
@@ -795,13 +795,13 @@
% SIDE EFFECT: the global variable \ifpgfmathfloatroundhasperiod will be set to
% whether the final mantissa #5 has a period or not.
\def\pgfmathfloatroundzerofill#1{%
- \pgfmathfloatroundhasperiodtrue
- \begingroup
- \pgfmathfloat@fixed@digits@after@periodtrue
- \expandafter\pgfmathfloat@decompose@tok#1\relax\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
- \pgfmathfloatround@impl
- \pgfmath@smuggleone\pgfmathresult
- \endgroup
+ \pgfmathfloatroundhasperiodtrue
+ \begingroup
+ \pgfmathfloat@fixed@digits@after@periodtrue
+ \expandafter\pgfmathfloat@decompose@tok#1\relax\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
+ \pgfmathfloatround@impl
+ \pgfmath@smuggleone\pgfmathresult
+ \endgroup
}
\newif\ifpgfmathfloatround@allow@empty@mantissa
@@ -811,134 +811,134 @@
% #2: mantissa
% #3: exponent
% #4: CODE to display if the mantissa is drawn.
-% This code will be shown just before the exponent.
-% Example: #4=\cdot
+% This code will be shown just before the exponent.
+% Example: #4=\cdot
% #5: CODE to display if the mantissa is NOT draw. (unused currently)
-% Might be used to display '10^1' instead of '1*10^1'.
+% Might be used to display '10^1' instead of '1*10^1'.
% #6: CODE to display the exponent.
\def\pgfmathfloatrounddisplaystyle@shared@impl#1#2e#3\relax#4#5#6{%
- \pgfkeysgetvalue{/pgf/number format/@sci exponent mark}\pgfmathfloatrounddisplaystyle@e@mark
- \ifcase#1\relax
- \pgfmathprintnumber@fixed@style{#2}#1#2e0\relax%
- \expandafter\pgfmathfloatrounddisplaystyle@shared@impl@\expandafter{\pgfmathresult}{#4#6}%
- \or
- \def\pgfmathfloat@loc@TMPa{1}% "should draw mantissa=1"
- \ifpgfmathfloatround@allow@empty@mantissa
- \else
- \ifdim#2pt=\pgfmathfloatround@mantissa@ONE
- \def\pgfmathfloat@loc@TMPa{0}% do not draw it.
- \fi
- \fi
- %
- \if1\pgfmathfloat@loc@TMPa
- \pgfmathprintnumber@fixed@style{#2}#1#2e0\relax%
- \expandafter\pgfmathfloatrounddisplaystyle@shared@impl@\expandafter{\pgfmathresult}{#4#6}%
- \else
- \def\pgfmathfloat@loc@TMPa{0}%
- \pgfmathfloatrounddisplaystyle@shared@impl@{#5}{#6}%
- \fi
- \or
- \def\pgfmathfloat@loc@TMPa{1}% "should draw mantissa=1"
- \ifpgfmathfloatround@allow@empty@mantissa
- \else
- \ifdim#2pt=\pgfmathfloatround@mantissa@ONE
- \def\pgfmathfloat@loc@TMPa{0}% do not draw it.
- \fi
- \fi
- %
- \if1\pgfmathfloat@loc@TMPa
- \pgfmathprintnumber@fixed@style{-#2}#1#2e0\relax%
- \expandafter\pgfmathfloatrounddisplaystyle@shared@impl@\expandafter{\pgfmathresult}{#4#6}%
- \else
- \def\pgfmathfloat@loc@TMPa{0}%
- \pgfmathfloatrounddisplaystyle@shared@impl@{-#5}{#6}%
- \fi
- \or
- \pgfmathfloatrounddisplaystyle@shared@impl@@{\hbox{NaN}}{}%
- \or
- \ifpgfmathprintnumber@showpositive
- \pgfmathfloatrounddisplaystyle@shared@impl@@{+\infty}{}%
- \else
- \pgfmathfloatrounddisplaystyle@shared@impl@@{\infty}{}%
- \fi
- \or
- \pgfmathfloatrounddisplaystyle@shared@impl@@{-\infty}{}%
- \fi
+ \pgfkeysgetvalue{/pgf/number format/@sci exponent mark}\pgfmathfloatrounddisplaystyle@e@mark
+ \ifcase#1\relax
+ \pgfmathprintnumber@fixed@style{#2}#1#2e0\relax%
+ \expandafter\pgfmathfloatrounddisplaystyle@shared@impl@\expandafter{\pgfmathresult}{#4#6}%
+ \or
+ \def\pgfmathfloat@loc@TMPa{1}% "should draw mantissa=1"
+ \ifpgfmathfloatround@allow@empty@mantissa
+ \else
+ \ifdim#2pt=\pgfmathfloatround@mantissa@ONE
+ \def\pgfmathfloat@loc@TMPa{0}% do not draw it.
+ \fi
+ \fi
+ %
+ \if1\pgfmathfloat@loc@TMPa
+ \pgfmathprintnumber@fixed@style{#2}#1#2e0\relax%
+ \expandafter\pgfmathfloatrounddisplaystyle@shared@impl@\expandafter{\pgfmathresult}{#4#6}%
+ \else
+ \def\pgfmathfloat@loc@TMPa{0}%
+ \pgfmathfloatrounddisplaystyle@shared@impl@{#5}{#6}%
+ \fi
+ \or
+ \def\pgfmathfloat@loc@TMPa{1}% "should draw mantissa=1"
+ \ifpgfmathfloatround@allow@empty@mantissa
+ \else
+ \ifdim#2pt=\pgfmathfloatround@mantissa@ONE
+ \def\pgfmathfloat@loc@TMPa{0}% do not draw it.
+ \fi
+ \fi
+ %
+ \if1\pgfmathfloat@loc@TMPa
+ \pgfmathprintnumber@fixed@style{-#2}#1#2e0\relax%
+ \expandafter\pgfmathfloatrounddisplaystyle@shared@impl@\expandafter{\pgfmathresult}{#4#6}%
+ \else
+ \def\pgfmathfloat@loc@TMPa{0}%
+ \pgfmathfloatrounddisplaystyle@shared@impl@{-#5}{#6}%
+ \fi
+ \or
+ \pgfmathfloatrounddisplaystyle@shared@impl@@{\hbox{NaN}}{}%
+ \or
+ \ifpgfmathprintnumber@showpositive
+ \pgfmathfloatrounddisplaystyle@shared@impl@@{+\infty}{}%
+ \else
+ \pgfmathfloatrounddisplaystyle@shared@impl@@{\infty}{}%
+ \fi
+ \or
+ \pgfmathfloatrounddisplaystyle@shared@impl@@{-\infty}{}%
+ \fi
}
% #1: the part before the exponent code
% #2: the part for the exponent code.
\def\pgfmathfloatrounddisplaystyle@shared@impl@#1#2{%
- \pgfmathprintnumber@begingroup
- \toks0={#1}%
- \toks1=\expandafter{\pgfmathfloatrounddisplaystyle@e@mark #2}%
- \xdef\pgfmathfloat@glob@TMP{\the\toks0 \the\toks1 }%
- \pgfmathprintnumber@endgroup
- \let\pgfmathresult=\pgfmathfloat@glob@TMP
+ \pgfmathprintnumber@begingroup
+ \toks0={#1}%
+ \toks1=\expandafter{\pgfmathfloatrounddisplaystyle@e@mark #2}%
+ \xdef\pgfmathfloat@glob@TMP{\the\toks0 \the\toks1 }%
+ \pgfmathprintnumber@endgroup
+ \let\pgfmathresult=\pgfmathfloat@glob@TMP
}%
% Same as \pgfmathfloatrounddisplaystyle@shared@impl@, but it also
% inserts the '@dec sep mark' at the end.
\def\pgfmathfloatrounddisplaystyle@shared@impl@@#1#2{%
- \pgfmathprintnumber@begingroup
- \toks0={#1}%
- \toks1=\expandafter{\pgfmathfloatrounddisplaystyle@e@mark #2}%
- \pgfkeysgetvalue{/pgf/number format/@dec sep mark}\pgfmathprintnumber@fixed@styleDEFAULT@DEC@SEP@MARK
- \toks2=\expandafter{\pgfmathprintnumber@fixed@styleDEFAULT@DEC@SEP@MARK}%
- \xdef\pgfmathfloat@glob@TMP{\the\toks0 \the\toks1 \the\toks2 }%
- \pgfmathprintnumber@endgroup
- \let\pgfmathresult=\pgfmathfloat@glob@TMP
+ \pgfmathprintnumber@begingroup
+ \toks0={#1}%
+ \toks1=\expandafter{\pgfmathfloatrounddisplaystyle@e@mark #2}%
+ \pgfkeysgetvalue{/pgf/number format/@dec sep mark}\pgfmathprintnumber@fixed@styleDEFAULT@DEC@SEP@MARK
+ \toks2=\expandafter{\pgfmathprintnumber@fixed@styleDEFAULT@DEC@SEP@MARK}%
+ \xdef\pgfmathfloat@glob@TMP{\the\toks0 \the\toks1 \the\toks2 }%
+ \pgfmathprintnumber@endgroup
+ \let\pgfmathresult=\pgfmathfloat@glob@TMP
}
\def\pgfmathfloatrounddisplaystyle@std#1#2e#3\relax{%
- \pgfmathfloatrounddisplaystyle@shared@impl#1#2e#3\relax{\cdot}{}{10^{#3}}%
+ \pgfmathfloatrounddisplaystyle@shared@impl#1#2e#3\relax{\cdot}{}{10^{#3}}%
}
\def\pgfmathfloatrounddisplaystyle@subscript#1#2e#3\relax{%
- \pgfmathfloatrounddisplaystyle@shared@impl#1#2e#3\relax{}{1}{_{#3}}%
+ \pgfmathfloatrounddisplaystyle@shared@impl#1#2e#3\relax{}{1}{_{#3}}%
}
\def\pgfmathfloatrounddisplaystyle@superscript#1#2e#3\relax{%
- \pgfmathfloatrounddisplaystyle@shared@impl#1#2e#3\relax{}{1}{^{#3}}%
+ \pgfmathfloatrounddisplaystyle@shared@impl#1#2e#3\relax{}{1}{^{#3}}%
}
\def\pgfmathfloatrounddisplaystyle@e#1#2e#3\relax{%
- \ifnum#3<0\relax
- \pgfmathprintnumber@begingroup
- \count0=#3\relax
- \multiply\count0 by-1
- \xdef\pgfmathfloat@glob@TMP{e{-}\the\count0}%
- \pgfmathprintnumber@endgroup%
- \let\pgfmathresult=\pgfmathfloat@glob@TMP
- \else
- \def\pgfmathresult{e{+}#3}%
- \fi
- \def\pgfmathfloat@loc@TMPb{\pgfmathfloatrounddisplaystyle@shared@impl#1#2e#3\relax{}{1}}%
- \expandafter\pgfmathfloat@loc@TMPb\expandafter{\pgfmathresult}%
+ \ifnum#3<0\relax
+ \pgfmathprintnumber@begingroup
+ \count0=#3\relax
+ \multiply\count0 by-1
+ \xdef\pgfmathfloat@glob@TMP{e{-}\the\count0}%
+ \pgfmathprintnumber@endgroup%
+ \let\pgfmathresult=\pgfmathfloat@glob@TMP
+ \else
+ \def\pgfmathresult{e{+}#3}%
+ \fi
+ \def\pgfmathfloat@loc@TMPb{\pgfmathfloatrounddisplaystyle@shared@impl#1#2e#3\relax{}{1}}%
+ \expandafter\pgfmathfloat@loc@TMPb\expandafter{\pgfmathresult}%
}
\def\pgfmathfloatrounddisplaystyle@E#1#2e#3\relax{%
- \ifnum#3<0\relax
- \pgfmathprintnumber@begingroup
- \count0=#3\relax
- \multiply\count0 by-1
- \xdef\pgfmathfloat@glob@TMP{E{-}\the\count0}%
- \pgfmathprintnumber@endgroup%
- \let\pgfmathresult=\pgfmathfloat@glob@TMP
- \else
- \def\pgfmathresult{E{+}#3}%
- \fi
- \def\pgfmathfloat@loc@TMPb{\pgfmathfloatrounddisplaystyle@shared@impl#1#2e#3\relax{}{1}}%
- \expandafter\pgfmathfloat@loc@TMPb\expandafter{\pgfmathresult}%
+ \ifnum#3<0\relax
+ \pgfmathprintnumber@begingroup
+ \count0=#3\relax
+ \multiply\count0 by-1
+ \xdef\pgfmathfloat@glob@TMP{E{-}\the\count0}%
+ \pgfmathprintnumber@endgroup%
+ \let\pgfmathresult=\pgfmathfloat@glob@TMP
+ \else
+ \def\pgfmathresult{E{+}#3}%
+ \fi
+ \def\pgfmathfloat@loc@TMPb{\pgfmathfloatrounddisplaystyle@shared@impl#1#2e#3\relax{}{1}}%
+ \expandafter\pgfmathfloat@loc@TMPb\expandafter{\pgfmathresult}%
}
\def\pgfmathfloatrounddisplaystyle@generic#1#2e#3\relax{%
- \begingroup
- \pgfkeysvalueof {/pgf/number format/sci generic/@/.@cmd}{#3}{#1}{#2}\pgfeov
- \pgfkeysgetvalue{/pgf/number format/sci generic/mantissa sep}\pgfmathdisplay@aftermantissa
- \pgfkeysgetvalue{/pgf/number format/sci generic/empty mantissa sep}\pgfmathdisplay@nomantissa
- \pgfkeysgetvalue{/pgf/number format/sci generic/exponent}\pgfmathdisplay@e
- \toks0=\expandafter{\pgfmathdisplay@aftermantissa}%
- \toks1=\expandafter{\pgfmathdisplay@nomantissa}%
- \toks2=\expandafter{\pgfmathdisplay@e}%
- \xdef\pgfmathfloat@glob@TMP{\noexpand\pgfmathfloatrounddisplaystyle@shared@impl#1#2e#3\noexpand\relax{\the\toks0}{\the\toks1}{\the\toks2}}%
- \endgroup
- \pgfmathfloat@glob@TMP
+ \begingroup
+ \pgfkeysvalueof {/pgf/number format/sci generic/@/.@cmd}{#3}{#1}{#2}\pgfeov
+ \pgfkeysgetvalue{/pgf/number format/sci generic/mantissa sep}\pgfmathdisplay@aftermantissa
+ \pgfkeysgetvalue{/pgf/number format/sci generic/empty mantissa sep}\pgfmathdisplay@nomantissa
+ \pgfkeysgetvalue{/pgf/number format/sci generic/exponent}\pgfmathdisplay@e
+ \toks0=\expandafter{\pgfmathdisplay@aftermantissa}%
+ \toks1=\expandafter{\pgfmathdisplay@nomantissa}%
+ \toks2=\expandafter{\pgfmathdisplay@e}%
+ \xdef\pgfmathfloat@glob@TMP{\noexpand\pgfmathfloatrounddisplaystyle@shared@impl#1#2e#3\noexpand\relax{\the\toks0}{\the\toks1}{\the\toks2}}%
+ \endgroup
+ \pgfmathfloat@glob@TMP
}
% A macro which takes the argument '<SIGN><MANTISSE>e<EXPONENT>' and
@@ -947,7 +947,7 @@
%
% PRECONDITION:
% the floating point number has already been rounded properly and
-% the mantissa has been rounded correctly.
+% the mantissa has been rounded correcty.
%
% The argument needs to be in the format returned by
% \pgfmathfloat@to@FMeE@style and terminated by '\relax'.
@@ -971,331 +971,331 @@
\newif\ifpgfmathprintnumber@thousand@sep@in@fractional
\pgfkeys{%
- /pgf/number format/.is family,
- /pgf/number format,
- fixed/.code= \pgfmath@set@number@printer{pgfmathprintnumber@FIXED},
- sci/.code= \pgfmath@set@number@printer{pgfmathprintnumber@SCI},
- std/.code= {\pgfmath@set@number@printer{pgfmathprintnumber@STD}\pgfmathprintnumber@STD@setparam{#1}},
- std/.default=,%
- relative round mode/.is choice,
- relative round mode/fixed/.code={\def\pgfmathprintnumber@RELATIVE@choice@roundtofixed{1}},
- relative round mode/mantissa/.code={\def\pgfmathprintnumber@RELATIVE@choice@roundtofixed{0}},
- relative round mode/compatible/.code={\def\pgfmathprintnumber@RELATIVE@choice@roundtofixed{2}},
- % relative={<exponent base 10>}
- relative/.code={%
- \pgfmath@set@number@printer{pgfmathprintnumber@RELATIVE}%
- \pgfmathround@@orig{#1}%
- \expandafter\pgfmathfloattoint@@\pgfmathresult\relax
- \let\pgfmathprintnumber@RELATIVE@param=\pgfmathresult
- },%
- relative/.value required,
- relative*/.style={/pgf/number format/relative={#1},/pgf/number format/relative round mode=fixed},
- every relative/.style=std,
- relative style/.style={/pgf/number format/every relative/.append style={#1}},
- fixed relative/.code= \pgfmath@set@number@printer{pgfmathprintnumber@FIXED@RELATIVE},
- int detect/.code= \pgfmath@set@number@printer{pgfmathprintnumber@INT@DETECT},
- int trunc/.code= \pgfmath@set@number@printer{pgfmathprintnumber@INT@TRUNC},
- frac/.code= \pgfmath@set@number@printer{pgfmathprintnumber@frac},%
- frac TeX/.initial=\frac,
- frac whole format/.code={\def\pgfmathresult{#1}},
- frac denom/.initial=,
- frac whole/.is if=pgfmathprintnumber@frac@whole,
- frac whole=true,
- frac shift/.initial=4,
- frac warning/.is if=pgfmathprintnumber@frac@warn,
- frac warning=true,
- assume math mode/.is if=pgfmathprintnumber@assumemathmode,
- assume math mode/.default=true,
- fixed zerofill/.is if= pgfmathfloat@usezerofill@fixed,
- fixed zerofill/.default=true,
- sci zerofill/.is if= pgfmathfloat@usezerofill@sci,
- sci zerofill/.default=true,
- zerofill/.style= {/pgf/number format/fixed zerofill=#1,/pgf/number format/sci zerofill=#1},
- zerofill/.default= true,
- precision/.store in= \pgfmathfloat@round@precision,
- sci precision/.code={%
- \edef\pgfmathfloat@loc@TMPa{#1}%
- \ifx\pgfmathfloat@loc@TMPa\pgfutil@empty
- \def\pgfmathprintnumber@sci@precision{\pgfmathfloat@round@precision}%
- \else
- \let\pgfmathprintnumber@sci@precision=\pgfmathfloat@loc@TMPa
- \fi
- },%
- sci precision/.default=,
- sci precision=,
- fixed default/.code= {\let\pgfmathprintnumber@fixed@style=\pgfmathprintnumber@fixed@styleDEFAULT},
- set decimal separator/.initial=,
- dec sep/.style={/pgf/number format/set decimal separator={#1}},
- @dec sep mark/.initial=,
- @sci exponent mark/.initial=,
- set thousands separator/.initial=,
- 1000 sep in fractionals/.is if=pgfmathprintnumber@thousand@sep@in@fractional,
- 1000 sep in fractionals/.default=true,
- 1000 sep/.style={/pgf/number format/set thousands separator={#1}},
- min exponent for 1000 sep/.initial=0,
- use period/.style= {/pgf/number format/set decimal separator={.},/pgf/number format/set thousands separator={{{,}}}},
- use comma/.style= {/pgf/number format/set decimal separator={{{,}}},/pgf/number format/set thousands separator={.}},
- showpos/.is if=pgfmathprintnumber@showpositive,
- showpos/.default=true,
- print sign/.is if=pgfmathprintnumber@showpositive,
- print sign/.default=true,
- read comma as period/.is if=pgfmathparsenumber@comma@as@period,
- read comma as period/.default=true,
- skip 0./.is if=pgfmathprintnumberskipzeroperiod,
- skip 0./.default=true,
- skip 0.= false,
- use period,
- sci 10^e/.code= {\let\pgfmathfloatrounddisplaystyle=\pgfmathfloatrounddisplaystyle@std},
- sci 10e/.code= {\let\pgfmathfloatrounddisplaystyle=\pgfmathfloatrounddisplaystyle@std},
- sci e/.code= {\let\pgfmathfloatrounddisplaystyle=\pgfmathfloatrounddisplaystyle@e},
- sci E/.code= {\let\pgfmathfloatrounddisplaystyle=\pgfmathfloatrounddisplaystyle@E},
- sci subscript/.code= {\let\pgfmathfloatrounddisplaystyle=\pgfmathfloatrounddisplaystyle@subscript},
- sci superscript/.code= {\let\pgfmathfloatrounddisplaystyle=\pgfmathfloatrounddisplaystyle@superscript},
- sci generic/.code= {%
- \let\pgfmathfloatrounddisplaystyle=\pgfmathfloatrounddisplaystyle@generic
- \pgfkeysdefargs{/pgf/number format/sci generic/@}%
- {##1##2##3}%
- {\pgfqkeys{/pgf/number format/sci generic}{#1}}%
- },
- sci generic/mantissa sep/.initial=,%
- sci generic/empty mantissa sep/.initial=,%
- sci generic/mantisse sep/.style={/pgf/number format/sci generic/mantissa sep={#1}},%
- sci generic/empty mantisse sep/.style={/pgf/number format/sci generic/empty mantissa sep={#1}},%
- sci generic/exponent/.initial=,%
- sci generic/.value required,
- verbatim/.code={%
- \pgfqkeys{/pgf/number format}{%
- sci generic={mantissa sep=,exponent={e##1}},
- 1000 sep=,
- skip 0.=false,
- print sign=false,
- dec sep=.,
- assume math mode,
- frac TeX=\pgfmathfloatfrac@verbatim,
- frac whole format/.code={\def\pgfmathresult{##1 }},
- @dec sep mark=,
- @sci exponent mark=,
- }%
- },
- retain unit mantissa/.is if=pgfmathfloatround@allow@empty@mantissa,
- retain unit mantissa/.default=true,
- retain unit mantissa=true,
- %
- % allows to replace the implementation, for example
- % 'implementation=\num'. This is experimental -- it is unclear
- % if all consumers work well since they rely on the keys in
- % /pgf/number format.
- implementation/.code={\def\pgfmathprintnumber@protected{#1}},
+ /pgf/number format/.is family,
+ /pgf/number format,
+ fixed/.code= \pgfmath@set@number@printer{pgfmathprintnumber@FIXED},
+ sci/.code= \pgfmath@set@number@printer{pgfmathprintnumber@SCI},
+ std/.code= {\pgfmath@set@number@printer{pgfmathprintnumber@STD}\pgfmathprintnumber@STD@setparam{#1}},
+ std/.default=,%
+ relative round mode/.is choice,
+ relative round mode/fixed/.code={\def\pgfmathprintnumber@RELATIVE@choice@roundtofixed{1}},
+ relative round mode/mantissa/.code={\def\pgfmathprintnumber@RELATIVE@choice@roundtofixed{0}},
+ relative round mode/compatible/.code={\def\pgfmathprintnumber@RELATIVE@choice@roundtofixed{2}},
+ % relative={<exponent base 10>}
+ relative/.code= {%
+ \pgfmath@set@number@printer{pgfmathprintnumber@RELATIVE}%
+ \pgfmathround@@orig{#1}%
+ \expandafter\pgfmathfloattoint@@\pgfmathresult\relax
+ \let\pgfmathprintnumber@RELATIVE@param=\pgfmathresult
+ },%
+ relative/.value required,
+ relative*/.style={/pgf/number format/relative={#1},/pgf/number format/relative round mode=fixed},
+ every relative/.style=std,
+ relative style/.style={/pgf/number format/every relative/.append style={#1}},
+ fixed relative/.code= \pgfmath@set@number@printer{pgfmathprintnumber@FIXED@RELATIVE},
+ int detect/.code= \pgfmath@set@number@printer{pgfmathprintnumber@INT@DETECT},
+ int trunc/.code= \pgfmath@set@number@printer{pgfmathprintnumber@INT@TRUNC},
+ frac/.code= \pgfmath@set@number@printer{pgfmathprintnumber@frac},%
+ frac TeX/.initial=\frac,
+ frac whole format/.code={\def\pgfmathresult{#1}},
+ frac denom/.initial=,
+ frac whole/.is if=pgfmathprintnumber@frac@whole,
+ frac whole=true,
+ frac shift/.initial=4,
+ frac warning/.is if=pgfmathprintnumber@frac@warn,
+ frac warning=true,
+ assume math mode/.is if=pgfmathprintnumber@assumemathmode,
+ assume math mode/.default=true,
+ fixed zerofill/.is if= pgfmathfloat@usezerofill@fixed,
+ fixed zerofill/.default=true,
+ sci zerofill/.is if= pgfmathfloat@usezerofill@sci,
+ sci zerofill/.default=true,
+ zerofill/.style= {/pgf/number format/fixed zerofill=#1,/pgf/number format/sci zerofill=#1},
+ zerofill/.default= true,
+ precision/.store in= \pgfmathfloat@round@precision,
+ sci precision/.code={%
+ \edef\pgfmathfloat@loc@TMPa{#1}%
+ \ifx\pgfmathfloat@loc@TMPa\pgfutil@empty
+ \def\pgfmathprintnumber@sci@precision{\pgfmathfloat@round@precision}%
+ \else
+ \let\pgfmathprintnumber@sci@precision=\pgfmathfloat@loc@TMPa
+ \fi
+ },%
+ sci precision/.default=,
+ sci precision=,
+ fixed default/.code= {\let\pgfmathprintnumber@fixed@style=\pgfmathprintnumber@fixed@styleDEFAULT},
+ set decimal separator/.initial=,
+ dec sep/.style={/pgf/number format/set decimal separator={#1}},
+ @dec sep mark/.initial=,
+ @sci exponent mark/.initial=,
+ set thousands separator/.initial=,
+ 1000 sep in fractionals/.is if=pgfmathprintnumber@thousand@sep@in@fractional,
+ 1000 sep in fractionals/.default=true,
+ 1000 sep/.style={/pgf/number format/set thousands separator={#1}},
+ min exponent for 1000 sep/.initial=0,
+ use period/.style= {/pgf/number format/set decimal separator={.},/pgf/number format/set thousands separator={{{,}}}},
+ use comma/.style= {/pgf/number format/set decimal separator={{{,}}},/pgf/number format/set thousands separator={.}},
+ showpos/.is if=pgfmathprintnumber@showpositive,
+ showpos/.default=true,
+ print sign/.is if=pgfmathprintnumber@showpositive,
+ print sign/.default=true,
+ read comma as period/.is if=pgfmathparsenumber@comma@as@period,
+ read comma as period/.default=true,
+ skip 0./.is if=pgfmathprintnumberskipzeroperiod,
+ skip 0./.default=true,
+ skip 0.= false,
+ use period,
+ sci 10^e/.code= {\let\pgfmathfloatrounddisplaystyle=\pgfmathfloatrounddisplaystyle@std},
+ sci 10e/.code= {\let\pgfmathfloatrounddisplaystyle=\pgfmathfloatrounddisplaystyle@std},
+ sci e/.code= {\let\pgfmathfloatrounddisplaystyle=\pgfmathfloatrounddisplaystyle@e},
+ sci E/.code= {\let\pgfmathfloatrounddisplaystyle=\pgfmathfloatrounddisplaystyle@E},
+ sci subscript/.code= {\let\pgfmathfloatrounddisplaystyle=\pgfmathfloatrounddisplaystyle@subscript},
+ sci superscript/.code= {\let\pgfmathfloatrounddisplaystyle=\pgfmathfloatrounddisplaystyle@superscript},
+ sci generic/.code= {%
+ \let\pgfmathfloatrounddisplaystyle=\pgfmathfloatrounddisplaystyle@generic
+ \pgfkeysdefargs{/pgf/number format/sci generic/@}%
+ {##1##2##3}%
+ {\pgfqkeys{/pgf/number format/sci generic}{#1}}%
+ },
+ sci generic/mantissa sep/.initial=,%
+ sci generic/empty mantissa sep/.initial=,%
+ sci generic/mantisse sep/.style={/pgf/number format/sci generic/mantissa sep={#1}},%
+ sci generic/empty mantisse sep/.style={/pgf/number format/sci generic/empty mantissa sep={#1}},%
+ sci generic/exponent/.initial=,%
+ sci generic/.value required,
+ verbatim/.code={%
+ \pgfqkeys{/pgf/number format}{%
+ sci generic={mantissa sep=,exponent={e##1}},
+ 1000 sep=,
+ skip 0.=false,
+ print sign=false,
+ dec sep=.,
+ assume math mode,
+ frac TeX=\pgfmathfloatfrac@verbatim,
+ frac whole format/.code={\def\pgfmathresult{##1 }},
+ @dec sep mark=,
+ @sci exponent mark=,
+ }%
+ },
+ retain unit mantissa/.is if=pgfmathfloatround@allow@empty@mantissa,
+ retain unit mantissa/.default=true,
+ retain unit mantissa=true,
+ %
+ % allows to replace the implementation, for example
+ % 'implementation=\num'. This is experimental -- it is inclear
+ % if all consumers work well since they rely on the keys in
+ % /pgf/number format.
+ implementation/.code={\def\pgfmathprintnumber@protected{#1}},
}
\def\pgfmathprintnumber@STD#1{%
- % parse the input:
- \pgfmathfloatparsenumber{#1}%
- \pgfmathfloat@to@FMeE@style\pgfmathresult
- \expandafter\pgfmathprintnumber@STD@issci\pgfmathresult\relax
+ % parse the input:
+ \pgfmathfloatparsenumber{#1}%
+ \pgfmathfloat@to@FMeE@style\pgfmathresult
+ \expandafter\pgfmathprintnumber@STD@issci\pgfmathresult\relax
}
\def\pgfmathprintnumber@STD@setparam#1{%
- \edef\pgfmathfloat@loc@TMPb{#1}%
- \ifx\pgfmathfloat@loc@TMPb\pgfutil@empty
- % DEFAULT for lower and upper bound.
- \def\pgfmathprintnumber@STD@getlowerbound{%
- \c@pgf@counta=\pgfmathfloat@round@precision@orig\relax
- \divide\c@pgf@counta by-2\relax
- }%
- \def\pgfmathprintnumber@STD@upperbound{4}%
- \else
- \expandafter\pgfutil@in@\expandafter:\expandafter{\pgfmathfloat@loc@TMPb}%
- \ifpgfutil@in@
- % we have -4:5 or something like that.
- % parse both values:
- \def\pgfmathfloat@loc@TMPa##1:##2\relax{%
- \edef\pgfmathprintnumber@STD@getlowerbound{%
- \noexpand\c@pgf@counta=##1\space
- }%
- \edef\pgfmathprintnumber@STD@upperbound{##2}%
- }%
- \expandafter\pgfmathfloat@loc@TMPa\pgfmathfloat@loc@TMPb\relax
- \else
- % we have just the lower bound:
- \def\pgfmathprintnumber@STD@upperbound{4}%
- \edef\pgfmathprintnumber@STD@getlowerbound{%
- \noexpand\c@pgf@counta=\pgfmathfloat@loc@TMPb\space
- }%
- \fi
- \fi
+ \edef\pgfmathfloat@loc@TMPb{#1}%
+ \ifx\pgfmathfloat@loc@TMPb\pgfutil@empty
+ % DEFAULT for lower and upper bound.
+ \def\pgfmathprintnumber@STD@getlowerbound{%
+ \c@pgf@counta=\pgfmathfloat@round@precision@orig\relax
+ \divide\c@pgf@counta by-2\relax
+ }%
+ \def\pgfmathprintnumber@STD@upperbound{4}%
+ \else
+ \expandafter\pgfutil@in@\expandafter:\expandafter{\pgfmathfloat@loc@TMPb}%
+ \ifpgfutil@in@
+ % we have -4:5 or something like that.
+ % parse both values:
+ \def\pgfmathfloat@loc@TMPa##1:##2\relax{%
+ \edef\pgfmathprintnumber@STD@getlowerbound{%
+ \noexpand\c@pgf@counta=##1\space
+ }%
+ \edef\pgfmathprintnumber@STD@upperbound{##2}%
+ }%
+ \expandafter\pgfmathfloat@loc@TMPa\pgfmathfloat@loc@TMPb\relax
+ \else
+ % we have just the lower bound:
+ \def\pgfmathprintnumber@STD@upperbound{4}%
+ \edef\pgfmathprintnumber@STD@getlowerbound{%
+ \noexpand\c@pgf@counta=\pgfmathfloat@loc@TMPb\space
+ }%
+ \fi
+ \fi
}%
\def\pgfmathprintnumber@STD@issci#1#2e#3\relax{%
- \expandafter\ifnum#1<3
- \expandafter\ifnum#3>\pgfmathprintnumber@STD@upperbound\relax
- \pgfmathprintnumber@SCI@issci#1#2e#3\relax%
- \else
- \begingroup
- \pgfmathprintnumber@STD@getlowerbound
- \ifnum#3<\c@pgf@counta
- \pgfmathprintnumber@SCI@issci#1#2e#3\relax%
- \else
- \pgfmathprintnumber@FIXED@issci#1#2e#3\relax%
- \fi
- \pgfmath@smuggleone\pgfmathresult
- \endgroup
- \fi
- \else% nan or inf:
- \pgfmathfloatrounddisplaystyle#1#2e#3\relax%
- \fi
+ \expandafter\ifnum#1<3
+ \expandafter\ifnum#3>\pgfmathprintnumber@STD@upperbound\relax
+ \pgfmathprintnumber@SCI@issci#1#2e#3\relax%
+ \else
+ \begingroup
+ \pgfmathprintnumber@STD@getlowerbound
+ \ifnum#3<\c@pgf@counta
+ \pgfmathprintnumber@SCI@issci#1#2e#3\relax%
+ \else
+ \pgfmathprintnumber@FIXED@issci#1#2e#3\relax%
+ \fi
+ \pgfmath@smuggleone\pgfmathresult
+ \endgroup
+ \fi
+ \else% nan or inf:
+ \pgfmathfloatrounddisplaystyle#1#2e#3\relax%
+ \fi
}
\def\pgfmathprintnumber@RELATIVE#1{%
- % parse the input:
- \pgfmathfloatparsenumber{#1}%
- \pgfmathfloat@to@FMeE@style\pgfmathresult
- \expandafter\pgfmathprintnumber@RELATIVE@issci\pgfmathresult\relax
+ % parse the input:
+ \pgfmathfloatparsenumber{#1}%
+ \pgfmathfloat@to@FMeE@style\pgfmathresult
+ \expandafter\pgfmathprintnumber@RELATIVE@issci\pgfmathresult\relax
}
\def\pgfmathprintnumber@RELATIVE@choice@roundtofixed@warn{%
- \pgf@typeout{! Package pgf warning: the use of /pgf/number format/relative is discouraged (buggy). Please use 'relative*' instead or type \string\pgfkeys{/pgf/number format/relative round mode=fixed} into your preamble.}%
- \global\let\pgfmathprintnumber@RELATIVE@choice@roundtofixed@warn=\relax
+ \pgf@typeout{! Package pgf warning: the use of /pgf/number format/relative is discouraged (buggy). Please use 'relative*' instead or type \string\pgfkeys{/pgf/number format/relative round mode=fixed} into your preamble.}%
+ \global\let\pgfmathprintnumber@RELATIVE@choice@roundtofixed@warn=\relax
}
\def\pgfmathprintnumber@RELATIVE@issci#1#2e#3\relax{%
- \begingroup
- % format X / 10^{relative}:
- \c@pgf@counta=#3\relax
- \advance\c@pgf@counta by-\pgfmathprintnumber@RELATIVE@param\relax
- \pgfmathfloatcreate{#1}{#2}{\the\c@pgf@counta}%
- % OK, round it to the desired precision:
- \if0\pgfmathprintnumber@RELATIVE@choice@roundtofixed
- % relative round mode=mantissa
- \def\b@round@fixed{0}%
- \else
- \if1\pgfmathprintnumber@RELATIVE@choice@roundtofixed
- % relative round mode=fixed
- \def\b@round@fixed{1}%
- \else
- \pgfmathprintnumber@RELATIVE@choice@roundtofixed@warn
- % relative round mode=compatible
- \ifnum\c@pgf@counta>0
- % hm. for positive exponents, we should round the
- % mantissa rather than only the fractional part.
- \def\b@round@fixed{0}%
- \else
- % negative exponent -> round fixed representation:
- \def\b@round@fixed{1}%
- \fi
- \fi
- \fi
- \if1\b@round@fixed
- % round fixed representation:
- \pgfmathfloattofixed\pgfmathresult
- \expandafter\pgfmathroundto\expandafter{\pgfmathresult}%
- \pgfmathfloatparsenumber{\pgfmathresult}%
- \pgfmathfloatroundhasperiodtrue% make sure the code below works:
- \else
- % round the mantissa:
- \expandafter\pgfmathfloatround\expandafter{\pgfmathresult}%
- \fi
- % Now, compute result * 10^{relative} and format the result:
- \pgfmathfloattoregisterstok\pgfmathresult\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
- \ifnum\pgfmathfloat@a@S=0
- \pgfmathfloat@a@E=\pgfmathfloat@a@S % avoid 0 * 10^8
- \else
- \advance\pgfmathfloat@a@E by+\pgfmathprintnumber@RELATIVE@param\relax
- \fi
- \edef\pgfmathresultX{%
- \the\pgfmathfloat@a@S
- \the\pgfmathfloat@a@Mtok
- \ifpgfmathfloatroundhasperiod\else.0\fi
- e\the\pgfmathfloat@a@E}%
- % call another formatter for the result (but avoid rounding inside of it):
- \pgfqkeys{/pgf/number format}{/pgf/number format/every relative,
- fixed zerofill=false,% useless here!
- sci zerofill=false}%
- \ifx\pgfmathprintnumber@issci\pgfmathprintnumber@RELATIVE@issci
- \pgfmath@error{The '/pgf/number format/every relative' style should set a valid display style}%
- \fi
- \let\pgfmathfloat@round@precision@orig=\pgfmathfloat@round@precision
- \def\pgfmathfloat@round@precision{9999}%
- \expandafter\pgfmathprintnumber@issci\pgfmathresultX\relax%
- \pgfmath@smuggleone\pgfmathresult
- \endgroup
+ \begingroup
+ % format X / 10^{relative}:
+ \c@pgf@counta=#3\relax
+ \advance\c@pgf@counta by-\pgfmathprintnumber@RELATIVE@param\relax
+ \pgfmathfloatcreate{#1}{#2}{\the\c@pgf@counta}%
+ % OK, round it to the desired precision:
+ \if0\pgfmathprintnumber@RELATIVE@choice@roundtofixed
+ % relative round mode=mantissa
+ \def\b@round@fixed{0}%
+ \else
+ \if1\pgfmathprintnumber@RELATIVE@choice@roundtofixed
+ % relative round mode=fixed
+ \def\b@round@fixed{1}%
+ \else
+ \pgfmathprintnumber@RELATIVE@choice@roundtofixed@warn
+ % relative round mode=compatible
+ \ifnum\c@pgf@counta>0
+ % hm. for positive exponents, we should round the
+ % mantissa rather than only the fractional part.
+ \def\b@round@fixed{0}%
+ \else
+ % negative exponent -> round fixed representation:
+ \def\b@round@fixed{1}%
+ \fi
+ \fi
+ \fi
+ \if1\b@round@fixed
+ % round fixed representation:
+ \pgfmathfloattofixed\pgfmathresult
+ \expandafter\pgfmathroundto\expandafter{\pgfmathresult}%
+ \pgfmathfloatparsenumber{\pgfmathresult}%
+ \pgfmathfloatroundhasperiodtrue% make sure the code below works:
+ \else
+ % round the mantissa:
+ \expandafter\pgfmathfloatround\expandafter{\pgfmathresult}%
+ \fi
+ % Now, compute result * 10^{relative} and format the result:
+ \pgfmathfloattoregisterstok\pgfmathresult\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
+ \ifnum\pgfmathfloat@a@S=0
+ \pgfmathfloat@a@E=\pgfmathfloat@a@S % avoid 0 * 10^8
+ \else
+ \advance\pgfmathfloat@a@E by+\pgfmathprintnumber@RELATIVE@param\relax
+ \fi
+ \edef\pgfmathresultX{%
+ \the\pgfmathfloat@a@S
+ \the\pgfmathfloat@a@Mtok
+ \ifpgfmathfloatroundhasperiod\else.0\fi
+ e\the\pgfmathfloat@a@E}%
+ % call another formatter for the result (but avoid rounding inside of it):
+ \pgfqkeys{/pgf/number format}{/pgf/number format/every relative,
+ fixed zerofill=false,% useless here!
+ sci zerofill=false}%
+ \ifx\pgfmathprintnumber@issci\pgfmathprintnumber@RELATIVE@issci
+ \pgfmath@error{The '/pgf/number format/every relative' style should set a valid display style}%
+ \fi
+ \let\pgfmathfloat@round@precision@orig=\pgfmathfloat@round@precision
+ \def\pgfmathfloat@round@precision{9999}%
+ \expandafter\pgfmathprintnumber@issci\pgfmathresultX\relax%
+ \pgfmath@smuggleone\pgfmathresult
+ \endgroup
}
\def\pgfmathprintnumber@FIXED@RELATIVE#1{%
- % parse the input:
- \pgfmathfloatparsenumber{#1}%
- \pgfmathfloat@to@FMeE@style\pgfmathresult
- \expandafter\pgfmathprintnumber@FIXED@RELATIVE@issci\pgfmathresult\relax
+ % parse the input:
+ \pgfmathfloatparsenumber{#1}%
+ \pgfmathfloat@to@FMeE@style\pgfmathresult
+ \expandafter\pgfmathprintnumber@FIXED@RELATIVE@issci\pgfmathresult\relax
}
\def\pgfmathprintnumber@FIXED@RELATIVE@issci#1#2e#3\relax{%
- \begingroup
- \pgfmathfloatcreate{#1}{#2}{#3}%
- % we want the first <precision> digits - not the first
- % <precision>+1 digits:
- \c@pgf@counta=\pgfmathfloat@round@precision\relax
- \advance\c@pgf@counta by-1
- \edef\pgfmathfloat@round@precision{\the\c@pgf@counta}%
- \pgfmathfloatround{\pgfmathresult}%
- \pgfmathfloattoregisterstok\pgfmathresult\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
- \ifnum\pgfmathfloat@a@S=0
- \pgfmathfloat@a@E=\pgfmathfloat@a@S % avoid 0 * 10^8
- \fi
- \edef\pgfmathresultX{%
- \the\pgfmathfloat@a@S
- \the\pgfmathfloat@a@Mtok
- \ifpgfmathfloatroundhasperiod\else.0\fi
- e\the\pgfmathfloat@a@E}%
- \let\pgfmathfloat@round@precision@orig=\pgfmathfloat@round@precision
- \pgfmathfloat@usezerofill@fixedfalse
- \def\pgfmathfloat@round@precision{9999}% typeset all remaining digits!
- \expandafter\pgfmathprintnumber@FIXED@issci\pgfmathresultX\relax%
- \pgfmath@smuggleone\pgfmathresult
- \endgroup
+ \begingroup
+ \pgfmathfloatcreate{#1}{#2}{#3}%
+ % we want the first <precision> digits - not the first
+ % <precision>+1 digits:
+ \c@pgf@counta=\pgfmathfloat@round@precision\relax
+ \advance\c@pgf@counta by-1
+ \edef\pgfmathfloat@round@precision{\the\c@pgf@counta}%
+ \pgfmathfloatround{\pgfmathresult}%
+ \pgfmathfloattoregisterstok\pgfmathresult\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
+ \ifnum\pgfmathfloat@a@S=0
+ \pgfmathfloat@a@E=\pgfmathfloat@a@S % avoid 0 * 10^8
+ \fi
+ \edef\pgfmathresultX{%
+ \the\pgfmathfloat@a@S
+ \the\pgfmathfloat@a@Mtok
+ \ifpgfmathfloatroundhasperiod\else.0\fi
+ e\the\pgfmathfloat@a@E}%
+ \let\pgfmathfloat@round@precision@orig=\pgfmathfloat@round@precision
+ \pgfmathfloat@usezerofill@fixedfalse
+ \def\pgfmathfloat@round@precision{9999}% typeset all remaining digits!
+ \expandafter\pgfmathprintnumber@FIXED@issci\pgfmathresultX\relax%
+ \pgfmath@smuggleone\pgfmathresult
+ \endgroup
}
\def\pgfmathprintnumber@frac#1{%
- % parse the input:
- \pgfmathfloatparsenumber{#1}%
- \pgfmathfloatgetfrac{\pgfmathresult}%
- \expandafter\pgfmathprintnumber@frac@formatresult\pgfmathresult
+ % parse the input:
+ \pgfmathfloatparsenumber{#1}%
+ \pgfmathfloatgetfrac{\pgfmathresult}%
+ \expandafter\pgfmathprintnumber@frac@formatresult\pgfmathresult
}
\def\pgfmathprintnumber@frac@issci#1#2e#3\relax{%
- \pgfmathfloatcreate{#1}{#2}{#3}%
- \pgfmathfloatgetfrac{\pgfmathresult}%
- \expandafter\pgfmathprintnumber@frac@formatresult\pgfmathresult
+ \pgfmathfloatcreate{#1}{#2}{#3}%
+ \pgfmathfloatgetfrac{\pgfmathresult}%
+ \expandafter\pgfmathprintnumber@frac@formatresult\pgfmathresult
}
\def\pgfmathprintnumber@frac@formatresult#1#2#3{%
- \begingroup
- \pgfkeysgetvalue{/pgf/number format/frac TeX}\pgfmathresult
- \toks0=\expandafter{\pgfmathresult}%
- \def\pgfmathfloat@loc@TMPa{#1}%
- \ifx\pgfmathfloat@loc@TMPa\pgfutil@empty
- \ifpgfmathprintnumber@showpositive
- \def\pgfmathfloat@loc@TMPa{+}%
- \fi
- \else
- \ifx\pgfmathfloat@loc@TMPa-%
- \else
- \ifx\pgfmathfloat@loc@TMPa+%
- \else
- \ifpgfmathprintnumber@showpositive
- \edef\pgfmathfloat@loc@TMPa{+\pgfmathfloat@loc@TMPa}%
- \fi
- \def\pgfmathfloat@loc@TMPb{\pgfkeysvalueof{/pgf/number format/frac whole format/.@cmd}}%
- \expandafter\pgfmathfloat@loc@TMPb\pgfmathfloat@loc@TMPa\pgfeov
- \let\pgfmathfloat@loc@TMPa=\pgfmathresult
- \fi
- \fi
- \fi
- \toks1=\expandafter{\pgfmathfloat@loc@TMPa}%
- \edef\pgfmathresult{%
- \the\toks1 \ifnum#2=0 \else\the\toks0 {#2}{#3}\fi%
- }%
- \pgfmath@smuggleone\pgfmathresult
- \endgroup
+ \begingroup
+ \pgfkeysgetvalue{/pgf/number format/frac TeX}\pgfmathresult
+ \toks0=\expandafter{\pgfmathresult}%
+ \def\pgfmathfloat@loc@TMPa{#1}%
+ \ifx\pgfmathfloat@loc@TMPa\pgfutil@empty
+ \ifpgfmathprintnumber@showpositive
+ \def\pgfmathfloat@loc@TMPa{+}%
+ \fi
+ \else
+ \ifx\pgfmathfloat@loc@TMPa-%
+ \else
+ \ifx\pgfmathfloat@loc@TMPa+%
+ \else
+ \ifpgfmathprintnumber@showpositive
+ \edef\pgfmathfloat@loc@TMPa{+\pgfmathfloat@loc@TMPa}%
+ \fi
+ \def\pgfmathfloat@loc@TMPb{\pgfkeysvalueof{/pgf/number format/frac whole format/.@cmd}}%
+ \expandafter\pgfmathfloat@loc@TMPb\pgfmathfloat@loc@TMPa\pgfeov
+ \let\pgfmathfloat@loc@TMPa=\pgfmathresult
+ \fi
+ \fi
+ \fi
+ \toks1=\expandafter{\pgfmathfloat@loc@TMPa}%
+ \edef\pgfmathresult{%
+ \the\toks1 \ifnum#2=0 \else\the\toks0 {#2}{#3}\fi%
+ }%
+ \pgfmath@smuggleone\pgfmathresult
+ \endgroup
}%
% Defines \pgfmathresult to contain three sets of braces containing
@@ -1311,179 +1311,179 @@
%
% The numerator and denominator is always a number (not empty)
\def\pgfmathfloatgetfrac#1{%
- \pgfutil@ifundefined{pgfmathfloatmultiply@}{%
- \pgfmath@PackageError{Sorry, the number format 'frac' requires '\string\usetikzlibrary{fpu}' (and, optionally, \string\usepackage{fp}) in order to work correctly}%
- \edef\pgfmathresult{{#1}{0}{1}}%
- }{%
- \pgfmathfloatgetfrac@{#1}%
- }%
+ \pgfutil@ifundefined{pgfmathfloatmultiply@}{%
+ \pgfmath@PackageError{Sorry, the number format 'frac' requires '\string\usetikzlibrary{fpu}' (and, optionally, \string\usepackage{fp}) in order to work correctly}%
+ \edef\pgfmathresult{{#1}{0}{1}}%
+ }{%
+ \pgfmathfloatgetfrac@{#1}%
+ }%
}%
\def\pgfmathfloatgetfrac@#1{%
- \begingroup
- \edef\pgfmathfloat@arg{#1}%
- \expandafter\pgfmathfloat@decompose@tok\pgfmathfloat@arg\relax\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
- \def\pgfmathfloat@loc@TMPa{0}%
- \ifcase\pgfmathfloat@a@S
- % #1 = 0:
- \def\pgfmathresult{{0}{0}{1}}%
- \or% #1 > 0
- \pgfmathfloat@a@S=1
- \def\pgfmathfloat@loc@TMPa{1}%
- \or% #1 < 0
- \pgfmathfloat@a@S=-1
- \def\pgfmathfloat@loc@TMPa{1}%
- \or
- \edef\pgfmathresult{{}{NaN}{1}}%
- \or
- \edef\pgfmathresult{{}{\infty}{1}}%
- \or
- \edef\pgfmathresult{{-}{\infty}{1}}%
- \fi
- \if1\pgfmathfloat@loc@TMPa
- \ifnum\pgfmathfloat@a@E<0
- \def\pgfmathfloat@wholenumber{}%
- \else
- \pgfmathfloatcreate{1}{\the\pgfmathfloat@a@Mtok}{\the\pgfmathfloat@a@E}%
- \pgfmathfloattofixed\pgfmathresult%
- \def\pgfmathfloat@loc@TMPa##1.##2\relax{%
- \def\pgfmathfloat@wholenumber{##1}%
- \pgfmathfloatparsenumber{0.##2}%
- }%
- \expandafter\pgfmathfloat@loc@TMPa\pgfmathresult\relax
- \expandafter\pgfmathfloat@decompose@tok\pgfmathresult\relax\pgfmathfloat@b@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
- \fi
- %
- \def\pgfmathfloat@loc@TMPa##1.##2\relax{%
- \def\pgfmathfloat@mantissa@first{##1}%
- \def\pgfmathfloat@mantissa@ltone{0.##2}%
- }%
- \expandafter\pgfmathfloat@loc@TMPa\the\pgfmathfloat@a@Mtok\relax
- %
- \def\pgfmathfloat@loc@@to@int##1.##2\relax##3{%
- ##3=##1
- \ifdim0.##2pt>0.5pt
- \advance##3 by1
- \fi
- }%
- %
- % alias registers names:
- \let\pgfmathresultnumerator=\pgfmathfloat@b@S
- \let\pgfmathresultdenom=\pgfmathfloat@b@E
- %
- \pgfkeysgetvalue{/pgf/number format/frac denom}\pgfmath@target@denominator
- \ifx\pgfmath@target@denominator\pgfutil@empty
- %
- \pgfmathfloat@a@E=-\pgfmathfloat@a@E
- \ifdim\pgfmathfloat@mantissa@ltone pt=0pt
- \def\pgfmathfloat@factor{1}%
- \edef\pgfmathfloat@scaled@numerator{\the\pgfmathfloat@a@Mtok}%
- \else
- % FIXME : this here is numerically instable.
- %
- % The errors of 1/r are magnified by 10^k which
- % doesn't work.
- \pgfutil@ifundefined{FPdiv}{%
- \pgfmathfloatparsenumber{\pgfmathfloat@mantissa@ltone}%
- \pgfmathfloatreciprocal@{\pgfmathresult}%
- }{%
- % \usepackage{fp}.
- % yields higher absolute precision.
- \FPmessagesfalse%
- \FPdebugfalse%
- \FPdiv\pgfmathresult{1}{\pgfmathfloat@mantissa@ltone}%
- \pgfmathfloatparsenumber{\pgfmathresult}%
- }%
- \let\pgfmathfloat@inv=\pgfmathresult
- \pgfmathfloatcreate{1}{1.0}{\pgfkeysvalueof{/pgf/number format/frac shift}}%
- \let\pgfmathfloat@scalebaseten=\pgfmathresult
- \pgfmathfloatmultiply@{\pgfmathfloat@inv}{\pgfmathfloat@scalebaseten}%
- \let\pgfmathfloat@factor=\pgfmathresult
- %
- \expandafter\pgfmathfloatparsenumber\expandafter{\the\pgfmathfloat@a@Mtok}%
- \let\pgfmathfloat@loc@TMPa=\pgfmathresult
- \pgfmathfloatmultiply@{\pgfmathfloat@factor}{\pgfmathfloat@loc@TMPa}%
- \pgfmathfloattofixed\pgfmathresult
- \let\pgfmathfloat@scaled@numerator=\pgfmathresult
- %
- \pgfmathfloattofixed\pgfmathfloat@factor
- \expandafter\pgfmathfloat@loc@@to@int\pgfmathresult\relax{\pgfmathfloat@b@S}%
- \edef\pgfmathfloat@factor{\the\pgfmathfloat@b@S}%
- \fi
- %
- %
- \pgfmathresultdenom=\pgfmathfloat@factor\relax
- \pgfmathfloat@multiply@ten@to@the@E\pgfmathresultdenom
- %
- \expandafter\pgfmathfloat@loc@@to@int\pgfmathfloat@scaled@numerator\relax{\pgfmathresultnumerator}%
- %\message{scale = \pgfmathfloat@factor; Z = \the\pgfmathresultnumerator\space ( von \pgfmathfloat@scaled@numerator), N = \the\pgfmathresultdenom.}%
- %
- \pgfmathgreatestcommondivisor{\pgfmathresultnumerator}{\pgfmathresultdenom}%
- \divide\pgfmathresultnumerator by\pgfmathresult\relax
- \divide\pgfmathresultdenom by\pgfmathresult\relax
- \ifpgfmathprintnumber@frac@warn
- \ifnum\pgfmathresultdenom>1000
- \pgfutil@ifundefined{FPdiv}{%
- \pgfmathfloattosci@\pgfmathfloat@arg
- \pgf@typeout{! Package pgf /pgf/number format/frac warning=true: /pgf/number format/frac of `\pgfmathresult' = \the\pgfmathresultnumerator\space / \the\pgfmathresultdenom\space might be large due to instabilities. Try \string\usepackage{fp} to improve accuracy.}%
- }{}%
- \fi
- \fi
- \else
- % use target denominator:
- \pgfmathresultdenom=\pgfmath@target@denominator\relax
- \pgfmathfloatcreate{1}{\the\pgfmathfloat@a@Mtok}{\the\pgfmathfloat@a@E}%
- \pgfmathfloattofixed\pgfmathresult
- \pgf@xa=\pgfmathresult pt
- \multiply\pgf@xa by\pgfmathresultdenom
- \edef\pgfmathfloat@scaled@numerator{\pgf@sys@tonumber\pgf@xa}%
- \expandafter\pgfmathfloat@loc@@to@int\pgfmathfloat@scaled@numerator\relax{\pgfmathresultnumerator}%
- \fi
- \ifpgfmathprintnumber@frac@whole
- \else
- \ifx\pgfmathfloat@wholenumber\pgfutil@empty
- \else
- \count0=\pgfmathfloat@wholenumber\relax
- \multiply\count0 by\pgfmathresultdenom
- \advance\pgfmathresultnumerator by\count0
- \def\pgfmathfloat@wholenumber{}%
- \fi
- \fi
- \ifnum\pgfmathfloat@a@S<0
- \edef\pgfmathresult{{-\pgfmathfloat@wholenumber}{\the\pgfmathresultnumerator}{\the\pgfmathresultdenom}}%
- \else
- \edef\pgfmathresult{{\pgfmathfloat@wholenumber}{\the\pgfmathresultnumerator}{\the\pgfmathresultdenom}}%
- \fi
- \fi
- \pgfmath@smuggleone\pgfmathresult
- \endgroup
+ \begingroup
+ \edef\pgfmathfloat@arg{#1}%
+ \expandafter\pgfmathfloat@decompose@tok\pgfmathfloat@arg\relax\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
+ \def\pgfmathfloat@loc@TMPa{0}%
+ \ifcase\pgfmathfloat@a@S
+ % #1 = 0:
+ \def\pgfmathresult{{0}{0}{1}}%
+ \or% #1 > 0
+ \pgfmathfloat@a@S=1
+ \def\pgfmathfloat@loc@TMPa{1}%
+ \or% #1 < 0
+ \pgfmathfloat@a@S=-1
+ \def\pgfmathfloat@loc@TMPa{1}%
+ \or
+ \edef\pgfmathresult{{}{NaN}{1}}%
+ \or
+ \edef\pgfmathresult{{}{\infty}{1}}%
+ \or
+ \edef\pgfmathresult{{-}{\infty}{1}}%
+ \fi
+ \if1\pgfmathfloat@loc@TMPa
+ \ifnum\pgfmathfloat@a@E<0
+ \def\pgfmathfloat@wholenumber{}%
+ \else
+ \pgfmathfloatcreate{1}{\the\pgfmathfloat@a@Mtok}{\the\pgfmathfloat@a@E}%
+ \pgfmathfloattofixed\pgfmathresult%
+ \def\pgfmathfloat@loc@TMPa##1.##2\relax{%
+ \def\pgfmathfloat@wholenumber{##1}%
+ \pgfmathfloatparsenumber{0.##2}%
+ }%
+ \expandafter\pgfmathfloat@loc@TMPa\pgfmathresult\relax
+ \expandafter\pgfmathfloat@decompose@tok\pgfmathresult\relax\pgfmathfloat@b@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
+ \fi
+ %
+ \def\pgfmathfloat@loc@TMPa##1.##2\relax{%
+ \def\pgfmathfloat@mantissa@first{##1}%
+ \def\pgfmathfloat@mantissa@ltone{0.##2}%
+ }%
+ \expandafter\pgfmathfloat@loc@TMPa\the\pgfmathfloat@a@Mtok\relax
+ %
+ \def\pgfmathfloat@loc@@to@int##1.##2\relax##3{%
+ ##3=##1
+ \ifdim0.##2pt>0.5pt
+ \advance##3 by1
+ \fi
+ }%
+ %
+ % alias registers names:
+ \let\pgfmathresultnumerator=\pgfmathfloat@b@S
+ \let\pgfmathresultdenom=\pgfmathfloat@b@E
+ %
+ \pgfkeysgetvalue{/pgf/number format/frac denom}\pgfmath@target@denominator
+ \ifx\pgfmath@target@denominator\pgfutil@empty
+ %
+ \pgfmathfloat@a@E=-\pgfmathfloat@a@E
+ \ifdim\pgfmathfloat@mantissa@ltone pt=0pt
+ \def\pgfmathfloat@factor{1}%
+ \edef\pgfmathfloat@scaled@numerator{\the\pgfmathfloat@a@Mtok}%
+ \else
+ % FIXME : this here is numerically instable.
+ %
+ % The errors of 1/r are magnified by 10^k which
+ % doesn't work.
+ \pgfutil@ifundefined{FPdiv}{%
+ \pgfmathfloatparsenumber{\pgfmathfloat@mantissa@ltone}%
+ \pgfmathfloatreciprocal@{\pgfmathresult}%
+ }{%
+ % \usepackage{fp}.
+ % yields higher absolute precision.
+ \FPmessagesfalse%
+ \FPdebugfalse%
+ \FPdiv\pgfmathresult{1}{\pgfmathfloat@mantissa@ltone}%
+ \pgfmathfloatparsenumber{\pgfmathresult}%
+ }%
+ \let\pgfmathfloat@inv=\pgfmathresult
+ \pgfmathfloatcreate{1}{1.0}{\pgfkeysvalueof{/pgf/number format/frac shift}}%
+ \let\pgfmathfloat@scalebaseten=\pgfmathresult
+ \pgfmathfloatmultiply@{\pgfmathfloat@inv}{\pgfmathfloat@scalebaseten}%
+ \let\pgfmathfloat@factor=\pgfmathresult
+ %
+ \expandafter\pgfmathfloatparsenumber\expandafter{\the\pgfmathfloat@a@Mtok}%
+ \let\pgfmathfloat@loc@TMPa=\pgfmathresult
+ \pgfmathfloatmultiply@{\pgfmathfloat@factor}{\pgfmathfloat@loc@TMPa}%
+ \pgfmathfloattofixed\pgfmathresult
+ \let\pgfmathfloat@scaled@numerator=\pgfmathresult
+ %
+ \pgfmathfloattofixed\pgfmathfloat@factor
+ \expandafter\pgfmathfloat@loc@@to@int\pgfmathresult\relax{\pgfmathfloat@b@S}%
+ \edef\pgfmathfloat@factor{\the\pgfmathfloat@b@S}%
+ \fi
+ %
+ %
+ \pgfmathresultdenom=\pgfmathfloat@factor\relax
+ \pgfmathfloat@multiply@ten@to@the@E\pgfmathresultdenom
+ %
+ \expandafter\pgfmathfloat@loc@@to@int\pgfmathfloat@scaled@numerator\relax{\pgfmathresultnumerator}%
+ %\message{scale = \pgfmathfloat@factor; Z = \the\pgfmathresultnumerator\space ( von \pgfmathfloat@scaled@numerator), N = \the\pgfmathresultdenom.}%
+ %
+ \pgfmathgreatestcommondivisor{\pgfmathresultnumerator}{\pgfmathresultdenom}%
+ \divide\pgfmathresultnumerator by\pgfmathresult\relax
+ \divide\pgfmathresultdenom by\pgfmathresult\relax
+ \ifpgfmathprintnumber@frac@warn
+ \ifnum\pgfmathresultdenom>1000
+ \pgfutil@ifundefined{FPdiv}{%
+ \pgfmathfloattosci@\pgfmathfloat@arg
+ \pgf@typeout{! Package pgf /pgf/number format/frac warning=true: /pgf/number format/frac of `\pgfmathresult' = \the\pgfmathresultnumerator\space / \the\pgfmathresultdenom\space might be large due to instabilities. Try \string\usepackage{fp} to improve accuracy.}%
+ }{}%
+ \fi
+ \fi
+ \else
+ % use target denominator:
+ \pgfmathresultdenom=\pgfmath@target@denominator\relax
+ \pgfmathfloatcreate{1}{\the\pgfmathfloat@a@Mtok}{\the\pgfmathfloat@a@E}%
+ \pgfmathfloattofixed\pgfmathresult
+ \pgf@xa=\pgfmathresult pt
+ \multiply\pgf@xa by\pgfmathresultdenom
+ \edef\pgfmathfloat@scaled@numerator{\pgf@sys@tonumber\pgf@xa}%
+ \expandafter\pgfmathfloat@loc@@to@int\pgfmathfloat@scaled@numerator\relax{\pgfmathresultnumerator}%
+ \fi
+ \ifpgfmathprintnumber@frac@whole
+ \else
+ \ifx\pgfmathfloat@wholenumber\pgfutil@empty
+ \else
+ \count0=\pgfmathfloat@wholenumber\relax
+ \multiply\count0 by\pgfmathresultdenom
+ \advance\pgfmathresultnumerator by\count0
+ \def\pgfmathfloat@wholenumber{}%
+ \fi
+ \fi
+ \ifnum\pgfmathfloat@a@S<0
+ \edef\pgfmathresult{{-\pgfmathfloat@wholenumber}{\the\pgfmathresultnumerator}{\the\pgfmathresultdenom}}%
+ \else
+ \edef\pgfmathresult{{\pgfmathfloat@wholenumber}{\the\pgfmathresultnumerator}{\the\pgfmathresultdenom}}%
+ \fi
+ \fi
+ \pgfmath@smuggleone\pgfmathresult
+ \endgroup
}%
\def\pgfmathfloat@gobble@until@relax#1\relax{}
% computes the greatest common divisor of two integer numbers (in
% integer arithmetics).
\def\pgfmathgreatestcommondivisor#1#2{%
- \begingroup
- \count0=#1\relax
- \count1=#2\relax
- \ifnum\count0=0
- \edef\pgfmathresult{\the\count1}%
- \else
- \pgfmathgreatestcommondivisor@loop
- \edef\pgfmathresult{\the\count0}%
- \fi
- \pgfmath@smuggleone\pgfmathresult
- \endgroup
+ \begingroup
+ \count0=#1\relax
+ \count1=#2\relax
+ \ifnum\count0=0
+ \edef\pgfmathresult{\the\count1}%
+ \else
+ \pgfmathgreatestcommondivisor@loop
+ \edef\pgfmathresult{\the\count0}%
+ \fi
+ \pgfmath@smuggleone\pgfmathresult
+ \endgroup
}
\def\pgfmathgreatestcommondivisor@loop{%
- \ifnum\count1=0
- \else
- \ifnum\count0>\count1
- \advance\count0 by-\count1
- \else
- \advance\count1 by-\count0
- \fi
- \expandafter\pgfmathgreatestcommondivisor@loop
- \fi
+ \ifnum\count1=0
+ \else
+ \ifnum\count0>\count1
+ \advance\count0 by-\count1
+ \else
+ \advance\count1 by-\count0
+ \fi
+ \expandafter\pgfmathgreatestcommondivisor@loop
+ \fi
}%
% multiplies a TeX register by 10^E where E is stored in the register
@@ -1491,146 +1491,146 @@
%
% #1 a TeX register
\def\pgfmathfloat@multiply@ten@to@the@E#1{%
- \ifnum\pgfmathfloat@a@E>0
- \multiply#1 by10
- \advance\pgfmathfloat@a@E by-1
- \def\pgfmathfloat@multiply@ten@to@the@E@next{\pgfmathfloat@multiply@ten@to@the@E{#1}}%
- \else
- \let\pgfmathfloat@multiply@ten@to@the@E@next=\relax%
- \fi
- \pgfmathfloat@multiply@ten@to@the@E@next
+ \ifnum\pgfmathfloat@a@E>0
+ \multiply#1 by10
+ \advance\pgfmathfloat@a@E by-1
+ \def\pgfmathfloat@multiply@ten@to@the@E@next{\pgfmathfloat@multiply@ten@to@the@E{#1}}%
+ \else
+ \let\pgfmathfloat@multiply@ten@to@the@E@next=\relax%
+ \fi
+ \pgfmathfloat@multiply@ten@to@the@E@next
}%
\def\pgfmathprintnumber@INT@TRUNC#1{%
- \pgfmathfloatparsenumber{#1}%
- \pgfmathfloat@to@FMeE@style\pgfmathresult
- \expandafter\pgfmathprintnumber@INT@TRUNC@issci\pgfmathresult\relax
+ \pgfmathfloatparsenumber{#1}%
+ \pgfmathfloat@to@FMeE@style\pgfmathresult
+ \expandafter\pgfmathprintnumber@INT@TRUNC@issci\pgfmathresult\relax
}
\def\pgfmathprintnumber@INT@TRUNC@impl#1.#2\relax#3#4e#5\relax{%
- \pgfmathfloatroundhasperiodfalse
- \pgfmathprintnumber@fixed@style{#1}#3#4e#5\relax%
+ \pgfmathfloatroundhasperiodfalse
+ \pgfmathprintnumber@fixed@style{#1}#3#4e#5\relax%
}
\def\pgfmathprintnumber@INT@TRUNC@issci#1#2e#3\relax{%
- \ifnum#1<3\relax
- \pgfmathfloatcreate{#1}{#2}{#3}%
- \pgfmathfloattofixed{\pgfmathresult}%
- \expandafter\pgfmathprintnumber@INT@TRUNC@impl\pgfmathresult\relax#1#2e#3\relax
- \else
- \pgfmathfloatrounddisplaystyle#1#2e#3\relax%
- \fi
+ \ifnum#1<3\relax
+ \pgfmathfloatcreate{#1}{#2}{#3}%
+ \pgfmathfloattofixed{\pgfmathresult}%
+ \expandafter\pgfmathprintnumber@INT@TRUNC@impl\pgfmathresult\relax#1#2e#3\relax
+ \else
+ \pgfmathfloatrounddisplaystyle#1#2e#3\relax%
+ \fi
}
% Invokes '#2' if '#1' is actually an integer or '#3' if not.
%
-% As a side-effect, \pgfretval will be set to the integer value if it
+% As a side--effect, \pgfretval will be set to the integer value if it
% actually *is* an integer. Otherwise, \pgfretval will contain the
% parsed floating point number.
%
% #1 a number constant (not necessarily a parsed float).
\def\pgfmathifisint#1#2#3{%
- \gdef\pgfmathfloatisint@@{0}%
- \begingroup
- \pgfmathfloatparsenumber{#1}%
- \let\pgfretval\pgfmathresult
- \pgfmathfloat@to@FMeE@style\pgfmathresult
- \expandafter\pgfmathfloatisint@\pgfmathresult\relax
- \pgfmath@smuggleone\pgfretval
- \endgroup
- \if1\pgfmathfloatisint@@ #2\else #3\fi
+ \gdef\pgfmathfloatisint@@{0}%
+ \begingroup
+ \pgfmathfloatparsenumber{#1}%
+ \let\pgfretval\pgfmathresult
+ \pgfmathfloat@to@FMeE@style\pgfmathresult
+ \expandafter\pgfmathfloatisint@\pgfmathresult\relax
+ \pgfmath@smuggleone\pgfretval
+ \endgroup
+ \if1\pgfmathfloatisint@@ #2\else #3\fi
}%
\def\pgfmathfloatisint@#1#2e#3\relax{%
- \ifnum#1<3\relax
- \pgfmathfloatcreate{#1}{#2}{#3}%
- \pgfmathfloattofixed{\pgfmathresult}%
- \def\pgfmathfloat@round@precision{6}%
- \expandafter\pgfmathroundto\expandafter{\pgfmathresult}%
- \ifpgfmathfloatroundhasperiod
- \else
- \let\pgfretval\pgfmathresult%
- \gdef\pgfmathfloatisint@@{1}%
- \fi
- \fi
+ \ifnum#1<3\relax
+ \pgfmathfloatcreate{#1}{#2}{#3}%
+ \pgfmathfloattofixed{\pgfmathresult}%
+ \def\pgfmathfloat@round@precision{6}%
+ \expandafter\pgfmathroundto\expandafter{\pgfmathresult}%
+ \ifpgfmathfloatroundhasperiod
+ \else
+ \let\pgfretval\pgfmathresult%
+ \gdef\pgfmathfloatisint@@{1}%
+ \fi
+ \fi
}
\def\pgfmathprintnumber@INT@DETECT#1{%
- \pgfmathfloatparsenumber{#1}%
- \pgfmathfloat@to@FMeE@style\pgfmathresult
- \expandafter\pgfmathprintnumber@INT@DETECT@issci\pgfmathresult\relax
+ \pgfmathfloatparsenumber{#1}%
+ \pgfmathfloat@to@FMeE@style\pgfmathresult
+ \expandafter\pgfmathprintnumber@INT@DETECT@issci\pgfmathresult\relax
}
\def\pgfmathprintnumber@INT@DETECT@issci#1#2e#3\relax{%
- \begingroup
- \ifnum#1<3\relax
- \pgfmathfloatcreate{#1}{#2}{#3}%
- \pgfmathfloattofixed{\pgfmathresult}%
- \let\pgfmathfloat@round@precision@=\pgfmathfloat@round@precision
- \def\pgfmathfloat@round@precision{6}%
- \expandafter\pgfmathroundto\expandafter{\pgfmathresult}%
- \let\pgfmathfloat@round@precision=\pgfmathfloat@round@precision@
- \ifpgfmathfloatroundhasperiod
- \pgfmathprintnumber@SCI@issci#1#2e#3\relax
- \else
- \expandafter\pgfmathprintnumber@fixed@style\expandafter{\pgfmathresult}#1#2e#3\relax
- \fi
- \else
- \pgfmathfloatrounddisplaystyle#1#2e#3\relax%
- \fi
- \pgfmath@smuggleone\pgfmathresult
- \endgroup
+ \begingroup
+ \ifnum#1<3\relax
+ \pgfmathfloatcreate{#1}{#2}{#3}%
+ \pgfmathfloattofixed{\pgfmathresult}%
+ \let\pgfmathfloat@round@precision@=\pgfmathfloat@round@precision
+ \def\pgfmathfloat@round@precision{6}%
+ \expandafter\pgfmathroundto\expandafter{\pgfmathresult}%
+ \let\pgfmathfloat@round@precision=\pgfmathfloat@round@precision@
+ \ifpgfmathfloatroundhasperiod
+ \pgfmathprintnumber@SCI@issci#1#2e#3\relax
+ \else
+ \expandafter\pgfmathprintnumber@fixed@style\expandafter{\pgfmathresult}#1#2e#3\relax
+ \fi
+ \else
+ \pgfmathfloatrounddisplaystyle#1#2e#3\relax%
+ \fi
+ \pgfmath@smuggleone\pgfmathresult
+ \endgroup
}
\def\pgfmathprintnumber@FIXED#1{%
- \pgfmathfloatparsenumber{#1}%
- \pgfmathfloat@to@FMeE@style\pgfmathresult
- \expandafter\pgfmathprintnumber@FIXED@issci\pgfmathresult\relax
+ \pgfmathfloatparsenumber{#1}%
+ \pgfmathfloat@to@FMeE@style\pgfmathresult
+ \expandafter\pgfmathprintnumber@FIXED@issci\pgfmathresult\relax
}
\def\pgfmathprintnumber@FIXED@issci#1#2e#3\relax{%
- \begingroup
- \ifnum#1<3
- \pgfmathfloatcreate{#1}{#2}{#3}%
- \pgfmathfloattofixed{\pgfmathresult}%
- \ifpgfmathfloat@usezerofill@fixed
- \expandafter\pgfmathroundtozerofill\expandafter{\pgfmathresult}%
- \else
- \expandafter\pgfmathroundto\expandafter{\pgfmathresult}%
- \fi
- \ifpgfmathfloatroundmayneedrenormalize
- \pgfmathfloat@a@E=#3\relax
- \advance\pgfmathfloat@a@E by1
- \edef\pgfmathfloat@loc@TMPb{\noexpand\pgfmathprintnumber@fixed@style{\pgfmathresult}#1#2e\the\pgfmathfloat@a@E}%
- \pgfmathfloat@loc@TMPb\relax%
- \else
- \expandafter\pgfmathprintnumber@fixed@style\expandafter{\pgfmathresult}#1#2e#3\relax%
- \fi
- \else% nan or inf:
- \pgfmathfloatrounddisplaystyle#1#2e#3\relax%
- \fi
- \pgfmath@smuggleone\pgfmathresult
- \endgroup
+ \begingroup
+ \ifnum#1<3
+ \pgfmathfloatcreate{#1}{#2}{#3}%
+ \pgfmathfloattofixed{\pgfmathresult}%
+ \ifpgfmathfloat@usezerofill@fixed
+ \expandafter\pgfmathroundtozerofill\expandafter{\pgfmathresult}%
+ \else
+ \expandafter\pgfmathroundto\expandafter{\pgfmathresult}%
+ \fi
+ \ifpgfmathfloatroundmayneedrenormalize
+ \pgfmathfloat@a@E=#3\relax
+ \advance\pgfmathfloat@a@E by1
+ \edef\pgfmathfloat@loc@TMPb{\noexpand\pgfmathprintnumber@fixed@style{\pgfmathresult}#1#2e\the\pgfmathfloat@a@E}%
+ \pgfmathfloat@loc@TMPb\relax%
+ \else
+ \expandafter\pgfmathprintnumber@fixed@style\expandafter{\pgfmathresult}#1#2e#3\relax%
+ \fi
+ \else% nan or inf:
+ \pgfmathfloatrounddisplaystyle#1#2e#3\relax%
+ \fi
+ \pgfmath@smuggleone\pgfmathresult
+ \endgroup
}
\def\pgfmathprintnumber@SCI#1{%
- \pgfmathfloatparsenumber{#1}%
- \pgfmathfloat@to@FMeE@style\pgfmathresult
- \expandafter\pgfmathprintnumber@SCI@issci\pgfmathresult\relax
+ \pgfmathfloatparsenumber{#1}%
+ \pgfmathfloat@to@FMeE@style\pgfmathresult
+ \expandafter\pgfmathprintnumber@SCI@issci\pgfmathresult\relax
}
\def\pgfmathprintnumber@SCI@issci#1#2e#3\relax{%
- \begingroup
- \pgfmathfloatcreate{#1}{#2}{#3}%
- \edef\pgfmathfloat@round@precision{\pgfmathprintnumber@sci@precision}%
- \ifpgfmathfloat@usezerofill@sci
- \pgfmathfloatroundzerofill{\pgfmathresult}%
- \else
- \pgfmathfloatround{\pgfmathresult}%
- \fi
- \pgfmathfloat@to@FMeE@style\pgfmathresult
- \expandafter\pgfmathfloatrounddisplaystyle\pgfmathresult\relax
- \pgfmath@smuggleone\pgfmathresult
- \endgroup
+ \begingroup
+ \pgfmathfloatcreate{#1}{#2}{#3}%
+ \edef\pgfmathfloat@round@precision{\pgfmathprintnumber@sci@precision}%
+ \ifpgfmathfloat@usezerofill@sci
+ \pgfmathfloatroundzerofill{\pgfmathresult}%
+ \else
+ \pgfmathfloatround{\pgfmathresult}%
+ \fi
+ \pgfmathfloat@to@FMeE@style\pgfmathresult
+ \expandafter\pgfmathfloatrounddisplaystyle\pgfmathresult\relax
+ \pgfmath@smuggleone\pgfmathresult
+ \endgroup
}
% Prints argument #1 using the current pretty printer environment (all
@@ -1638,89 +1638,89 @@
%
% You may specify optional arguments with \pgfmathprintnumber[...].
\def\pgfmathprintnumber{%
- % \protect allows to supply \pgfmathprintnumber inside of latex
- % captions. The \csname yields \relax in case protect is undefined.
- \pgf@texdist@protect\pgfmathprintnumber@protected
+ % \protect allows to supply \pgfmathprintnumber inside of latex
+ % captions. The \csname yields \relax in case protect is undefined.
+ \pgf@texdist@protect\pgfmathprintnumber@protected
}%
\def\pgfmathprintnumber@protected{%
- \pgfutil@ifnextchar[%
- {\pgfmathprintnumber@OPT}%
- {\pgfmathprintnumber@noopt}%
+ \pgfutil@ifnextchar[%
+ {\pgfmathprintnumber@OPT}%
+ {\pgfmathprintnumber@noopt}%
}
\def\pgfmathprintnumber@noopt#1{%
- \pgfmathprintnumber@{#1}%
- \ifpgfmathprintnumber@assumemathmode
- \pgfmathresult
- \else
- \pgfutilensuremath{\pgfmathresult}%
- \fi
+ \pgfmathprintnumber@{#1}%
+ \ifpgfmathprintnumber@assumemathmode
+ \pgfmathresult
+ \else
+ \pgfutilensuremath{\pgfmathresult}%
+ \fi
}%
\def\pgfmathprintnumber@OPT[#1]#2{%
- \begingroup
- \pgfqkeys{/pgf/number format}{#1}%
- \pgfmathprintnumber@{#2}%
- \ifpgfmathprintnumber@assumemathmode
- \pgfmathresult
- \else
- \pgfutilensuremath{\pgfmathresult}%
- \fi
- \endgroup
+ \begingroup
+ \pgfqkeys{/pgf/number format}{#1}%
+ \pgfmathprintnumber@{#2}%
+ \ifpgfmathprintnumber@assumemathmode
+ \pgfmathresult
+ \else
+ \pgfutilensuremath{\pgfmathresult}%
+ \fi
+ \endgroup
}%
% As \pgfmathprintnumber, but it produces its output into the second
% argument.
\def\pgfmathprintnumberto{%
- \pgfutil@ifnextchar[%
- {\pgfmathprintnumberto@OPT}%
- {\pgfmathprintnumberto@noopt}%
+ \pgfutil@ifnextchar[%
+ {\pgfmathprintnumberto@OPT}%
+ {\pgfmathprintnumberto@noopt}%
}
\def\pgfmathprintnumberto@noopt#1#2{%
- \begingroup
- \pgfmathprintnumber@{#1}%
- \ifpgfmathprintnumber@assumemathmode
- \global\let\pgfmathfloat@glob@TMP=\pgfmathresult
- \else
- \toks0=\expandafter{\pgfmathresult}%
- \xdef\pgfmathfloat@glob@TMP{\noexpand\pgfutilensuremath{\the\toks0 }}%
- \fi
- \endgroup
- \let#2=\pgfmathfloat@glob@TMP
+ \begingroup
+ \pgfmathprintnumber@{#1}%
+ \ifpgfmathprintnumber@assumemathmode
+ \global\let\pgfmathfloat@glob@TMP=\pgfmathresult
+ \else
+ \toks0=\expandafter{\pgfmathresult}%
+ \xdef\pgfmathfloat@glob@TMP{\noexpand\pgfutilensuremath{\the\toks0 }}%
+ \fi
+ \endgroup
+ \let#2=\pgfmathfloat@glob@TMP
}%
\def\pgfmathprintnumberto@OPT[#1]#2#3{%
- \begingroup
- \pgfqkeys{/pgf/number format}{#1}%
- \pgfmathprintnumber@{#2}%
- \ifpgfmathprintnumber@assumemathmode
- \global\let\pgfmathfloat@glob@TMP=\pgfmathresult
- \else
- \toks0=\expandafter{\pgfmathresult}%
- \xdef\pgfmathfloat@glob@TMP{\noexpand\pgfutilensuremath{\the\toks0 }}%
- \fi
- \endgroup
- \let#3=\pgfmathfloat@glob@TMP
+ \begingroup
+ \pgfqkeys{/pgf/number format}{#1}%
+ \pgfmathprintnumber@{#2}%
+ \ifpgfmathprintnumber@assumemathmode
+ \global\let\pgfmathfloat@glob@TMP=\pgfmathresult
+ \else
+ \toks0=\expandafter{\pgfmathresult}%
+ \xdef\pgfmathfloat@glob@TMP{\noexpand\pgfutilensuremath{\the\toks0 }}%
+ \fi
+ \endgroup
+ \let#3=\pgfmathfloat@glob@TMP
}%
-
+
% Changes the current number pretty printer to #1.
%
% #1 is the macro base name for the pretty print routine, without the
% leading '\'.
\def\pgfmath@set@number@printer#1{%
- \expandafter\let\expandafter\pgfmathprintnumber@\csname #1\endcsname
- \expandafter\let\expandafter\pgfmathprintnumber@issci\csname #1@issci\endcsname
+ \expandafter\let\expandafter\pgfmathprintnumber@\csname #1\endcsname
+ \expandafter\let\expandafter\pgfmathprintnumber@issci\csname #1@issci\endcsname
}
\pgfkeys{/pgf/number format/std}
%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
+%
% IMPL
%
%%%%%%%%%%%%%%%%%%%%%%%%%%
-% equals only itself when compared with \ifx:
+% equals only itsself when compared with \ifx:
\def\pgfmathfloat@EOI{\pgfmathfloat@EOI}%
% Re-use counters internally.
@@ -1734,33 +1734,34 @@
\newif\ifpgfmathround@impl@PREPERIOD@is@negative@zero
% PRECONDITION:
-% \ifpgfmathfloatroundhasperiod=\iftrue holds outside of the current TeX group.
+% \ifpgfmathfloatroundhasperiod=\iftrue holds outside of the
+% current TeX group.
%
% POSTCONDITION:
% \ifpgfmathfloatroundhasperiod will be set correctly AFTER the
% current TeX group.
% \ifpgfmathfloatroundmayneedrenormalize will be set globally
\def\pgfmathroundto@impl#1{%
- \edef\pgfmathround@input{#1}%
- \global\pgfmathfloatroundmayneedrenormalizefalse
- \pgfmathfloat@tmptoks={}%
- \let\pgfmathround@next=\pgfutil@empty
- \let\pgfmathround@cur=\pgfutil@empty
- \let\pgfmathresult=\pgfutil@empty
- \expandafter\c@pgfmathroundto@prec\pgfmathfloat@round@precision\relax
- \c@pgfmathroundto@lastzeros=0
- \c@pgfmathroundto@offsetbehindperiod=-1 % means: no period found so far
- \pgfmathround@impl@PREPERIOD@is@negative@zerotrue
- \expandafter\pgfmathroundto@impl@ITERATE@NODOT@firstcall\pgfmathround@input\pgfmathfloat@EOI
+ \edef\pgfmathround@input{#1}%
+ \global\pgfmathfloatroundmayneedrenormalizefalse
+ \pgfmathfloat@tmptoks={}%
+ \let\pgfmathround@next=\pgfutil@empty
+ \let\pgfmathround@cur=\pgfutil@empty
+ \let\pgfmathresult=\pgfutil@empty
+ \expandafter\c@pgfmathroundto@prec\pgfmathfloat@round@precision\relax
+ \c@pgfmathroundto@lastzeros=0
+ \c@pgfmathroundto@offsetbehindperiod=-1 % means: no period found so far
+ \pgfmathround@impl@PREPERIOD@is@negative@zerotrue
+ \expandafter\pgfmathroundto@impl@ITERATE@NODOT@firstcall\pgfmathround@input\pgfmathfloat@EOI
}
% \pgfmathroundto implementation in WORDS:
%
-% coarse idea:
-% 1. collect all digits/sign BEFORE the first period in REVERSE order
-% 2. then, collect UP TO \prec digits after the period in REVERSE order
+% coarse idea:
+% 1. collect all digits/sign BEFORE the first period in REVERSE order
+% 2. then, collect UP TO \prec digits after the period in REVERSE order
% Steps 1. and 2. lead to the digit [sign] sequence
-% "x_{-p} x_{-p+1} ... x_{-2} x_{-1} '.' x_0 ... x_r"
+% "x_{-p} x_{-p+1} ... x_{-2} x_{-1} '.' x_0 ... x_r"
% where 'r' is the total number of digits. The integer 'p' denotes the
% ACTUALLY collected number of digits behind the period.
%
@@ -1773,31 +1774,31 @@
% 2. The case with p=k and x_{-p-1} is a further, next character.
%
% Then, for case 1.):
-% discard any unused zeros at the tail of our number (possibly
-% including the period)
+% discard any unused zeros at the tail of our number (possibly
+% including the period)
%
% and in case 2.)
% if NEXT DIGIT < 5:
% do exactly the same as in case 1.) above and discard any
% following digits.
% else
-% let q := -p
-% while(x_q = 9 and q<=r )
-% if q>=0
-% set x_q = '0'
-% else
-% discard digit x_q='9'
-% fi
-% ++q
-% if q=0
-% discard the period
-% fi
-% end while
-% if q = r+1
-% insert a '1'
-% else
-% set x_q = x_q + 1
-% fi
+% let q := -p
+% while(x_q = 9 and q<=r )
+% if q>=0
+% set x_q = '0'
+% else
+% discard digit x_q='9'
+% fi
+% ++q
+% if q=0
+% discard the period
+% fi
+% end while
+% if q = r+1
+% insert a '1'
+% else
+% set x_q = x_q + 1
+% fi
% fi
%
% All these loops have been implemented in spaghetti-code below.
@@ -1806,22 +1807,22 @@
% counting logic).
%
% Some comments:
-% - The token register \pgfmathfloat@tmptoks is used to accumulate the REVERSED input number.
-% - \pgfmathfloat@EOI always denotes 'END OF INPUT'.
-% - in the second stage, we need to reverse \pgfmathfloat@tmptoks.
-% This is -- again -- done with \pgfmathfloat@tmptoks.
+% - The token register \pgfmathfloat@tmptoks is used to accumulate the REVERSED input number.
+% - \pgfmathfloat@EOI always denotes 'END OF INPUT'.
+% - in the second stage, we need to reverse \pgfmathfloat@tmptoks.
+% This is -again- done with \pgfmathfloat@tmptoks.
\def\pgfmathroundto@impl@discard@period#1.#2\pgfmathfloat@EOI{%
- \pgfmathfloatroundhasperiodfalse
- \aftergroup\pgfmathfloatroundhasperiodfalse
- \def\pgfmathresult{#1}%
+ \pgfmathfloatroundhasperiodfalse
+ \aftergroup\pgfmathfloatroundhasperiodfalse
+ \def\pgfmathresult{#1}%
}
\def\pgfmathroundto@impl@gobble@rest@and@start#1\pgfmathfloat@EOI{%
- \pgfmathroundto@impl@start
+ \pgfmathroundto@impl@start
}
\def\pgfmathroundto@impl@gobble@and@start\pgfmathfloat@EOI{%
- \pgfmathroundto@impl@start
+ \pgfmathroundto@impl@start
}
\def\pgfmathroundto@impl@gobble\pgfmathfloat@EOI{}%
\def\pgfmathroundto@impl@gobble@rest#1\pgfmathfloat@EOI{}%
@@ -1829,281 +1830,281 @@
% This method will be invoked as soon as the first step, the reverse
% collection of up to PREC digits after the period, has finished.
\def\pgfmathroundto@impl@start{%
- \ifx\pgfmathround@next\pgfutil@empty
- \ifnum\c@pgfmathroundto@offsetbehindperiod<0
- % no period found.
- \ifpgfmathfloat@fixed@digits@after@period
- \ifnum\c@pgfmathroundto@prec=0\relax
- \pgfmathfloatroundhasperiodfalse
- \aftergroup\pgfmathfloatroundhasperiodfalse
- \edef\pgfmathresult{\pgfmathround@input}%
- \else
- \pgfmathfloat@tmptoks=\expandafter{\pgfmathround@input.}%
- \c@pgfmathroundto@offsetbehindperiod=\c@pgfmathroundto@prec
- \pgfmathroundto@impl@append@zeros
- \edef\pgfmathresult{\the\pgfmathfloat@tmptoks}%
- \fi
- \else
- \pgfmathfloatroundhasperiodfalse
- \aftergroup\pgfmathfloatroundhasperiodfalse
- \edef\pgfmathresult{\pgfmathround@input}%
- \fi
- \else
- %\ifnum\c@pgfmathroundto@offsetbehindperiod>\c@pgfmathroundto@prec
- % \pgfmath@error{Internal logic error in pgfmathroundto at [I] - should not have happened!?}{}%
- %\fi
- \pgfmathroundto@impl@finish@with@truncation
- \fi
- \else
- %\ifnum\c@pgfmathroundto@offsetbehindperiod=\c@pgfmathroundto@prec
- %\else
- % \pgfmath@error{Internal logic error in pgfmathroundto at [II] - should not have happened!? I have offsetbehindperiod=\the\c@pgfmathroundto@offsetbehindperiod and prec = \the\c@pgfmathroundto@prec}{}%
- %\fi
- \expandafter\ifnum\pgfmathround@next<5\relax
- \pgfmathroundto@impl@finish@with@truncation
- \else
- \multiply\c@pgfmathroundto@offsetbehindperiod by-1
- \expandafter\pgfmathroundto@impl@ADD@ONE\the\pgfmathfloat@tmptoks\pgfmathfloat@EOI
- \fi
- \fi
-}
-
+ \ifx\pgfmathround@next\pgfutil@empty
+ \ifnum\c@pgfmathroundto@offsetbehindperiod<0
+ % no period found.
+ \ifpgfmathfloat@fixed@digits@after@period
+ \ifnum\c@pgfmathroundto@prec=0\relax
+ \pgfmathfloatroundhasperiodfalse
+ \aftergroup\pgfmathfloatroundhasperiodfalse
+ \edef\pgfmathresult{\pgfmathround@input}%
+ \else
+ \pgfmathfloat@tmptoks=\expandafter{\pgfmathround@input.}%
+ \c@pgfmathroundto@offsetbehindperiod=\c@pgfmathroundto@prec
+ \pgfmathroundto@impl@append@zeros
+ \edef\pgfmathresult{\the\pgfmathfloat@tmptoks}%
+ \fi
+ \else
+ \pgfmathfloatroundhasperiodfalse
+ \aftergroup\pgfmathfloatroundhasperiodfalse
+ \edef\pgfmathresult{\pgfmathround@input}%
+ \fi
+ \else
+ %\ifnum\c@pgfmathroundto@offsetbehindperiod>\c@pgfmathroundto@prec
+ % \pgfmath@error{Internal logic error in pgfmathroundto at [I] - should not have happened!?}{}%
+ %\fi
+ \pgfmathroundto@impl@finish@with@truncation
+ \fi
+ \else
+ %\ifnum\c@pgfmathroundto@offsetbehindperiod=\c@pgfmathroundto@prec
+ %\else
+ % \pgfmath@error{Internal logic error in pgfmathroundto at [II] - should not have happened!? I have offsetbehindperiod=\the\c@pgfmathroundto@offsetbehindperiod and prec = \the\c@pgfmathroundto@prec}{}%
+ %\fi
+ \expandafter\ifnum\pgfmathround@next<5\relax
+ \pgfmathroundto@impl@finish@with@truncation
+ \else
+ \multiply\c@pgfmathroundto@offsetbehindperiod by-1
+ \expandafter\pgfmathroundto@impl@ADD@ONE\the\pgfmathfloat@tmptoks\pgfmathfloat@EOI
+ \fi
+ \fi
+}
+
% takes the current input and decides whether trailing zeros shall be
% discarded or more zeros need to be filled in.
\def\pgfmathroundto@impl@finish@with@truncation{%
- \ifpgfmathfloat@fixed@digits@after@period
- \expandafter\pgfmathroundto@impl@REVERSE\the\pgfmathfloat@tmptoks\pgfmathfloat@EOI
- \ifnum\c@pgfmathroundto@lastzeros=\c@pgfmathroundto@offsetbehindperiod
- \ifpgfmathround@impl@PREPERIOD@is@negative@zero
- % write '0.0000' instead of '-0.0000':
- \expandafter\pgfmathroundto@impl@discard@minus\the\pgfmathfloat@tmptoks\pgfmathfloat@EOI
- \fi
- \fi
- \ifnum\c@pgfmathroundto@prec=0\relax
- \expandafter\pgfmathroundto@impl@discard@period\the\pgfmathfloat@tmptoks\pgfmathfloat@EOI
- \else
- \advance\c@pgfmathroundto@prec by-\c@pgfmathroundto@offsetbehindperiod
- \c@pgfmathroundto@offsetbehindperiod=\c@pgfmathroundto@prec
- \pgfmathroundto@impl@append@zeros
- \edef\pgfmathresult{\the\pgfmathfloat@tmptoks}%
- \fi
- \else
- \pgfmathroundto@impl@discard@suffix@zeros
- \fi
+ \ifpgfmathfloat@fixed@digits@after@period
+ \expandafter\pgfmathroundto@impl@REVERSE\the\pgfmathfloat@tmptoks\pgfmathfloat@EOI
+ \ifnum\c@pgfmathroundto@lastzeros=\c@pgfmathroundto@offsetbehindperiod
+ \ifpgfmathround@impl@PREPERIOD@is@negative@zero
+ % write '0.0000' instead of '-0.0000':
+ \expandafter\pgfmathroundto@impl@discard@minus\the\pgfmathfloat@tmptoks\pgfmathfloat@EOI
+ \fi
+ \fi
+ \ifnum\c@pgfmathroundto@prec=0\relax
+ \expandafter\pgfmathroundto@impl@discard@period\the\pgfmathfloat@tmptoks\pgfmathfloat@EOI
+ \else
+ \advance\c@pgfmathroundto@prec by-\c@pgfmathroundto@offsetbehindperiod
+ \c@pgfmathroundto@offsetbehindperiod=\c@pgfmathroundto@prec
+ \pgfmathroundto@impl@append@zeros
+ \edef\pgfmathresult{\the\pgfmathfloat@tmptoks}%
+ \fi
+ \else
+ \pgfmathroundto@impl@discard@suffix@zeros
+ \fi
}
\def\pgfmathroundto@impl@discard@minus-#1\pgfmathfloat@EOI{\pgfmathfloat@tmptoks={#1}}%
% appends \c@pgfmathroundto@offsetbehindperiod zeros at the end of \pgfmathfloat@tmptoks.
\def\pgfmathroundto@impl@append@zeros{%
- \ifnum\c@pgfmathroundto@offsetbehindperiod>0
- \pgfmathfloat@tmptoks=\expandafter{\the\pgfmathfloat@tmptoks0}%
- \advance\c@pgfmathroundto@offsetbehindperiod by-1
- \pgfmathroundto@impl@append@zeros
- \fi
+ \ifnum\c@pgfmathroundto@offsetbehindperiod>0
+ \pgfmathfloat@tmptoks=\expandafter{\the\pgfmathfloat@tmptoks0}%
+ \advance\c@pgfmathroundto@offsetbehindperiod by-1
+ \pgfmathroundto@impl@append@zeros
+ \fi
}
\def\pgfmathroundto@impl@ADD@ONE{%
- \pgfmathfloat@tmptoks={}% no longer needed because its old value will be read from input
- \pgfmathroundto@impl@ADD@ONE@ITERATE
+ \pgfmathfloat@tmptoks={}% no longer needed because its old value will be read from input
+ \pgfmathroundto@impl@ADD@ONE@ITERATE
}
\def\pgfmathroundto@impl@ADD@ONE@ITERATE{%
- \pgfutil@ifnextchar\pgfmathfloat@EOI{%
- \global\pgfmathfloatroundmayneedrenormalizetrue
- \edef\pgfmathresult{1\the\pgfmathfloat@tmptoks}%
- \pgfmathroundto@impl@gobble
- }{%
- \pgfutil@ifnextchar.{%
- \ifnum\c@pgfmathroundto@prec=0
- % silently discard period in special case precision=0
- \def\pgfmathround@nextcmd{\pgfmathroundto@impl@ADD@ONE@ITERATE@gobble@dot}%
- \else
- \def\pgfmathround@nextcmd{\pgfmathroundto@impl@ADD@ONE@NEXT@COLLECT}%
- \fi
- \pgfmathround@nextcmd
- }{%
- \pgfutil@ifnextchar+{%
- \global\pgfmathfloatroundmayneedrenormalizetrue
- \edef\pgfmathresult{1\the\pgfmathfloat@tmptoks}%
- \pgfmathroundto@impl@gobble@rest
- }{%
- \pgfutil@ifnextchar-{%
- \global\pgfmathfloatroundmayneedrenormalizetrue
- \edef\pgfmathresult{-1\the\pgfmathfloat@tmptoks}%
- \pgfmathroundto@impl@gobble@rest
- }{%
- \pgfmathroundto@impl@ADD@ONE@NEXT
- }%
- }%
- }%
- }%
+ \pgfutil@ifnextchar\pgfmathfloat@EOI{%
+ \global\pgfmathfloatroundmayneedrenormalizetrue
+ \edef\pgfmathresult{1\the\pgfmathfloat@tmptoks}%
+ \pgfmathroundto@impl@gobble
+ }{%
+ \pgfutil@ifnextchar.{%
+ \ifnum\c@pgfmathroundto@prec=0
+ % silently discard period in special case precision=0
+ \def\pgfmathround@nextcmd{\pgfmathroundto@impl@ADD@ONE@ITERATE@gobble@dot}%
+ \else
+ \def\pgfmathround@nextcmd{\pgfmathroundto@impl@ADD@ONE@NEXT@COLLECT}%
+ \fi
+ \pgfmathround@nextcmd
+ }{%
+ \pgfutil@ifnextchar+{%
+ \global\pgfmathfloatroundmayneedrenormalizetrue
+ \edef\pgfmathresult{1\the\pgfmathfloat@tmptoks}%
+ \pgfmathroundto@impl@gobble@rest
+ }{%
+ \pgfutil@ifnextchar-{%
+ \global\pgfmathfloatroundmayneedrenormalizetrue
+ \edef\pgfmathresult{-1\the\pgfmathfloat@tmptoks}%
+ \pgfmathroundto@impl@gobble@rest
+ }{%
+ \pgfmathroundto@impl@ADD@ONE@NEXT
+ }%
+ }%
+ }%
+ }%
}
\def\pgfmathroundto@impl@ADD@ONE@ITERATE@gobble@dot.{%
- \pgfmathfloatroundhasperiodfalse
- \aftergroup\pgfmathfloatroundhasperiodfalse
- \pgfmathroundto@impl@ADD@ONE@ITERATE
+ \pgfmathfloatroundhasperiodfalse
+ \aftergroup\pgfmathfloatroundhasperiodfalse
+ \pgfmathroundto@impl@ADD@ONE@ITERATE
}
\def\pgfmathroundto@impl@ADD@ONE@NEXT@COLLECT#1{%
- \pgfmathfloat@tmptoks=\expandafter{\expandafter#1\the\pgfmathfloat@tmptoks}%
- \pgfmathroundto@impl@ADD@ONE@ITERATE
+ \pgfmathfloat@tmptoks=\expandafter{\expandafter#1\the\pgfmathfloat@tmptoks}%
+ \pgfmathroundto@impl@ADD@ONE@ITERATE
}
\def\pgfmathroundto@impl@ADD@ONE@NEXT#1{%
- \ifnum#1=9
- \ifnum\c@pgfmathroundto@offsetbehindperiod<0
- \ifpgfmathfloat@fixed@digits@after@period
- \pgfmathfloat@tmptoks=\expandafter{\expandafter0\the\pgfmathfloat@tmptoks}%
- \else
- % silently DROP digit
- \fi
- \else
- \pgfmathfloat@tmptoks=\expandafter{\expandafter0\the\pgfmathfloat@tmptoks}%
- \fi
- \advance\c@pgfmathroundto@offsetbehindperiod by1
- \ifnum\c@pgfmathroundto@offsetbehindperiod=0
- \ifpgfmathfloat@fixed@digits@after@period
- \def\pgfmathround@nextcmd{\pgfmathroundto@impl@ADD@ONE@ITERATE}%
- \else
- \def\pgfmathround@nextcmd{\pgfmathroundto@impl@ADD@ONE@ITERATE@gobble@dot}%
- \fi
- \else
- \def\pgfmathround@nextcmd{\pgfmathroundto@impl@ADD@ONE@ITERATE}%
- \fi
- \else
- % re-use this counter:
- \c@pgfmathroundto@lastzeros=#1
- \advance\c@pgfmathroundto@lastzeros by1
- \edef\pgfmathresult{\the\c@pgfmathroundto@lastzeros\the\pgfmathfloat@tmptoks}%
- \pgfmathfloat@tmptoks=\expandafter{\pgfmathresult}%
- \def\pgfmathround@nextcmd{\pgfmathroundto@impl@REVERSE@ITERATE}%
- \fi
- \pgfmathround@nextcmd
+ \ifnum#1=9
+ \ifnum\c@pgfmathroundto@offsetbehindperiod<0
+ \ifpgfmathfloat@fixed@digits@after@period
+ \pgfmathfloat@tmptoks=\expandafter{\expandafter0\the\pgfmathfloat@tmptoks}%
+ \else
+ % silently DROP digit
+ \fi
+ \else
+ \pgfmathfloat@tmptoks=\expandafter{\expandafter0\the\pgfmathfloat@tmptoks}%
+ \fi
+ \advance\c@pgfmathroundto@offsetbehindperiod by1
+ \ifnum\c@pgfmathroundto@offsetbehindperiod=0
+ \ifpgfmathfloat@fixed@digits@after@period
+ \def\pgfmathround@nextcmd{\pgfmathroundto@impl@ADD@ONE@ITERATE}%
+ \else
+ \def\pgfmathround@nextcmd{\pgfmathroundto@impl@ADD@ONE@ITERATE@gobble@dot}%
+ \fi
+ \else
+ \def\pgfmathround@nextcmd{\pgfmathroundto@impl@ADD@ONE@ITERATE}%
+ \fi
+ \else
+ % re-use this counter:
+ \c@pgfmathroundto@lastzeros=#1
+ \advance\c@pgfmathroundto@lastzeros by1
+ \edef\pgfmathresult{\the\c@pgfmathroundto@lastzeros\the\pgfmathfloat@tmptoks}%
+ \pgfmathfloat@tmptoks=\expandafter{\pgfmathresult}%
+ \def\pgfmathround@nextcmd{\pgfmathroundto@impl@REVERSE@ITERATE}%
+ \fi
+ \pgfmathround@nextcmd
}
\def\pgfmathroundto@impl@discard@suffix@zeros{%
- \ifnum\c@pgfmathroundto@lastzeros=\c@pgfmathroundto@offsetbehindperiod
- \ifpgfmathround@impl@PREPERIOD@is@negative@zero
- \pgfmathfloatroundhasperiodfalse
- \aftergroup\pgfmathfloatroundhasperiodfalse
- \def\pgfmathresult{0}% write '0' instead of '-0'
- \else
- \expandafter\pgfmathroundto@impl@discard@period\pgfmathround@input\pgfmathfloat@EOI
- \fi
- \else
- \ifnum\c@pgfmathroundto@lastzeros=0
- \expandafter\pgfmathroundto@impl@REVERSE\the\pgfmathfloat@tmptoks\pgfmathfloat@EOI
- \else
- \expandafter\pgfmathroundto@impl@discard@suffix@zeros@ITERATE\the\pgfmathfloat@tmptoks\pgfmathfloat@EOI
- \fi
- \fi
-}
-
-% PRECONDITION:
-% \c@pgfmathroundto@lastzeros > 0
+ \ifnum\c@pgfmathroundto@lastzeros=\c@pgfmathroundto@offsetbehindperiod
+ \ifpgfmathround@impl@PREPERIOD@is@negative@zero
+ \pgfmathfloatroundhasperiodfalse
+ \aftergroup\pgfmathfloatroundhasperiodfalse
+ \def\pgfmathresult{0}% write '0' instead of '-0'
+ \else
+ \expandafter\pgfmathroundto@impl@discard@period\pgfmathround@input\pgfmathfloat@EOI
+ \fi
+ \else
+ \ifnum\c@pgfmathroundto@lastzeros=0
+ \expandafter\pgfmathroundto@impl@REVERSE\the\pgfmathfloat@tmptoks\pgfmathfloat@EOI
+ \else
+ \expandafter\pgfmathroundto@impl@discard@suffix@zeros@ITERATE\the\pgfmathfloat@tmptoks\pgfmathfloat@EOI
+ \fi
+ \fi
+}
+
+% PRECONDITION:
+% \c@pgfmathroundto@lastzeros > 0
\def\pgfmathroundto@impl@discard@suffix@zeros@ITERATE#1{%
- \advance\c@pgfmathroundto@lastzeros by-1
- \ifnum\c@pgfmathroundto@lastzeros=0
- \def\pgfmathround@nextcmd{\pgfmathroundto@impl@REVERSE}%
- \else
- \def\pgfmathround@nextcmd{\pgfmathroundto@impl@discard@suffix@zeros@ITERATE}%
- \fi
- \pgfmathround@nextcmd
+ \advance\c@pgfmathroundto@lastzeros by-1
+ \ifnum\c@pgfmathroundto@lastzeros=0
+ \def\pgfmathround@nextcmd{\pgfmathroundto@impl@REVERSE}%
+ \else
+ \def\pgfmathround@nextcmd{\pgfmathroundto@impl@discard@suffix@zeros@ITERATE}%
+ \fi
+ \pgfmathround@nextcmd
}
% Usage:
% \pgfmathroundto@impl@REVERSE#1\pgfmathfloat@EOI
% -> writes #1 reversed into \pgfmathfloat@tmptoks
\def\pgfmathroundto@impl@REVERSE{%
- \pgfmathfloat@tmptoks={}%
- \pgfmathroundto@impl@REVERSE@ITERATE
+ \pgfmathfloat@tmptoks={}%
+ \pgfmathroundto@impl@REVERSE@ITERATE
}
\def\pgfmathroundto@impl@REVERSE@ITERATE{%
- \pgfutil@ifnextchar\pgfmathfloat@EOI{%
- \edef\pgfmathresult{\the\pgfmathfloat@tmptoks}%
- \pgfmathroundto@impl@gobble
- }{%
- \pgfmathroundto@impl@REVERSE@NEXT
- }%
+ \pgfutil@ifnextchar\pgfmathfloat@EOI{%
+ \edef\pgfmathresult{\the\pgfmathfloat@tmptoks}%
+ \pgfmathroundto@impl@gobble
+ }{%
+ \pgfmathroundto@impl@REVERSE@NEXT
+ }%
}
\def\pgfmathroundto@impl@REVERSE@NEXT#1{%
- \pgfmathfloat@tmptoks=\expandafter{\expandafter#1\the\pgfmathfloat@tmptoks}%
- \pgfmathroundto@impl@REVERSE@ITERATE
+ \pgfmathfloat@tmptoks=\expandafter{\expandafter#1\the\pgfmathfloat@tmptoks}%
+ \pgfmathroundto@impl@REVERSE@ITERATE
}
\def\pgfmathroundto@impl@BEGIN@DOT.{%
- \pgfmathfloat@tmptoks=\expandafter{\expandafter.\the\pgfmathfloat@tmptoks}%
- \c@pgfmathroundto@offsetbehindperiod=0
- \pgfmathroundto@impl@ITERATE@DOT
+ \pgfmathfloat@tmptoks=\expandafter{\expandafter.\the\pgfmathfloat@tmptoks}%
+ \c@pgfmathroundto@offsetbehindperiod=0
+ \pgfmathroundto@impl@ITERATE@DOT
}
\def\pgfmathroundto@impl@ITERATE@DOT{%
- \pgfutil@ifnextchar\pgfmathfloat@EOI{%
- % finished.
- \pgfmathroundto@impl@gobble@and@start
- }{%
- \pgfmathroundto@impl@NEXT@DOT
- }%
+ \pgfutil@ifnextchar\pgfmathfloat@EOI{%
+ % finished.
+ \pgfmathroundto@impl@gobble@and@start
+ }{%
+ \pgfmathroundto@impl@NEXT@DOT
+ }%
}
\def\pgfmathroundto@impl@NEXT@DOT#1{%
- \ifnum\c@pgfmathroundto@offsetbehindperiod=\c@pgfmathroundto@prec
- \def\pgfmathround@next{#1}%
- \def\pgfmathround@nextcmd{\pgfmathroundto@impl@gobble@rest@and@start}%
- \else
- \advance\c@pgfmathroundto@offsetbehindperiod by1
- \ifnum#1=0
- \advance\c@pgfmathroundto@lastzeros by1
- \else
- \c@pgfmathroundto@lastzeros=0
- \fi
- \pgfmathfloat@tmptoks=\expandafter{\expandafter#1\the\pgfmathfloat@tmptoks}%
- \def\pgfmathround@nextcmd{\pgfmathroundto@impl@ITERATE@DOT}%
- \fi
- \pgfmathround@nextcmd
+ \ifnum\c@pgfmathroundto@offsetbehindperiod=\c@pgfmathroundto@prec
+ \def\pgfmathround@next{#1}%
+ \def\pgfmathround@nextcmd{\pgfmathroundto@impl@gobble@rest@and@start}%
+ \else
+ \advance\c@pgfmathroundto@offsetbehindperiod by1
+ \ifnum#1=0
+ \advance\c@pgfmathroundto@lastzeros by1
+ \else
+ \c@pgfmathroundto@lastzeros=0
+ \fi
+ \pgfmathfloat@tmptoks=\expandafter{\expandafter#1\the\pgfmathfloat@tmptoks}%
+ \def\pgfmathround@nextcmd{\pgfmathroundto@impl@ITERATE@DOT}%
+ \fi
+ \pgfmathround@nextcmd
}%
% in contrast to pgfmathroundto@impl@ITERATE@NODOT, this method here
% checks also for signs
\def\pgfmathroundto@impl@ITERATE@NODOT@firstcall#1{%
- \def\pgfmathround@cur{#1}%
- \ifx\pgfmathround@cur\pgfmathfloat@EOI
- \pgfmathround@impl@PREPERIOD@is@negative@zerofalse
- \def\pgfmathround@nextcmd{\pgfmathroundto@impl@start}%
- \else
- \ifx\pgfmathround@cur\pgfmathfloatparsenumber@tok@PERIOD
- \pgfmathround@impl@PREPERIOD@is@negative@zerofalse
- \def\pgfmathround@nextcmd{\pgfmathroundto@impl@BEGIN@DOT.}%
- \else
- \ifx\pgfmathround@cur\pgfmathfloatparsenumber@tok@MINUS
- \else
- \pgfmathround@impl@PREPERIOD@is@negative@zerofalse
- \fi
- \pgfmathfloat@tmptoks=\expandafter{\expandafter#1\the\pgfmathfloat@tmptoks}%
- \def\pgfmathround@nextcmd{\pgfmathroundto@impl@ITERATE@NODOT}%
- \fi
- \fi
- \pgfmathround@nextcmd
+ \def\pgfmathround@cur{#1}%
+ \ifx\pgfmathround@cur\pgfmathfloat@EOI
+ \pgfmathround@impl@PREPERIOD@is@negative@zerofalse
+ \def\pgfmathround@nextcmd{\pgfmathroundto@impl@start}%
+ \else
+ \ifx\pgfmathround@cur\pgfmathfloatparsenumber@tok@PERIOD
+ \pgfmathround@impl@PREPERIOD@is@negative@zerofalse
+ \def\pgfmathround@nextcmd{\pgfmathroundto@impl@BEGIN@DOT.}%
+ \else
+ \ifx\pgfmathround@cur\pgfmathfloatparsenumber@tok@MINUS
+ \else
+ \pgfmathround@impl@PREPERIOD@is@negative@zerofalse
+ \fi
+ \pgfmathfloat@tmptoks=\expandafter{\expandafter#1\the\pgfmathfloat@tmptoks}%
+ \def\pgfmathround@nextcmd{\pgfmathroundto@impl@ITERATE@NODOT}%
+ \fi
+ \fi
+ \pgfmathround@nextcmd
}
\def\pgfmathroundto@impl@ITERATE@NODOT#1{%
- \def\pgfmathround@cur{#1}%
- \ifx\pgfmathround@cur\pgfmathfloat@EOI
- \def\pgfmathround@nextcmd{\pgfmathroundto@impl@start}%
- \else
- \ifx\pgfmathround@cur\pgfmathfloatparsenumber@tok@PERIOD
- \def\pgfmathround@nextcmd{\pgfmathroundto@impl@BEGIN@DOT.}%
- \else
- \ifx\pgfmathround@cur\pgfmathfloatparsenumber@tok@ZERO
- \else
- \pgfmathround@impl@PREPERIOD@is@negative@zerofalse
- \fi
- \pgfmathfloat@tmptoks=\expandafter{\expandafter#1\the\pgfmathfloat@tmptoks}%
- \def\pgfmathround@nextcmd{\pgfmathroundto@impl@ITERATE@NODOT}%
- \fi
- \fi
- \pgfmathround@nextcmd
+ \def\pgfmathround@cur{#1}%
+ \ifx\pgfmathround@cur\pgfmathfloat@EOI
+ \def\pgfmathround@nextcmd{\pgfmathroundto@impl@start}%
+ \else
+ \ifx\pgfmathround@cur\pgfmathfloatparsenumber@tok@PERIOD
+ \def\pgfmathround@nextcmd{\pgfmathroundto@impl@BEGIN@DOT.}%
+ \else
+ \ifx\pgfmathround@cur\pgfmathfloatparsenumber@tok@ZERO
+ \else
+ \pgfmathround@impl@PREPERIOD@is@negative@zerofalse
+ \fi
+ \pgfmathfloat@tmptoks=\expandafter{\expandafter#1\the\pgfmathfloat@tmptoks}%
+ \def\pgfmathround@nextcmd{\pgfmathroundto@impl@ITERATE@NODOT}%
+ \fi
+ \fi
+ \pgfmathround@nextcmd
}
%--------------------------------------------
@@ -2122,20 +2123,20 @@
% \ifpgfmathfloatroundhasperiod will be set after the current TeX
% group.
\def\pgfmathfloatround@impl{%
- \expandafter\pgfmathroundto@impl\expandafter{\the\pgfmathfloat@a@Mtok}%
- \ifpgfmathfloatroundmayneedrenormalize
- \ifpgfmathfloatroundhasperiod
- \expandafter\pgfmathfloatround@impl@renormalize\pgfmathresult\pgfmathfloat@EOI%
- \else
- \expandafter\pgfmathfloatround@impl@renormalize\pgfmathresult.\pgfmathfloat@EOI%
- \fi
- \advance\pgfmathfloat@a@E by1
- \fi
- \pgfmathfloatcreate{\the\pgfmathfloat@a@S}{\pgfmathresult}{\the\pgfmathfloat@a@E}%
+ \expandafter\pgfmathroundto@impl\expandafter{\the\pgfmathfloat@a@Mtok}%
+ \ifpgfmathfloatroundmayneedrenormalize
+ \ifpgfmathfloatroundhasperiod
+ \expandafter\pgfmathfloatround@impl@renormalize\pgfmathresult\pgfmathfloat@EOI%
+ \else
+ \expandafter\pgfmathfloatround@impl@renormalize\pgfmathresult.\pgfmathfloat@EOI%
+ \fi
+ \advance\pgfmathfloat@a@E by1
+ \fi
+ \pgfmathfloatcreate{\the\pgfmathfloat@a@S}{\pgfmathresult}{\the\pgfmathfloat@a@E}%
}
\def\pgfmathfloatround@impl@renormalize#1#2.#3\pgfmathfloat@EOI{%
- \pgfmathroundto@impl{#1.#2#3}%
+ \pgfmathroundto@impl{#1.#2#3}%
}
@@ -2145,106 +2146,106 @@
% ATTENTION: this thing REQUIRES a period in the mantissa!
% collects everything into \pgfmathresult
\def\pgfmathfloattofixed@impl#1.#2\relax{%
- \ifnum\pgfmathfloat@a@E<0
- \ifcase-\pgfmathfloat@a@E
- \or%e-1
- \pgfmathfloat@a@Mtok={0.}%
- \or%e-2
- \pgfmathfloat@a@Mtok={0.0}%
- \or%e-3
- \pgfmathfloat@a@Mtok={0.00}%
- \or%e-4
- \pgfmathfloat@a@Mtok={0.000}%
- \or%e-5
- \pgfmathfloat@a@Mtok={0.0000}%
- \or%e-6
- \pgfmathfloat@a@Mtok={0.00000}%
- \or%e-7
- \pgfmathfloat@a@Mtok={0.000000}%
- \or%e-8
- \pgfmathfloat@a@Mtok={0.0000000}%
- \or%e-9
- \pgfmathfloat@a@Mtok={0.00000000}%
- \or%e-10
- \pgfmathfloat@a@Mtok={0.000000000}%
- \else%<= -11
- \pgfmathfloat@a@Mtok={0.0000000000}%
- \advance\pgfmathfloat@a@E by10
- \pgfutil@loop
- \ifnum\pgfmathfloat@a@E<-1
- \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok 0}%
- \advance\pgfmathfloat@a@E by1
- \pgfutil@repeat
- \fi
- \def\pgfmathfloat@loc@TMPb{#2}%
- \def\pgfmathfloat@loc@TMPc{0}%
- \ifx\pgfmathfloat@loc@TMPb\pgfmathfloat@loc@TMPc
- \edef\pgfmathresult{\the\pgfmathfloat@a@Mtok #1}%
- \else
- \edef\pgfmathresult{\the\pgfmathfloat@a@Mtok #1#2}%
- \fi
- \else
- %--------------------------------------------------
- % \ifnum\pgfmathfloat@a@E=0%
- % \edef\pgfmathresult{#1.#2}%
- % \else
- % \pgfmathfloat@a@Mtok={#1}%
- % \pgfmathfloattofixed@impl@collectmantissa#2\count\pgfmathfloat@a@E
- % \edef\pgfmathresult{\the\pgfmathfloat@a@Mtok}%
- % \fi
- %--------------------------------------------------
- \pgfmathfloat@a@Mtok{#1}%
- \pgfmathfloattofixed@impl@pos#2000000000\pgfmathfloat@EOI
- \edef\pgfmathresult{\the\pgfmathfloat@a@Mtok}%
- \fi
+ \ifnum\pgfmathfloat@a@E<0
+ \ifcase-\pgfmathfloat@a@E
+ \or%e-1
+ \pgfmathfloat@a@Mtok={0.}%
+ \or%e-2
+ \pgfmathfloat@a@Mtok={0.0}%
+ \or%e-3
+ \pgfmathfloat@a@Mtok={0.00}%
+ \or%e-4
+ \pgfmathfloat@a@Mtok={0.000}%
+ \or%e-5
+ \pgfmathfloat@a@Mtok={0.0000}%
+ \or%e-6
+ \pgfmathfloat@a@Mtok={0.00000}%
+ \or%e-7
+ \pgfmathfloat@a@Mtok={0.000000}%
+ \or%e-8
+ \pgfmathfloat@a@Mtok={0.0000000}%
+ \or%e-9
+ \pgfmathfloat@a@Mtok={0.00000000}%
+ \or%e-10
+ \pgfmathfloat@a@Mtok={0.000000000}%
+ \else%<= -11
+ \pgfmathfloat@a@Mtok={0.0000000000}%
+ \advance\pgfmathfloat@a@E by10
+ \pgfutil@loop
+ \ifnum\pgfmathfloat@a@E<-1
+ \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok 0}%
+ \advance\pgfmathfloat@a@E by1
+ \pgfutil@repeat
+ \fi
+ \def\pgfmathfloat@loc@TMPb{#2}%
+ \def\pgfmathfloat@loc@TMPc{0}%
+ \ifx\pgfmathfloat@loc@TMPb\pgfmathfloat@loc@TMPc
+ \edef\pgfmathresult{\the\pgfmathfloat@a@Mtok #1}%
+ \else
+ \edef\pgfmathresult{\the\pgfmathfloat@a@Mtok #1#2}%
+ \fi
+ \else
+ %--------------------------------------------------
+ % \ifnum\pgfmathfloat@a@E=0%
+ % \edef\pgfmathresult{#1.#2}%
+ % \else
+ % \pgfmathfloat@a@Mtok={#1}%
+ % \pgfmathfloattofixed@impl@collectmantissa#2\count\pgfmathfloat@a@E
+ % \edef\pgfmathresult{\the\pgfmathfloat@a@Mtok}%
+ % \fi
+ %--------------------------------------------------
+ \pgfmathfloat@a@Mtok{#1}%
+ \pgfmathfloattofixed@impl@pos#2000000000\pgfmathfloat@EOI
+ \edef\pgfmathresult{\the\pgfmathfloat@a@Mtok}%
+ \fi
}
% FIXME: this implementation here is very fast, but it introduces trailing zeros. Is that acceptable?
\def\pgfmathfloattofixed@impl@pos#1#2#3#4#5#6#7#8#9\pgfmathfloat@EOI{%
- \ifcase\pgfmathfloat@a@E
- % e+0
- \pgfmathfloat@a@Mtok\expandafter{\the\pgfmathfloat@a@Mtok .#1#2#3#4#5#6#7#8#9}%
- \or%e+1
- \pgfmathfloat@a@Mtok\expandafter{\the\pgfmathfloat@a@Mtok #1.#2#3#4#5#6#7#8#9}%
- \or%e+2
- \pgfmathfloat@a@Mtok\expandafter{\the\pgfmathfloat@a@Mtok #1#2.#3#4#5#6#7#8#9}%
- \or%e+3
- \pgfmathfloat@a@Mtok\expandafter{\the\pgfmathfloat@a@Mtok #1#2#3.#4#5#6#7#8#9}%
- \or%e+4
- \pgfmathfloat@a@Mtok\expandafter{\the\pgfmathfloat@a@Mtok #1#2#3#4.#5#6#7#8#9}%
- \or%e+5
- \pgfmathfloat@a@Mtok\expandafter{\the\pgfmathfloat@a@Mtok #1#2#3#4#5.#6#7#8#9}%
- \or%e+6
- \pgfmathfloat@a@Mtok\expandafter{\the\pgfmathfloat@a@Mtok #1#2#3#4#5#6.#7#8#9}%
- \or%e+7
- \pgfmathfloat@a@Mtok\expandafter{\the\pgfmathfloat@a@Mtok #1#2#3#4#5#6#7.#8#9}%
- \or%e+8
- \pgfmathfloat@a@Mtok\expandafter{\the\pgfmathfloat@a@Mtok #1#2#3#4#5#6#7#8.#9}%
- \else%>=9
- \pgfmathfloat@a@Mtok\expandafter{\the\pgfmathfloat@a@Mtok #1#2#3#4#5#6#7#8}%
- \advance\pgfmathfloat@a@E by-8
- \pgfmathfloattofixed@impl@collectmantissa#9\count\pgfmathfloat@a@E
- \fi
+ \ifcase\pgfmathfloat@a@E
+ % e+0
+ \pgfmathfloat@a@Mtok\expandafter{\the\pgfmathfloat@a@Mtok .#1#2#3#4#5#6#7#8#9}%
+ \or%e+1
+ \pgfmathfloat@a@Mtok\expandafter{\the\pgfmathfloat@a@Mtok #1.#2#3#4#5#6#7#8#9}%
+ \or%e+2
+ \pgfmathfloat@a@Mtok\expandafter{\the\pgfmathfloat@a@Mtok #1#2.#3#4#5#6#7#8#9}%
+ \or%e+3
+ \pgfmathfloat@a@Mtok\expandafter{\the\pgfmathfloat@a@Mtok #1#2#3.#4#5#6#7#8#9}%
+ \or%e+4
+ \pgfmathfloat@a@Mtok\expandafter{\the\pgfmathfloat@a@Mtok #1#2#3#4.#5#6#7#8#9}%
+ \or%e+5
+ \pgfmathfloat@a@Mtok\expandafter{\the\pgfmathfloat@a@Mtok #1#2#3#4#5.#6#7#8#9}%
+ \or%e+6
+ \pgfmathfloat@a@Mtok\expandafter{\the\pgfmathfloat@a@Mtok #1#2#3#4#5#6.#7#8#9}%
+ \or%e+7
+ \pgfmathfloat@a@Mtok\expandafter{\the\pgfmathfloat@a@Mtok #1#2#3#4#5#6#7.#8#9}%
+ \or%e+8
+ \pgfmathfloat@a@Mtok\expandafter{\the\pgfmathfloat@a@Mtok #1#2#3#4#5#6#7#8.#9}%
+ \else%>=9
+ \pgfmathfloat@a@Mtok\expandafter{\the\pgfmathfloat@a@Mtok #1#2#3#4#5#6#7#8}%
+ \advance\pgfmathfloat@a@E by-8
+ \pgfmathfloattofixed@impl@collectmantissa#9\count\pgfmathfloat@a@E
+ \fi
}%
\def\pgfmathfloattofixed@impl@collectmantissa#1#2\count#3{%
- \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok #1}%
- \advance\pgfmathfloat@a@E by-1%
- \def\pgfmathfloat@loc@TMPb{#2}%
- \ifx\pgfmathfloat@loc@TMPb\pgfutil@empty
- \pgfutil@loop
- \ifnum\pgfmathfloat@a@E>0%
- \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok 0}%
- \advance\pgfmathfloat@a@E by-1%
- \pgfutil@repeat
- \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok .0}%
- \else
- \ifnum\pgfmathfloat@a@E=0
- \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok .#2}%
- \else
- \pgfmathfloattofixed@impl@collectmantissa#2\count#3%
- \fi
- \fi
+ \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok #1}%
+ \advance\pgfmathfloat@a@E by-1%
+ \def\pgfmathfloat@loc@TMPb{#2}%
+ \ifx\pgfmathfloat@loc@TMPb\pgfutil@empty
+ \pgfutil@loop
+ \ifnum\pgfmathfloat@a@E>0%
+ \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok 0}%
+ \advance\pgfmathfloat@a@E by-1%
+ \pgfutil@repeat
+ \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok .0}%
+ \else
+ \ifnum\pgfmathfloat@a@E=0
+ \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok .#2}%
+ \else
+ \pgfmathfloattofixed@impl@collectmantissa#2\count#3%
+ \fi
+ \fi
}
@@ -2275,46 +2276,46 @@
%
% It assigns \pgfmathfloat@a@S, \pgfmathfloat@a@Mtok, \pgfmathfloat@a@E.
\def\pgfflt@impl#1{%
- \pgfmathfloatparsenumberpendingperiodfalse
- \pgfmathfloat@tmptoks={}% this register is used to collect PENDING ZEROS
- \pgfmathfloat@a@E=0
- % start parsing: check for sign:
- \expandafter\ifx\csname pgfflt@#1\endcsname\relax
- \pgfmathfloat@a@S=1
- \expandafter\pgfflt@init\expandafter#1%
- \else
- \expandafter\expandafter\csname pgfflt@#1\endcsname
- \fi
+ \pgfmathfloatparsenumberpendingperiodfalse
+ \pgfmathfloat@tmptoks={}% this register is used to collect PENDING ZEROS
+ \pgfmathfloat@a@E=0
+ % start parsing: check for sign:
+ \expandafter\ifx\csname pgfflt@#1\endcsname\relax
+ \pgfmathfloat@a@S=1
+ \expandafter\pgfflt@init\expandafter#1%
+ \else
+ \expandafter\expandafter\csname pgfflt@#1\endcsname
+ \fi
}
% State transitions:
\expandafter\def\csname pgfflt@+\endcsname{%
- \pgfmathfloat@a@S=1 %
- \pgfflt@init}%
+ \pgfmathfloat@a@S=1 %
+ \pgfflt@init}%
\expandafter\def\csname pgfflt@-\endcsname{%
- \pgfmathfloat@a@S=2 %
- \pgfflt@init}%
+ \pgfmathfloat@a@S=2 %
+ \pgfflt@init}%
\expandafter\def\csname pgfflt@\pgfflt@EOI\endcsname{%
- \pgfmathfloatparsenumber@handleerror{empty number}{}{}}%
+ \pgfmathfloatparsenumber@handleerror{empty number}{}{}}%
\pgfkeys{
- /pgf/fpu/handlers/empty number/.style 2 args={%
- /pgf/fpu/handlers/invalid number={#1}{#2}%
- },
- /pgf/fpu/empty number is zero/.style={%
- /pgf/fpu/handlers/empty number/.code 2 args={%
- \pgfmathfloatcreate{0}{0.0}{0}%
- }%
- },%
- /pgf/fpu/handlers/invalid separator/.code 2 args={%
- \pgfmath@error{Could not parse input '#1' as a floating point number, sorry. The unreadable part was near the decimal separator '#2'. Do you need the option 'read comma as period'?}{}%
- },
- /pgf/fpu/handlers/invalid number/.code 2 args={%
- \pgfmath@error{Could not parse input '#1' as a floating point number, sorry. The unreadable part was near '#2'.}{}%
- },
- /pgf/fpu/handlers/wrong lowlevel format/.code 2 args={%
- \pgfmath@error{Sorry, an internal routine of the floating point unit got an ill-formatted floating point number `#1'. The unreadable part was near '#2'.}{}%
- \let\pgfmathresult=\pgfutil@empty
- },
+ /pgf/fpu/handlers/empty number/.style 2 args={%
+ /pgf/fpu/handlers/invalid number={#1}{#2}%
+ },
+ /pgf/fpu/empty number is zero/.style={%
+ /pgf/fpu/handlers/empty number/.code 2 args={%
+ \pgfmathfloatcreate{0}{0.0}{0}%
+ }%
+ },%
+ /pgf/fpu/handlers/invalid separator/.code 2 args={%
+ \pgfmath@error{Could not parse input '#1' as a floating point number, sorry. The unreadable part was near the decimal separator '#2'. Do you need the option 'read comma as period'?}{}%
+ },
+ /pgf/fpu/handlers/invalid number/.code 2 args={%
+ \pgfmath@error{Could not parse input '#1' as a floating point number, sorry. The unreadable part was near '#2'.}{}%
+ },
+ /pgf/fpu/handlers/wrong lowlevel format/.code 2 args={%
+ \pgfmath@error{Sorry, an internal routine of the floating point unit got an ill-formatted floating point number `#1'. The unreadable part was near '#2'.}{}%
+ \let\pgfmathresult=\pgfutil@empty
+ },
}
% #1 the error handler
@@ -2322,30 +2323,30 @@
% #3 the part which produced the error
%
% POSTCONDITION: the three registers
-% \pgfmathfloat@a@S
-% \pgfmathfloat@a@Mtok
-% \pgfmathfloat@a@E
+% \pgfmathfloat@a@S
+% \pgfmathfloat@a@Mtok
+% \pgfmathfloat@a@E
% will contain the number which results from the error handler.
\def\pgfmathfloatparsenumber@handleerror#1#2#3{%
- \let\pgfmathresult=\pgfutil@empty
- \pgfmathfloatparsenumberpendingperiodfalse
- \pgfkeys{/pgf/fpu/handlers/#1={#2}{#3}}%
- \ifx\pgfmathresult\pgfutil@empty
- \pgfmathfloat@a@S=3
- \pgfmathfloat@a@Mtok={0.0}%
- \pgfmathfloat@a@E=0
- \else
- \expandafter\pgfmathfloat@decompose@tok\pgfmathresult\relax\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
- \fi
+ \let\pgfmathresult=\pgfutil@empty
+ \pgfmathfloatparsenumberpendingperiodfalse
+ \pgfkeys{/pgf/fpu/handlers/#1={#2}{#3}}%
+ \ifx\pgfmathresult\pgfutil@empty
+ \pgfmathfloat@a@S=3
+ \pgfmathfloat@a@Mtok={0.0}%
+ \pgfmathfloat@a@E=0
+ \else
+ \expandafter\pgfmathfloat@decompose@tok\pgfmathresult\relax\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
+ \fi
}
\def\pgfflt@error#1\pgfflt@EOI{%
- \begingroup
- \pgfmathfloat@a@Mtok={#1}%
- \xdef\pgfmathfloat@glob@TMP{%
- \noexpand\pgfmathfloatparsenumber@handleerror
- {invalid number}{\pgfmathresult}{\the\pgfmathfloat@a@Mtok}}%
- \endgroup
- \pgfmathfloat@glob@TMP
+ \begingroup
+ \pgfmathfloat@a@Mtok={#1}%
+ \xdef\pgfmathfloat@glob@TMP{%
+ \noexpand\pgfmathfloatparsenumber@handleerror
+ {invalid number}{\pgfmathresult}{\the\pgfmathfloat@a@Mtok}}%
+ \endgroup
+ \pgfmathfloat@glob@TMP
}%
@@ -2353,11 +2354,11 @@
% FROM: checksign.
%
\def\pgfflt@init#1{%
- \expandafter\ifx\csname pgffltA@#1\endcsname\relax
- \expandafter\pgfflt@error\expandafter#1%
- \else
- \expandafter\expandafter\csname pgffltA@#1\endcsname
- \fi}
+ \expandafter\ifx\csname pgffltA@#1\endcsname\relax
+ \expandafter\pgfflt@error\expandafter#1%
+ \else
+ \expandafter\expandafter\csname pgffltA@#1\endcsname
+ \fi}
% state transitions:
\expandafter\def\csname pgffltA@0\endcsname{\pgfflt@leadingzero}% FIXME: inline optimization!
\expandafter\def\csname pgffltA@1\endcsname{\pgfflt@nonzerodigit1}%
@@ -2370,82 +2371,82 @@
\expandafter\def\csname pgffltA@8\endcsname{\pgfflt@nonzerodigit8}%
\expandafter\def\csname pgffltA@9\endcsname{\pgfflt@nonzerodigit9}%
\def\pgfflt@nonzerodigit#1{%
- \pgfmathfloat@a@Mtok={#1}%
- \pgfmathfloatparsenumberpendingperiodtrue
- \pgfflt@positiveexp}%
+ \pgfmathfloat@a@Mtok={#1}%
+ \pgfmathfloatparsenumberpendingperiodtrue
+ \pgfflt@positiveexp}%
\expandafter\def\csname pgffltA@n\endcsname{\pgfflt@readnan}% FIXME: inlining?
\expandafter\def\csname pgffltA@N\endcsname{\pgfflt@readnan}% FIXME: inlining?
\expandafter\def\csname pgffltA@i\endcsname{\pgfflt@readinf}% FIXME: inlining?
\expandafter\def\csname pgffltA@I\endcsname{\pgfflt@readinf}% FIXME: inlining?
\expandafter\def\csname pgffltA@.\endcsname{% read '.9' like '0.9'
- \pgfmathfloat@a@E=-1
- \pgfflt@leadingzero@foundperiod}%
+ \pgfmathfloat@a@E=-1
+ \pgfflt@leadingzero@foundperiod}%
\expandafter\def\csname pgffltA@,\endcsname{% read ',9' like '0,9'
- \pgfmathfloat@frenchinput{%
- \pgfmathfloat@a@E=-1
- \pgfflt@leadingzero@foundperiod
- }%
+ \pgfmathfloat@frenchinput{%
+ \pgfmathfloat@a@E=-1
+ \pgfflt@leadingzero@foundperiod
+ }%
}%
\def\pgfmathfloat@frenchinput#1{%
- \ifpgfmathparsenumber@comma@as@period
- \def\pgf@marshal{#1}%
- \expandafter\pgf@marshal
- \else
- \expandafter\pgfflt@error@separator\expandafter,%
- \fi
+ \ifpgfmathparsenumber@comma@as@period
+ \def\pgf@marshal{#1}%
+ \expandafter\pgf@marshal
+ \else
+ \expandafter\pgfflt@error@separator\expandafter,%
+ \fi
}%
\def\pgfflt@error@separator#1\pgfflt@EOI{%
- \begingroup
- \pgfmathfloat@a@Mtok={#1}%
- \xdef\pgfmathfloat@glob@TMP{%
- \noexpand\pgfmathfloatparsenumber@handleerror
- {invalid separator}{\pgfmathresult}{\the\pgfmathfloat@a@Mtok}}%
- \endgroup
- \pgfmathfloat@glob@TMP
+ \begingroup
+ \pgfmathfloat@a@Mtok={#1}%
+ \xdef\pgfmathfloat@glob@TMP{%
+ \noexpand\pgfmathfloatparsenumber@handleerror
+ {invalid separator}{\pgfmathresult}{\the\pgfmathfloat@a@Mtok}}%
+ \endgroup
+ \pgfmathfloat@glob@TMP
}%
\def\pgfflt@finish#1\pgfflt@EOI{}
\def\pgfflt@readnan #1#2{%
- \def\pgfflt@readnan@ok{1}%
- \if#1a\else\if#1A\else\def\pgfflt@readnan@ok{0}\fi\fi
- \if#2n\else\if#2N\else\def\pgfflt@readnan@ok{0}\fi\fi
- \if\pgfflt@readnan@ok1%
- \pgfmathfloat@a@S=3\relax%
- \pgfmathfloat@a@Mtok={0.0}%
- \pgfmathfloat@a@E=0%
- \expandafter\pgfflt@finish
- \else
- \def\pgfflt@readnan@{\pgfflt@error #1#2}%
- \expandafter\pgfflt@readnan@
- \fi
+ \def\pgfflt@readnan@ok{1}%
+ \if#1a\else\if#1A\else\def\pgfflt@readnan@ok{0}\fi\fi
+ \if#2n\else\if#2N\else\def\pgfflt@readnan@ok{0}\fi\fi
+ \if\pgfflt@readnan@ok1%
+ \pgfmathfloat@a@S=3\relax%
+ \pgfmathfloat@a@Mtok={0.0}%
+ \pgfmathfloat@a@E=0%
+ \expandafter\pgfflt@finish
+ \else
+ \def\pgfflt@readnan@{\pgfflt@error #1#2}%
+ \expandafter\pgfflt@readnan@
+ \fi
}
\def\pgfflt@readinf #1#2{%
- \def\pgfflt@readinf@ok{1}%
- \if#1n\else\if#1N\else\def\pgfflt@readinf@ok{0}\fi\fi
- \if#2f\else\if#2F\else\def\pgfflt@readinf@ok{0}\fi\fi
- \if\pgfflt@readinf@ok1%
- \ifnum\pgfmathfloat@a@S=1 %
- \pgfmathfloat@a@S=4 %
- \pgfmathfloat@a@Mtok={0.0}%
- \else
- \pgfmathfloat@a@S=5 %
- \pgfmathfloat@a@Mtok={0.0}%
- \fi
- \pgfmathfloat@a@E=0 %
- \expandafter\pgfflt@finish
- \else
- \def\pgfflt@readinf@{\pgfflt@error #1#2}%
- \expandafter\pgfflt@readinf@
- \fi
+ \def\pgfflt@readinf@ok{1}%
+ \if#1n\else\if#1N\else\def\pgfflt@readinf@ok{0}\fi\fi
+ \if#2f\else\if#2F\else\def\pgfflt@readinf@ok{0}\fi\fi
+ \if\pgfflt@readinf@ok1%
+ \ifnum\pgfmathfloat@a@S=1 %
+ \pgfmathfloat@a@S=4 %
+ \pgfmathfloat@a@Mtok={0.0}%
+ \else
+ \pgfmathfloat@a@S=5 %
+ \pgfmathfloat@a@Mtok={0.0}%
+ \fi
+ \pgfmathfloat@a@E=0 %
+ \expandafter\pgfflt@finish
+ \else
+ \def\pgfflt@readinf@{\pgfflt@error #1#2}%
+ \expandafter\pgfflt@readinf@
+ \fi
}
\def\pgfflt@leadingzero#1{%
- \expandafter\ifx\csname pgffltB@#1\endcsname\relax
- \expandafter\pgfflt@error\expandafter#1%
- \else
- \expandafter\expandafter\csname pgffltB@#1\endcsname
- \fi}
+ \expandafter\ifx\csname pgffltB@#1\endcsname\relax
+ \expandafter\pgfflt@error\expandafter#1%
+ \else
+ \expandafter\expandafter\csname pgffltB@#1\endcsname
+ \fi}
% State transitions:
\expandafter\def\csname pgffltB@0\endcsname{\pgfflt@leadingzero}%
\expandafter\def\csname pgffltB@1\endcsname{\pgfmathfloat@a@Mtok={1}\pgfmathfloatparsenumberpendingperiodtrue \pgfflt@positiveexp}
@@ -2459,35 +2460,35 @@
\expandafter\def\csname pgffltB@9\endcsname{\pgfmathfloat@a@Mtok={9}\pgfmathfloatparsenumberpendingperiodtrue \pgfflt@positiveexp}
\expandafter\def\csname pgffltB@\pgfmathfloat@POSTFLAGSCHAR\endcsname{\pgfmathfloat@a@Mtok={0}\pgfflt@readlowlevelfloat}%
\expandafter\def\csname pgffltB@.\endcsname{%
- \pgfmathfloat@a@E=-1
- \pgfflt@leadingzero@foundperiod}%
+ \pgfmathfloat@a@E=-1
+ \pgfflt@leadingzero@foundperiod}%
\expandafter\def\csname pgffltB@,\endcsname{%
- \pgfmathfloat@frenchinput{%
- \pgfmathfloat@a@E=-1
- \pgfflt@leadingzero@foundperiod
- }%
+ \pgfmathfloat@frenchinput{%
+ \pgfmathfloat@a@E=-1
+ \pgfflt@leadingzero@foundperiod
+ }%
}%
\expandafter\def\csname pgffltB@e\endcsname{%
- \pgfmathfloat@a@S=0\relax%
- \pgfmathfloat@a@Mtok={0.0}%
- \pgfmathfloat@a@E=0%
- \pgfflt@readexponent}%
+ \pgfmathfloat@a@S=0\relax%
+ \pgfmathfloat@a@Mtok={0.0}%
+ \pgfmathfloat@a@E=0%
+ \pgfflt@readexponent}%
\let\pgffltB@E=\pgffltB@e
\expandafter\def\csname pgffltB@\pgfflt@EOI\endcsname{%
- \pgfmathfloat@a@S=0\relax%
- \pgfmathfloat@a@Mtok={0.0}%
- \pgfmathfloat@a@E=0}%
+ \pgfmathfloat@a@S=0\relax%
+ \pgfmathfloat@a@Mtok={0.0}%
+ \pgfmathfloat@a@E=0}%
\def\pgfflt@leadingzero@foundperiod#1{%
- \expandafter\ifx\csname pgffltC@#1\endcsname\relax
- \expandafter\pgfflt@error\expandafter#1%
- \else
- \expandafter\expandafter\csname pgffltC@#1\endcsname
- \fi}
+ \expandafter\ifx\csname pgffltC@#1\endcsname\relax
+ \expandafter\pgfflt@error\expandafter#1%
+ \else
+ \expandafter\expandafter\csname pgffltC@#1\endcsname
+ \fi}
% State transitions:
\expandafter\def\csname pgffltC@0\endcsname{%
- \advance\pgfmathfloat@a@E by-1
- \pgfflt@leadingzero@foundperiod}%
+ \advance\pgfmathfloat@a@E by-1
+ \pgfflt@leadingzero@foundperiod}%
\expandafter\def\csname pgffltC@1\endcsname{\pgfmathfloat@a@Mtok={1}\pgfmathfloatparsenumberpendingperiodtrue\pgfflt@finish@number@after@period}%
\expandafter\def\csname pgffltC@2\endcsname{\pgfmathfloat@a@Mtok={2}\pgfmathfloatparsenumberpendingperiodtrue\pgfflt@finish@number@after@period}%
\expandafter\def\csname pgffltC@3\endcsname{\pgfmathfloat@a@Mtok={3}\pgfmathfloatparsenumberpendingperiodtrue\pgfflt@finish@number@after@period}%
@@ -2498,28 +2499,28 @@
\expandafter\def\csname pgffltC@8\endcsname{\pgfmathfloat@a@Mtok={8}\pgfmathfloatparsenumberpendingperiodtrue\pgfflt@finish@number@after@period}%
\expandafter\def\csname pgffltC@9\endcsname{\pgfmathfloat@a@Mtok={9}\pgfmathfloatparsenumberpendingperiodtrue\pgfflt@finish@number@after@period}%
\expandafter\def\csname pgffltC@e\endcsname{%
- \pgfmathfloat@a@S=0\relax%
- \pgfmathfloat@a@Mtok={0.0}%
- \pgfmathfloat@a@E=0%
- \pgfflt@readexponent}%
+ \pgfmathfloat@a@S=0\relax%
+ \pgfmathfloat@a@Mtok={0.0}%
+ \pgfmathfloat@a@E=0%
+ \pgfflt@readexponent}%
\let\pgffltC@E=\pgffltC@e
\expandafter\def\csname pgffltC@\pgfflt@EOI\endcsname{%
- \pgfmathfloat@a@S=0\relax%
- \pgfmathfloat@a@Mtok={0.0}%
- \pgfmathfloat@a@E=0}%
+ \pgfmathfloat@a@S=0\relax%
+ \pgfmathfloat@a@Mtok={0.0}%
+ \pgfmathfloat@a@E=0}%
\def\pgfflt@positiveexp#1{%
- \expandafter\ifx\csname pgffltD@#1\endcsname\relax
- \expandafter\pgfflt@error\expandafter#1%
- \else
- \expandafter\expandafter\csname pgffltD@#1\endcsname
- \fi}
+ \expandafter\ifx\csname pgffltD@#1\endcsname\relax
+ \expandafter\pgfflt@error\expandafter#1%
+ \else
+ \expandafter\expandafter\csname pgffltD@#1\endcsname
+ \fi}
% State transitions:
\expandafter\def\csname pgffltD@0\endcsname{%
- \advance\pgfmathfloat@a@E by1
- \pgfmathfloat@tmptoks=\expandafter{\the\pgfmathfloat@tmptoks0}%
- \pgfflt@pendingzeros@positiveexp}%
+ \advance\pgfmathfloat@a@E by1
+ \pgfmathfloat@tmptoks=\expandafter{\the\pgfmathfloat@tmptoks0}%
+ \pgfflt@pendingzeros@positiveexp}%
\expandafter\def\csname pgffltD@1\endcsname{\pgffltD@nonzerodigit1}%
\expandafter\def\csname pgffltD@2\endcsname{\pgffltD@nonzerodigit2}%
\expandafter\def\csname pgffltD@3\endcsname{\pgffltD@nonzerodigit3}%
@@ -2536,51 +2537,51 @@
\let\pgffltD@E=\pgffltD@e
\expandafter\def\csname pgffltD@\pgfflt@EOI\endcsname{}% NOP
\def\pgffltD@nonzerodigit#1{%
- \advance\pgfmathfloat@a@E by1
- \ifpgfmathfloatparsenumberpendingperiod
- \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok.}%
- \pgfmathfloatparsenumberpendingperiodfalse
- \fi
- \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok#1}%
- \pgfflt@positiveexp}%
+ \advance\pgfmathfloat@a@E by1
+ \ifpgfmathfloatparsenumberpendingperiod
+ \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok.}%
+ \pgfmathfloatparsenumberpendingperiodfalse
+ \fi
+ \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok#1}%
+ \pgfflt@positiveexp}%
% Read a low-level floating point.
% Since we are in the second state, \pgfmathfloat@a@Mtok contains the
% FLAGS. The post-flags-char has also been read.
\def\pgfflt@readlowlevelfloat#1e#2]\pgfflt@EOI{%
- \pgfmathfloatparsenumberpendingperiodfalse
- \pgfmathfloat@a@S=\the\pgfmathfloat@a@Mtok\relax
- \pgfmathfloat@a@Mtok={#1}%
- \pgfmathfloat@a@E=#2
+ \pgfmathfloatparsenumberpendingperiodfalse
+ \pgfmathfloat@a@S=\the\pgfmathfloat@a@Mtok\relax
+ \pgfmathfloat@a@Mtok={#1}%
+ \pgfmathfloat@a@E=#2
}%
\def\pgfflt@readexponent#1\pgfflt@EOI{%
- \afterassignment\pgfflt@readexponent@
- \pgfmathfloat@b@E=#1 \pgfflt@EOI% the white space is important, otherwise \pgfflt@EOI will be expanded.
+ \afterassignment\pgfflt@readexponent@
+ \pgfmathfloat@b@E=#1 \pgfflt@EOI% the white space is important, otherwise \pgfflt@EOI will be expanded.
}
\def\pgfflt@readexponent@#1{%
- \advance\pgfmathfloat@a@E by\pgfmathfloat@b@E\relax
- %
- % sanity checking:
- \def\pgfmathfloat@loc@TMPb{#1}%
- \ifx\pgfmathfloat@loc@TMPb\pgfflt@EOI@unexpanded
- \else
- \def\pgfmathfloat@loc@TMPb{\pgfflt@error#1}%
- \expandafter\pgfmathfloat@loc@TMPb
- \fi
+ \advance\pgfmathfloat@a@E by\pgfmathfloat@b@E\relax
+ %
+ % sanity checking:
+ \def\pgfmathfloat@loc@TMPb{#1}%
+ \ifx\pgfmathfloat@loc@TMPb\pgfflt@EOI@unexpanded
+ \else
+ \def\pgfmathfloat@loc@TMPb{\pgfflt@error#1}%
+ \expandafter\pgfmathfloat@loc@TMPb
+ \fi
}
\def\pgfflt@pendingzeros@positiveexp#1{%
- \expandafter\ifx\csname pgffltE@#1\endcsname\relax
- \expandafter\pgfflt@error\expandafter#1%
- \else
- \expandafter\expandafter\csname pgffltE@#1\endcsname
- \fi}
+ \expandafter\ifx\csname pgffltE@#1\endcsname\relax
+ \expandafter\pgfflt@error\expandafter#1%
+ \else
+ \expandafter\expandafter\csname pgffltE@#1\endcsname
+ \fi}
% State transitions:
\expandafter\def\csname pgffltE@0\endcsname{%
- \pgfmathfloat@tmptoks=\expandafter{\the\pgfmathfloat@tmptoks0}%
- \advance\pgfmathfloat@a@E by1
- \pgfflt@pendingzeros@positiveexp}%
+ \pgfmathfloat@tmptoks=\expandafter{\the\pgfmathfloat@tmptoks0}%
+ \advance\pgfmathfloat@a@E by1
+ \pgfflt@pendingzeros@positiveexp}%
\expandafter\def\csname pgffltE@1\endcsname{\pgffltE@nonzerodigit1}%
\expandafter\def\csname pgffltE@2\endcsname{\pgffltE@nonzerodigit2}%
\expandafter\def\csname pgffltE@3\endcsname{\pgffltE@nonzerodigit3}%
@@ -2596,26 +2597,26 @@
\let\pgffltE@E=\pgffltE@e
\expandafter\def\csname pgffltE@\pgfflt@EOI\endcsname{}% NOP
\def\pgffltE@nonzerodigit#1{%
- \advance\pgfmathfloat@a@E by1
- \ifpgfmathfloatparsenumberpendingperiod
- \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok.}%
- \pgfmathfloatparsenumberpendingperiodfalse
- \fi
- \pgfmathfloat@a@Mtok=\expandafter\expandafter\expandafter{\expandafter\the\expandafter\pgfmathfloat@a@Mtok\the\pgfmathfloat@tmptoks}%
- \pgfmathfloat@tmptoks={}%
- \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok#1}%
- \pgfflt@positiveexp}%
+ \advance\pgfmathfloat@a@E by1
+ \ifpgfmathfloatparsenumberpendingperiod
+ \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok.}%
+ \pgfmathfloatparsenumberpendingperiodfalse
+ \fi
+ \pgfmathfloat@a@Mtok=\expandafter\expandafter\expandafter{\expandafter\the\expandafter\pgfmathfloat@a@Mtok\the\pgfmathfloat@tmptoks}%
+ \pgfmathfloat@tmptoks={}%
+ \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok#1}%
+ \pgfflt@positiveexp}%
\def\pgfflt@finish@number@after@period#1{%
- \expandafter\ifx\csname pgffltF@#1\endcsname\relax
- \expandafter\pgfflt@error\expandafter#1%
- \else
- \expandafter\expandafter\csname pgffltF@#1\endcsname
- \fi}
+ \expandafter\ifx\csname pgffltF@#1\endcsname\relax
+ \expandafter\pgfflt@error\expandafter#1%
+ \else
+ \expandafter\expandafter\csname pgffltF@#1\endcsname
+ \fi}
% State transitions:
\expandafter\def\csname pgffltF@0\endcsname{%
- \pgfmathfloat@tmptoks=\expandafter{\the\pgfmathfloat@tmptoks0}%
- \pgfflt@pendingzeros}%
+ \pgfmathfloat@tmptoks=\expandafter{\the\pgfmathfloat@tmptoks0}%
+ \pgfflt@pendingzeros}%
\expandafter\def\csname pgffltF@1\endcsname{\pgffltF@nonzerodigit1}%
\expandafter\def\csname pgffltF@2\endcsname{\pgffltF@nonzerodigit2}%
\expandafter\def\csname pgffltF@3\endcsname{\pgffltF@nonzerodigit3}%
@@ -2629,26 +2630,26 @@
\let\pgffltF@E=\pgffltF@e
\expandafter\def\csname pgffltF@\pgfflt@EOI\endcsname{}% NOP
\def\pgffltF@nonzerodigit#1{%
- \ifpgfmathfloatparsenumberpendingperiod
- \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok.}%
- \pgfmathfloatparsenumberpendingperiodfalse
- \fi
- \pgfmathfloat@a@Mtok=\expandafter\expandafter\expandafter{\expandafter\the\expandafter\pgfmathfloat@a@Mtok\the\pgfmathfloat@tmptoks}%
- \pgfmathfloat@tmptoks={}%
- \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok#1}%
- \pgfflt@finish@number@after@period}%
+ \ifpgfmathfloatparsenumberpendingperiod
+ \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok.}%
+ \pgfmathfloatparsenumberpendingperiodfalse
+ \fi
+ \pgfmathfloat@a@Mtok=\expandafter\expandafter\expandafter{\expandafter\the\expandafter\pgfmathfloat@a@Mtok\the\pgfmathfloat@tmptoks}%
+ \pgfmathfloat@tmptoks={}%
+ \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok#1}%
+ \pgfflt@finish@number@after@period}%
\def\pgfflt@pendingzeros#1{%
- \expandafter\ifx\csname pgffltG@#1\endcsname\relax
- \expandafter\pgfflt@error\expandafter#1%
- \else
- \expandafter\expandafter\csname pgffltG@#1\endcsname
- \fi}
+ \expandafter\ifx\csname pgffltG@#1\endcsname\relax
+ \expandafter\pgfflt@error\expandafter#1%
+ \else
+ \expandafter\expandafter\csname pgffltG@#1\endcsname
+ \fi}
% State transitions:
\expandafter\def\csname pgffltG@0\endcsname{%
- \pgfmathfloat@tmptoks=\expandafter{\the\pgfmathfloat@tmptoks0}%
- \pgfflt@pendingzeros}%
+ \pgfmathfloat@tmptoks=\expandafter{\the\pgfmathfloat@tmptoks0}%
+ \pgfflt@pendingzeros}%
\expandafter\def\csname pgffltG@1\endcsname{\pgffltG@nonzerodigit1}%
\expandafter\def\csname pgffltG@2\endcsname{\pgffltG@nonzerodigit2}%
\expandafter\def\csname pgffltG@3\endcsname{\pgffltG@nonzerodigit3}%
@@ -2662,13 +2663,13 @@
\let\pgffltG@E=\pgffltG@e
\expandafter\def\csname pgffltG@\pgfflt@EOI\endcsname{}% NOP
\def\pgffltG@nonzerodigit#1{%
- \ifpgfmathfloatparsenumberpendingperiod
- \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok.}%
- \pgfmathfloatparsenumberpendingperiodfalse
- \fi
- \pgfmathfloat@a@Mtok=\expandafter\expandafter\expandafter{\expandafter\the\expandafter\pgfmathfloat@a@Mtok\the\pgfmathfloat@tmptoks}%
- \pgfmathfloat@tmptoks={}%
- \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok#1}%
- \pgfflt@finish@number@after@period}%
+ \ifpgfmathfloatparsenumberpendingperiod
+ \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok.}%
+ \pgfmathfloatparsenumberpendingperiodfalse
+ \fi
+ \pgfmathfloat@a@Mtok=\expandafter\expandafter\expandafter{\expandafter\the\expandafter\pgfmathfloat@a@Mtok\the\pgfmathfloat@tmptoks}%
+ \pgfmathfloat@tmptoks={}%
+ \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok#1}%
+ \pgfflt@finish@number@after@period}%
\endinput