summaryrefslogtreecommitdiff
path: root/Master/texmf-dist
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2008-01-25 17:21:21 +0000
committerKarl Berry <karl@freefriends.org>2008-01-25 17:21:21 +0000
commit50d534d949a2c3084b813253b8c2c781bcc94726 (patch)
tree539cee3c1206e63f754751d68cf2c7e09a67343f /Master/texmf-dist
parent8e193852eacac9286f16b0cad43a0d2b3ed2b188 (diff)
rm realcalc, nosell license
git-svn-id: svn://tug.org/texlive/trunk@6415 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist')
-rw-r--r--Master/texmf-dist/doc/generic/realcalc/realdemo.tex6
-rw-r--r--Master/texmf-dist/doc/generic/realcalc/realtest.tex291
-rw-r--r--Master/texmf-dist/source/generic/realcalc/readme39
-rw-r--r--Master/texmf-dist/tex/generic/realcalc/realcalc.tex581
4 files changed, 0 insertions, 917 deletions
diff --git a/Master/texmf-dist/doc/generic/realcalc/realdemo.tex b/Master/texmf-dist/doc/generic/realcalc/realdemo.tex
deleted file mode 100644
index fb4022cca17..00000000000
--- a/Master/texmf-dist/doc/generic/realcalc/realdemo.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-\documentstyle[]{article}
-\input{realcalc}
-\begin{document}
-\input{realtest}
-\test
-\end{document}
diff --git a/Master/texmf-dist/doc/generic/realcalc/realtest.tex b/Master/texmf-dist/doc/generic/realcalc/realtest.tex
deleted file mode 100644
index 7b3a95ef456..00000000000
--- a/Master/texmf-dist/doc/generic/realcalc/realtest.tex
+++ /dev/null
@@ -1,291 +0,0 @@
-% realcalc.tex
-%
-% (C) Frank Buchholz, Jan. 1993
-% e-mail: buchholz@lusty.informatik.uni-dortmund.de
-%%
-%% Type \test\bye
-%%
-
-\input realcalc
-
-% Test
-
-\catcode`@=11
-
-\def\traceon{%
- \tracingonline \@ne
- \tracincommands \tw@
- \tracingstats \tw@
- \tracingpages \@ne
- \tracingoutput \@ne
- \tracinglostchars \@ne
- \tracingmacros \tw@
- \tracingparagraphs \@ne
- \tracingrestores \@ne
- \showboxbreadth \maxdimen
- \showboxdepth \maxdimen
-}
-
-\def\traceoff{%
- \tracingonline \@zero
- \tracingcommands \@zero
- \tracingstats \@zero
- \tracingpages \@zero
- \tracingoutput \@zero
- \tracinglostchars \@zero
- \tracingmacros \@zero
- \tracingparagraphs \@zero
- \tracingrestores \@zero
- \showboxbreadth \maxdimen
- \showboxdepth \maxdimen
-}
-
-\errorstopmode
-
-\let\sl=\showlists
-\let\st=\showthe
-\let\s=\show
-\def\e{\par \vfill \supereject}
-
-\def\test{%
- \message{Test REALCALC.TEX \@Rversion:}
- Test REALCALC.TEX \@Rversion\par\medskip
- \testadd\medskip
- \testsub\medskip
- \testmul\medskip
- \testdiv\medskip
- \testneg\medskip
- \testtrunc\medskip
- \testifle\medskip
- \testifeq\medskip
- \testifgt\medskip
- \testifneg\medskip
- \testifzero\medskip
- \testifpos\medskip
- \testifint\medskip
-}
-
-\def\testadd{%
- \message{Radd}
- Test: Radd\par
- \def\a{1234.5678}
- \def\b{4321.8765}
- \Radd\r{123456789.987654321}{4321.123456789}
- \r={123461111.111111110}\par
- \Radd\r\a\b \r={5556.4443}\par
- \Radd\r{-\a}\b \r={3087.3087}\par
- \Radd\r\a{-\b} \r={-3087.3087}\par
- \Radd\r{-\a}{-\b} \r={-5556.4443}\par
-}
-
-\def\testsub{%
- \message{Rsub}
- Test: Rsub\par
- \def\a{1234.5678}
- \def\b{4321.8765}
- \Rsub\r\a{-\b} \r={5556.4443}\par
- \Rsub\r{-\a}{-\b} \r={3087.3087}\par
- \Rsub\r\a\b \r={-3087.3087}\par
- \Rsub\r{-\a}\b \r={-5556.4443}\par
-}
-
-\def\testmul{%
- \message{Rmul}
- Test: Rmul\par
- \def\a{1234}
- \def\b{4321}
- \Rmul\r{\a}{\b} \Rtrunc\r0\r \r={5332114}\par
- \Rmul\r{-\a}{\b} \Rtrunc\r0\r \r={-5332114}\par
- \Rmul\r{\a}{-\b} \Rtrunc\r0\r \r={-5332114}\par
- \Rmul\r{-\a}{-\b} \Rtrunc\r0\r \r={5332114}\par
- \Rmul\r\a0 \Rtrunc\r0\r \r={0}\par
- \Rmul\r0\a \Rtrunc\r0\r \r={0}\par
- \Rmul\r00 \Rtrunc\r0\r \r={0}\par
- \Rmul\r\a1 \Rtrunc\r0\r \r={\a}\par
- \Rmul\r1\a \Rtrunc\r0\r \r={\a}\par
- \Rmul\r11 \Rtrunc\r0\r \r={1}\par
- \Rmul\r\a{-1} \Rtrunc\r0\r \r={-\a}\par
- \Rmul\r{-1}\a \Rtrunc\r0\r \r={-\a}\par
- \Rmul\r{-1}{-1} \Rtrunc\r0\r \r={1}\par
-
- \Rmul\r{46340.123456789}{10.123456789}\r={469122.2374}\par
- \Rmul\r{46340.123456789}{1}\r={46340.123456789}\par
- \Rmul\r{46340.123456789}{100}\r={4634012.3456789}\par
- \Rmul\r{0.5}{0.5} \r={0.25}\par
- \Rmul\r\r\r \r={0.0625}\par
- \Rmul\r\r\r \r={0.00390625}\par
- \Rmul\r\r\r \r={0.000015258}\par
- \Rmul\r\r\r \r={0}\par
- \Rmul\r{1.6}{1.6} \r={2.56}\par
- \Rmul\r\r\r \r={6.5536}\par
- \Rmul\r\r\r \r={42.94967296}\par
- \Rmul\r\r\r \r={1844.674407}\par
- \Rmul\r\r\r \r={3402823.669}\par
-}
-
-\def\testdiv{%
- \message{Rdiv}
- Test: Rdiv\par
- not ready\par
-}
-
-\def\testneg{%
- \message{Rneg}
- Test: Rneg\par
- -\ 0 = \Rneg\r{0}\r\par
- -\ -1 = \Rneg\r{-1}\r\par
- -\ 1 = \Rneg\r{1}\r\par
- -\ 0.5 = \Rneg\r{0.5}\r\par
- -\ -0.5 = \Rneg\r{-0.5}\r\par
- -\ -1234.5678 = \Rneg\r{-1234.5678}\r\par
- -\ 1234.5678 = \Rneg\r{1234.5678}\r\par
-}
-
-\def\testtrunc{%
- \message{Rtrunc}
- Test: Rtrunc\par
- \def\a{12345.123456789012345}
- 0:\ \Rtrunc\r0\a\r\ \Rtrunc\r00\r\par
- 1:\ \Rtrunc\r1\a\r\ \Rtrunc\r10\r\par
- 2:\ \Rtrunc\r2\a\r\ \Rtrunc\r20\r\par
- 3:\ \Rtrunc\r3\a\r\ \Rtrunc\r30\r\par
- 4:\ \Rtrunc\r4\a\r\ \Rtrunc\r40\r\par
- 5:\ \Rtrunc\r5\a\r\ \Rtrunc\r50\r\par
- 6:\ \Rtrunc\r6\a\r\ \Rtrunc\r60\r\par
- 7:\ \Rtrunc\r7\a\r\ \Rtrunc\r70\r\par
- 8:\ \Rtrunc\r8\a\r\ \Rtrunc\r80\r\par
- 9:\ \Rtrunc\r9\a\r\ \Rtrunc\r90\r\par
-}
-
-\def\testifle{%
- \message{Rifle}
- Test: Rifle\par
- 0 $<$ 0 \Rifle{0}{0} fehler\else ok\fi\par
- 0 $<$ 1 \Rifle{0}{1} ok\else fehler\fi\par
- 1 $<$ 0 \Rifle{1}{0} fehler\else ok\fi\par
- 1 $<$ 1 \Rifle{1}{1} fehler\else ok\fi\par
- 1 $<$ 2 \Rifle{1}{2} ok\else fehler\fi\par
- 2 $<$ 1 \Rifle{2}{1} fehler\else ok\fi\par
- 0 $<$ -1 \Rifle{0}{-1} fehler\else ok\fi\par
- -1 $<$ 0 \Rifle{-1}{0} ok\else fehler\fi\par
- -1 $<$ -1 \Rifle{-1}{-1} fehler\else ok\fi\par
- -1 $<$ -2 \Rifle{-1}{-2} fehler\else ok\fi\par
- -2 $<$ -1 \Rifle{-2}{-1} ok\else fehler\fi\par
-
- 1 $<$ 1.2 \Rifle{1}{1.2} ok\else fehler\fi\par
- 1.2 $<$ 1 \Rifle{1.2}{1} fehler\else ok\fi\par
- -1 $<$ -1.2 \Rifle{-1}{-1.2} fehler\else ok\fi\par
- -1.2 $<$ -1 \Rifle{-1.2}{-1} ok\else fehler\fi\par
-
- 0.1 $<$ 0.1 \Rifle{0.1}{0.1} fehler\else ok\fi\par
- 0.1 $<$ 0.2 \Rifle{0.1}{0.2} ok\else fehler\fi\par
- 0.2 $<$ 0.1 \Rifle{0.2}{0.1} fehler\else ok\fi\par
- -0.1 $<$ -0.2 \Rifle{-0.1}{-0.2} fehler\else ok\fi\par
- -0.1 $<$ -0.1 \Rifle{-0.1}{-0.1} fehler\else ok\fi\par
- -0.2 $<$ -0.1 \Rifle{-0.2}{-0.1} ok\else fehler\fi\par
-}
-
-\def\testifeq{%
- \message{Rifeq}
- Test: Rifeq\par
- 0 = 0 \Rifeq{0}{0} ok\else fehler\fi\par
- 0 = 1 \Rifeq{0}{1} fehler\else ok\fi\par
- 1 = 0 \Rifeq{1}{0} fehler\else ok\fi\par
- 1 = 1 \Rifeq{1}{1} ok\else fehler\fi\par
- 1 = 2 \Rifeq{1}{2} fehler\else ok\fi\par
- 2 = 1 \Rifeq{2}{1} fehler\else ok\fi\par
- 0 = -1 \Rifeq{0}{-1} fehler\else ok\fi\par
- -1 = 0 \Rifeq{-1}{0} fehler\else ok\fi\par
- -1 = -1 \Rifeq{-1}{-1} ok\else fehler\fi\par
- -1 = -2 \Rifeq{-1}{-2} fehler\else ok\fi\par
- -2 = -1 \Rifeq{-2}{-1} fehler\else ok\fi\par
-
- 1 = 1.2 \Rifeq{1}{1.2} fehler\else ok\fi\par
- 1.2 = 1 \Rifeq{1.2}{1} fehler\else ok\fi\par
- -1 = -1.2 \Rifeq{-1}{-1.2} fehler\else ok\fi\par
- -1.2 = -1 \Rifeq{-1.2}{-1} fehler\else ok\fi\par
-
- 0.1 = 0.1 \Rifeq{0.1}{0.1} ok\else fehler\fi\par
- 0.1 = 0.2 \Rifeq{0.1}{0.2} fehler\else ok\fi\par
- 0.2 = 0.1 \Rifeq{0.2}{0.1} fehler\else ok\fi\par
- -0.1 = -0.2 \Rifeq{-0.1}{-0.2} fehler\else ok\fi\par
- -0.1 = -0.1 \Rifeq{-0.1}{-0.1} ok\else fehler\fi\par
- -0.2 = -0.1 \Rifeq{-0.2}{-0.1} fehler\else ok\fi\par
-}
-
-\def\testifgt{%
- \message{Rifgt}
- Test: Rifgt\par
- 0 $>$ 0 \Rifgt{0}{0} fehler\else ok\fi\par
- 0 $>$ 1 \Rifgt{0}{1} fehler\else ok\fi\par
- 1 $>$ 0 \Rifgt{1}{0} ok\else fehler\fi\par
- 1 $>$ 1 \Rifgt{1}{1} fehler\else ok\fi\par
- 1 $>$ 2 \Rifgt{1}{2} fehler\else ok\fi\par
- 2 $>$ 1 \Rifgt{2}{1} ok\else fehler\fi\par
- 0 $>$ -1 \Rifgt{0}{-1} ok\else fehler\fi\par
- -1 $>$ 0 \Rifgt{-1}{0} fehler\else ok\fi\par
- -1 $>$ -1 \Rifgt{-1}{-1} fehler\else ok\fi\par
- -1 $>$ -2 \Rifgt{-1}{-2} ok\else fehler\fi\par
- -2 $>$ -1 \Rifgt{-2}{-1} fehler\else ok\fi\par
-
- 1 $>$ 1.2 \Rifgt{1}{1.2} fehler\else ok\fi\par
- 1.2 $>$ 1 \Rifgt{1.2}{1} ok\else fehler\fi\par
- -1 $>$ -1.2 \Rifgt{-1}{-1.2} ok\else fehler\fi\par
- -1.2 $>$ -1 \Rifgt{-1.2}{-1} fehler\else ok\fi\par
-
- 0.1 $>$ 0.1 \Rifgt{0.1}{0.1} fehler\else ok\fi\par
- 0.1 $>$ 0.2 \Rifgt{0.1}{0.2} fehler\else ok\fi\par
- 0.2 $>$ 0.1 \Rifgt{0.2}{0.1} ok\else fehler\fi\par
- -0.1 $>$ -0.2 \Rifgt{-0.1}{-0.2} ok\else fehler\fi\par
- -0.1 $>$ -0.1 \Rifgt{-0.1}{-0.1} fehler\else ok\fi\par
- -0.2 $>$ -0.1 \Rifgt{-0.2}{-0.1} fehler\else ok\fi\par
-}
-
-\def\testifneg{%
- \message{Rifneg}
- Test: Rifneg\par
- 0: \Rifneg{0} fehler\else ok\fi\par
- 0.5: \Rifneg{0.5} fehler\else ok\fi\par
- .5: \Rifneg{.5} fehler\else ok\fi\par
- 1: \Rifneg{1} fehler\else ok\fi\par
- -0: \Rifneg{-0} fehler\else ok\fi\par
- -0.5: \Rifneg{-0.5} ok\else fehler\fi\par
- -1: \Rifneg{-1} ok\else fehler\fi\par
-}
-
-\def\testifzero{%
- \message{Rifzero}
- Test: Rifzero\par
- 0: \Rifzero{0} ok\else fehler\fi\par
- 0.5: \Rifzero{0.5} fehler\else ok\fi\par
- .5: \Rifzero{.5} fehler\else ok\fi\par
- 1: \Rifzero{1} fehler\else ok\fi\par
- -0: \Rifzero{-0} ok\else fehler\fi\par
- -0.5: \Rifzero{-0.5} fehler\else ok\fi\par
- -1: \Rifzero{-1} fehler\else ok\fi\par
-}
-
-\def\testifpos{%
- \message{Rifpos}
- Test: Rifpos\par
- 0: \Rifpos{0} ok\else fehler\fi\par
- 0.5: \Rifpos{0.5} ok\else fehler\fi\par
- .5: \Rifpos{.5} ok\else fehler\fi\par
- 1: \Rifpos{1} ok\else fehler\fi\par
- -0: \Rifpos{-0} ok\else fehler\fi\par
- -0.5: \Rifpos{-0.5} fehler\else ok\fi\par
- -1: \Rifpos{-1} fehler\else ok\fi\par
-}
-
-\def\testifint{%
- \message{Rifint}
- Test: Rifint\par
- 0: \Rifint{0} ok\else fehler\fi\par
- -0: \Rifint{-0} ok\else fehler\fi\par
- 1: \Rifint{1} ok\else fehler\fi\par
- -1: \Rifint{-1} ok\else fehler\fi\par
- 0.5: \Rifint{0.5} fehler\else ok\fi\par
- -0.5: \Rifint{-0.5} fehler\else ok\fi\par
- 1.5: \Rifint{1.5} fehler\else ok\fi\par
- -1.5: \Rifint{-1.5} fehler\else ok\fi\par
-}
diff --git a/Master/texmf-dist/source/generic/realcalc/readme b/Master/texmf-dist/source/generic/realcalc/readme
deleted file mode 100644
index aa152337fb9..00000000000
--- a/Master/texmf-dist/source/generic/realcalc/readme
+++ /dev/null
@@ -1,39 +0,0 @@
-realcalc.tex
-
-(Copyright) Frank Buchholz, Jan. 1993
-e-mail: buchholz@lusty.informatik.uni-dortmund.de
-
-Real arithmetic with big values and high precision.
-Calculations are done with 9 decimal digits.
-Usable with TeX and LaTeX.
-
-Files:
- readme This file
- realcalc.tex You have to \input realcalc.tex to use it.
- realdemo.tex Demo with LaTeX.
- realtest.tex Demo with TeX (Type \test\bye after the prompt)
-
-Installation:
- Put the file realcalc.tex where your TeX looks for inputs.
- Name a copy realcalc.sty to use as a LaTeX style option,
- or create a file realcalc.sty with the lines:
- \input realcalc.tex
- \endinput
-
-Documentation:
- Use following command to extract the documentation:
- grep %% realcalc.tex
-
-COPYING:
- Copying of part or all of this file is allowed under the following
- conditions only:
- (1) You may freely distribute unchanged copies of the files. You have
- to include this file when you do so.
- (2) You may modify a renamed copy of the files, but only for personal
- use or use within an organization.
- (3) You may copy fragments from the files, for personal use or for
- distribution, as long as credit is given where credit is due.
-
- You are NOT ALLOWED to take money for the distribution or use of
- this file or modified versions or fragments thereof, except for
- a nominal charge for copying etc.
diff --git a/Master/texmf-dist/tex/generic/realcalc/realcalc.tex b/Master/texmf-dist/tex/generic/realcalc/realcalc.tex
deleted file mode 100644
index be46167fc41..00000000000
--- a/Master/texmf-dist/tex/generic/realcalc/realcalc.tex
+++ /dev/null
@@ -1,581 +0,0 @@
-%% realcalc.tex
-%%
-%% (C) Frank Buchholz, Jan. 1993
-%% e-mail: buchholz@lusty.informatik.uni-dortmund.de
-% User documentation: All lines starting with two %
-% Try grep to extract these lines.
-%%
-%% Real arithmetic with big values and high precision.
-%% Calculations are done with 9 decimal digits.
-%% Usable with TeX and LaTeX.
-%%
-%% Parameter:
-%%
-%% <macro> Macro, witch catches the result.
-%% <value> String or macro witch expands to a value in the range
-%% from -2147483647.999999999 to 2147483647.999999999
-%% <precision> Number from 0 to 9
-%%
-%% Functions:
-%%
-
-% Don't read this file twice
-\ifx\Radd\undefined \else \endinput \fi
-
-% Make "@" be a letters
-\chardef\catamp=\the\catcode`\@
-\catcode`@=11
-
-\def\@Rversion{Version 1.0, Jan. 1993}
-\message{`Real arithmetic', \@Rversion (C) Frank Buchholz}
-
-% Allocation of temporary registers
-\newcount\@ta
-\newcount\@tb
-%
-\newcount\@xs % Sign of 1st value
-\newcount\@xi % Integer part of 1st value
-\newcount\@xf % Fractional part of 1st value
-%
-\newcount\@ys % Sign of 2nd value
-\newcount\@yi % Integer part of 2nd value
-\newcount\@yf % Fractional part of 2nd value
-%
-\newcount\@mil \@mil=1000000000 % 10^9
-%
-\countdef\@xa240
-\countdef\@xb241
-\countdef\@xc242
-\countdef\@xd243
-\countdef\@xe244
-\countdef\@ya245
-\countdef\@yb246
-\countdef\@yc247
-\countdef\@yd248
-\countdef\@ye249
-\let\@f=\@tb
-\let\@product=\@ta
-
-\chardef\@zero=0
-
-%% \Radd<macro><value><value> Addition
-\def\Radd#1#2#3{\@callc\@Radd#1{#2}{#3}}
-
-%% \Rsub<macro><value><value> Subtraction
-\def\Rsub#1#2#3{\@callc\@Radd#1{#2}{-#3}}
-
-\def\@Radd#1#2.#3.#4\relax#5.#6.#7\relax{%
- % #1 Macro, witch gets the result
- % #2 integer part of 1st value
- % #3 fractional part of 1st value
- % #4 dummy to swallow everthing after the 2nd '.'
- % #5 integer part of 2nd value
- % #6 fractional part of 2nd value
- % #7 dummy to swallow everthing after the 2nd '.'
- %
- \@readvalue\@xs\@xi\@xf{#2}{#3}%
- \@readvalue\@ys\@yi\@yf{#5}{#6}%
- %
- % Add integer parts
- \@ta=\@xi \advance\@ta\@yi%
- %
- % Add fractional parts if they are not zero
- \ifnum\@xf=\@zero%
- \ifnum\@yf=\@zero%
- \@tb=\@zero%
- \else%
- \@longadd%
- \fi%
- \else%
- \@longadd%
- \fi%
- %
- % Store result
- \@store#1\@ta\@tb%
-}
-
-\def\@longadd{%
- % Propagate sign to fractional parts
- \multiply\@xf\@xs \multiply\@yf\@ys%
- %
- % Add fractional parts
- \@tb=\@xf \advance\@tb\@yf%
- %
- % Calculate carry
- \ifnum\@tb<\@zero%
- \ifnum\@tb<-\@mil \advance\@ta -\@ne \advance\@tb\@mil \fi%
- \else%
- \ifnum\@tb<\@mil \else \advance\@ta \@ne \advance\@tb-\@mil \fi%
- \fi%
-}
-
-%% \Rmul<macro><value><value> Multiplication
-\def\Rmul#1#2#3{\@callc\@Rmul#1{#2}{#3}}
-
-\def\@Rmul#1#2.#3.#4\relax#5.#6.#7\relax{%
- % #1 Macro, witch gets the result
- % #2 integer part of 1st value
- % #3 fractional part of 1st value
- % #4 dummy to swallow everthing after the 2nd '.'
- % #5 integer part of 2nd value
- % #6 fractional part of 2nd value
- % #7 dummy to swallow everthing after the 2nd '.'
- %
- % How to do real multiplications:
- % Split values in various parts
- % x y = 1234 567890 . 123 456 789
- % -> xa xb xc xd xe
- % -> ya yb yc yd ye
- % Do 21 (!) integer multiplications if there are any fractional parts
- % r = x * Y
- % -> r = xi*yi
- % + (xa*yc + xa*yc )*10^3
- % + (xa*yd + xd*ya )*10^-0
- % + (xa*ye + xe*ya + xb*yc + xc*yb)*10^-3
- % + (xb*yd + xd*yb + xc*yc )*10^-6
- % + (xb*ye + xe*yb + xc*yd + xd*yc)*10^-9
- % + (xc*ye + xe*yc + xd*yd )*10^-12
- % + (xd*ye + xe*yd )*10^-15
- % + (xe*ye )*10^-18
- %
- % -> r = ((((( xe*ye / 1000
- % + xd*ye + xe*yd ) / 1000
- % + xc*ye + xe*yc + xd*yd ) / 1000
- % + xb*ye + xe*yb + xc*yd + xd*yc ) / 1000
- % + xb*yd + xd*yb + xc*yc ) / 1000
- % + xa*ye + ye*xa + xb*yc + xc*yb ) / 1000
- % + xa*yd + xd*ya + (xa*yc + ya*xc)*1000 + xi*yi
- % The last three digigs are saved just before the divisions.
- %
- % Init
- %
- \@readvalue\@xs\@xi\@xf{#2}{#3}%
- \@readvalue\@ys\@yi\@yf{#5}{#6}%
- %
- % Sign
- \multiply\@xi\@xs%
- \multiply\@yi\@ys%
- \multiply\@xs\@ys%
- %
- \@product=\@zero%
- %
- \ifnum\@xf=\@zero%
- \ifnum\@yf=\@zero%
- % No fractional parts
- \edef\@frac{000000000} % digits of fractional part
- \else%
- \@longmul % Long multiplication
- \fi%
- \else%
- \@longmul % Long multiplication
- \fi%
- %
- % Multiply integer parts
- \count@=\@xi \multiply\count@\@yi%
- \advance\@product\count@%
- %
- % Sign
- \multiply\@product\@xs%
- %
- % Store result
- \edef#1{\number\@product.\@frac}%
-}
-
-% Do long multiplication
-\def\@longmul{%
- % Split values in pieces
- \@f=1000000%
- \count@=\@xi%
- \divide\count@\@f \@xa=\count@%
- \multiply\count@-\@f \advance\count@\@xi \@xb=\count@%
- \count@=\@xf%
- \divide\count@\@f \@xc=\count@%
- \multiply\count@-\@f \advance\count@\@xf%
- \@f=1000%
- \@xe=\count@%
- \divide\count@\@f \@xd=\count@%
- \multiply\count@-\@f \advance\count@\@xe \@xe=\count@%
- %
- \@f=1000000%
- \count@=\@yi%
- \divide\count@\@f \@ya=\count@%
- \multiply\count@-\@f \advance\count@\@yi \@yb=\count@%
- \count@=\@yf%
- \divide\count@\@f \@yc=\count@%
- \multiply\count@-\@f \advance\count@\@yf%
- \@f=1000%
- \@ye=\count@%
- \divide\count@\@f \@yd=\count@%
- \multiply\count@-\@f \advance\count@\@ye \@ye=\count@%
- %
- \edef\@frac{} % digits of fractional part
- %
- \@mul ee \relax\@shift % 10^-18
- \@mul de ed \relax\@shift % 10^-15
- \@mul ce ec dd \relax\@shift % 10^-12
- \@mul be eb cd dc \relax\@saveshift % 10^-9
- \@mul bd db cc \relax\@saveshift % 10^-6
- \@mul ae ea bc cb \relax\@saveshift % 10^-3
- \multiply\@xa\@f \multiply\@xc\@f % 10^3
- \@mul ad da ac ca \relax%
-}
-
-\def\@mul#1#2#3{%
- \count@=\csname @x#1\endcsname%
- \multiply\count@\csname @y#2\endcsname%
- \advance\@product\count@%
- %
- \ifx#3\relax%
- \let\next=\relax%
- \else%
- \let\next=\@mul%
- \fi%
- \next#3%
-}
-
-\def\@shift{%
- \divide\@product\@f%
-}
-
-\def\@saveshift{%
- % Save rightmost digits
- \count@=\@product%
- \divide\@product\@f%
- \multiply\@product\@f%
- \advance\count@-\@product%
- \advance\count@\@f%
- \edef\@frac{\expandafter\@ignorenext\number\count@\@frac}%
- %
- \divide\@product\@f%
-}
-
-%% \Rdiv<macro><value><value> Division
-\def\Rdiv#1#2#3{\@callc\@Radd#1{#2}{#3}}
-
-\def\@Rdiv#1#2.#3.#4\relax#5.#6.#7\relax{%
- % #1 Macro, witch gets the result
- % #2 integer part of 1st value
- % #3 fractional part of 1st value
- % #4 dummy to swallow everthing after the 2nd '.'
- % #5 integer part of 2nd value
- % #6 fractional part of 2nd value
- % #7 dummy to swallow everthing after the 2nd '.'
- %
- \message{Error: Rdiv not ready}
- %
- \@readvalue\@xs\@xi\@xf{#2}{#3}%
- \@readvalue\@ys\@yi\@yf{#5}{#6}%
- %
- \ifnum\@yi=\@zero
- \@xi=\@zero
- \else
- \divide\@xi\@yi
- \fi
- %
- \@store#1\@xi\@xf%
-}
-
-%% \Rneg<macro><value> Negation
-\def\Rneg#1#2{%
- % Expand the value and split it into the integer and the fractional part
- \edef\next{\noexpand\@Rneg\noexpand#1#2..\noexpand\relax}%
- \next%
-}
-
-\def\@Rneg#1#2.#3.#4\relax{
- % #1 Macro, witch gets the result
- % #2 Integer part of value
- % #3 Fractional part of value
- % #4 Remaining tokens
- %
- \@readvalue\@xs\@xi\@xf{#2}{#3}%
- %
- % Change sign
- \multiply\@xi-\@ne%
- \multiply\@xf-\@xs%
- %
- % Store result
- \@store#1\@xi\@xf%
-}
-
-%%
-%% \Rtrunc<macro><precision><value> Truncate value to specified precision
-\def\Rtrunc#1#2#3{%
- % Expand parameter and split the value into the integer and fractional part
- \edef\next{\noexpand\@Rtrunc\noexpand#1#2#3..\noexpand\relax}%
- \next%
-}
-
-\def\@Rtrunc#1#2#3.#4.#5\relax{%
- % #1 Macro, witch gets the result
- % #2 Number of decimal places
- % #3 Integer part of value
- % #4 Fractional part of value
- % #5 dummy to swallow everthing after the 2nd '.'
- %
- \count@=#2%
- \edef\next{\empty}%
- \ifnum\count@>\@zero%
- \expandafter\@@Rtrunc#4000000000\relax%
- \fi%
- \edef#1{#3\next}%
-}
-
-\def\@@Rtrunc#1#2#3#4#5#6#7#8#9{%
- % #1...#9 fractional part, padded with trailing zeros
- \edef\next{.#1%
- \ifnum\count@>1 #2\fi%
- \ifnum\count@>2 #3\fi%
- \ifnum\count@>3 #4\fi%
- \ifnum\count@>4 #5\fi%
- \ifnum\count@>5 #6\fi%
- \ifnum\count@>6 #7\fi%
- \ifnum\count@>7 #8\fi%
- \ifnum\count@>8 #9\fi%
- }%
- \@swallow%
-}
-
-%%
-%% \Rifle<value><value> Test v1 < v2
-\def\Rifle#1#2{\@callb\@Rifle{#1}{#2}}
-
-\def\@Rifle#1.#2.#3\relax#4.#5.#6\relax{%
- % #1 integer part of 1st value
- % #2 fractional part of 1st value
- % #3 dummy to swallow everthing after the 2nd '.'
- % #4 integer part of 2nd value
- % #5 fractional part of 2nd value
- % #6 dummy to swallow everthing after the 2nd '.'
- %
- \@readvalue\@xs\@xi\@xf{#1}{#2}%
- \@readvalue\@ys\@yi\@yf{#4}{#5}%
- %
- \ifnum\@xs<\@ys%
- \Rtesttrue%
- \else%
- \ifnum\@xs>\@ys%
- \Rtestfalse%
- \else%
- \Rtestfalse%
- \ifnum\@xi<\@yi \Rtesttrue \fi%
- \ifnum\@xi=\@yi%
- \multiply\@xf\@xs \multiply\@yf\@ys%
- \ifnum\@xf<\@yf \Rtesttrue \fi%
- \fi%
- \fi%
- \fi%
- %
- \ifRtest%
-}
-
-%% \Rifeq<value><value> Test v1 = v2
-\def\Rifeq#1#2{\@callb\@Rifeq{#1}{#2}}
-
-\def\@Rifeq#1.#2.#3\relax#4.#5.#6\relax{%
- % #1 integer part of 1st value
- % #2 fractional part of 1st value
- % #3 dummy to swallow everthing after the 2nd '.'
- % #4 integer part of 2nd value
- % #5 fractional part of 2nd value
- % #6 dummy to swallow everthing after the 2nd '.'
- %
- \@readvalue\@xs\@xi\@xf{#1}{#2}%
- \@readvalue\@ys\@yi\@yf{#4}{#5}%
- %
- \Rtestfalse%
- \ifnum\@xi=\@yi\ifnum\@xf=\@yf \Rtesttrue \fi\fi%
- \ifRtest%
-}
-
-%% \Rifgt<value><value> Test v1 > v2
-\def\Rifgt#1#2{\@callb\@Rifgt{#1}{#2}}
-
-\def\@Rifgt#1.#2.#3\relax#4.#5.#6\relax{%
- % #1 integer part of 1st value
- % #2 fractional part of 1st value
- % #3 dummy to swallow everthing after the 2nd '.'
- % #4 integer part of 2nd value
- % #5 fractional part of 2nd value
- % #6 dummy to swallow everthing after the 2nd '.'
- %
- \@readvalue\@xs\@xi\@xf{#1}{#2}%
- \@readvalue\@ys\@yi\@yf{#4}{#5}%
- %
- \ifnum\@xs>\@ys%
- \Rtesttrue%
- \else%
- \ifnum\@xs<\@ys%
- \Rtestfalse%
- \else%
- \Rtestfalse%
- \ifnum\@xi>\@yi \Rtesttrue \fi%
- \ifnum\@xi=\@yi%
- \multiply\@xf\@xs \multiply\@yf\@ys%
- \ifnum\@xf>\@yf \Rtesttrue \fi%
- \fi%
- \fi%
- \fi%
- %
- \ifRtest%
-}
-
-%% \Rifneg<value> Test v < 0
-\def\Rifneg#1{\@calla\@Rifneg{#1}}
-
-\def\@Rifneg#1.#2.#3\relax{%
- % #1 Integer part of value
- % #2 Fractional part of value
- % #3 dummy to swallow everthing after the 2nd '.'
- %
- \@readvalue\@xs\@xi\@xf{#1}{#2}%
- %
- \ifnum\@xs<0 \Rtesttrue \else \Rtestfalse \fi%
- \ifRtest%
- }
-
-%% \Rifzero<value> Test v = 0
-\def\Rifzero#1{\@calla\@Rifzero{#1}}
-
-\def\@Rifzero#1.#2.#3\relax{%
- % #1 Integer part of value
- % #2 Fractional part of value
- % #3 dummy to swallow everthing after the 2nd '.'
- %
- \@readvalue\@xs\@xi\@xf{#1}{#2}%
- %
- \Rtestfalse%
- \ifnum\@xi=\@zero \ifnum\@xf=\@zero \Rtesttrue \fi \fi%
- \ifRtest%
-}
-
-%% \Rifpos<value> Test v >= 0
-%% Take care to have a corresponding \fi
-\def\Rifpos#1{\@calla\@Rifpos{#1}}
-
-\def\@Rifpos#1.#2.#3\relax{%
- % #1 Integer part of value
- % #2 Fractional part of value
- % #3 dummy to swallow everthing after the 2nd '.'
- %
- \@readvalue\@xs\@xi\@xf{#1}{#2}%
- %
- \ifnum\@xs<0 \Rtestfalse \else \Rtesttrue \fi%
- \ifRtest%
-}
-
-%% \Rifint<value> Test v is an integer value
-%% Take care to have a corresponding \fi
-\def\Rifint#1{\@calla\@Rifint{#1}}
-
-\def\@Rifint#1.#2.#3\relax{%
- % #1 Integer part of value
- % #2 Fractional part of value
- % #3 dummy to swallow everthing after the 2nd '.'
- %
- \@readvalue\@xs\@xi\@xf{#1}{#2}%
- %
- \ifnum\@xf=0 \Rtesttrue \else \Rtestfalse \fi%
- \ifRtest%
-}
-
-% Utility macros
-
-\def\@calla#1#2{%
- % #1 Macro to call
- % #2 Value
- % Expand the value and split them into the integer and the fractional part
- \edef\next{\noexpand#1#2..\noexpand\relax}%
- \next%
-}
-
-\def\@callb#1#2#3{%
- % #1 Macro to call
- % #2 1st value
- % #3 2nd value
- % Expand the values and split them into the integer and the fractional parts
- \edef\next{\noexpand#1#2..\noexpand\relax#3..\noexpand\relax}%
- \next%
-}
-
-\def\@callc#1#2#3#4{%
- % #1 Macro to call
- % #2 Macro, witch gets the result
- % #3 1st value
- % #4 2nd value
- % Expand the values and split them into the integer and the fractional parts
- \edef\next{\noexpand#1\noexpand#2#3..\noexpand\relax#4..\noexpand\relax}%
- \next%
-}
-
-%% \ifRtest ... \else ... \fi Re-execute the last test
-\newif\ifRtest
-
-%
-% Read value
-%
-\def\@readvalue#1#2#3#4#5{%
- % #1 macro to catch the sign ( -1 or 1 )
- % #2 macro to catch the integer part (maybe negative)
- % #3 macro to catch the fractional part (positive)
- % #4.#5 value
- %
- % Regular expression [-...d]d...["."[d...]]
- % Attention: There has to be at least one digit between "-" and "."!
- %
- % Integer part
- \if !#4! #2=\@zero \else #2=#4 \fi%
- %
- % Sign
- \ifnum#2<\@zero #1=-\@ne \else #1=\@ne \fi%
- \ifnum#2=\@zero \ifnum #4#5<\@zero #1=-\@ne \fi \fi%
- %
- % Fractional part
- \if !#5!%
- #3=\@zero%
- \else%
- \@@setcount@#5000000000\relax%
- #3=\count@%
- \fi%
-}
-
-% Set count@ to fractional part with trailing zeros
-\def\@@setcount@#1#2#3#4#5#6#7#8#9{%
- % #1...#9 fractional part, padded with '0'
- \count@=#1#2#3#4#5#6#7#8#9%
- \@swallow%
-}
-
-% Swallow everything up to next \relax
-\def\@swallow#1\relax{}
-
-%
-% Store result
-%
-\def\@store#1#2#3{%
- % #1 marcro to catch the result
- % #2 counter with integer part (maybe negative)
- % #3 counter with fractional part (maybe negative}
- %
- % Sign
- \edef#1{}%
- \count@=#3%
- \ifnum\count@<\@zero%
- \count@=-\count@%
- \ifnum#2=\@zero%
- \edef#1{-}%
- \fi%
- \fi%
- %
- % Pad fractional part with leading zeros
- \advance\count@\@mil%
- %
- % Store result
- \edef#1{#1\number#2.\expandafter\@ignorenext\number\count@}%
-}
-
-% Ignore next token
-\def\@ignorenext#1{}
-
-% Restore catcode of "@"
-\catcode`\@=\catamp