From 64cabb7b36a81f41f4bbe49f00cf5aa4fc83f66c Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sat, 4 Jan 2014 00:17:22 +0000 Subject: minifp (3jan14) git-svn-id: svn://tug.org/texlive/trunk@32559 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/generic/minifp/mfpextra.tex | 40 +++++++++++++++++++++++ Master/texmf-dist/tex/generic/minifp/minifp.sty | 11 ++++--- 2 files changed, 46 insertions(+), 5 deletions(-) (limited to 'Master/texmf-dist/tex/generic/minifp') diff --git a/Master/texmf-dist/tex/generic/minifp/mfpextra.tex b/Master/texmf-dist/tex/generic/minifp/mfpextra.tex index 9d65d0ff1aa..71d476dd497 100644 --- a/Master/texmf-dist/tex/generic/minifp/mfpextra.tex +++ b/Master/texmf-dist/tex/generic/minifp/mfpextra.tex @@ -51,6 +51,7 @@ \def\Rln {\MFP@stack@Unary\MFP@Rln }% \def\Rexp {\MFP@stack@Unary\MFP@Rexp }% \def\Rsqrt {\MFP@stack@Unary\MFP@Rsqrt}% + \def\Rrand {\MFP@stack@Unary\MFP@Rrand}% \def\Rpow {\MFP@stack@Binary\MFP@Rpow}}% \def\MFPcos {\MFP@op@Unary\MFP@Rcos }% \def\MFPsin {\MFP@op@Unary\MFP@Rsin }% @@ -61,6 +62,7 @@ \def\MFPln {\MFP@op@Unary\MFP@Rln }% \def\MFPexp {\MFP@op@Unary\MFP@Rexp }% \def\MFPsqrt {\MFP@op@Unary\MFP@Rsqrt}% +\def\MFPrand {\MFP@op@Unary\MFP@Rrand}% \def\MFPpow {\MFP@op@Binary\MFP@Rpow}% \def\MFP@logofzero@err{% \MFP@errmsg{logarithm of zero}% @@ -659,6 +661,44 @@ \fi \expandafter\MFP@Isqrt@loop \fi}% +\newcount\MFP@randseed % the random number (and starting seed) +\def\MFP@nextrand{\begingroup + \ifnum\MFP@randseed<1 + \global\MFP@randseed\time + \global\multiply\MFP@randseed388 \global\advance\MFP@randseed\year + \global\multiply\MFP@randseed31 \global\advance\MFP@randseed\day + \global\multiply\MFP@randseed97 \global\advance\MFP@randseed\month + \MFP@nextrand \MFP@nextrand \MFP@nextrand + \fi + \MFP@tempa\MFP@randseed + \divide\MFP@tempa \MFP@rand@q % modulus = m*q + r + \MFP@tempb\MFP@tempa + \multiply\MFP@tempa \MFP@rand@q + \global\advance\MFP@randseed-\MFP@tempa % seed mod q + \global\multiply\MFP@randseed \MFP@rand@m + \multiply\MFP@tempb \MFP@rand@r + \global\advance\MFP@randseed-\MFP@tempb + \ifnum\MFP@randseed<\z@ \global\advance\MFP@randseed "7FFFFFFF\relax\fi + \endgroup}% +\def\MFPrandgenA{\def\MFP@rand@m{16807 }\def\MFP@rand@q{127773 }% + \def\MFP@rand@r{2836 }}% +\def\MFPrandgenB{\def\MFP@rand@m{48271 }\def\MFP@rand@q{44488 }% + \def\MFP@rand@r{3399 }}% +\def\MFPrandgenC{\def\MFP@rand@m{69621 }\def\MFP@rand@q{30845 }% + \def\MFP@rand@r{23902 }}% +\MFPrandgenA +\def\MFP@getrand{% leaves result in \MFP@tempa + \MFP@nextrand + \MFP@tempa\MFP@randseed + \advance\MFP@tempa-1 + \divide\MFP@tempa 21 % (2^31-3)= 100000000*21 + r + \ifnum \MFP@ttteight> \MFP@tempa + \else \@xp\MFP@getrand\fi}% +\def\MFP@Rrand{% + \MFP@getrand \edef\MFP@a@Tmp{\number\MFP@tempa}% + \MFP@getrand \edef\MFP@b@Tmp{\number\MFP@tempa}% + \MFP@DPmul0\MFP@a@Tmp\MFP@b@Tmp}% +\def\MFPsetseed#1{\global\MFP@randseed #1\relax}% \MFP@xfinish \endinput %% diff --git a/Master/texmf-dist/tex/generic/minifp/minifp.sty b/Master/texmf-dist/tex/generic/minifp/minifp.sty index 0566ae33e1e..bcd4ad1ec7b 100644 --- a/Master/texmf-dist/tex/generic/minifp/minifp.sty +++ b/Master/texmf-dist/tex/generic/minifp/minifp.sty @@ -21,8 +21,8 @@ %% is Daniel H. Luecking. The Base Interpreters associated %% with minifp are plain TeX and LaTeX. %% -\def\MFPfiledate{2013/05/28}% -\def\MFPfileversion{0.95}% +\def\MFPfiledate{2013/12/30}% +\def\MFPfileversion{0.96}% \expandafter \ifx \csname MFP@finish\endcsname\relax \else \expandafter\endinput \fi @@ -255,7 +255,7 @@ \let\Rnoop\relax \def\Rcmp{% \MFPgetoperand@y\MFPgetoperand@x - \MFP@Rcat\MFP@x@Val\MFP@Rcat\MFP@y@Val + \MFP@Rcattwo\MFP@y@Val\MFP@x@Val \MFP@Rcmp}% \def\Rchk{% \MFPgetoperand@x @@ -268,8 +268,8 @@ \MFPpush@result}% \def\Rpop{\@xp\MFP@popit\MFP@Rstack\MFP@end}% \def\Rexch{% - \Rpop\MFP@x@Val\Rpop\MFP@y@Val - \MFP@Rcattwo\MFP@y@Val\MFP@x@Val}% + \Rpop\MFP@y@Val\Rpop\MFP@x@Val + \MFP@Rcattwo\MFP@x@Val\MFP@y@Val}% \def\Rdup{% \Rpop\MFP@x@Val \MFP@Rcattwo\MFP@x@Val\MFP@x@Val}% @@ -554,6 +554,7 @@ \advance\MFP@tempa-\MFP@numdigits@toshift\MFP@x@Int\relax \@XP\MFP@doshift@x\@xp\MFP@x@Int\MFP@x@Frc0000000\MFP@end \ifnum\MFP@tempa<-9 + \MFP@Rzero \else \MFP@tempf\MFP@tempa \advance\MFP@tempf 10 -- cgit v1.2.3