% Copyright 2019 by Mark Wibrow % % This file may be distributed and/or modified % % 1. under the LaTeX Project Public License and/or % 2. under the GNU Public License. % % See the file doc/generic/pgf/licenses/LICENSE for more details. % This file defines the mathematical functions and operators. % % Version 1.414213 29/9/2007 % round function. Uses asymmetric half-up rounding. % \pgfmathdeclarefunction{round}{1}{% \begingroup% \expandafter\pgfmath@x#1pt\relax% \afterassignment\pgfmath@xa% \expandafter\c@pgfmath@counta\the\pgfmath@x\relax% \pgfmath@xb\pgfmath@x% \ifdim\pgfmath@xb<0pt\relax% \ifdim\pgfmath@xa<0.5pt\relax% \else% \advance\c@pgfmath@counta-1\relax% \fi% \else% \ifdim\pgfmath@xa<0.5pt\relax% \else% \advance\c@pgfmath@counta1\relax% \fi% \fi% \pgfmath@returnone\the\c@pgfmath@counta pt% \endgroup% }% % floor function. % \pgfmathdeclarefunction{floor}{1}{% \begingroup% \expandafter\pgfmath@x#1pt\relax% \afterassignment\pgfmathfloor@collect@remainder% \expandafter\c@pgfmath@counta\the\pgfmath@x\pgfmath@% \expandafter\pgfmath@x#1pt\relax% \ifdim\pgfmath@x<0pt\relax% \ifdim\pgfmathfloor@remainder>0pt \advance\c@pgfmath@counta by -1\relax% \else % ok, we stripped only '0'. \fi \fi% \pgfmath@x\c@pgfmath@counta pt\relax% \pgfmath@returnone\pgfmath@x% \endgroup% }% \def\pgfmathfloor@collect@remainder#1\pgfmath@{% \def\pgfmathfloor@remainder{#1}% \ifx\pgfmathfloor@remainder\pgfutil@empty \def\pgfmathfloor@remainder{0}% \fi }% % ceil function. % \pgfmathdeclarefunction{ceil}{1}{% \begingroup% \expandafter\pgfmath@x#1pt\relax% \afterassignment\pgfmath@gobbletilpgfmath@% \expandafter\c@pgfmath@counta\the\pgfmath@x\relax\pgfmath@% \pgfmath@y\pgfmath@x% \advance\pgfmath@y-\c@pgfmath@counta pt\relax% \pgfmath@x\c@pgfmath@counta pt\relax% \ifdim\pgfmath@y>0pt\relax% \advance\pgfmath@x1pt\relax% \fi% \pgfmath@returnone\pgfmath@x% \endgroup% }% % int function % \pgfmathdeclarefunction{int}{1}{% \begingroup% \expandafter\pgfmathint@@#1.\pgfmath@stop \pgfmath@smuggleone\pgfmathresult% \endgroup} \def\pgfmathint@@#1.#2\pgfmath@stop{% \def\pgfmath@temp{#1}% \ifx\pgfmath@temp\pgfmath@empty% \def\pgfmathresult{0}% \else% \pgfmath@in@{#1}{+-+0-0}% \ifpgfmath@in@ \def\pgfmathresult{0}% \else% \def\pgfmathresult{#1}% \fi% \fi} % frac function. % \pgfmathdeclarefunction{frac}{1}{% \begingroup% \expandafter\pgfmathfrac@@#1.\pgfmath@stop% \pgfmath@smuggleone\pgfmathresult% \endgroup} \def\pgfmathfrac@@#1.{% \pgfmath@ifnextchar\pgfmath@stop{\def\pgfmathresult{0.0}\pgfmath@gobbleone}{\pgfmathfrac@@@}% } \def\pgfmathfrac@@@#1.\pgfmath@stop{\def\pgfmathresult{0.#1}} % real function. % \pgfmathdeclarefunction{real}{1}{% \begingroup% \pgfmath@x=#1pt\relax% \edef\pgfmathresult{\pgfmath@tonumber{\pgfmath@x}}% \pgfmath@smuggleone\pgfmathresult% \endgroup% }