diff options
author | Karl Berry <karl@freefriends.org> | 2019-05-12 20:23:02 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2019-05-12 20:23:02 +0000 |
commit | 22cbaf8cd711b82b3fe4b387a7e72b58409ecdbd (patch) | |
tree | 0b785b59273566c030b567add8671b7f06167054 /Master/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex | |
parent | 692a797099b0acfd35d4bbd6a322acdc87c2c3a8 (diff) |
pgf
git-svn-id: svn://tug.org/texlive/trunk@51107 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex')
-rw-r--r-- | Master/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex | 329 |
1 files changed, 167 insertions, 162 deletions
diff --git a/Master/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex b/Master/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex index b35e3d2595b..d1c3c43443e 100644 --- a/Master/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex +++ b/Master/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex @@ -15,45 +15,49 @@ % % Use \pgfmathdeclarefunction* to force a redefinition if the function exists already. \def\pgfmathdeclarefunction{\pgfmath@ifnextchar*\pgfmathdeclarefunction@force\pgfmathdeclarefunction@check} -\def\pgfmathdeclarefunction@check#1#2#3{% - \expandafter\ifx\csname pgfmath@function@#1\endcsname\relax% - \pgfmath@declarefunction{#1}{#2}{#3}% - \else% - \pgfmath@error{The function `#1' already exists}{}% - \fi% +\def\pgfmathdeclarefunction@check#1{% + \expandafter\ifx\csname pgfmath@function@#1\endcsname\relax\else% + \pgfmath@error{The function `#1' already exists}{}% + \fi% + \pgfmath@declarefunction{#1}% } \def\pgfmathdeclarefunction@force*{\pgfmath@declarefunction}% \def\pgfmathredeclarefunction#1#2{% - \expandafter\ifx\csname pgfmath@function@#1\endcsname\relax% - \pgfmath@error{The function `#1' does not exist}{}% - \else% + \expandafter\ifx\csname pgfmath@function@#1\endcsname\relax% + \pgfmath@error{The function `#1' does not exist}{}% + \else% % was: \pgfmath@namedef{pgfmath#1@}{#2}% TT - \edef\pgf@marshal{\noexpand\pgfmathdeclarefunction*{#1}{\csname pgfmath@operation@#1@arity\endcsname}}% + \edef\pgf@marshal{\noexpand\pgfmathdeclarefunction*{#1}{\csname pgfmath@operation@#1@arity\endcsname}}% \pgf@marshal{#2}% - \fi% + \fi% } \def\pgfmath@declarefunction#1#2{% - \pgfmath@namedef{pgfmath@function@#1}{#1}% - \pgfmath@namedef{pgfmath@operation@#1@type}{function}% - \pgfmath@namedef{pgfmath@operation@#1@arity}{#2}% - \pgfmath@namedef{pgfmath@operation@#1@infix}{#1}% - \pgfmath@namedef{pgfmath@operation@#1@precedence}{1000}% - \expandafter\ifx\csname pgfmath@operation@#1@arity\endcsname\pgfmath@dots% - \pgfmath@namedef{pgfmath@operation@#1@arity}{1}% - \else% - \ifnum\csname pgfmath@operation@#1@arity\endcsname>9\relax% - \pgfmath@namedef{pgfmath@operation@#1@arity}{1}% - \fi% - \fi% - \edef\pgfmath@marshal{% - \noexpand\pgfmath@@declarefunction% - {\expandafter\noexpand\csname pgfmath#1\endcsname}% - {\expandafter\noexpand\csname pgfmath#1@\endcsname}% - {\csname pgfmath@operation@#1@arity\endcsname}% - }% - \pgfmath@marshal% + \pgfmath@namedef{pgfmath@function@#1}{#1}% + \pgfmath@namedef{pgfmath@operation@#1@type}{function}% + \pgfmath@namedef{pgfmath@operation@#1@arity}{#2}% + \pgfmath@namedef{pgfmath@operation@#1@infix}{#1}% + \pgfmath@namedef{pgfmath@operation@#1@precedence}{1000}% + \expandafter\ifx\csname pgfmath@operation@#1@arity\endcsname\pgfmath@dots% + \pgfmath@namedef{pgfmath@operation@#1@arity}{1}% + \else% + \ifnum\csname pgfmath@operation@#1@arity\endcsname>9\relax% + \pgfmath@namedef{pgfmath@operation@#1@arity}{1}% + \fi% + \fi% + \edef\pgfmath@marshal{% + \noexpand\pgfmath@@declarefunction% + {\expandafter\noexpand\csname pgfmath#1\endcsname}% + {\expandafter\noexpand\csname pgfmath#1@\endcsname}% + {\csname pgfmath@operation@#1@arity\endcsname}% + }% + \begingroup% + \catcode`\^^I=9\relax% + \catcode`\ =9\relax% + \catcode`\~=10\relax% + \endlinechar=`\ \relax + \pgfmath@marshal% } % #1 - \pgfmath<name>. @@ -62,115 +66,116 @@ % #4 - code for function <name>. % \def\pgfmath@@declarefunction#1#2#3#4{% Function of arity 0 - 9. - \ifcase#3\relax% - \def#1{#2}% - \def#2{#4}% - \or - \def#1##1{\pgfmathparse{##1}\expandafter#2\expandafter{\pgfmathresult}}% - \def#2##1{#4}% - \else% - \pgfmath@toks={}% - \pgfmathloop% - \ifnum\pgfmathcounter>#3\relax% - \else% - \expandafter\pgfmath@addto@toks\expandafter{\pgfmath@char@hash}% - \expandafter\pgfmath@addto@toks\expandafter{\pgfmathcounter}% - \repeatpgfmathloop% - \edef\pgfmath@head{\noexpand\def\noexpand#1\the\pgfmath@toks}% - \edef\pgfmath@@head{\noexpand\def\noexpand#2\the\pgfmath@toks}% - \pgfmath@toks={}% - \def\pgfmath@arguments{}% - \pgfmathloop% - \ifnum\pgfmathcounter>#3\relax% - \else% - \pgfmath@addto@toks{\pgfmathparse}% - \expandafter\expandafter\expandafter\pgfmath@addto@toks% - \expandafter\expandafter\expandafter{\expandafter\expandafter\expandafter% - {\expandafter\pgfmath@char@hash\pgfmathcounter}}% - \pgfmath@addto@toks{\let}% - \expandafter\pgfmath@addto@toks\expandafter{% - \csname pgfmath@argument@\pgfmathcounter\endcsname=\pgfmathresult}% - \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter% - \pgfmath@arguments\expandafter\expandafter\expandafter{\expandafter% - \pgfmath@arguments\expandafter{\csname pgfmath@argument@\pgfmathcounter\endcsname}}% - \repeatpgfmathloop% - \expandafter\pgfmath@addto@toks\expandafter{\expandafter#2\pgfmath@arguments}% - \edef\pgfmath@body{{\the\pgfmath@toks}}% - \expandafter\pgfmath@head\pgfmath@body% - \pgfmath@@head{#4}% - \fi% + \endgroup% + \ifcase#3\relax% + \def#1{#2}% + \def\pgfmath@@head{\def#2}% + \or + \def#1##1{\pgfmathparse{##1}\expandafter#2\expandafter{\pgfmathresult}}% + \def\pgfmath@@head{\def#2####1}% + \else% + \pgfmath@toks={}% + \pgfmathloop% + \ifnum\pgfmathcounter>#3\relax% + \else% + \expandafter\pgfmath@addto@toks\expandafter{\pgfmath@char@hash}% + \expandafter\pgfmath@addto@toks\expandafter{\pgfmathcounter}% + \repeatpgfmathloop% + \edef\pgfmath@head{\noexpand\def\noexpand#1\the\pgfmath@toks}% + \edef\pgfmath@@head{\noexpand\def\noexpand#2\the\pgfmath@toks}% + \pgfmath@toks={}% + \def\pgfmath@arguments{}% + \pgfmathloop% + \ifnum\pgfmathcounter>#3\relax% + \else% + \pgfmath@addto@toks{\pgfmathparse}% + \expandafter\expandafter\expandafter\pgfmath@addto@toks% + \expandafter\expandafter\expandafter{\expandafter\expandafter\expandafter% + {\expandafter\pgfmath@char@hash\pgfmathcounter}}% + \pgfmath@addto@toks{\let}% + \expandafter\pgfmath@addto@toks\expandafter{% + \csname pgfmath@argument@\pgfmathcounter\endcsname=\pgfmathresult}% + \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter% + \pgfmath@arguments\expandafter\expandafter\expandafter{\expandafter% + \pgfmath@arguments\expandafter{\csname pgfmath@argument@\pgfmathcounter\endcsname}}% + \repeatpgfmathloop% + \expandafter\pgfmath@addto@toks\expandafter{\expandafter#2\pgfmath@arguments}% + \edef\pgfmath@body{{\the\pgfmath@toks}}% + \expandafter\pgfmath@head\pgfmath@body% + \fi% + \pgfmath@@head{#4}% } \def\pgfmath@addto@toks#1{% - \edef\pgfmath@toks@expanded{\the\pgfmath@toks}% - \expandafter\pgfmath@toks\expandafter{\pgfmath@toks@expanded#1}} + \edef\pgfmath@toks@expanded{\the\pgfmath@toks}% + \expandafter\pgfmath@toks\expandafter{\pgfmath@toks@expanded#1}} % Key for declaring local functions. % \pgfkeys{% - /pgf/declare function/.code={% - \pgfmath@local@functions#1@=@;% - } + /pgf/declare function/.code={% + \pgfmath@local@functions#1@=@;% + } } \def\pgfmath@local@gobbleone#1{} \def\pgfmath@local@at{@}% \def\pgfmath@local@functions{% - \pgfutil@ifnextchar x{\pgfmath@local@@functions}{\pgfmath@local@@functions}% + \pgfutil@ifnextchar x{\pgfmath@local@@functions}{\pgfmath@local@@functions}% } \def\pgfmath@local@@functions#1=#2;{% - \def\pgfmath@local@temp{#1}% - \ifx\pgfmath@local@temp\pgfmath@local@at% - \let\pgfmath@local@next=\relax% - \else% - \pgfmath@local@function#1=#2;% - \let\pgfmath@local@next=\pgfmath@local@functions% - \fi% - \pgfmath@local@next% + \def\pgfmath@local@temp{#1}% + \ifx\pgfmath@local@temp\pgfmath@local@at% + \let\pgfmath@local@next=\relax% + \else% + \pgfmath@local@function#1=#2;% + \let\pgfmath@local@next=\pgfmath@local@functions% + \fi% + \pgfmath@local@next% } \def\pgfmath@local@function{% - \let\pgfmath@local@name=\pgfutil@empty% - \let\pgfmath@local@args=\pgfutil@empty% - \let\pgfmath@local@body=\pgfutil@empty% - \pgfmath@local@@function} + \let\pgfmath@local@name=\pgfutil@empty% + \let\pgfmath@local@args=\pgfutil@empty% + \let\pgfmath@local@body=\pgfutil@empty% + \pgfmath@local@@function} \def\pgfmath@local@@function#1{% - \if#1=% - \let\pgfmath@local@next=\pgfmath@local@function@body% - \else% - \if#1(% - \let\pgfmath@local@next=\pgfmath@local@function@args% - \else% - \expandafter\def\expandafter\pgfmath@local@name\expandafter{\pgfmath@local@name#1}% - \let\pgfmath@local@next=\pgfmath@local@@function% - \fi% - \fi% - \pgfmath@local@next% + \if#1=% + \let\pgfmath@local@next=\pgfmath@local@function@body% + \else% + \if#1(% + \let\pgfmath@local@next=\pgfmath@local@function@args% + \else% + \expandafter\def\expandafter\pgfmath@local@name\expandafter{\pgfmath@local@name#1}% + \let\pgfmath@local@next=\pgfmath@local@@function% + \fi% + \fi% + \pgfmath@local@next% } \def\pgfmath@local@function@args#1){% - \def\pgfmath@local@args{#1}% - \pgfmath@local@@function} + \def\pgfmath@local@args{#1}% + \pgfmath@local@@function} \def\pgfmath@local@function@body#1;{% - \def\pgfmath@local@body{#1}% - \begingroup% - \c@pgf@counta=0\relax% - \ifx\pgfmath@local@args\pgfmath@empty% - \expandafter\pgfmath@toks\expandafter=\expandafter{\pgfmath@local@body}% - \else% - \pgfmath@toks={}% - \expandafter\pgfmath@local@function@@body\pgfmath@local@args,,% - \fi% - \xdef\pgfmath@local@temp{% - \noexpand\pgfmathnotifynewdeclarefunction{\pgfmath@local@name}{\the\c@pgf@counta}% - {\the\pgfmath@toks}% - }% - \endgroup% - \pgfmath@local@temp% + \def\pgfmath@local@body{#1}% + \begingroup% + \c@pgf@counta=0\relax% + \ifx\pgfmath@local@args\pgfmath@empty% + \expandafter\pgfmath@toks\expandafter=\expandafter{\pgfmath@local@body}% + \else% + \pgfmath@toks={}% + \expandafter\pgfmath@local@function@@body\pgfmath@local@args,,% + \fi% + \xdef\pgfmath@local@temp{% + \noexpand\pgfmathnotifynewdeclarefunction{\pgfmath@local@name}{\the\c@pgf@counta}% + {\the\pgfmath@toks}% + }% + \endgroup% + \pgfmath@local@temp% } % #1: the name @@ -178,76 +183,76 @@ % #3: a math expression containing '#1', '#2', ... ,'#'<n> % This callback is overwritten by pgflibraryluamath. \def\pgfmathnotifynewdeclarefunction#1#2#3{% - \pgfmathdeclarefunction{#1}{#2}{\pgfmathparse{#3}}% + \pgfmathdeclarefunction{#1}{#2}{\pgfmathparse{#3}}% }% \def\pgfmath@local@function@@body#1,{% - \def\pgfmath@local@test{#1}% - \ifx\pgfmath@local@test\pgfutil@empty% - \let\pgfmath@local@next=\relax% - \else% - \edef\pgfmath@local@var@string{@\expandafter\pgfmath@local@gobbleone\string#1}% - \advance\c@pgf@counta by1\relax% - \expandafter\expandafter\expandafter\pgfmath@toks\expandafter\expandafter\expandafter=% - \expandafter\expandafter\expandafter{\expandafter\pgfmath@char@hash\the\c@pgf@counta}% - \edef#1{\the\pgfmath@toks}% - \pgfmath@toks={}% - \expandafter\pgfmath@local@function@@@body\pgfmath@local@body @% - \edef\pgfmath@local@body{\the\pgfmath@toks}% - \let\pgfmath@local@next=\pgfmath@local@function@@body% - \fi% - \pgfmath@local@next% + \def\pgfmath@local@test{#1}% + \ifx\pgfmath@local@test\pgfutil@empty% + \let\pgfmath@local@next=\relax% + \else% + \edef\pgfmath@local@var@string{@\expandafter\pgfmath@local@gobbleone\string#1}% + \advance\c@pgf@counta by1\relax% + \expandafter\expandafter\expandafter\pgfmath@toks\expandafter\expandafter\expandafter=% + \expandafter\expandafter\expandafter{\expandafter\pgfmath@char@hash\the\c@pgf@counta}% + \edef#1{\the\pgfmath@toks}% + \pgfmath@toks={}% + \expandafter\pgfmath@local@function@@@body\pgfmath@local@body @% + \edef\pgfmath@local@body{\the\pgfmath@toks}% + \let\pgfmath@local@next=\pgfmath@local@function@@body% + \fi% + \pgfmath@local@next% } - + \def\pgfmath@local@function@@@body{% - \pgfutil@ifnextchar\bgroup{\pgfmath@local@function@@@body@bgroup}% - {\pgfmath@local@function@@@body@nobgroup}}% + \pgfutil@ifnextchar\bgroup{\pgfmath@local@function@@@body@bgroup}% + {\pgfmath@local@function@@@body@nobgroup}}% \def\pgfmath@local@function@@@body@bgroup#1{% - \begingroup% - \pgfmath@toks={}% - \pgfmath@local@function@@@body#1 @% - \xdef\pgfmath@local@temp{{\the\pgfmath@toks}}% - \endgroup% - \expandafter\pgfmath@addto@toks\expandafter{\pgfmath@local@temp}% - \pgfmath@local@function@@@body% + \begingroup% + \pgfmath@toks={}% + \pgfmath@local@function@@@body#1 @% + \xdef\pgfmath@local@temp{{\the\pgfmath@toks}}% + \endgroup% + \expandafter\pgfmath@addto@toks\expandafter{\pgfmath@local@temp}% + \pgfmath@local@function@@@body% } \def\pgfmath@local@function@@@body@nobgroup#1{% - \ifx#1@% - \let\pgfmath@local@next=\relax% - \else% - \let\pgfmath@local@next=\pgfmath@local@function@@@body% - \edef\pgfmath@local@var@@string{@\expandafter\pgfmath@local@gobbleone\string#1}% - \ifx\pgfmath@local@var@@string\pgfmath@local@var@string% - \expandafter\pgfmath@addto@toks\expandafter{#1}% - \else% - \edef\pgfmath@local@temp{\the\pgfmath@toks}% - \pgfmath@toks={#1}% - \edef\pgfmath@local@@temp{\the\pgfmath@toks}% - \expandafter\pgfmath@toks\expandafter=\expandafter{\pgfmath@local@temp}% - \expandafter\pgfmath@addto@toks\expandafter{\pgfmath@local@@temp}% - \fi% - \fi% - \pgfmath@local@next% + \ifx#1@% + \let\pgfmath@local@next=\relax% + \else% + \let\pgfmath@local@next=\pgfmath@local@function@@@body% + \edef\pgfmath@local@var@@string{@\expandafter\pgfmath@local@gobbleone\string#1}% + \ifx\pgfmath@local@var@@string\pgfmath@local@var@string% + \expandafter\pgfmath@addto@toks\expandafter{#1}% + \else% + \edef\pgfmath@local@temp{\the\pgfmath@toks}% + \pgfmath@toks={#1}% + \edef\pgfmath@local@@temp{\the\pgfmath@toks}% + \expandafter\pgfmath@toks\expandafter=\expandafter{\pgfmath@local@temp}% + \expandafter\pgfmath@addto@toks\expandafter{\pgfmath@local@@temp}% + \fi% + \fi% + \pgfmath@local@next% } % Allows to define 'x' as some \TeX command '#2'. \def\pgfmathdeclarepseudoconstant#1#2{% - \pgfmathdeclarefunction*{#1}{0}{#2}% + \pgfmathdeclarefunction*{#1}{0}{#2}% }% % Redefines a pseudo constant '#1'. \def\pgfmathredeclarepseudoconstant#1#2{% - \pgfmathredeclarefunction{#1}{#2}% + \pgfmathredeclarefunction{#1}{#2}% }% - + \input pgfmathfunctions.basic.code.tex \input pgfmathfunctions.trigonometric.code.tex \input pgfmathfunctions.random.code.tex -\input pgfmathfunctions.comparison.code.tex -\input pgfmathfunctions.base.code.tex -\input pgfmathfunctions.round.code.tex -\input pgfmathfunctions.misc.code.tex +\input pgfmathfunctions.comparison.code.tex +\input pgfmathfunctions.base.code.tex +\input pgfmathfunctions.round.code.tex +\input pgfmathfunctions.misc.code.tex \input pgfmathfunctions.integerarithmetics.code.tex |