% 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
}