summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2010-10-29 00:31:31 +0000
committerKarl Berry <karl@freefriends.org>2010-10-29 00:31:31 +0000
commit6bc1f5497cfb2f56d65c80a4c36ea3bad6dc046c (patch)
treef7751da75030fb1e06653eeb44e579fcee09c65f /Master/texmf-dist/source/latex
parented0c7c756e441b2d2ba3633da233fc24361ac0d3 (diff)
pgf 2.10 (28oct10)
git-svn-id: svn://tug.org/texlive/trunk@20236 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex')
-rw-r--r--Master/texmf-dist/source/latex/pgf/incoming/GrzegorzMurzynowski/pgfdatabasearrows.pdfbin0 -> 42237 bytes
-rw-r--r--Master/texmf-dist/source/latex/pgf/incoming/GrzegorzMurzynowski/pgfdatabasearrows.sty147
-rw-r--r--Master/texmf-dist/source/latex/pgf/incoming/GrzegorzMurzynowski/pgfdatabasearrows.tex131
-rw-r--r--Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/basics.pdfbin0 -> 24674 bytes
-rw-r--r--Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/basics.tex125
-rw-r--r--Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/fir.pdfbin0 -> 17022 bytes
-rw-r--r--Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/fir.tex61
-rw-r--r--Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/interconnection.pdfbin0 -> 20615 bytes
-rw-r--r--Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/interconnection.tex25
-rw-r--r--Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/macros.sty46
-rw-r--r--Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/pgflibrarytikzsignalflowarrows.code.tex31
-rw-r--r--Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/pgflibrarytikzsignalflowblocks.code.tex469
-rw-r--r--Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/pgflibrarytikzsignalflowdiagram.code.tex60
-rw-r--r--Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/pgflibrarytikzsignalflowoperators.code.tex259
-rw-r--r--Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/placement.pdfbin0 -> 11255 bytes
-rw-r--r--Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/placement.tex28
-rw-r--r--Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/signalflowdiagram.sty138
-rw-r--r--Master/texmf-dist/source/latex/pgf/testsuite/external/Makefile18
-rw-r--r--Master/texmf-dist/source/latex/pgf/testsuite/external/tikzexternaltest.code.tex41
-rw-r--r--Master/texmf-dist/source/latex/pgf/testsuite/external/tikzexternaltest.sharedpreamble.tex20
-rw-r--r--Master/texmf-dist/source/latex/pgf/testsuite/external/tikzexternaltest.tex12
-rw-r--r--Master/texmf-dist/source/latex/pgf/testsuite/external/tikzexternaltestmakefile.tex12
-rw-r--r--Master/texmf-dist/source/latex/pgf/testsuite/mathtest/pgfmathtestsuite.tex1073
23 files changed, 2696 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/pgf/incoming/GrzegorzMurzynowski/pgfdatabasearrows.pdf b/Master/texmf-dist/source/latex/pgf/incoming/GrzegorzMurzynowski/pgfdatabasearrows.pdf
new file mode 100644
index 00000000000..d386670f931
--- /dev/null
+++ b/Master/texmf-dist/source/latex/pgf/incoming/GrzegorzMurzynowski/pgfdatabasearrows.pdf
Binary files differ
diff --git a/Master/texmf-dist/source/latex/pgf/incoming/GrzegorzMurzynowski/pgfdatabasearrows.sty b/Master/texmf-dist/source/latex/pgf/incoming/GrzegorzMurzynowski/pgfdatabasearrows.sty
new file mode 100644
index 00000000000..8b76c5f24eb
--- /dev/null
+++ b/Master/texmf-dist/source/latex/pgf/incoming/GrzegorzMurzynowski/pgfdatabasearrows.sty
@@ -0,0 +1,147 @@
+% A~definition of some database entity diagram arrow tips for
+% pgf (tikz) based on arrow declaration tips in the Till Tantau's pgf
+% manual for v1.10 p.\ 254.
+%
+% author: Natror (Grzegorz Murzynowski), natror at o2.pl
+% 2006/12/16
+%
+% This file is a~draft version intended to be possibly adjusted by the
+% tikz package developer(s) and included into the tikz bundle
+% on the Gnu Public License.
+%
+%
+%
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{pgfdatabasearrows}
+
+\RequirePackage{tikz}
+\RequirePackage{pgflibraryarrows}
+
+
+\newdimen\arrowsize
+
+% nulla
+\pgfarrowsdeclare{nulla}{nulla}
+{
+ \arrowsize=0.2pt
+ \advance\arrowsize by .5\pgflinewidth
+ \pgfarrowsleftextend{-.5\pgflinewidth}
+ \pgfarrowsrightextend{3\arrowsize+.5\pgflinewidth}
+}
+{
+ \arrowsize=0.2pt
+ \advance\arrowsize by .5\pgflinewidth
+ \pgfsetdash{}{0pt} % do not dash
+ \pgfsetroundjoin
+ \pgfsetroundcap
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{3\arrowsize}{0\arrowsize}}
+ \pgfusepathqstroke
+}
+
+% nulla = dbplain
+\pgfarrowsdeclarealias{dbplain}{dbplain}{nulla}{nulla}
+
+
+% nullalonga
+\pgfarrowsdeclare{nullalonga}{nullalonga}
+{
+ \arrowsize=0.2pt
+ \advance\arrowsize by .5\pgflinewidth
+ \pgfarrowsleftextend{-.5\pgflinewidth}
+ \pgfarrowsrightextend{5.5\arrowsize+.5\pgflinewidth}
+}
+{
+ \arrowsize=0.2pt
+ \advance\arrowsize by .5\pgflinewidth
+ \pgfsetdash{}{0pt} % do not dash
+ \pgfsetroundjoin
+ \pgfsetroundcap
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{5.5\arrowsize}{0\arrowsize}}
+ \pgfusepathqstroke
+}
+
+% nullalonga = dbplainlong
+\pgfarrowsdeclarealias{dbplainlong}{dbplainlong}{nullalonga}{nullalonga}
+
+
+% dboshortt
+\pgfarrowsdeclarecombine*[-.5\pgflinewidth]%offset
+{dboshortt}{dboshortt}{o}{o}{nulla}{nulla}
+
+% dboshort
+\pgfarrowsdeclarecombine*[-.5\pgflinewidth]%offset
+{dboshort}{dboshort}{o}{o}{nullalonga}{nullalonga}
+
+% dbo
+\pgfarrowsdeclarecombine*[-1\pgflinewidth]%offset
+{dbo}{dbo}{dboshort}{dboshort}{nulla}{nulla}
+
+% dbolong
+\pgfarrowsdeclarecombine*[-1\pgflinewidth]%offset
+{dbolong}{dbolong}{dboshort}{dboshort}{nullalonga}{nullalonga}
+
+% dbbar for nice combining
+\pgfarrowsdeclare{dbbar}{dbbar}
+{
+ \arrowsize=0.2pt
+ \advance\arrowsize by .5\pgflinewidth
+ \pgfarrowsleftextend{-.5\pgflinewidth}
+ \pgfarrowsrightextend{.5\pgflinewidth}
+}
+{
+ \arrowsize=0.2pt
+ \advance\arrowsize by .5\pgflinewidth
+ \pgfsetdash{}{0pt} % do not dash
+ \pgfsetroundjoin
+ \pgfsetroundcap
+ \pgfpathmoveto{\pgfpoint{0\arrowsize}{6\arrowsize}}
+ \pgfpathlineto{\pgfpoint{0\arrowsize}{-6\arrowsize}}
+ \pgfusepathqstroke
+}
+
+% db1
+\pgfarrowsdeclarecombine*[-.5\pgflinewidth]%offset
+{db1}{db1}{dbbar}{dbbar}{nulla}{nulla}
+
+% dbo1, starred to avoid stroking the o
+\pgfarrowsdeclarecombine*[-.5\pgflinewidth]%offset
+{dbo1}{dbo1}{dboshortt}{dboshortt}{db1}{db1}
+
+% db1o, * not to stroke |- in tight curves
+\pgfarrowsdeclarecombine*[-.5\pgflinewidth]%offset
+{db1o}{db1o}{db1}{db1}{dboshortt}{dboshortt}
+
+% dbmany
+\pgfarrowsdeclare{dbmany}{dbmany}
+{
+ \arrowsize=0.2pt
+ \advance\arrowsize by .5\pgflinewidth
+ \pgfarrowsleftextend{-.5\pgflinewidth}
+ \pgfarrowsrightextend{10.4\arrowsize+.5\pgflinewidth}
+}
+{
+ \arrowsize=0.2pt
+ \advance\arrowsize by .5\pgflinewidth
+ \pgfsetdash{}{0pt} % do not dash
+ \pgfsetroundjoin
+ \pgfsetroundcap
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{10.4\arrowsize}{6\arrowsize}}
+ \pgfusepathqstroke
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{10.4\arrowsize}{0\arrowsize}}
+ \pgfusepathqstroke
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{10.4\arrowsize}{-6\arrowsize}}
+ \pgfusepathqstroke
+}
+
+% dbomany
+\pgfarrowsdeclarecombine*[-1.5\pgflinewidth]%offset
+{dbomany}{dbomany}{dboshortt}{dboshortt}{dbmany}{dbmany}
+
+
+\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/pgf/incoming/GrzegorzMurzynowski/pgfdatabasearrows.tex b/Master/texmf-dist/source/latex/pgf/incoming/GrzegorzMurzynowski/pgfdatabasearrows.tex
new file mode 100644
index 00000000000..c7fe6b8f5dd
--- /dev/null
+++ b/Master/texmf-dist/source/latex/pgf/incoming/GrzegorzMurzynowski/pgfdatabasearrows.tex
@@ -0,0 +1,131 @@
+\documentclass[11pt]{article}
+\usepackage{pgfdatabasearrows}
+\usepackage{array}
+\usepackage[margin=2.5cm]{geometry}
+
+\begin{document}
+\pagestyle{empty}
+\raggedright
+\parskip\smallskipamount
+
+\noindent\hfill Warszawa,\\
+\noindent\hfill March 16, 2006,\\
+\noindent\hfill December 16, 2006 (next try).
+
+\medskip
+
+Prof.\ Dr.\ \textbf{Till Tantau}\\
+\texttt{tantau at users.sourceforge.net}
+
+\bigskip\bigskip
+Dear Sir,
+
+\medskip
+Here are some arrow tips for drawing database entity
+diagrams.
+
+\medskip
+(The first attempt to send you them I~made on March 16, 2006 but the
+mail was rejected due to overfull of your mailbox.)
+
+(At \emph{this} attempt the \textsf{sourceforge.net} server rejects
+mails with .zip attachments :-))
+
+(At the project's site I~didn't see any encouragement for contributions
+other than becoming a~Developer which is not the case here, I~suppose.
+
+I~mean, if you'd be interested in these arrow tips and wanted me to
+describe them a~bit more, I'd still remain just a~\textsf{tikz} user.)
+
+
+\bigskip
+\newcommand*\dbarrowtest[2]{%
+ #1 & \raisebox{.5ex}{\tikz[thick] \draw[#2-#2] (0,0.2) --
+ (2,0.2);\ \ \tikz[thin] \draw[#2-#2] (0,0.2) --
+ (2,0.2);}\\}
+
+
+\begin{tabular}{>{\ttfamily}r@{:\ \ }l}
+
+\dbarrowtest{dbplain {\normalfont alias} nulla}{nulla}
+\dbarrowtest{dbplainlong {\normalfont alias} nullalonga}{nullalonga}
+
+\dbarrowtest{dboshortt}{dboshortt}
+\dbarrowtest{dboshort}{dboshort}
+\dbarrowtest{dbo}{dbo}
+\dbarrowtest{dbolong}{dbolong}
+
+\dbarrowtest{dbbar {\normalfont (for combining)}}{dbbar}
+\dbarrowtest{db1}{db1}
+\dbarrowtest{dbo1}{dbo1}
+\dbarrowtest{db1o}{db1o}
+\dbarrowtest{dbmany}{dbmany}
+\dbarrowtest{dbomany}{dbomany}
+\end{tabular}
+%
+\quad
+%
+\begin{minipage}{.3\textwidth}
+
+And with curves:
+
+\medskip
+\newcommand*\dbarrowtestic[1]{\tikz\draw[rotate=-90,thin,#1-#1] (1,1) .. controls
+(0.4,1) and (0.6,0) .. (0,0);\ }
+
+\dbarrowtestic{nulla}
+\dbarrowtestic{nullalonga}
+\dbarrowtestic{dboshortt}
+\dbarrowtestic{dboshort}
+
+\dbarrowtestic{dbo}
+\dbarrowtestic{dbolong}
+\dbarrowtestic{dbbar}
+\dbarrowtestic{db1}
+
+\dbarrowtestic{dbo1}
+\dbarrowtestic{db1o}
+\dbarrowtestic{dbmany}
+\dbarrowtestic{dbomany}
+
+\tikz\draw[rotate=-90,thin,angle 60-angle 60] (0.5,1) .. controls
+(0.3,1) and (0.2,0) .. (0,0);
+
+\end{minipage}
+
+\bigskip
+
+I~think they may be useful for someone else.
+If there's no such arrow tips defined yet
+it would be an honour for me to see this humble package included into
+the \textsf{pgf} bundle.
+
+\medskip
+\noindent\leftline{\textbf{The `nulla' arrow tip advisability}}
+I~think something like \texttt{nulla} arrow would be useful in general
+(like Zero or Null are sometimes useful ;-) e.g., to straighten an
+ending of a~curve (compare my arrows with \texttt{angle 60} drawn last
+above).
+
+\medskip
+I~think there could be some standard arrow tips defined with a~straight
+segment in their middle so that they not look like last arrowcurve
+above but like this:
+%
+\tikz\draw[rotate=-90,thin,angle 60-angle 60] (0.5,.5) -- ++(-.1,0) .. controls
++(-.2,0) and +(0.2,0) .. (.1,0) -- (0,0);
+
+\medskip
+Once again thanks for a~good work.
+
+\medskip
+Yours sincerely and \TeX nically,\\
+\emph{Natror (Grzegorz Murzynowski)}\\
+\texttt{natror at o2.pl}
+
+\end{document}
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: t
+%%% End:
diff --git a/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/basics.pdf b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/basics.pdf
new file mode 100644
index 00000000000..7e2a07930b2
--- /dev/null
+++ b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/basics.pdf
Binary files differ
diff --git a/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/basics.tex b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/basics.tex
new file mode 100644
index 00000000000..f194c9eaf56
--- /dev/null
+++ b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/basics.tex
@@ -0,0 +1,125 @@
+% Some basic examples for signal flow diagrams.
+%
+% Author: Dr. Karlheinz Ochs, Ruhr-University of Bochum, Germany
+% Version: 0.1
+% Date: 2007/01/05
+\documentclass{article}
+\usepackage{signalflowdiagram}
+
+\begin{document}
+
+%
+% Basic definitions of the symbols used in a signal flow diagram
+%
+
+% - input terminal
+\begin{signalflow}{Input terminal}
+ \node[input] (in) {$x(t)$};
+ \node[coordinate] (c) [right from=in] {};
+ % signal path
+ \path[r>] (in) -- (c);
+\end{signalflow}
+
+% - output terminal
+\begin{signalflow}{Output terminal}
+ \node[output] (out) {$y(t)$};
+ \node[coordinate] (c) [left from=out] {};
+ % signal path
+ \path[r>] (c) -- (out);
+\end{signalflow}
+
+% - branching node
+\begin{signalflow}{Branching node}
+ \node[input] (in) {$x(t)$};
+ \node[node] (nd) [right from=in] {};
+ \node[output] (out1) [above right from=nd] {$x(t)$};
+ \node[output] (out2) [below right from=nd] {$x(t)$};
+ % signal paths
+ \path[r>] (in) -- (nd);
+ \path[r>] (nd) |- (out1);
+ \path[r>] (nd) |- (out2);
+\end{signalflow}
+
+% - multiplier
+\begin{signalflow}{Multiplier}
+ \node[input] (in) {$x(t)$};
+ \node[multiplier] (mul) [right from=in] {\nodepart{above}{$\alpha$}};
+ \node[output] (out) [right from=mul] {$\alpha x(t)$};
+ % signal paths
+ \path[r>] (in) -- (mul);
+ \path[r>] (mul) -- (out);
+\end{signalflow}
+
+% - adder
+\begin{signalflow}{Adder}
+ \node[adder] (add) {};
+ \node[input] (in1) [above left from=add] {$x_1(t)$};
+ \node[input] (in2) [below left from=add] {$x_2(t)$};
+ \node[output] (out) [right from=add] {$x_1(t)+x_2(t)$};
+ % signal paths
+ \path[r>] (in1) -| (add);
+ \path[r>] (in2) -| (add);
+ \path[r>] (add) -- (out);
+\end{signalflow}
+
+% - modulator
+\begin{signalflow}{Modulator}
+ \node[modulator] (mul) {};
+ \node[input] (in1) [above left from=mul] {$x_1(t)$};
+ \node[input] (in2) [below left from=mul] {$x_2(t)$};
+ \node[output] (out) [right from=mul] {$x_1(t)x_2(t)$};
+ % signal paths
+ \path[r>] (in1) -| (mul);
+ \path[r>] (in2) -| (mul);
+ \path[r>] (mul) -- (out);
+\end{signalflow}
+
+% - delay element
+\begin{signalflow}{Delay element}
+ \node[input] (in) {$x(t)$};
+ \node[delay] (del) [right from=in] {$T$};
+ \node[output] (out) [right from=del] {$x(t-T)$};
+ % signal paths
+ \path[r>] (in) -- (del);
+ \path[r>] (del) -- (out);
+\end{signalflow}
+
+% - filter
+\begin{signalflow}{Filter}
+ \node[input] (in) {$x(t)$};
+ \node[filter] (fil) [right from=in] {$q(t)$};
+ \node[output] (out) [right from=fil] {$x(t)\ast q(t)$};
+ % signal paths
+ \path[r>] (in) -- (fil);
+ \path[r>] (fil) -- (out);
+\end{signalflow}
+
+% - building block
+\begin{signalflow}{Building block of a minimum shift keying modulator}
+ \node[input] (in) {$x(t)$};
+ \node[block] (msk) [right from=in] {Minimum shift keying modulator};
+ \node[output](out) [right from=msk] {$z(t)$};
+ % signal paths
+ \path[r>] (in) -- (msk);
+ \path[r>] (msk) -- (out);
+\end{signalflow}
+
+% - MSK symbol encoder
+\begin{signalflow}{Minimum shift keying symbol encoder}
+ \node[input] (in) {$x(t)$};
+ \node[modulator] (mod) [right from=in] {};
+ \node[multiplier] (mul) [below from=mod] {$\mathrm{j}$};
+ \node[delay] (del) [right from=mod] {$T$};
+ \node[node] (nd) [right from=del] {};
+ \node[output] (out) [right from=nd] {$y(t)$};
+ % signal paths
+ \path[c>] (in) -- (mod);
+ \path[c>] (mod) -- (del);
+ \path[c>] (del) -- (nd);
+ \path[c>] (nd) |- (mul);
+ \path[c>] (mul) -- (mod);
+ \path[c>] (nd) -- (out);
+\end{signalflow}
+
+
+\end{document}
diff --git a/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/fir.pdf b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/fir.pdf
new file mode 100644
index 00000000000..f9719f7e450
--- /dev/null
+++ b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/fir.pdf
Binary files differ
diff --git a/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/fir.tex b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/fir.tex
new file mode 100644
index 00000000000..4a8af171c61
--- /dev/null
+++ b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/fir.tex
@@ -0,0 +1,61 @@
+% Example for an interconnection of signal flow diagrams.
+%
+% Author: Dr. Karlheinz Ochs, Ruhr-University of Bochum, Germany
+% Version: 0.1
+% Date: 2007/01/05
+\documentclass{article}
+\usepackage{signalflowdiagram}
+
+\begin{document}
+
+% An FIR filter
+\begin{signalflow}[node distance=9mm]{Finite impulse response filter of order $n$}%
+ % building blocks
+ \tikzgrid{
+ \node[input] (in) {$x(t)$} &
+ \node[node] (n0) {} &
+ \node[delay] (d1) {$T$} &
+ \node[node] (n1) {} &
+ \node[delay] (d2) {$T$} &
+ \node[node] (n2) {} &
+ \node[coordinate] (c1) {} &
+ \node[coordinate] (c3) {} &
+ \node[delay] (dn) {$T$} &
+ \\ &
+ \node[multiplier] (m0) {$\alpha_0$} & &
+ \node[multiplier] (m1) {$\alpha_1$} & &
+ \node[multiplier] (m2) {$\alpha_2$} & & & &
+ \node[multiplier] (mn) {$\alpha_n$}
+ \\ & & &
+ \node[adder] (a1) {} & &
+ \node[adder] (a2) {} &
+ \node[coordinate] (c2) {} &
+ \node[coordinate] (c4) {} & &
+ \node[adder] (an) {} &
+ \node[output] (out) {$y(t)$}
+ }
+ % signal paths
+ \path[r>] (in) -- (n0);
+ \path[r>] (n0) -- (d1);
+ \path[r>] (d1) -- (n1);
+ \path[r>] (n1) -- (d2);
+ \path[r>] (d2) -- (n2);
+ \path[r>] (n2) -- (c1); % continuation
+ \path[r.] (c1) -- (c3); % continuation
+ \path[r>] (c3) -- (dn); % continuation
+ \path[r>] (n0) -- (m0);
+ \path[r>] (n1) -- (m1);
+ \path[r>] (n2) -- (m2);
+ \path[r>] (dn) -| (mn);
+ \path[r>] (m0) |- (a1);
+ \path[r>] (m1) -- (a1);
+ \path[r>] (m2) -- (a2);
+ \path[r>] (mn) -- (an);
+ \path[r>] (a1) -- (a2);
+ \path[r>] (a2) -- (c2); % continuation
+ \path[r.] (c2) -- (c4); % continuation
+ \path[r>] (c4) -- (an); % continuation
+ \path[r>] (an) -- (out);
+\end{signalflow}
+
+\end{document}
diff --git a/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/interconnection.pdf b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/interconnection.pdf
new file mode 100644
index 00000000000..1092c9ba2d6
--- /dev/null
+++ b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/interconnection.pdf
Binary files differ
diff --git a/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/interconnection.tex b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/interconnection.tex
new file mode 100644
index 00000000000..1bc3072d70d
--- /dev/null
+++ b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/interconnection.tex
@@ -0,0 +1,25 @@
+% Example for an interconnection of signal flow diagrams.
+%
+% Author: Dr. Karlheinz Ochs, Ruhr-University of Bochum, Germany
+% Version: 0.1
+% Date: 2007/01/05
+\documentclass{article}
+\usepackage{signalflowdiagram}
+\usepackage{macros}
+
+\begin{document}
+
+% interconnection of an MSK symbol encoder with a pulse shaper
+\begin{signalflow}{Minimum shift keying modulator}%
+ \node[input] (in) {$x(t)$};
+ \mskCoder {mC} {right from=in} {};
+ \pulseShaper {pS} {right from=mC-out} {};
+ \node[output] (out) [right from=pS-out] {$z(t)$};
+ % signal paths
+ \path[c>] (in) -- (mC-in);
+ \path[c>] (mC-out) -- (pS-in);
+ \path[c>] (pS-out) -- (out);
+ \textaboveof{mC-out}{$y(t)$}
+\end{signalflow}
+
+\end{document}
diff --git a/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/macros.sty b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/macros.sty
new file mode 100644
index 00000000000..024b248cc76
--- /dev/null
+++ b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/macros.sty
@@ -0,0 +1,46 @@
+% Some macros for signal flow diagrams.
+%
+% Author: Dr. Karlheinz Ochs, Ruhr-University of Bochum, Germany
+% Version: 0.1
+% Date: 2007/01/05
+
+\NeedsTeXFormat{LaTeX2e}
+\RequirePackage{tikz}
+\RequirePackage{signalflowdiagram}
+\ProvidesPackage{macros}
+ [2007/01/05 v0.1 Some user-defined macros for signal flow diagrams]
+
+%
+% Creates the signal flow diagram of a minimum shift keying coder.
+%
+% #1 = global label
+% #2 = parameter for placement
+\newcommand{\mskCoder}[3]{%
+ % building blocks
+ \node[modulator] (#1-in) [#2] {};
+ \node[multiplier] (mul) [below from=#1-in] {$\mathrm{j}$};
+ \node[delay] (del) [right from=#1-in] {$T$};
+ \node[node] (#1-out) [right from=del] {};
+ % signal paths
+ \path[c>] (#1-in) -- (del);
+ \path[c>] (del) -- (#1-out);
+ \path[c>] (#1-out) |- (mul);
+ \path[c>] (mul) -- (#1-in);
+}%
+
+
+% Creates the signal flow diagram of a pulse shaper.
+%
+% #1 = global label
+% #2 = parameter for placement
+\newcommand{\pulseShaper}[4]{%
+ % building blocks
+ \node[modulator] (#1-in) [#2] {};
+ \node[coordinate] (pam)
+ [above from = #1-in,
+ label=above:$\sum\limits_{\nu=-\infty}^{\infty} \delta(t-t_\nu)$] {};
+ \node[filter] (#1-out) [right from = #1-in] {$q(t)$};
+ % signal paths
+ \path[r>] (pam) -- (#1-in);
+ \path[c>] (#1-in) -- (#1-out);
+}%
diff --git a/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/pgflibrarytikzsignalflowarrows.code.tex b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/pgflibrarytikzsignalflowarrows.code.tex
new file mode 100644
index 00000000000..da8a6ea3848
--- /dev/null
+++ b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/pgflibrarytikzsignalflowarrows.code.tex
@@ -0,0 +1,31 @@
+% pgf/tikz library
+% for signal flow diagrams
+%
+% Author: Dr. Karlheinz Ochs, Ruhr-University of Bochum, Germany
+% Version: 0.1
+% Date: 2007/01/05
+
+
+% Styles for real and complex signal tips.
+\newcommand{\pgfarrowsextend}[1]{%
+ \pgfsetcolor{\pathdrawcolor}%
+ \@tempdima=#1\pgflinewidth%
+ \pgfarrowsleftextend{-2\@tempdima}
+ \pgfarrowsrightextend{2\@tempdima}
+}
+\newcommand{\pgfarrowsarrowtip}[1]{%
+ \pgfsetcolor{\pathdrawcolor}%
+ \@tempdima=#1\pgflinewidth%
+ \pgfpathmoveto{\pgfpoint{2\@tempdima}{0pt}}
+ \pgfpathlineto{\pgfpoint{-\@tempdima}{\@tempdima}}
+ \pgfpathlineto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{-\@tempdima}{-\@tempdima}}
+ \pgfusepathqfill
+}
+\pgfarrowsdeclare{real tip}{real tip}{\pgfarrowsextend{3}}{\pgfarrowsarrowtip{3}}
+\pgfarrowsdeclarereversed{real tip reversed}{real tip reversed}{real tip}{real tip}
+\pgfarrowsdeclare{complex tip}{complex tip}{\pgfarrowsextend{1}}{\pgfarrowsarrowtip{1}}
+\pgfarrowsdeclarereversed{complex tip reversed}{complex tip reversed}{complex tip}{complex tip}
+
+
+\endinput
diff --git a/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/pgflibrarytikzsignalflowblocks.code.tex b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/pgflibrarytikzsignalflowblocks.code.tex
new file mode 100644
index 00000000000..0a7410cc443
--- /dev/null
+++ b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/pgflibrarytikzsignalflowblocks.code.tex
@@ -0,0 +1,469 @@
+% pgf/tikz library
+% for signal flow diagrams
+%
+% Author: Dr. Karlheinz Ochs, Ruhr-University of Bochum, Germany
+% Version: 0.1
+% Date: 2007/01/05
+
+% Known bugs: - Anchors of source shape are not precisely positioned.
+% - Anchor border of source shape is a rectangle.
+% - The bounding box of standard text label is ignored.
+
+
+%
+% Styles for nodes, terminals, and operators.
+%
+% - building blocks
+\tikzstyle{block color}%
+ = [draw=\blockdrawcolor,
+ fill=\blockfillcolor]
+\tikzstyle{block style}%
+ = [block color,
+ line width=\blocklinewidth,
+ text centered]
+\tikzstyle{block}%
+ = [rectangle,
+ block style,
+ minimum width=\blockwidth,
+ minimum height=\blockheight,
+ text width=\blocktextwidth]
+\tikzstyle{filter}%
+ = [rectangle,
+ block style,
+ minimum width=\filterwidth,
+ minimum height=\filterheight,
+ text width=\filtertextwidth]
+\tikzstyle{source}%
+ = [source shape,
+ operator style]
+\tikzstyle{serial parallel converter}%
+ = [serial parallel converter shape,
+ block style,
+ minimum width=10mm,
+ minimum height=20mm,
+ inner sep=2mm]
+\tikzstyle{parallel serial converter}%
+ = [parallel serial converter shape,
+ block style,
+ minimum width=10mm,
+ minimum height=20mm,
+ inner sep=2mm]
+\tikzstyle{symbol mapper}%
+ = [symbol mapper shape,
+ block style,
+ text centered,
+ minimum size=20mm,
+ text width=18mm]
+\tikzstyle{inverse symbol mapper}%
+ = [inverse symbol mapper shape,
+ block style,
+ text centered,
+ minimum size=20mm,
+ text width=18mm]
+
+
+%
+% Shape of a source.
+%
+\newbox\pgfnodeparttextbox
+\pgfdeclareshape{source shape}
+{
+ \savedanchor\westpoint{
+ \pgf@x=\wd\pgfnodeparttextbox%
+ \advance\pgf@x by\pgfshapeouterxsep%
+ \pgf@y=.5\ht\pgfnodeparttextbox%
+ \advance\pgf@y by-.5\dp\pgfnodeparttextbox%
+ }
+ \saveddimen\radius{
+ \setlength\pgf@x{\pgfshapeminwidth}
+ }
+ \anchor{west}{\westpoint}
+ \anchor{north west}{
+ \pgf@process{\westpoint}
+ \advance\pgf@y by\radius
+ }
+ \anchor{north}{%
+ \pgf@process{\westpoint}
+ \pgf@xa=\radius\advance\pgf@x by+0.5\pgf@xa
+ \pgf@ya=\radius\advance\pgf@y by+0.866025\pgf@ya
+ }
+ \anchor{north east}{%
+ \pgf@process{\westpoint}
+ \pgf@xa=\radius\advance\pgf@x by+0.866025\pgf@xa
+ \pgf@ya=\radius\advance\pgf@y by+0.5\pgf@ya
+ }
+ \anchor{east}{
+ \pgf@process{\westpoint}
+ \advance\pgf@x by\radius
+ \advance\pgf@x by0.5\pgflinewidth
+ }
+ \anchor{south east}{%
+ \pgf@process{\westpoint}
+ \pgf@xa=\radius\advance\pgf@x by+0.866025\pgf@xa
+ \pgf@ya=\radius\advance\pgf@y by-0.5\pgf@ya
+ }
+ \anchor{south}{%
+ \pgf@process{\westpoint}
+ \pgf@xa=\radius\advance\pgf@x by+0.5\pgf@xa
+ \pgf@ya=\radius\advance\pgf@y by-0.866025\pgf@ya
+ }
+ \anchor{south west}{
+ \pgf@process{\westpoint}
+ \advance\pgf@y by-\radius
+ }
+ \anchor{center}{
+ \pgf@process{\westpoint}
+ \pgf@xa=\radius\advance\pgf@x by+0.5\pgf@xa
+ }
+ % node part
+ \nodeparts{text}
+ \anchor{text}{
+ \pgf@process{\westpoint}
+ \pgf@xa=\radius
+ \advance\pgf@y by-.5\ht\pgfnodeparttextbox%
+ \advance\pgf@x by-\wd\pgfnodeparttextbox%
+ \advance\pgf@x by-0.5mm
+ }
+ \anchorborder{%
+ \pgf@xb=\pgf@x% xb/yb is target
+ \pgf@yb=\pgf@y%
+ % southwest
+ \westpoint\advance\pgf@y by-\radius
+ \pgf@xa=\pgf@x% xa/ya is se
+ \pgf@ya=\pgf@y%
+ % northeast
+ \westpoint\advance\pgf@x by\radius\advance\pgf@y by\radius%
+ \advance\pgf@x by-\pgf@xa%
+ \advance\pgf@y by-\pgf@ya%
+ \pgf@xc=.5\pgf@x% x/y is half width/height
+ \pgf@yc=.5\pgf@y%
+ \advance\pgf@xa by\pgf@xc% xa/ya becomes center
+ \advance\pgf@ya by\pgf@yc%
+ \edef\pgf@marshal{%
+ \noexpand\pgfpointborderrectangle
+ {\noexpand\pgfpoint{\the\pgf@xb}{\the\pgf@yb}}
+ {\noexpand\pgfpoint{\the\pgf@xc}{\the\pgf@yc}}%
+ }%
+ \pgf@process{\pgf@marshal}%
+ \advance\pgf@x by\pgf@xa%
+ \advance\pgf@y by\pgf@ya%
+ }
+ % Background path
+ \backgroundpath{
+ {\pgftransformreset{\pgfnodeparttextbox}}
+ \westpoint \pgf@xa=\pgf@x \pgf@ya=\pgf@y
+ \advance\pgf@y by\radius
+ \pgfmoveto{\pgfpoint{\pgf@x}{\pgf@y}}
+ \pgfpatharc{90}{-90}{\radius}
+ \pgfclosepath
+ }
+}
+
+
+%
+% Shape of a serial to parallel converter.
+%
+\newbox\pgfnodepartSbox
+\newbox\pgfnodepartPbox
+\pgfdeclareshape{serial parallel converter shape}
+{
+ % inherit from rectangle
+ \inheritsavedanchors[from=rectangle]
+ \inheritanchor[from=rectangle]{center}
+ \inheritanchor[from=rectangle]{north}
+ \inheritanchor[from=rectangle]{north east}
+ \inheritanchor[from=rectangle]{east}
+ \inheritanchor[from=rectangle]{south east}
+ \inheritanchor[from=rectangle]{south}
+ \inheritanchor[from=rectangle]{south west}
+ \inheritanchor[from=rectangle]{west}
+ \inheritanchor[from=rectangle]{north west}
+ \inheritanchorborder[from=rectangle]
+ \inheritanchorborder[from=rectangle]
+ \inheritbackgroundpath[from=rectangle]
+ % terminal anchors
+ \anchor{in}{%
+ \northeast
+ \pgf@ya=0.5\pgf@y
+ \southwest
+ \pgf@y=0.5\pgf@y
+ \advance\pgf@y by+\pgf@ya%
+ }
+ \anchor{out1}{
+ \southwest
+ \pgf@ya=0.9\pgf@y
+ \northeast
+ \pgf@y=0.1\pgf@y
+ \advance\pgf@y by\pgf@ya%
+ }
+ \anchor{out2}{
+ \southwest
+ \pgf@ya=0.7\pgf@y
+ \northeast
+ \pgf@y=0.3\pgf@y
+ \advance\pgf@y by\pgf@ya%
+ }
+ \anchor{outl}{
+ \southwest
+ \pgf@ya=0.1\pgf@y
+ \northeast
+ \pgf@y=0.9\pgf@y
+ \advance\pgf@y by\pgf@ya%
+ }
+ \anchor{dots}{
+ \southwest
+ \pgf@ya=0.4\pgf@y
+ \northeast
+ \pgf@y=0.6\pgf@y
+ \advance\pgf@y by\pgf@ya%
+ \setlength{\pgf@xa}{\xspace}
+ \advance\pgf@x by.5\pgf@xa%
+ }
+ % node parts
+ \nodeparts{S,P}
+ \anchor{S}{
+ \southwest
+ \pgf@xa=\pgf@x
+ \northeast
+ \pgf@x=\pgf@xa
+ \advance\pgf@y by-\ht\pgfnodepartSbox%
+ \advance\pgf@y by-.5\dp\pgfnodepartSbox%
+ \advance\pgf@x by+\pgfshapeinnerxsep%
+ \advance\pgf@y by-\pgfshapeinnerysep%
+ }
+ \anchor{P}{
+ \northeast
+ \pgf@xa=\pgf@x
+ \southwest
+ \pgf@x=\pgf@xa
+ \advance\pgf@x by-\wd\pgfnodepartPbox%
+ \advance\pgf@x by-\pgfshapeinnerxsep%
+ \advance\pgf@y by+\pgfshapeinnerysep%
+ }
+ % diagonal line S/P
+ \foregroundpath{%
+ \pgfpathmoveto{\pgfpointadd{\southwest}{\pgfpoint{\pgfshapeouterxsep}{\pgfshapeouterysep}}}
+ \pgfpathlineto{\pgfpointadd{\northeast}{\pgfpointscale{-1}{\pgfpoint{\pgfshapeouterxsep}{\pgfshapeouterysep}}}}
+ }
+}
+
+%
+% Shape of a parallel to serial converter.
+%
+\newbox\pgfnodepartSbox
+\newbox\pgfnodepartPbox
+\pgfdeclareshape{parallel serial converter shape}
+{
+ % inherit from rectangle
+ \inheritsavedanchors[from=rectangle]
+ \inheritanchor[from=rectangle]{center}
+ \inheritanchor[from=rectangle]{north}
+ \inheritanchor[from=rectangle]{north east}
+ \inheritanchor[from=rectangle]{east}
+ \inheritanchor[from=rectangle]{south east}
+ \inheritanchor[from=rectangle]{south}
+ \inheritanchor[from=rectangle]{south west}
+ \inheritanchor[from=rectangle]{west}
+ \inheritanchor[from=rectangle]{north west}
+ \inheritanchorborder[from=rectangle]
+ \inheritanchorborder[from=rectangle]
+ \inheritbackgroundpath[from=rectangle]
+ % terminal anchors
+ \anchor{out}{%
+ \southwest
+ \pgf@ya=0.5\pgf@y
+ \northeast
+ \pgf@y=0.5\pgf@y
+ \advance\pgf@y by+\pgf@ya%
+ }
+ \anchor{in1}{
+ \northeast
+ \pgf@ya=0.1\pgf@y
+ \southwest
+ \pgf@y=0.9\pgf@y
+ \advance\pgf@y by\pgf@ya%
+ }
+ \anchor{in2}{
+ \northeast
+ \pgf@ya=0.3\pgf@y
+ \southwest
+ \pgf@y=0.7\pgf@y
+ \advance\pgf@y by\pgf@ya%
+ }
+ \anchor{inl}{
+ \northeast
+ \pgf@ya=0.9\pgf@y
+ \southwest
+ \pgf@y=0.1\pgf@y
+ \advance\pgf@y by\pgf@ya%
+ }
+ \anchor{dots}{
+ \northeast
+ \pgf@ya=0.6\pgf@y
+ \southwest
+ \pgf@y=0.4\pgf@y
+ \advance\pgf@y by\pgf@ya%
+ \setlength{\pgf@xa}{\xspace}
+ \advance\pgf@x by-.5\pgf@xa%
+ }
+ % node parts
+ \nodeparts{P,S}
+ \anchor{P}{
+ \southwest
+ \pgf@xa=\pgf@x
+ \northeast
+ \pgf@x=\pgf@xa
+ \advance\pgf@y by-\ht\pgfnodepartPbox%
+ \advance\pgf@y by-.5\dp\pgfnodepartPbox%
+ \advance\pgf@x by+\pgfshapeinnerxsep%
+ \advance\pgf@y by-\pgfshapeinnerysep%
+ }
+ \anchor{S}{
+ \northeast
+ \pgf@xa=\pgf@x
+ \southwest
+ \pgf@x=\pgf@xa
+ \advance\pgf@x by-\wd\pgfnodepartSbox%
+ \advance\pgf@x by-\pgfshapeinnerxsep%
+ \advance\pgf@y by+\pgfshapeinnerysep%
+ }
+ % diagonal line S/P
+ \foregroundpath{%
+ \pgfpathmoveto{\pgfpointadd{\southwest}{\pgfpoint{\pgfshapeouterxsep}{\pgfshapeouterysep}}}
+ \pgfpathlineto{\pgfpointadd{\northeast}{\pgfpointscale{-1}{\pgfpoint{\pgfshapeouterxsep}{\pgfshapeouterysep}}}}
+ }
+}
+
+
+%
+% Shape of a symbol mapper.
+%
+\pgfdeclareshape{symbol mapper shape}
+{
+ % rectangle anchors
+ \inheritsavedanchors[from=rectangle]
+ \inheritanchor[from=rectangle]{center}
+ \inheritanchor[from=rectangle]{north}
+ \inheritanchor[from=rectangle]{north east}
+ \inheritanchor[from=rectangle]{east}
+ \inheritanchor[from=rectangle]{south east}
+ \inheritanchor[from=rectangle]{south}
+ \inheritanchor[from=rectangle]{south west}
+ \inheritanchor[from=rectangle]{west}
+ \inheritanchor[from=rectangle]{north west}
+ \inheritanchorborder[from=rectangle]
+ % terminal anchors
+ \anchor{out}{%
+ \southwest
+ \pgf@ya=0.5\pgf@y
+ \northeast
+ \pgf@y=0.5\pgf@y
+ \advance\pgf@y by+\pgf@ya%
+ }
+ \anchor{in1}{
+ \northeast
+ \pgf@ya=0.1\pgf@y
+ \southwest
+ \pgf@y=0.9\pgf@y
+ \advance\pgf@y by\pgf@ya%
+ }
+ \anchor{in2}{
+ \northeast
+ \pgf@ya=0.3\pgf@y
+ \southwest
+ \pgf@y=0.7\pgf@y
+ \advance\pgf@y by\pgf@ya%
+ }
+ \anchor{dots}{
+ \northeast
+ \pgf@ya=0.6\pgf@y
+ \southwest
+ \pgf@y=0.4\pgf@y
+ \advance\pgf@y by\pgf@ya%
+ \setlength{\pgf@xa}{\xspace}
+ \advance\pgf@x by-.5\pgf@xa%
+ }
+ \anchor{inl}{
+ \northeast
+ \pgf@ya=0.9\pgf@y
+ \southwest
+ \pgf@y=0.1\pgf@y
+ \advance\pgf@y by\pgf@ya%
+ }
+ % rectangle shaped frame
+ \backgroundpath{
+ \pgfpathrectanglecorners
+ {\pgfpointadd{\southwest}{\pgfpoint{\pgfshapeouterxsep}{\pgfshapeouterysep}}}
+ {\pgfpointadd{\northeast}{\pgfpointscale{-1}{\pgfpoint{\pgfshapeouterxsep}{\pgfshapeouterysep}}}}
+ }
+
+ \inheritbackgroundpath[from=rectangle]
+}
+
+
+%
+% Shape of an inverse symbol mapper.
+%
+\pgfdeclareshape{inverse symbol mapper shape}
+{
+ % rectangle anchors
+ \inheritsavedanchors[from=rectangle]
+ \inheritanchor[from=rectangle]{center}
+ \inheritanchor[from=rectangle]{north}
+ \inheritanchor[from=rectangle]{north east}
+ \inheritanchor[from=rectangle]{east}
+ \inheritanchor[from=rectangle]{south east}
+ \inheritanchor[from=rectangle]{south}
+ \inheritanchor[from=rectangle]{south west}
+ \inheritanchor[from=rectangle]{west}
+ \inheritanchor[from=rectangle]{north west}
+ \inheritanchorborder[from=rectangle]
+ % terminal anchors
+ \anchor{in}{%
+ \northeast
+ \pgf@ya=0.5\pgf@y
+ \southwest
+ \pgf@y=0.5\pgf@y
+ \advance\pgf@y by+\pgf@ya%
+ }
+ \anchor{out1}{
+ \southwest
+ \pgf@ya=0.9\pgf@y
+ \northeast
+ \pgf@y=0.1\pgf@y
+ \advance\pgf@y by\pgf@ya%
+ }
+ \anchor{out2}{
+ \southwest
+ \pgf@ya=0.7\pgf@y
+ \northeast
+ \pgf@y=0.3\pgf@y
+ \advance\pgf@y by\pgf@ya%
+ }
+ \anchor{outl}{
+ \southwest
+ \pgf@ya=0.1\pgf@y
+ \northeast
+ \pgf@y=0.9\pgf@y
+ \advance\pgf@y by\pgf@ya%
+ }
+ \anchor{dots}{
+ \southwest
+ \pgf@ya=0.4\pgf@y
+ \northeast
+ \pgf@y=0.6\pgf@y
+ \advance\pgf@y by\pgf@ya%
+ \setlength{\pgf@xa}{\xspace}
+ \advance\pgf@x by.5\pgf@xa%
+ }
+ % rectangle shaped frame
+ \backgroundpath{
+ \pgfpathrectanglecorners
+ {\pgfpointadd{\southwest}{\pgfpoint{\pgfshapeouterxsep}{\pgfshapeouterysep}}}
+ {\pgfpointadd{\northeast}{\pgfpointscale{-1}{\pgfpoint{\pgfshapeouterxsep}{\pgfshapeouterysep}}}}
+ }
+
+ \inheritbackgroundpath[from=rectangle]
+}
+
+\endinput
diff --git a/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/pgflibrarytikzsignalflowdiagram.code.tex b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/pgflibrarytikzsignalflowdiagram.code.tex
new file mode 100644
index 00000000000..37e3608ac8d
--- /dev/null
+++ b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/pgflibrarytikzsignalflowdiagram.code.tex
@@ -0,0 +1,60 @@
+% pgf/tikz library
+% for signal flow diagrams
+%
+% Author: Dr. Karlheinz Ochs, Ruhr-University of Bochum, Germany
+% Version: 0.1
+% Date: 2007/01/05
+
+%
+% Extended general shape options, cf. tikz.code.tex
+%
+% #1 = source node
+% Remark: The node distance is used
+% for the distance between the borders of two nodes
+\tikzoption{below from}{\tikz@from{#1}{1}{-90}{south}{north}}%
+\tikzoption{right from}{\tikz@from{#1}{1}{0}{east}{west}}%
+\tikzoption{above from}{\tikz@from{#1}{1}{90}{north}{south}}%
+\tikzoption{left from}{\tikz@from{#1}{1}{180}{west}{east}}%
+\tikzoption{below left from}{\tikz@from{#1}{1.414214}{-135}{south west}{north east}}%
+\tikzoption{below right from}{\tikz@from{#1}{1.414214}{-45}{south east}{north west}}%
+\tikzoption{above right from}{\tikz@from{#1}{1.414214}{45}{north east}{south west}}%
+\tikzoption{above left from}{\tikz@from{#1}{1.414214}{135}{north west}{south east}}%
+\def\tikz@from#1#2#3#4#5{%
+ \def\tikz@anchor{#5}%
+ \let\tikz@do@auto@anchor=\relax%
+ \tikz@addtransform{\pgftransformshift{\pgfpointscale{#2}{\pgfpointpolar{#3}{\tikz@node@distance}}}}%
+ \def\tikz@node@at{\pgfpointanchor{#1}{#4}}}
+
+
+%
+% Styles for real and complex signal paths.
+%
+\tikzstyle{dotted path}
+ = [loosely dotted,
+ shorten >= 2mm,
+ shorten <= 2mm]
+\tikzstyle{r}
+ = [line width=\pathlinewidth,
+ >= real tip,
+ draw]
+\tikzstyle{r>}
+ = [r,->]
+\tikzstyle{<r}
+ = [r,<-]
+\tikzstyle{r.}
+ = [r,dotted path]
+\tikzstyle{c}
+ = [line width=\pathlinewidth,
+ double=\pathfillcolor,
+ double distance=\pathlinewidth,
+ >= complex tip,
+ draw,shorten <=-\pathlineextend]
+\tikzstyle{c>}
+ = [c,->]
+\tikzstyle{<c}
+ = [c,<-]
+\tikzstyle{c.}
+ = [c,dotted path]
+
+
+\endinput
diff --git a/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/pgflibrarytikzsignalflowoperators.code.tex b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/pgflibrarytikzsignalflowoperators.code.tex
new file mode 100644
index 00000000000..f94f0a8f8a7
--- /dev/null
+++ b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/pgflibrarytikzsignalflowoperators.code.tex
@@ -0,0 +1,259 @@
+% pgf/tikz library
+% for signal flow diagrams
+%
+% Author: Dr. Karlheinz Ochs, Ruhr-University of Bochum, Germany
+% Version: 0.1
+% Date: 2007/01/05
+
+
+%
+% Styles for nodes, terminals, and operators.
+%
+% - nodes and terminals
+\tikzstyle{node style}%
+ = [draw=\pathdrawcolor,
+ fill=\pathdrawcolor,
+ minimum size=\nodesize]
+\tikzstyle{terminal style}%
+ = [draw=\pathdrawcolor,
+ fill=\pathfillcolor,
+ line width=\pathlinewidth,
+ minimum size=\terminalsize]
+\tikzstyle{node}%
+ = [node shape,
+ node style]
+\tikzstyle{input}%
+ = [input terminal shape,
+ terminal style]
+\tikzstyle{output}%
+ = [output terminal shape,
+ terminal style]
+% - operators
+\tikzstyle{operator color}%
+ = [draw=\operatordrawcolor,
+ fill=\operatorfillcolor]
+\tikzstyle{operator style}%
+ = [operator color,
+ line width=\operatorlinewidth,
+ minimum size=\operatorsize]
+\tikzstyle{multiplier}%
+ = [multiplier shape,
+ operator style]
+\tikzstyle{modulator}%
+ = [modulator shape,
+ operator style]
+\tikzstyle{adder}%
+ = [adder shape,
+ operator style]
+\tikzstyle{delay}%
+ = [rectangle,
+ operator style,
+ minimum size=\delaysize]
+
+
+%
+% Circular shapes of operator symbols.
+%
+% #1 = additional inner symbol
+\newcommand{\circularshape}[1]{%
+ \savedanchor\centerpoint{\pgfpointorigin}
+ % radius is half of maximum of \pgfshapeminwidth and \pgfshapeminheight
+ \saveddimen\radius{%
+ \setlength{\pgf@xa}{\pgfshapeminwidth}
+ \setlength{\pgf@ya}{\pgfshapeminheight}
+ \ifdim\pgf@xa>\pgf@ya
+ \pgf@x=.5\pgf@xa
+ \else
+ \pgf@x=.5\pgf@ya
+ \fi
+ }
+ \inheritanchor[from=circle]{center}
+ \inheritanchorborder[from=circle]
+ \inheritanchor[from=circle]{north}
+ \inheritanchor[from=circle]{north east}
+ \inheritanchor[from=circle]{east}
+ \inheritanchor[from=circle]{south east}
+ \inheritanchor[from=circle]{south}
+ \inheritanchor[from=circle]{south west}
+ \inheritanchor[from=circle]{west}
+ \inheritanchor[from=circle]{north west}
+ \inheritanchor[from=circle]{mid}
+ \inheritanchor[from=circle]{mid west}
+ \inheritanchor[from=circle]{mid east}
+ \inheritanchor[from=circle]{base}
+ \inheritanchor[from=circle]{base west}
+ \inheritanchor[from=circle]{base east}
+ % circular shaped frame
+ \inheritbackgroundpath[from=circle]
+ % additional inner symbol
+ \foregroundpath{
+ \centerpoint%
+ \pgf@xc=\pgf@x%
+ \pgf@yc=\pgf@y%
+ \@tempdima=\radius%
+ #1
+ }
+ % no text
+ \nodeparts{}
+}
+
+
+%
+% Anchors for default text box, see below.
+%
+\newcommand{\stdaboveanchor}{%
+ \anchor{text}{%
+ \centerpoint
+ \advance\pgf@x by-0.5\wd\pgfnodeparttextbox%
+ \advance\pgf@y by\radius
+ \advance\pgf@y by+0.5mm
+ }
+}
+\newcommand{\stdrightanchor}{%
+ \anchor{text}{%
+ \centerpoint
+ \advance\pgf@x by\radius
+ \advance\pgf@x by+0.5mm
+ \advance\pgf@y by-0.5\ht\pgfnodeparttextbox%
+ \advance\pgf@y by+0.5\dp\pgfnodeparttextbox%
+ }
+}
+\newcommand{\stdbelowanchor}{%
+ \anchor{text}{%
+ \centerpoint
+ \advance\pgf@x by-0.5\wd\pgfnodeparttextbox%
+ \advance\pgf@y by-\ht\pgfnodeparttextbox%
+ \advance\pgf@y by-\radius
+ \advance\pgf@y by-0.5mm
+ }
+}
+\newcommand{\stdleftanchor}{%
+ \anchor{text}{%
+ \centerpoint
+ \advance\pgf@x by-\radius
+ \advance\pgf@x by-\wd\pgfnodeparttextbox%
+ \advance\pgf@x by-0.5mm
+ \advance\pgf@y by-0.5\ht\pgfnodeparttextbox%
+ \advance\pgf@y by+0.5\dp\pgfnodeparttextbox%
+ }
+}
+
+
+%
+% Circular shapes of operator symbols with default text box.
+%
+% #1 = place of the default text box
+\newbox\pgfnodepartabovebox
+\newbox\pgfnodepartrightbox
+\newbox\pgfnodepartbelowbox
+\newbox\pgfnodepartleftbox
+\newcommand{\labelledcircularshape}[1]{%
+ % node parts
+ \nodeparts{text,above,right,below,left}
+ % anchors
+ \savedanchor\centerpoint{\pgfpointorigin}
+ % radius is half of maximum of \pgfshapeminwidth and \pgfshapeminheight
+ \saveddimen\radius{%
+ \setlength{\pgf@xa}{\pgfshapeminwidth}
+ \setlength{\pgf@ya}{\pgfshapeminheight}
+ \ifdim\pgf@xa>\pgf@ya
+ \pgf@x=.5\pgf@xa
+ \else
+ \pgf@x=.5\pgf@ya
+ \fi
+ }
+ \inheritanchor[from=circle]{center}
+ \inheritanchorborder[from=circle]
+ \inheritanchor[from=circle]{north}
+ \inheritanchor[from=circle]{north east}
+ \inheritanchor[from=circle]{east}
+ \inheritanchor[from=circle]{south east}
+ \inheritanchor[from=circle]{south}
+ \inheritanchor[from=circle]{south west}
+ \inheritanchor[from=circle]{west}
+ \inheritanchor[from=circle]{north west}
+ \inheritanchor[from=circle]{mid}
+ \inheritanchor[from=circle]{mid west}
+ \inheritanchor[from=circle]{mid east}
+ \inheritanchor[from=circle]{base}
+ \inheritanchor[from=circle]{base west}
+ \inheritanchor[from=circle]{base east}
+ #1
+ \anchor{above}{%
+ \centerpoint
+ \advance\pgf@x by-0.5\wd\pgfnodepartabovebox%
+ \advance\pgf@y by\radius
+ \advance\pgf@y by+0.5mm
+ }
+ \anchor{right}{%
+ \centerpoint
+ \advance\pgf@x by\radius
+ \advance\pgf@x by+0.5mm
+ \advance\pgf@y by-0.5\ht\pgfnodepartrightbox%
+ \advance\pgf@y by+0.5\dp\pgfnodeparttextbox%
+ }
+ \anchor{below}{%
+ \centerpoint
+ \advance\pgf@x by-0.5\wd\pgfnodepartbelowbox%
+ \advance\pgf@y by-\ht\pgfnodepartbelowbox%
+ \advance\pgf@y by-\radius
+ \advance\pgf@y by-0.5mm
+ }
+ \anchor{left}{%
+ \centerpoint
+ \advance\pgf@x by-\radius
+ \advance\pgf@x by-\wd\pgfnodepartleftbox%
+ \advance\pgf@x by-0.5mm
+ \advance\pgf@y by-0.5\ht\pgfnodepartleftbox%
+ \advance\pgf@y by+0.5\dp\pgfnodeparttextbox%
+ }
+ % circular shaped frame
+ \inheritbackgroundpath[from=circle]
+}
+
+
+%
+% Shape of a node.
+%
+\pgfdeclareshape{node shape}{\labelledcircularshape{\stdaboveanchor}}%
+
+%
+% Shape of an input terminal.
+%
+\pgfdeclareshape{input terminal shape}{\labelledcircularshape{\stdleftanchor}}%
+%
+% Shape of an output terminal.
+%
+\pgfdeclareshape{output terminal shape}{\labelledcircularshape{\stdrightanchor}}%
+%
+% Shape of a multiplier.
+%
+\pgfdeclareshape{multiplier shape}{\labelledcircularshape{\stdleftanchor}}%
+%
+% Shape of a modulator.
+%
+\pgfdeclareshape{modulator shape}{\circularshape{%
+ \pgfpathmoveto{\pgfpointadd{\pgfpoint{\pgf@xc}{\pgf@yc}}
+ {\pgfpoint{-0.707107\@tempdima}{-0.707107\@tempdima}}}
+ \pgfpathlineto{\pgfpointadd{\pgfpoint{\pgf@xc}{\pgf@yc}}
+ {\pgfpoint{0.707107\@tempdima}{0.707107\@tempdima}}}
+ \pgfpathmoveto{\pgfpointadd{\pgfpoint{\pgf@xc}{\pgf@yc}}
+ {\pgfpoint{0.707107\@tempdima}{-0.707107\@tempdima}}}
+ \pgfpathlineto{\pgfpointadd{\pgfpoint{\pgf@xc}{\pgf@yc}}
+ {\pgfpoint{-0.707107\@tempdima}{0.707107\@tempdima}}}
+}}%
+%
+% Shape of an adder.
+%
+\pgfdeclareshape{adder shape}{\circularshape{%
+ \pgfpathmoveto{\pgfpointadd{\pgfpoint{\pgf@xc}{\pgf@yc}}
+ {\pgfpoint{-0.5\@tempdima}{0\@tempdima}}}
+ \pgfpathlineto{\pgfpointadd{\pgfpoint{\pgf@xc}{\pgf@yc}}
+ {\pgfpoint{0.5\@tempdima}{0\@tempdima}}}
+ \pgfpathmoveto{\pgfpointadd{\pgfpoint{\pgf@xc}{\pgf@yc}}
+ {\pgfpoint{0\@tempdima}{-0.5\@tempdima}}}
+ \pgfpathlineto{\pgfpointadd{\pgfpoint{\pgf@xc}{\pgf@yc}}
+ {\pgfpoint{0\@tempdima}{0.5\@tempdima}}}
+}}%
+
+\endinput
diff --git a/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/placement.pdf b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/placement.pdf
new file mode 100644
index 00000000000..c06b5d79f08
--- /dev/null
+++ b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/placement.pdf
Binary files differ
diff --git a/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/placement.tex b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/placement.tex
new file mode 100644
index 00000000000..ec65a53b7d0
--- /dev/null
+++ b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/placement.tex
@@ -0,0 +1,28 @@
+% Placement example of from command,
+% which is an extension of the of command,
+% cf. tikz.code.tex of Till Tantau.
+%
+% Author: Dr. Karlheinz Ochs, Ruhr-University of Bochum, Germany
+% Version: 0.1
+% Date: 2007/01/05
+\documentclass{article}
+\usepackage{signalflowdiagram}
+\usepackage{macros}
+
+\begin{document}
+
+%
+% Basic placement example using my "from" command.
+%
+\begin{signalflow}{Placement example}
+ \node[block] (bc) {center};
+ \node[block] (bl) [left from=bc] {left};
+ \node[block] (br) [right from=bc] {right};
+ \node[block] (ba) [above from=bc] {above};
+ \node[block] (bb) [below from=bc] {below};
+ \node[block] (bal) [above left from=bc] {above\\left};
+ \node[block] (bbl) [below left from=bc] {below\\left};
+ \node[block] (bal) [above right from=bc] {above\\right};
+ \node[block] (bbl) [below right from=bc] {below\\right};
+\end{signalflow}
+\end{document}
diff --git a/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/signalflowdiagram.sty b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/signalflowdiagram.sty
new file mode 100644
index 00000000000..c258eb7a9d9
--- /dev/null
+++ b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/signalflowdiagram.sty
@@ -0,0 +1,138 @@
+% A simple library for signal flow diagrams
+% based on the pgf/tikz package of Till Tantau
+%
+% Author: Dr. Karlheinz Ochs, Ruhr-University of Bochum, Germany
+% Version: 0.1
+% Date: 2007/01/05
+\NeedsTeXFormat{LaTeX2e}
+\RequirePackage{tikz}
+\ProvidesPackage{signalflowdiagram}
+ [2006/12/30 v0.1 Signal flow diagrams]
+
+%
+% Libraries for signal flow diagrams.
+%
+\usetikzlibrary{signalflowdiagram,signalflowarrows,signalflowoperators,signalflowblocks}
+
+
+%
+% Colors
+%
+\newcommand{\pathdrawcolor}{\blockdrawcolor} % draw color of signal paths
+\newcommand{\pathfillcolor}{\blockfillcolor} % fill color of signal paths
+\newcommand{\operatordrawcolor}{\blockdrawcolor} % draw color of operators
+\newcommand{\operatorfillcolor}{\blockfillcolor} % fill color of operators
+\newcommand{\blockdrawcolor}{black} % draw color of blocks
+\newcommand{\blockfillcolor}{white} % fill color of blocks
+
+%
+% line widths of
+%
+\newcommand{\diagramlinewidth}{0.5mm} % signal flow diagram frames
+\newcommand{\pathlinewidth}{0.3mm} % signal paths
+\newcommand{\operatorlinewidth}{0.3mm} % operator frames
+\newcommand{\blocklinewidth}{0.5mm} % building block styles
+
+%
+% line widths, sizes, etc.
+%
+\newcommand{\nodesize}{1.5mm} % size of nodes
+\newcommand{\terminalsize}{\nodesize} % size of terminals
+\newcommand{\operatorsize}{3mm} % size of circular shaped operator symbols
+\newcommand{\delaysize}{6mm} % minimum size of delay elements
+\newcommand{\blockwidth}{24mm} % minimum width of blocks
+\newcommand{\blockheight}{12mm} % minimum height of blocks
+\newcommand{\blocktextwidth}{22mm} % minimum text width of blocks
+\newcommand{\filterwidth}{12mm} % minimum width of filters
+\newcommand{\filterheight}{8mm} % minimum height of filters
+\newcommand{\filtertextwidth}{6mm} % minimum text width of filters
+
+%
+% misc.
+%
+\newcommand{\pathlineextend}{0.025mm} % shortens the end of the signal paths
+\newcommand{\vbullets}[1]{% vertical bullets
+\node[rectangle,anchor=center,at=(#1),text width=2ex]{%
+$\bullet$\\[-1ex] $\bullet$\\[-1ex] $\bullet$}
+}%
+
+
+%
+% Signal flow diagram.
+%
+% #1 = optional parameter(s)
+% #2 = title text
+\tikzstyle{signal flow diagram} =
+ [rectangle,
+ sharp corners,
+ line width=\diagramlinewidth,
+ draw=black,
+ inner sep=3mm]
+\newenvironment{signalflow}[2][]{%
+\begin{center}
+ \begin{tikzpicture}
+ \node[% title
+ signal flow diagram,
+ fill=blue!90!black,
+ text=white] (title) {#2};% title text
+ \node at (title.south west) [%
+ signal flow diagram,
+ fill=blue!20!white,
+ anchor=north west,
+ yshift=\pgflinewidth]
+ \bgroup
+ \begin{minipage}{0.9\textwidth}
+ \centering
+ \begin{tikzpicture}[%
+ node distance=8mm,
+ pin distance=8mm,
+ label distance=-0.5mm,
+ inner sep=1mm,
+ anchor=center,
+ text centered,
+ #1]% optional parameter(s)
+}{%
+ \end{tikzpicture}
+ \end{minipage}
+ \egroup;
+ \end{tikzpicture}
+\end{center}
+}%
+
+
+%
+% Positioning of node text.
+%
+% #1 = node label
+% #2 = label text
+\newcommand{\textaboveof}[2]{\pgftext[bottom,at=\pgfpointanchor{#1}{north},y=+1mm]{#2}}%
+\newcommand{\textrightof}[2]{\pgftext[left, at=\pgfpointanchor{#1}{east}, x=+1mm]{#2}}%
+\newcommand{\textbelowof}[2]{\pgftext[top ,at=\pgfpointanchor{#1}{south},y=-1mm]{#2}}%
+\newcommand{\textleftof} [2]{\pgftext[right, at=\pgfpointanchor{#1}{west}, x=-1mm]{#2}}%
+
+\makeatletter
+\newcounter{r}
+\newcommand{\tikzgrid}{%
+ \pgfsetxvec{\pgfpoint{\tikz@node@distance}{0mm}}%
+ \pgfsetyvec{\pgfpoint{0mm}{\tikz@node@distance}}%
+ \tikz@matrix%
+}
+\newcommand{\tikz@matrix}[1]{\tikz@@matrix#1@}%
+\def\tikz@@matrix#1@{\do@rows#1\\@\\}%
+\def\do@rows#1\\{%
+ \ifx#1@%
+ \else%
+ \setcounter{r}{0}%
+ \do@columns#1&@&%
+ \pgftransformshift{\pgfpointxy{-\ther}{-1}}%
+ \expandafter\do@rows%
+ \fi}%
+\def\do@columns#1&{%
+ \if#1@%
+ \else%
+ \stepcounter{r}%
+ \pgftransformshift{\pgfpointxy{1}{0}}%
+ #1;%
+ \expandafter\do@columns%
+ \fi}%
+\makeatother
diff --git a/Master/texmf-dist/source/latex/pgf/testsuite/external/Makefile b/Master/texmf-dist/source/latex/pgf/testsuite/external/Makefile
new file mode 100644
index 00000000000..0ba43c08570
--- /dev/null
+++ b/Master/texmf-dist/source/latex/pgf/testsuite/external/Makefile
@@ -0,0 +1,18 @@
+
+all: tikzexternaltest.pdf tikzexternaltestmakefile.pdf
+
+
+tikzexternaltest.pdf: FORCE
+ pdflatex -shell-escape tikzexternaltest.tex
+
+tikzexternaltestmakefile.pdf: FORCE
+ pdflatex tikzexternaltestmakefile.tex
+ $(MAKE) -f tikzexternaltestmakefile.makefile
+ pdflatex tikzexternaltestmakefile.tex
+ $(MAKE) -f tikzexternaltestmakefile.makefile
+ pdflatex tikzexternaltestmakefile.tex
+
+FORCE:
+
+clean:
+ rm -f *.aux *.auxlock *.log *.pdf *.dpth *.dep *.makefile *.figlist *.out
diff --git a/Master/texmf-dist/source/latex/pgf/testsuite/external/tikzexternaltest.code.tex b/Master/texmf-dist/source/latex/pgf/testsuite/external/tikzexternaltest.code.tex
new file mode 100644
index 00000000000..8a200fcf991
--- /dev/null
+++ b/Master/texmf-dist/source/latex/pgf/testsuite/external/tikzexternaltest.code.tex
@@ -0,0 +1,41 @@
+\parskip=1cm
+\parindent=0pt
+
+A small image with a filled circle follows here (with baseline): \tikz[baseline] \fill[red] (0,1cm) circle(2pt);
+
+\tikzsetnextfilename{\tikzexternalrealjob-setnextfilename}
+The next one uses
+\begin{tikzpicture}[baseline]
+ \draw (0,0) grid (4,4);
+\end{tikzpicture}
+an explizit file name.
+
+\begin{tikzpicture}
+ \node[draw,rounded corners] {A node with a ref (\ref{eq:1})};
+\end{tikzpicture}
+
+\begin{equation}
+ 1+1=3
+ \label{eq:1}
+\end{equation}
+
+\begin{tikzpicture}
+ \node[draw,rounded corners] {A node which contains a label\label{a:label:in:a:picture}};
+\end{tikzpicture}
+
+The label inside of a node is on page~\pageref{a:label:in:a:picture}.
+
+\expandafter\ifx\csname pgfplotslegendfromname\endcsname\relax
+\else
+The following picture exports a legend to the aux file (if possible).
+\begin{tikzpicture}
+ \begin{axis}[legend entries={1,2,3,4},legend to name=legend:name]
+ \addplot {x};
+ \addplot {x+1};
+ \addplot {x+2};
+ \addplot {x+3};
+ \end{axis}
+\end{tikzpicture}
+
+Here is the legend: \pgfplotslegendfromname{legend:name}.
+\fi
diff --git a/Master/texmf-dist/source/latex/pgf/testsuite/external/tikzexternaltest.sharedpreamble.tex b/Master/texmf-dist/source/latex/pgf/testsuite/external/tikzexternaltest.sharedpreamble.tex
new file mode 100644
index 00000000000..87e94f899eb
--- /dev/null
+++ b/Master/texmf-dist/source/latex/pgf/testsuite/external/tikzexternaltest.sharedpreamble.tex
@@ -0,0 +1,20 @@
+\documentclass[a4paper]{article}
+\usepackage[utf8]{inputenc}
+
+\usepackage{tikz}
+\usepackage{hyperref}
+
+\IfFileExists{pgfplots.sty}{%
+ \usepackage{pgfplots}
+}{}%
+
+\IfFileExists{tikzlibraryexternal.code.tex}{%
+ \usetikzlibrary{external}
+}{%
+ \message{TEST IS RUNNING IN COMPATIBILITY MODE}%
+ % a test to check for pgf 2.00 compatibility, to check whether the
+ % external library copy shipped with pgfplots works:
+ \usepgfplotslibrary{external}
+}%
+
+\pgfkeys{/pgf/images/include external/.code={\href{file:#1}{\pgfimage{#1}}}}
diff --git a/Master/texmf-dist/source/latex/pgf/testsuite/external/tikzexternaltest.tex b/Master/texmf-dist/source/latex/pgf/testsuite/external/tikzexternaltest.tex
new file mode 100644
index 00000000000..2aaef55effe
--- /dev/null
+++ b/Master/texmf-dist/source/latex/pgf/testsuite/external/tikzexternaltest.tex
@@ -0,0 +1,12 @@
+\input tikzexternaltest.sharedpreamble.tex
+
+\tikzexternalize{tikzexternaltest}
+
+\author{Christian Feuers\"anger}
+\title{Test with default config and Provided Basefilename}
+
+\begin{document}
+\maketitle
+\input{tikzexternaltest.code.tex}
+\end{document}
+
diff --git a/Master/texmf-dist/source/latex/pgf/testsuite/external/tikzexternaltestmakefile.tex b/Master/texmf-dist/source/latex/pgf/testsuite/external/tikzexternaltestmakefile.tex
new file mode 100644
index 00000000000..232489823ec
--- /dev/null
+++ b/Master/texmf-dist/source/latex/pgf/testsuite/external/tikzexternaltestmakefile.tex
@@ -0,0 +1,12 @@
+\input tikzexternaltest.sharedpreamble.tex
+
+\tikzexternalize[mode=list and make]
+
+\author{Christian Feuers\"anger}
+\title{Test with mode list and make, automatic Basefilename}
+
+\begin{document}
+\maketitle
+\input{tikzexternaltest.code.tex}
+\end{document}
+
diff --git a/Master/texmf-dist/source/latex/pgf/testsuite/mathtest/pgfmathtestsuite.tex b/Master/texmf-dist/source/latex/pgf/testsuite/mathtest/pgfmathtestsuite.tex
new file mode 100644
index 00000000000..7ae80434c2d
--- /dev/null
+++ b/Master/texmf-dist/source/latex/pgf/testsuite/mathtest/pgfmathtestsuite.tex
@@ -0,0 +1,1073 @@
+\documentclass[a4paper]{article}
+
+\usepackage[intlimits]{amsmath}
+\usepackage{amssymb}
+\usepackage{amsfonts}
+\usepackage{ifpdf}
+
+\ifpdf
+ \usepackage{hyperref}
+\else
+ \def\pgfsysdriver{pgfsys-dvipdfm.def}
+ \usepackage[dvipdfm]{hyperref}
+\fi
+\usepackage{pgf}
+\usepackage{fp}
+
+\makeatletter
+\pgfutil@ifundefined{pgfmathdeclarefunction}{
+ % load pgfplots with its pgf 2.00 compatibility code:
+ \usepackage{pgfplots}
+}{
+ \usepgflibrary{fpu}
+}
+\makeatother
+
+
+
+\parindent=0pt
+
+
+\author{Christian Feuers\"anger}
+\title{Test cases for pgffloatmath.code.tex}
+
+\def\testsection#1{\message{---------- STARTING TEST SECTION '#1'}\section{#1}}
+\def\testsubsection#1{\message{-------STARTING TEST SUBSECTION '#1'}\subsection{#1}}
+\def\testsubsubsection#1{\message{------STARTING TEST SUBSUBSECTION '#1'}\subsubsection{#1}}
+
+
+\def\compare#1#2{%
+ \begingroup
+ \message{COMPUTING LOG(#1)}%
+ \pgfmathlog{#1}%
+ \let\actual=\pgfmathresult
+ \def\expected{#2}%
+ \pgfmathsubtract\actual\expected%
+ \let\abserr=\pgfmathresult
+ \pgfmathdivide\abserr\expected
+ \let\relerr=\pgfmathresult
+ \noindent
+ log(#1)\hfill=
+ \expected;\hfill%
+ actual=\actual;\hfill%
+ abserr=\abserr;\hfill%
+ relerr=\relerr;\hfill%
+ \endgroup
+ \par
+}%
+%--------------------------------------------------
+% \def\showlowlevelfloat#1#2e#3\relax{%
+% \ensuremath{[#1] \cdot #2 \cdot 10^{#3}}%
+% }%
+%--------------------------------------------------
+\long\def\showlowlevelfloatmacro#1{#1}
+
+\long\def\showlowlevelfloatmacrolong#1{%
+ #1 is decomposed into
+
+ {%
+ \gdef\testerror{}%
+ \pgfmathfloattoregisters{#1}{\count0 }{\dimen0 }{\count1 }%
+ pgfmathfloattoregisters: flags \the\count0; M=\the\dimen0; E=\the\count1
+ \ifx\testerror\empty
+ \else
+ \par (caught \texttt{\testerror})%
+ \fi
+ }%
+
+ {%
+ \gdef\testerror{}%
+ pgfmathfloattoregisterstok: \pgfmathfloattoregisterstok{#1}{\count0 }{\toks0 }{\count1 }%
+ flags \the\count0; M=\the\toks0; E=\the\count1
+ \ifx\testerror\empty
+ \else
+ \par (caught \texttt{\testerror})%
+ \fi
+ }%
+
+ {%
+ \gdef\testerror{}%
+ pgfmathfloatgetflags \pgfmathfloatgetflags{#1}{\count0 }
+ flags \the\count0;
+ \ifx\testerror\empty
+ \else
+ \par (caught \texttt{\testerror})%
+ \fi
+ }%
+
+ \medskip
+ %\expandafter\showlowlevelfloat#1\relax
+}%
+
+\def\showsinglenumberparsing#1{%
+%\tracingmacros=2\tracingcommands=2
+ \begingroup
+ \message{PARSING NUMBER #1...}%
+ \gdef\testerror{}%
+ \pgfmathfloatparsenumber{#1}%
+ \let\resultasfloat=\pgfmathresult
+ \pgfmathfloattofixed\resultasfloat
+ \let\resultasfixed=\pgfmathresult
+ \[ #1 \mapsto \resultasfloat = \showlowlevelfloatmacro\resultasfloat \mapsto \resultasfixed
+ \]
+ \ifx\testerror\empty
+ \else
+ \par (caught \texttt{\testerror})%
+ \fi
+ \endgroup
+%\tracingmacros=0\tracingcommands=0
+}
+
+\def\pretty#1{%
+ \message{Pretty-printing #1...}%
+ \pgfmathprintnumberto{#1}\result
+ {\pgfkeys{/pgf/number format/showpos}\pgfmathprintnumberto{#1}\resultpos\global\let\resultpos=\resultpos}%
+ \[ #1 \mapsto \pgfmathprintnumber{#1} [=\resultpos] \]
+ \message{#1 mapsto \meaning\result}%
+}
+
+\begin{document}
+\maketitle
+
+
+%--------------------------------------------------
+% \showit{2.8128}
+% log(12)=\pgfmathlog{1.2}\pgfmathadd{\pgfmathresult}{2.30258}\pgfmathresult\par
+% \showit{1.2}
+% \showit{4.0}
+% log(1200)=\pgfmathlog{1.2}\pgfmathadd{\pgfmathresult}{6.9077}\pgfmathresult\par
+% log(6.241e-7)=\pgfmathlog{6.241}\pgfmathadd{\pgfmathresult}{-16.11809}\pgfmathresult\par
+%--------------------------------------------------
+
+\testsection{Conversion to normalised floating point numbers basis 10}
+\showsinglenumberparsing{123.41251}%
+\showsinglenumberparsing{1023.52}
+\showsinglenumberparsing{123412.51}%
+\showsinglenumberparsing{12341251.0}%
+\showsinglenumberparsing{-12341251.0}%
+\showsinglenumberparsing{1.2341251}%
+\showsinglenumberparsing{8.02410024}
+\showsinglenumberparsing{8.024100}
+\showsinglenumberparsing{0001234.3100}
+\showsinglenumberparsing{0001234.00001}
+\showsinglenumberparsing{0001000.00001}
+\showsinglenumberparsing{0001000.00001000}
+\showsinglenumberparsing{0.12341251}%
+\showsinglenumberparsing{0.0012341251}%
+\showsinglenumberparsing{0.00000012341251}%
+\showsinglenumberparsing{-0.00000012341251}%
+\showsinglenumberparsing{10}
+\showsinglenumberparsing{100.351}
+\showsinglenumberparsing{100.35100}
+\showsinglenumberparsing{100.35100234}
+\showsinglenumberparsing{100.0035100234}
+\showsinglenumberparsing{100}
+\showsinglenumberparsing{99999}
+\showsinglenumberparsing{999.000}
+
+%\tracingmacros=2 \tracingcommands=2
+\showsinglenumberparsing{8.31160034e-02}%
+\showsinglenumberparsing{2.54685628e-02}%
+\showsinglenumberparsing{7.40715288e-03}%
+\showsinglenumberparsing{2.10192154e-03}%
+\showsinglenumberparsing{5.87352989e-04}%
+\showsinglenumberparsing{-1.62269942e-04}%
+\showsinglenumberparsing{4.44248889e-05}%
+\showsinglenumberparsing{1.20714122e-05}%
+\showsinglenumberparsing{3.26101452e-06}%
+\showsinglenumberparsing{3261.01452e-06}%
+\showsinglenumberparsing{0.000326101452e-06}%
+\showsinglenumberparsing{1.2345e-12}%
+\showsinglenumberparsing{1.2345e+12}%
+
+\message{SPECIAL CASE 0}%
+\showsinglenumberparsing{0}
+\showsinglenumberparsing{-0}
+\showsinglenumberparsing{-0.000}
+\showsinglenumberparsing{+0.000}
+\showsinglenumberparsing{+0}
+\showsinglenumberparsing{-1}
+\showsinglenumberparsing{1.0e1}
+\showsinglenumberparsing{1e1}
+\showsinglenumberparsing{1141}
+\showsinglenumberparsing{-53e-5}
+
+\testsubsection{Error handling}
+{
+ \pgfkeys{
+ /pgf/fpu/handlers/empty number/.code 2 args={%
+ \gdef\testerror{handlers/empty number=\{#1\}\{#2\}}%
+ },
+ /pgf/fpu/handlers/invalid number/.code 2 args={%
+ \gdef\testerror{handlers/invalid number=\{#1\}\{#2\}}%
+ },
+ /pgf/fpu/handlers/wrong lowlevel format/.code 2 args={%
+ \gdef\testerror{handlers/wrong lowlevel format=\{#1\}\{#2\}}%
+ },
+ }
+ \showsinglenumberparsing{-53e-5 not terminated}
+ %\showsinglenumberparsing{-53e-}
+ \showsinglenumberparsing{}
+ \showsinglenumberparsing{ ASDZ@414e12}
+
+ This one has trailing spaces and should work:
+ \showsinglenumberparsing{10 }
+
+ This one has leading spaces and should work:
+ \showsinglenumberparsing{ 10}
+
+ \testsubsection{Error handling of decompose routines}
+
+ \pgfmathfloatparsenumber{100}
+ \showlowlevelfloatmacrolong{\pgfmathresult}
+
+ \showlowlevelfloatmacrolong{132}
+
+ \showlowlevelfloatmacrolong{Z}
+}
+
+\testsection{logarithms, compared with PGF arithmetics}
+
+\compare{0.1}{-2.30259}
+\compare{0.12}{-2.12026}
+\compare{0.2}{-1.60944}
+\compare{0.3}{-1.20397}
+\compare{0.4}{-0.916291}
+\compare{0.5}{-0.693147}
+\compare{0.6}{-0.510826}
+\compare{0.7}{-0.356675}
+\compare{0.75}{-0.287682}
+\compare{0.8}{-0.223144}
+\compare{0.823}{-0.194799}
+\compare{0.9}{-0.105361}
+\compare{0.96}{-0.040822}
+\compare{1.2}{0.182322}
+\compare{1.5}{0.405465}
+\compare{1.6}{0.470004}
+\compare{9.0}{2.1972245773}
+\compare{9.2}{2.2192034}
+\compare{9.3}{2.23001440}
+\compare{9.7}{2.27212588}
+\compare{10.0}{2.302585092}
+\compare{100.0}{4.605170185}
+\compare{1351.0}{7.208600337}
+\compare{9752.0}{9.185227671}
+\compare{9600.0}{9.169518377}
+
+\vskip1cm
+\compare{0.000142}{-8.8596835}
+\compare{0.0054124}{-5.219062661}
+\compare{0.000912697124}{-6.9991064}
+
+\vskip1cm
+\compare{8.31160034e-02}{-2.48751801563782}%
+\compare{2.54685628e-02}{-3.67031041875206}%
+\compare{7.40715288e-03}{-4.90530914022879}%
+\compare{2.10192154e-03}{-6.16490333357987}%
+\compare{5.87352989e-04}{-7.43988457474844}%
+\compare{1.62269942e-04}{-8.72624930084187}%
+\compare{4.44248889e-05}{-10.0217106847708}%
+\compare{1.20714122e-05}{-11.3246705288704}%
+\compare{3.26101452e-06}{-12.6334722085451}%
+
+\vskip1cm
+\compare{5}{1.6094379124341}%
+\compare{17}{2.83321334405622}%
+\compare{39}{3.66356164612965}%
+\compare{49}{3.89182029811063}%
+\compare{129}{4.85981240436167}%
+\compare{321}{5.77144112313002}%
+\compare{769}{6.64509096950564}%
+\compare{1793}{7.49164547360513}%
+\compare{4097}{8.31801027754687}%
+\compare{9217}{9.12880488399366}%
+
+
+\testsection{Test for prettyprinter}
+%\tracingmacros=2\tracingcommands=2
+\message{PRETTY PRINTING}
+{
+\twocolumn
+\def\prettytest{%
+ \pretty{1}
+ \pretty{1.0}
+ \pretty{-1.02311}
+ \pretty{-11241.02311}
+ \pretty{-11241}
+ \pretty{8124.99999}
+ \pretty{8124.849999}
+ \pretty{8124.843333}
+ \pretty{8.82}
+ \pretty{8.5}
+ \pretty{9.}
+ \pretty{5.9}
+ \pretty{-0.00001}
+ \pretty{-1.00001}
+ \pretty{-0.559}
+ \pretty{-0.554}
+ \pretty{-0.00000141}
+ \pretty{1.234e10}
+ \pretty{123456781}
+ \pretty{1234}
+ \pretty{8}
+ \pretty{-9.995}
+ \pretty{-0.015}
+ \pretty{-0.1}
+ \pretty{-0.15}
+ \pretty{0.15}
+ \pretty{-0}
+ \pretty{0}
+ \pretty{9.00}
+ \pretty{200.01}
+ \pretty{200.0000}
+ \pretty{1.5e-7}
+ \pretty{0.00035}
+ \pretty{0.00005}
+ \pretty{nan}
+ \pretty{inf}
+ \pretty{-inf}
+ \pretty{10}
+ \pretty{100}
+ \pretty{200}
+ \pretty{500}
+ \pretty{1000}
+ \pretty{30000}
+ \pretty{600000}
+ \pretty{1000000}
+ \pretty{30000000}
+ \pretty{600000000}
+ \pretty{1000000000}
+ \pretty{-10}
+ \pretty{-100}
+ \pretty{-200}
+ \pretty{-500}
+ \pretty{-1000}
+ \pretty{-30000}
+ \pretty{-600000}
+ \pretty{-1000000}
+ \pretty{-30000000}
+ \pretty{-600000000}
+ \pretty{-1000000000}
+}
+
+\testsubsection{STD format}
+\pgfqkeys{/pgf/number format}{std}
+\prettytest
+
+{
+\testsubsubsection{precision 0}
+\pgfqkeys{/pgf/number format}{precision=0}
+\prettytest
+}
+
+{
+\testsubsection{FIXED format}
+\testsubsubsection{with period}
+\pgfqkeys{/pgf/number format}{fixed,use period}
+\prettytest
+
+{
+\testsubsubsection{precision 0}
+\pgfqkeys{/pgf/number format}{precision=0}
+\prettytest
+}
+{
+\testsubsubsection{skip 0.=true}
+\pgfqkeys{/pgf/number format}{skip 0.=true}
+\prettytest
+}
+
+{
+\testsubsubsection{1000 sep; min exponent for 1000 sep=4}
+\pgfqkeys{/pgf/number format}{1000 sep=',min exponent for 1000 sep=4}
+\prettytest
+}
+
+\testsubsubsection{with comma}
+\pgfqkeys{/pgf/number format}{fixed,use comma}
+\prettytest
+}
+
+
+{
+\testsubsection{FIXED ZEROFILL format}
+\testsubsubsection{with period}
+\pgfqkeys{/pgf/number format}{fixed,fixed zerofill,use period}
+\prettytest
+
+{
+\testsubsubsection{precision 0}
+\pgfqkeys{/pgf/number format}{precision=0}
+\prettytest
+}
+
+\testsubsubsection{with comma}
+\pgfqkeys{/pgf/number format}{fixed,fixed zerofill,use comma}
+%\tracingmacros=2\tracingcommands=2
+\prettytest
+%\tracingmacros=0\tracingcommands=0
+}
+
+{
+\testsubsection{sci format}
+\testsubsubsection{with period}
+\pgfqkeys{/pgf/number format}{sci,use period}
+\prettytest
+
+{
+\testsubsubsection{precision 0}
+\pgfqkeys{/pgf/number format}{precision=0}
+\prettytest
+}
+
+\testsubsubsection{with comma}
+\pgfqkeys{/pgf/number format}{sci,use comma}
+\prettytest
+
+%\testsubsection{may skip mantisse}
+%\pgfqkeys{/pgf/number format}{sci may skip mantisse=true}
+%\prettytest
+
+}{
+\testsubsection{sci format zerofill}
+\testsubsubsection{with period}
+\pgfqkeys{/pgf/number format}{sci,sci zerofill,use period}
+\prettytest
+
+\testsubsubsection{with comma}
+\pgfqkeys{/pgf/number format}{sci,sci zerofill,use comma}
+\prettytest
+
+\testsubsubsection{e-style}
+\pgfqkeys{/pgf/number format}{sci e}
+\prettytest
+
+\testsubsubsection{subscript-style}
+\pgfqkeys{/pgf/number format}{sci subscript}
+\prettytest
+
+\testsubsubsection{subscript-style + period + no zero fill}
+\pgfqkeys{/pgf/number format}{sci subscript,use period,sci}
+\prettytest
+
+\testsubsubsection{subscript-style precision 4}
+\pgfqkeys{/pgf/number format}{sci subscript,precision=4}
+\prettytest
+}
+
+\testsubsection{int trunc format}
+\pgfqkeys{/pgf/number format}{int trunc}
+\prettytest
+
+\testsubsection{int detect format}
+\pgfqkeys{/pgf/number format}{int detect}
+\prettytest
+
+\testsubsection{frac}
+\pgfqkeys{/pgf/number format}{frac}
+\pretty{0.333333333333333}
+\pretty{0.5}
+\pretty{2.133333333333325e-01}%
+\pretty{0.12}
+\pretty{2.666666666666646e-02}%
+\pretty{-1.333333333333334e-02}%
+\pretty{7.200000000000000e-01}%
+\pretty{6.666666666666667e-02}%
+\pretty{1.333333333333333e-01}%
+\pretty{-1.333333333333333e-02}%
+\pretty{8.533333333333298e-01}
+\pretty{8.533333e-01}
+}
+\onecolumn
+
+\begingroup
+\testsection{testing pgfmathfloatadd}
+\def\testfloataddnonsymmetric#1#2{%
+ \pgfmathfloatparsenumber{#1}%
+ \let\first=\pgfmathresult
+ \pgfmathfloatparsenumber{#2}%
+ \let\second=\pgfmathresult
+ \message{computing #1 + #2; \first + \second}%
+ \pgfmathfloatadd\first\second
+ \let\result=\pgfmathresult
+ \pgfmathfloattofixed\result
+ \let\resultfixed=\pgfmathresult
+ \[ \text{pgfmathfloatadd: } \showlowlevelfloatmacro\first + \showlowlevelfloatmacro\second = \showlowlevelfloatmacro\result \; \bigl( #1 + #2 = \resultfixed \bigr). \]
+}%
+\def\testfloatadd#1#2{%
+ \testfloataddnonsymmetric{#1}{#2}%
+ \testfloataddnonsymmetric{#2}{#1}%
+}%
+
+\testfloatadd{1}{100}
+\testfloatadd{100}{100}
+\testfloatadd{1}{2}
+\testfloatadd{1}{0}
+\testfloatadd{9.999999}{0}
+\testfloatadd{9.9999}{0.0001}
+\testfloatadd{9.9999e-5}{0.0001e-5}
+\testfloatadd{1e6}{1e5}
+\testfloatadd{1e6}{1e3}
+\testfloatadd{1e6}{1}
+\testfloatadd{1e6}{0.1}
+
+\testfloatadd{1}{-100}
+\testfloatadd{100}{-100}
+\testfloatadd{1}{-2}
+\testfloatadd{1e6}{-1e5}
+\testfloatadd{1e6}{-1e3}
+\testfloatadd{1e6}{-1}
+\testfloatadd{1e6}{-0.1}
+
+\testfloatadd{1e-3}{0}
+
+\testfloatadd{inf}{0}
+\testfloatadd{inf}{5}
+\testfloatadd{nan}{5}
+\testfloatadd{0}{0}
+\testfloatadd{-inf}{inf}
+\testfloatadd{-inf}{40}
+\endgroup
+
+\begingroup
+\testsection{testing pgfmathfloatmultiplyfixed}
+\def\testfloatmultiplyfixed#1#2{%
+ \pgfmathfloatparsenumber{#1}%
+ \let\first=\pgfmathresult
+ \pgfmathfloatparsenumber{#2}%
+ \pgfmathfloattofixed\pgfmathresult
+ \let\second=\pgfmathresult
+ \message{computing #1 * #2; \first * \second}%
+ \pgfmathfloatmultiplyfixed\first\second
+ \let\result=\pgfmathresult
+ \pgfmathfloattofixed\result
+ \let\resultfixed=\pgfmathresult
+ \[ \text{pgfmathfloatmultiplyfixed: } \showlowlevelfloatmacro\first \cdot \second = \showlowlevelfloatmacro\result \; \bigl( #1 \cdot #2 = \resultfixed \bigr). \]
+}%
+
+\testfloatmultiplyfixed{1}{100}
+\testfloatmultiplyfixed{100}{100}
+\testfloatmultiplyfixed{1}{2}
+\testfloatmultiplyfixed{5}{2}
+\testfloatmultiplyfixed{5e4}{10}
+\testfloatmultiplyfixed{1}{0}
+\testfloatmultiplyfixed{9.999999}{0}
+\testfloatmultiplyfixed{9.9999}{0.0001}
+\testfloatmultiplyfixed{9.9999e-5}{0.001}
+\testfloatmultiplyfixed{1e6}{4}
+\testfloatmultiplyfixed{1e6}{100}
+\testfloatmultiplyfixed{1e6}{1}
+\testfloatmultiplyfixed{1e6}{0.1}
+
+\testfloatmultiplyfixed{1}{-100}
+\testfloatmultiplyfixed{100}{-100}
+\testfloatmultiplyfixed{1}{-2}
+\testfloatmultiplyfixed{1e6}{-9}
+\testfloatmultiplyfixed{1e6}{-100}
+\testfloatmultiplyfixed{1e6}{-1}
+\testfloatmultiplyfixed{1e6}{-0.1}
+
+\testfloatmultiplyfixed{1e-3}{0}
+
+\testfloatmultiplyfixed{inf}{0}
+\testfloatmultiplyfixed{inf}{5}
+\testfloatmultiplyfixed{nan}{5}
+\testfloatmultiplyfixed{0}{0}
+\testfloatmultiplyfixed{-inf}{40}
+\endgroup
+
+
+\testsection{testing pgfmathfloatlessthan}
+\def\testfloatlessthan#1#2{%
+ \pgfmathfloatparsenumber{#1}%
+ \let\first=\pgfmathresult
+ \pgfmathfloatparsenumber{#2}%
+ \let\second=\pgfmathresult
+ \message{checking #1 <= #2; \first <= \second}%
+ \pgfmathfloatlessthan\first\second
+ \ifpgfmathfloatcomparison
+ \def\result{<}%
+ \else
+ \def\result{\ge}%
+ \fi
+ \[ \text{pgfmathfloatlessthan: } \bigl( \showlowlevelfloatmacro\first \bigr)\; = #1 \result #2\; \bigl( = \showlowlevelfloatmacro\second \big). \]
+}%
+
+\testfloatlessthan{4}{5}
+\testfloatlessthan{0}{2}
+\testfloatlessthan{91751123}{241924}
+\testfloatlessthan{-1}{-1}
+\testfloatlessthan{-1231}{0}
+\testfloatlessthan{10}{-5}
+\testfloatlessthan{0}{0}
+\testfloatlessthan{-0}{-0}
+\testfloatlessthan{0}{14}
+\testfloatlessthan{114812}{-123124123}
+\testfloatlessthan{114812}{1241231451}
+\testfloatlessthan{-141285}{29}
+\testfloatlessthan{-141285}{0}
+\testfloatlessthan{-141285}{-50}
+\testfloatlessthan{-141285}{-12498149012}
+
+\testsection{float to fixed test}
+\def\testpgfmathfloattofixed#1{%
+ \pgfmathfloatparsenumber{#1}%
+%\tracingmacros=2\tracingcommands=2
+ \let\argument=\pgfmathresult
+ \message{converting #1 = \argument\ to fixed point}%
+ \pgfmathfloattofixed\argument
+ \let\result=\pgfmathresult
+ \message{-> \result}%
+%\tracingmacros=0\tracingcommands=0
+ \[ \bigl( \showlowlevelfloatmacro\argument \bigr)\; = #1 \mapsto \result \]
+}%
+\testpgfmathfloattofixed{0}
+\testpgfmathfloattofixed{5}
+\testpgfmathfloattofixed{5.520241}
+\testpgfmathfloattofixed{124.10241}
+\testpgfmathfloattofixed{-121.248}
+\testpgfmathfloattofixed{-12e-5}
+\testpgfmathfloattofixed{412e3}
+\testpgfmathfloattofixed{0.0001}
+\testpgfmathfloattofixed{0.0}
+\testpgfmathfloattofixed{-0.012125}
+\testpgfmathfloattofixed{1.2e-1}
+\testpgfmathfloattofixed{1.2e-2}
+\testpgfmathfloattofixed{1.2e4}
+\testpgfmathfloattofixed{1.2345e4}
+\testpgfmathfloattofixed{1.234567e4}
+\testpgfmathfloattofixed{1.51234e0}
+\testpgfmathfloattofixed{15}
+\testpgfmathfloattofixed{-20}
+
+\testsection{Testing pgfmathfloatmin and pgfmathfloatmax}
+\def\testfloatminmax#1#2{%
+ \pgfmathfloatparsenumber{#1}%
+ \let\first=\pgfmathresult
+ \pgfmathfloatparsenumber{#2}%
+ \let\second=\pgfmathresult
+%\tracingmacros=2\tracingcommands=2
+ \message{computing min/max #1 and #2}%
+ \pgfmathfloatmin\first\second
+ \let\result=\pgfmathresult
+ \pgfmathfloattofixed\result
+ \[ \min\{#1,#2\} = \min\{ \showlowlevelfloatmacro\first, \showlowlevelfloatmacro\second \} \; = \showlowlevelfloatmacro\result = \pgfmathresult \]
+ %
+ \pgfmathfloatmax\first\second
+ \let\result=\pgfmathresult
+ \pgfmathfloattofixed\result
+ \[ \max\{#1,#2\} = \max\{ \showlowlevelfloatmacro\first, \showlowlevelfloatmacro\second \} \; = \showlowlevelfloatmacro\result = \pgfmathresult \]
+}%
+\testfloatminmax{42}{56}
+\testfloatminmax{-4122}{1256}
+\testfloatminmax{1e12}{5.235412e24}
+\testfloatminmax{-12}{-145}
+
+\testsection{Testing pgfmathfloatshift}
+\def\pgfmathfloatshifttest#1#2{%
+ \pgfmathfloatparsenumber{#1}%
+ \let\argument=\pgfmathresult
+ \message{computing mathshift #1 by #2}%
+ \pgfmathfloatshift\argument{#2}%
+ \let\result=\pgfmathresult
+ \pgfmathfloattofixed\result
+ \[ #1 \cdot 10^{#2} = \showlowlevelfloatmacro\argument \cdot 10^{#2} = \showlowlevelfloatmacro\result = \pgfmathresult \]
+}%
+\pgfmathfloatshifttest{4}{1}
+\pgfmathfloatshifttest{4}{2}
+\pgfmathfloatshifttest{4}{-1}
+\pgfmathfloatshifttest{4}{-2}
+\pgfmathfloatshifttest{0}{-2}
+\pgfmathfloatshifttest{1.1415130}{-2}
+\pgfmathfloatshifttest{1.1415130}{5}
+
+\testsection{Testing pgfmathfloatmultiply}
+\begingroup
+\def\pgfmathfloatmultiplytest#1#2{%
+ \pgfmathfloatparsenumber{#1}%
+ \let\argumenta=\pgfmathresult
+ \pgfmathfloatparsenumber{#2}%
+ \let\argumentb=\pgfmathresult
+ \message{computing mathmultiply #1 by #2}%
+ \pgfmathfloatmultiply\argumenta\argumentb%
+ \let\result=\pgfmathresult
+ \pgfmathfloattofixed\result
+ \[ #1 \cdot #2 = \showlowlevelfloatmacro\result = \pgfmathresult \]
+}%
+\def\tests{%
+ \pgfmathfloatmultiplytest{4}{1}
+ \pgfmathfloatmultiplytest{4}{2}
+ \pgfmathfloatmultiplytest{4}{-1}
+ \pgfmathfloatmultiplytest{4}{-2}
+ \pgfmathfloatmultiplytest{0}{-2}
+ \pgfmathfloatmultiplytest{1.1415130}{-2}
+ \pgfmathfloatmultiplytest{1.1415130}{5}
+ \pgfmathfloatmultiplytest{10}{10}
+ \pgfmathfloatmultiplytest{100}{100}
+ \pgfmathfloatmultiplytest{9999999}{9999999}
+ gnuplot for $\cdot$: $99999980000001.0$
+ \pgfmathfloatmultiplytest{-10}{10}
+ \pgfmathfloatmultiplytest{-90}{3}
+ \pgfmathfloatmultiplytest{-90}{-3}
+ \pgfmathfloatmultiplytest{-inf}{nan}
+ \pgfmathfloatmultiplytest{-inf}{+inf}
+ \pgfmathfloatmultiplytest{1}{0}
+ \pgfmathfloatmultiplytest{1}{0}
+ \pgfmathfloatmultiplytest{1}{-0}
+ \pgfmathfloatmultiplytest{3.14159265358979}{2}
+}%
+\tests
+
+\testsection{Testing pgfmathfloatdivide}
+
+\def\pgfmathfloatmultiplytest#1#2{%
+ \pgfmathfloatparsenumber{#1}%
+ \let\argumenta=\pgfmathresult
+ \pgfmathfloatparsenumber{#2}%
+ \let\argumentb=\pgfmathresult
+ \message{computing mathdivide #1 by #2}%
+ \pgfmathfloatdivide\argumenta\argumentb%
+ \let\result=\pgfmathresult
+ \pgfmathfloattofixed\result
+ \[ #1 / #2 = \showlowlevelfloatmacro\result = \pgfmathresult \]
+}%
+\tests
+\endgroup
+
+
+{
+\testsection{Testing pgfmathfloatsqrt}
+% #1 : number
+% #2 : the reference, sqrt (#1)
+\def\pgfmathfloatsqrttest#1#2{%
+ \pgfmathfloatparsenumber{#1}%
+ \let\argumenta=\pgfmathresult
+ \pgfmathfloatparsenumber{#2}%
+ \let\reference=\pgfmathresult
+ \message{computing sqrt(#1)}%
+ \pgfmathfloatsqrt\argumenta%
+ \let\resultfloat=\pgfmathresult
+ \pgfmathfloattosci\pgfmathresult
+ \let\result=\pgfmathresult
+ \pgfmathfloatrelerror\resultfloat\reference
+ \pgfmathfloattosci\pgfmathresult
+ \[ \sqrt{#1} = \result\quad (\text{rel. error } \pgfmathresult)\]
+}%
+\def\tests{%
+ \pgfmathfloatsqrttest{0}{0}
+ \pgfmathfloatsqrttest{1}{1}
+ \pgfmathfloatsqrttest{2}{1.414213562373}
+ \pgfmathfloatsqrttest{4}{2}
+ \pgfmathfloatsqrttest{16}{4}
+ \pgfmathfloatsqrttest{10}{3.162277660168}
+ \pgfmathfloatsqrttest{1000000}{1000}
+ \pgfmathfloatsqrttest{123456789}{1.111111106055556e+04}
+}%
+\tests
+}
+
+{
+\testsection{Testing pgfmathfloatint}
+% #1 : number
+\def\pgfmathfloatinttest#1{%
+ \pgfmathfloatparsenumber{#1}%
+ \let\argumenta=\pgfmathresult
+ \message{computing int(#1)}%
+ \pgfmathfloatint\argumenta%
+ \pgfmathfloattosci\pgfmathresult
+ \let\result=\pgfmathresult
+ \[ int(#1) = \result \]
+ %
+ \pgfmathfloatparsenumber{-#1}%
+ \let\argumenta=\pgfmathresult
+ \message{computing int(-#1)}%
+ \pgfmathfloatint\argumenta%
+ \pgfmathfloattosci\pgfmathresult
+ \let\result=\pgfmathresult
+ \[ int(-#1) = \result \]
+}%
+\def\tests{%
+ \pgfmathfloatinttest{1.23}
+ \pgfmathfloatinttest{12.34}
+ \pgfmathfloatinttest{123.4}
+ \pgfmathfloatinttest{1234.}
+ \pgfmathfloatinttest{1234.1}
+ \pgfmathfloatinttest{1e-2}
+ \pgfmathfloatinttest{0}
+ \pgfmathfloatinttest{3.456789e4}
+ \pgfmathfloatinttest{3.456789e10}
+}%
+\tests
+}
+
+{
+\testsection{Testing pgfmathfloatexp}
+% #1 : number
+% #2 : the reference, sqrt (#1)
+\def\pgfmathfloattest#1#2{%
+ \pgfmathfloatparsenumber{#1}%
+ \let\argumenta=\pgfmathresult
+ \pgfmathfloatparsenumber{#2}%
+ \let\reference=\pgfmathresult
+ \message{computing (#1)}%
+ \pgfmathfloatexp\argumenta%
+ \let\resultfloat=\pgfmathresult
+ \pgfmathfloattosci\pgfmathresult
+ \let\result=\pgfmathresult
+ \pgfmathfloatrelerror\resultfloat\reference
+ \pgfmathfloattosci\pgfmathresult
+ \[ \exp(#1) = \result\quad (\text{error/r to }#2 = \pgfmathresult)\]
+}%
+%\tracingmacros=2\tracingcommands=2
+ \pgfmathfloattest{-700}{9.85967654375977e-305}
+ \pgfmathfloattest{-1.0000000e+02}{3.7200760e-44}
+ \pgfmathfloattest{-9.5918367e+01}{2.2038516e-42}
+ \pgfmathfloattest{-9.1836735e+01}{1.3056083e-40}
+ \pgfmathfloattest{-8.7755102e+01}{7.7346991e-39}
+ \pgfmathfloattest{-8.3673469e+01}{4.5821992e-37}
+ \pgfmathfloattest{-7.9591837e+01}{2.7145916e-35}
+ \pgfmathfloattest{-7.5510204e+01}{1.6081814e-33}
+ \pgfmathfloattest{-7.1428571e+01}{9.5272065e-32}
+ \pgfmathfloattest{-6.7346939e+01}{5.6441184e-30}
+ \pgfmathfloattest{-6.3265306e+01}{3.3436950e-28}
+ \pgfmathfloattest{-5.9183673e+01}{1.9808756e-26}
+ \pgfmathfloattest{-5.5102041e+01}{1.1735125e-24}
+ \pgfmathfloattest{-5.1020408e+01}{6.9521362e-23}
+ \pgfmathfloattest{-4.6938776e+01}{4.1185924e-21}
+ \pgfmathfloattest{-4.2857143e+01}{2.4399411e-19}
+ \pgfmathfloattest{-3.8775510e+01}{1.4454727e-17}
+ \pgfmathfloattest{-3.4693878e+01}{8.5632855e-16}
+ \pgfmathfloattest{-3.0612245e+01}{5.0730713e-14}
+ \pgfmathfloattest{-2.6530612e+01}{3.0053946e-12}
+ \pgfmathfloattest{-2.2448980e+01}{1.7804593e-10}
+ \pgfmathfloattest{-1.8367347e+01}{1.0547817e-08}
+ \pgfmathfloattest{-1.4285714e+01}{6.2487495e-07}
+ \pgfmathfloattest{-1.0204082e+01}{3.7018912e-05}
+ \pgfmathfloattest{-6.1224490e+00}{2.1930786e-03}
+ \pgfmathfloattest{-2.0408163e+00}{1.2992261e-01}
+ \pgfmathfloattest{2.0408163e+00}{7.6968898e+00}
+ \pgfmathfloattest{6.1224490e+00}{4.5598001e+02}
+ \pgfmathfloattest{1.0204082e+01}{2.7013219e+04}
+ \pgfmathfloattest{1.4285714e+01}{1.6003202e+06}
+ \pgfmathfloattest{1.8367347e+01}{9.4806349e+07}
+ \pgfmathfloattest{2.2448980e+01}{5.6165284e+09}
+ \pgfmathfloattest{2.6530612e+01}{3.3273501e+11}
+ \pgfmathfloattest{3.0612245e+01}{1.9711925e+13}
+ \pgfmathfloattest{3.4693878e+01}{1.1677761e+15}
+ \pgfmathfloattest{3.8775510e+01}{6.9181522e+16}
+ \pgfmathfloattest{4.2857143e+01}{4.0984595e+18}
+ \pgfmathfloattest{4.6938776e+01}{2.4280140e+20}
+ \pgfmathfloattest{5.1020408e+01}{1.4384068e+22}
+ \pgfmathfloattest{5.5102041e+01}{8.5214258e+23}
+ \pgfmathfloattest{5.9183673e+01}{5.0482727e+25}
+ \pgfmathfloattest{6.3265306e+01}{2.9907034e+27}
+ \pgfmathfloattest{6.7346939e+01}{1.7717559e+29}
+ \pgfmathfloattest{7.1428571e+01}{1.0496256e+31}
+ \pgfmathfloattest{7.5510204e+01}{6.2182039e+32}
+ \pgfmathfloattest{7.9591837e+01}{3.6837954e+34}
+ \pgfmathfloattest{8.3673469e+01}{2.1823582e+36}
+ \pgfmathfloattest{8.7755102e+01}{1.2928751e+38}
+ \pgfmathfloattest{9.1836735e+01}{7.6592653e+39}
+ \pgfmathfloattest{9.5918367e+01}{4.5375106e+41}
+ \pgfmathfloattest{1.0000000e+02}{2.6881171e+43}
+ \pgfmathfloattest{700}{1.014232054735e+304}
+}
+
+{
+\testsection{Testing pgfmathfloatmod}
+% #1 : operand 1
+% #2 : operand 2
+% #3 : the reference, #1 mod #2
+\def\pgfmathfloattest#1#2#3{%
+ \pgfmathfloatparsenumber{#1}%
+ \let\argumenta=\pgfmathresult
+ \pgfmathfloatparsenumber{#2}%
+ \let\argumentb=\pgfmathresult
+ \pgfmathfloatparsenumber{#3}%
+ \let\reference=\pgfmathresult
+ \message{computing #1 mod #2}%
+ \pgfmathfloatmod\argumenta\argumentb%
+ \let\resultfloat=\pgfmathresult
+ \pgfmathfloattosci\pgfmathresult
+ \let\result=\pgfmathresult
+ \pgfmathfloatrelerror\resultfloat\reference
+ \pgfmathfloattosci\pgfmathresult
+ \[ #1\text{ mod }#2 = \result\quad (\text{error/r to }#3 = \pgfmathresult)\]
+}%
+%\tracingmacros=2\tracingcommands=2
+ \pgfmathfloattest{4}{3}{1}
+ \pgfmathfloattest{10}{10}{0}
+ \pgfmathfloattest{20}{6}{2}
+ \pgfmathfloattest{-100}{30}{-10}
+ \pgfmathfloattest{10.5}{5}{0.5}
+ \pgfmathfloattest{300.63}{360}{300.63}
+ \pgfmathfloattest{-20}{30}{-20}
+}
+
+{
+\testsection{Testing Trigonometric functions}
+% #1 : operator
+% #2 : operand
+% #3 : the reference, #2(#1)
+\def\pgfmathfloattest#1#2#3{%
+ \pgfmathfloatparsenumber{#2}%
+ \let\argumenta=\pgfmathresult
+ \pgfmathfloatparsenumber{#3}%
+ \let\reference=\pgfmathresult
+ \message{computing \string#1(#2)}%
+ #1\argumenta%
+ \let\resultfloat=\pgfmathresult
+ \pgfmathfloattosci\pgfmathresult
+ \let\result=\pgfmathresult
+ \pgfmathfloatrelerror\resultfloat\reference
+ \pgfmathfloattosci\pgfmathresult
+ \[ \string#1(#2) = \result\quad (\text{error/r to }#3 = \pgfmathresult)\]
+}%
+%\tracingmacros=2\tracingcommands=2
+\testsubsection{SIN}
+ \pgfmathfloattest\pgfmathfloatsin{-7.2000000e+02}{4.8985872e-16}
+ \pgfmathfloattest\pgfmathfloatsin{-6.5454545e+02}{9.0963200e-01}
+ \pgfmathfloattest\pgfmathfloatsin{-5.8909091e+02}{7.5574957e-01}
+ \pgfmathfloattest\pgfmathfloatsin{-5.2363636e+02}{-2.8173256e-01}
+ \pgfmathfloattest\pgfmathfloatsin{-4.5818182e+02}{-9.8982144e-01}
+ \pgfmathfloattest\pgfmathfloatsin{-3.9272727e+02}{-5.4064082e-01}
+ \pgfmathfloattest\pgfmathfloatsin{-3.2727273e+02}{5.4064082e-01}
+ \pgfmathfloattest\pgfmathfloatsin{-2.6181818e+02}{9.8982144e-01}
+ \pgfmathfloattest\pgfmathfloatsin{-1.9636364e+02}{2.8173256e-01}
+ \pgfmathfloattest\pgfmathfloatsin{-1.3090909e+02}{-7.5574957e-01}
+ \pgfmathfloattest\pgfmathfloatsin{-6.5454545e+01}{-9.0963200e-01}
+ \pgfmathfloattest\pgfmathfloatsin{0.0000000e+00}{0.0000000e+00}
+ \pgfmathfloattest\pgfmathfloatsin{6.5454545e+01}{9.0963200e-01}
+ \pgfmathfloattest\pgfmathfloatsin{1.3090909e+02}{7.5574957e-01}
+ \pgfmathfloattest\pgfmathfloatsin{1.9636364e+02}{-2.8173256e-01}
+ \pgfmathfloattest\pgfmathfloatsin{2.6181818e+02}{-9.8982144e-01}
+ \pgfmathfloattest\pgfmathfloatsin{3.2727273e+02}{-5.4064082e-01}
+ \pgfmathfloattest\pgfmathfloatsin{3.9272727e+02}{5.4064082e-01}
+ \pgfmathfloattest\pgfmathfloatsin{4.5818182e+02}{9.8982144e-01}
+ \pgfmathfloattest\pgfmathfloatsin{5.2363636e+02}{2.8173256e-01}
+ \pgfmathfloattest\pgfmathfloatsin{5.8909091e+02}{-7.5574957e-01}
+ \pgfmathfloattest\pgfmathfloatsin{6.5454545e+02}{-9.0963200e-01}
+ \pgfmathfloattest\pgfmathfloatsin{7.2000000e+02}{-4.8985872e-16}
+
+
+
+\testsubsection{COS}
+ \pgfmathfloattest\pgfmathfloatcos{-7.2000000e+02}{1.0000000e+00}
+ \pgfmathfloattest\pgfmathfloatcos{-6.5454545e+02}{4.1541501e-01}
+ \pgfmathfloattest\pgfmathfloatcos{-5.8909091e+02}{-6.5486073e-01}
+ \pgfmathfloattest\pgfmathfloatcos{-5.2363636e+02}{-9.5949297e-01}
+ \pgfmathfloattest\pgfmathfloatcos{-4.5818182e+02}{-1.4231484e-01}
+ \pgfmathfloattest\pgfmathfloatcos{-3.9272727e+02}{8.4125353e-01}
+ \pgfmathfloattest\pgfmathfloatcos{-3.2727273e+02}{8.4125353e-01}
+ \pgfmathfloattest\pgfmathfloatcos{-2.6181818e+02}{-1.4231484e-01}
+ \pgfmathfloattest\pgfmathfloatcos{-1.9636364e+02}{-9.5949297e-01}
+ \pgfmathfloattest\pgfmathfloatcos{-1.3090909e+02}{-6.5486073e-01}
+ \pgfmathfloattest\pgfmathfloatcos{-6.5454545e+01}{4.1541501e-01}
+ \pgfmathfloattest\pgfmathfloatcos{0.0000000e+00}{1.0000000e+00}
+ \pgfmathfloattest\pgfmathfloatcos{6.5454545e+01}{4.1541501e-01}
+ \pgfmathfloattest\pgfmathfloatcos{1.3090909e+02}{-6.5486073e-01}
+ \pgfmathfloattest\pgfmathfloatcos{1.9636364e+02}{-9.5949297e-01}
+ \pgfmathfloattest\pgfmathfloatcos{2.6181818e+02}{-1.4231484e-01}
+ \pgfmathfloattest\pgfmathfloatcos{3.2727273e+02}{8.4125353e-01}
+ \pgfmathfloattest\pgfmathfloatcos{3.9272727e+02}{8.4125353e-01}
+ \pgfmathfloattest\pgfmathfloatcos{4.5818182e+02}{-1.4231484e-01}
+ \pgfmathfloattest\pgfmathfloatcos{5.2363636e+02}{-9.5949297e-01}
+ \pgfmathfloattest\pgfmathfloatcos{5.8909091e+02}{-6.5486073e-01}
+ \pgfmathfloattest\pgfmathfloatcos{6.5454545e+02}{4.1541501e-01}
+ \pgfmathfloattest\pgfmathfloatcos{7.2000000e+02}{1.0000000e+00}
+
+
+\testsubsection{TAN}
+ \pgfmathfloattest\pgfmathfloattan{-7.2000000e+02}{4.8985872e-16}
+ \pgfmathfloattest\pgfmathfloattan{-6.5454545e+02}{2.1896946e+00}
+ \pgfmathfloattest\pgfmathfloattan{-5.8909091e+02}{-1.1540615e+00}
+ \pgfmathfloattest\pgfmathfloattan{-5.2363636e+02}{2.9362649e-01}
+ \pgfmathfloattest\pgfmathfloattan{-4.5818182e+02}{6.9551528e+00}
+ \pgfmathfloattest\pgfmathfloattan{-3.9272727e+02}{-6.4266098e-01}
+ \pgfmathfloattest\pgfmathfloattan{-3.2727273e+02}{6.4266098e-01}
+ \pgfmathfloattest\pgfmathfloattan{-2.6181818e+02}{-6.9551528e+00}
+ \pgfmathfloattest\pgfmathfloattan{-1.9636364e+02}{-2.9362649e-01}
+ \pgfmathfloattest\pgfmathfloattan{-1.3090909e+02}{1.1540615e+00}
+ \pgfmathfloattest\pgfmathfloattan{-6.5454545e+01}{-2.1896946e+00}
+ \pgfmathfloattest\pgfmathfloattan{0.0000000e+00}{0.0000000e+00}
+ \pgfmathfloattest\pgfmathfloattan{6.5454545e+01}{2.1896946e+00}
+ \pgfmathfloattest\pgfmathfloattan{1.3090909e+02}{-1.1540615e+00}
+ \pgfmathfloattest\pgfmathfloattan{1.9636364e+02}{2.9362649e-01}
+ \pgfmathfloattest\pgfmathfloattan{2.6181818e+02}{6.9551528e+00}
+ \pgfmathfloattest\pgfmathfloattan{3.2727273e+02}{-6.4266098e-01}
+ \pgfmathfloattest\pgfmathfloattan{3.9272727e+02}{6.4266098e-01}
+ \pgfmathfloattest\pgfmathfloattan{4.5818182e+02}{-6.9551528e+00}
+ \pgfmathfloattest\pgfmathfloattan{5.2363636e+02}{-2.9362649e-01}
+ \pgfmathfloattest\pgfmathfloattan{5.8909091e+02}{1.1540615e+00}
+ \pgfmathfloattest\pgfmathfloattan{6.5454545e+02}{-2.1896946e+00}
+ \pgfmathfloattest\pgfmathfloattan{7.2000000e+02}{-4.8985872e-16}
+
+
+
+}
+
+{
+\testsection{Testing the FPU library (and math parser)}
+\pgfkeys{/pgf/fpu}
+% #1 : expression
+% #2 : the reference
+\def\pgfmathfloattest#1#2{%
+ \pgfmathfloatparsenumber{#2}%
+ \let\reference=\pgfmathresult
+ \message{parsing expression #1...}%
+ \pgfmathparse{#1}%
+ \let\argumenta=\pgfmathresult
+ \let\resultfloat=\pgfmathresult
+ \pgfmathfloattosci\pgfmathresult
+ \let\result=\pgfmathresult
+ \pgfmathfloatrelerror\resultfloat\reference
+ \pgfmathfloattosci\pgfmathresult
+ \[ #1 = \result \quad[= \resultfloat] \quad (\text{error/r to }#2 = \pgfmathresult)\]
+}%
+%\tracingmacros=2\tracingcommands=2
+
+ \pgfmathfloattest{1+1}{2}
+ \pgfmathfloattest{1234567*4}{4938268}
+ \pgfmathfloattest{exp(200)}{7.22597376812575e+86}
+ \pgfmathfloattest{rad(360)}{6.28318530717959}
+ \pgfmathfloattest{rad(180)}{3.14159265358979}
+ \pgfmathfloattest{deg(2*pi)}{360}
+ \pgfmathfloattest{deg(pi)}{180}
+ \pgfmathfloattest{ln(1)}{0}
+ \pgfmathfloattest{round(1.5)}{2}
+ \pgfmathfloattest{round(-1.5)}{-2}
+ \pgfmathfloattest{- (1.5)}{-1.5}
+ \pgfmathfloattest{(1e4 - 1e3) * 1e5}{900000000.0}
+ \pgfmathfloattest{4^2}{16}
+ \pgfmathfloattest{4^3}{64}
+ \pgfmathfloattest{4^-3}{0.015625}
+ \pgfmathfloattest{4^-6}{0.000244140625}
+ \pgfmathfloattest{111^4}{151807041}
+ \pgfmathfloattest{8^10}{1073741824}
+ \pgfmathfloattest{3^1.5}{5.19615242270663}
+ \pgfmathfloattest{16^5.5}{4194304}
+ \pgfmathfloattest{15^-0.25}{0.508132748154615}
+ \pgfmathfloattest{sec(45)}{1.4142136e+00}
+ \pgfmathfloattest{cot(30)}{1.7320508e+00}
+ \pgfmathfloattest{asin(7.0710678e-01)}{45}
+ \pgfmathfloattest{acos(8.6602540e-01)}{30}
+ \pgfmathfloattest{atan(5.7735027e-01)}{30}
+ \pgfmathfloattest{atan(16000)}{89.9964}
+ \pgfmathfloattest{atan(1e6)}{8.9999943e+01}
+ \pgfmathfloattest{atan(-1e6)}{-8.9999943e+01}
+ \pgfmathfloattest{-12^2}{-144}%
+ \pgfmathfloattest{0-12^2}{-144}%
+ \pgfmathfloattest{-(12)^2}{-144}%
+ \pgfmathfloattest{exp(-12^2)}{2.8946e-63}%
+ \pgfmathfloattest{round(98.8)}{99}%
+ \pgfmathfloattest{-pi}{-3.14159265358979}%
+ \pgfmathfloattest{2*(-pi)}{-6.28318530717959}%
+ \pgfmathfloattest{2*(-3)}{-6}%
+ \pgfmathfloattest{veclen(1,1)}{1.414213562373095}%
+ \pgfmathfloattest{veclen(1e5,6e5)}{6.082762530298220e+05}%
+ \pgfmathfloattest{cosh(5)}{74.20994852478784}%
+ \pgfmathfloattest{sinh(0.6)}{0.636653582148241}%
+ \pgfmathfloattest{tanh(0.6)}{0.537049566998035}%
+% \pgfmathfloattest{ceil(1.5)}{2}
+}
+\end{document}