% 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. % Macros contributed by Alain Matthes and adapted by CJ \pgfmathdeclarefunction{gcd}{2}{% \begingroup \pgfmathcontinuelooptrue \pgfmath@xa=#1pt \pgfmath@xb=#2pt \ifdim\pgfmath@xa=0pt\relax \pgfmathcontinueloopfalse \pgfmath@xa=\pgfmath@xb \fi \ifdim\pgfmath@xb=0pt\relax \pgfmathcontinueloopfalse \pgfmath@xb=\pgfmath@xa \fi \ifdim\pgfmath@xa<0pt\relax \pgfmath@xa=-\pgfmath@xa \fi \ifdim\pgfmath@xb<0pt\relax \pgfmath@xb=-\pgfmath@xb \fi \loop \ifpgfmathcontinueloop \ifdim\pgfmath@xa=\pgfmath@xb \pgfmathcontinueloopfalse \else \ifdim\pgfmath@xa>\pgfmath@xb \advance\pgfmath@xa by-\pgfmath@xb \else \advance\pgfmath@xb by-\pgfmath@xa \fi \fi \repeat \pgfmathparse{int(\pgfmath@xa)}% \pgfmath@smuggleone\pgfmathresult \endgroup} \newif\ifpgfmath@isprime@unknown \newif\ifpgfmath@isprime \pgfmathdeclarefunction{isprime}{1}{% \begingroup \pgfmath@isprime@unknowntrue \pgfmathsetcount\c@pgfmath@counta{abs(int(#1))}% \ifcase\c@pgfmath@counta\relax % |#1| = 0 \pgfmath@isprimefalse \pgfmath@isprime@unknownfalse \or % |#1| = 1 \pgfmath@isprimefalse \pgfmath@isprime@unknownfalse \or % |#1| = 2 \pgfmath@isprimetrue \pgfmath@isprime@unknownfalse \or % |#1| = 3 \pgfmath@isprimetrue \pgfmath@isprime@unknownfalse \else % |#1| > 3 \ifodd\c@pgfmath@counta\relax \else \pgfmath@isprimefalse \pgfmath@isprime@unknownfalse \fi \fi \ifpgfmath@isprime@unknown \c@pgfmath@countd=3 \pgfmath@isprimetrue \pgfmathloop \c@pgfmath@countb=\c@pgfmath@counta \divide\c@pgfmath@countb by\c@pgfmath@countd \ifnum\c@pgfmath@countb>\c@pgfmath@countd \pgfmath@isprime@unknowntrue \else \pgfmath@isprime@unknownfalse \fi \multiply\c@pgfmath@countb by\c@pgfmath@countd \ifnum\c@pgfmath@countb=\c@pgfmath@counta \global\pgfmath@isprimefalse \pgfmath@isprime@unknownfalse \fi \ifpgfmath@isprime@unknown\advance\c@pgfmath@countd by 2 \repeatpgfmathloop \fi \ifpgfmath@isprime \def\pgfmathresult{1}% \else \def\pgfmathresult{0}% \fi \pgfmath@smuggleone\pgfmathresult \endgroup} \pgfmathdeclarefunction{isodd}{1}{% \begingroup \pgfmathsetcount\c@pgfmath@counta{abs(int(#1))}% \ifodd\c@pgfmath@counta \def\pgfmathresult{1}% \else \def\pgfmathresult{0}% \fi \pgfmath@smuggleone\pgfmathresult \endgroup} \pgfmathdeclarefunction{iseven}{1}{% \begingroup \pgfmathsetcount\c@pgfmath@counta{abs(int(#1))}% \ifodd\c@pgfmath@counta \def\pgfmathresult{0}% \else \def\pgfmathresult{1}% \fi \pgfmath@smuggleone\pgfmathresult \endgroup} \endinput