diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/pgf')
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 Binary files differnew file mode 100644 index 00000000000..d386670f931 --- /dev/null +++ b/Master/texmf-dist/source/latex/pgf/incoming/GrzegorzMurzynowski/pgfdatabasearrows.pdf 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 Binary files differnew file mode 100644 index 00000000000..7e2a07930b2 --- /dev/null +++ b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/basics.pdf 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 Binary files differnew file mode 100644 index 00000000000..f9719f7e450 --- /dev/null +++ b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/fir.pdf 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 Binary files differnew file mode 100644 index 00000000000..1092c9ba2d6 --- /dev/null +++ b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/interconnection.pdf 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 Binary files differnew file mode 100644 index 00000000000..c06b5d79f08 --- /dev/null +++ b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/placement.pdf 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} |