<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Author" content="Ward Cunningham">
<meta name="GENERATOR" content="Mozilla/4.5 [en]C-CCK-MCD compaq (Win98; U) [Netscape]">
<title>Arithmetic</title>
</head>
<body>
<h1>
Integer Arithmetic</h1>
<p>The computer relies on arithmetic. Here we test a variety of arithmetic
operations expressed as 32 bit two's complement binary numbers (Java's
int).
<br>
<table BORDER COLS=6 CELLSPACING=0 CELLPADDING=3 >
<tr>
<td COLSPAN="6">eg.ArithmeticFixture</td>
</tr>
<tr>
<td>x</td>
<td>y</td>
<td>+</td>
<td>-</td>
<td>*</td>
<td>/</td>
</tr>
<tr>
<td>0</td>
<td>0</td>
<td bgcolor="#cfffcf">0</td>
<td bgcolor="#cfffcf">0</td>
<td bgcolor="#cfffcf">0</td>
<td bgcolor="#ffffcf">0<hr><pre>Illegal division by zero at lib/Test/C2FIT/eg/ArithmeticFixture.pm line 56.<br /></pre></td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td bgcolor="#cfffcf">3</td>
<td bgcolor="#cfffcf">-1</td>
<td bgcolor="#cfffcf">2</td>
<td bgcolor="#ffcfcf">0.5 <font size=-1 color="#c08080"><i>expected</i></font><hr>0 <font size=-1 color="#c08080"><i>actual</i></font></td>
</tr>
<tr>
<td>1</td>
<td>-1</td>
<td bgcolor="#cfffcf">0</td>
<td bgcolor="#cfffcf">2</td>
<td bgcolor="#cfffcf">-1</td>
<td bgcolor="#cfffcf">-1</td>
</tr>
<tr>
<td>10000</td>
<td>10000</td>
<td bgcolor="#cfffcf">20000</td>
<td bgcolor="#cfffcf">0</td>
<td bgcolor="#cfffcf">100000000</td>
<td bgcolor="#cfffcf">1</td>
</tr>
<tr>
<td>100000</td>
<td>100000</td>
<td bgcolor="#cfffcf">200000</td>
<td bgcolor="#cfffcf">0</td>
<td bgcolor="#cfffcf">10000000000</td>
<td bgcolor="#cfffcf">1</td>
</tr>
<tr>
<td>1000000</td>
<td>1000000</td>
<td bgcolor="#cfffcf">2000000</td>
<td bgcolor="#cfffcf">0</td>
<td bgcolor="#cfffcf">1000000000000</td>
<td bgcolor="#cfffcf">1</td>
</tr>
</table>
<br><br>
Now we try something similar using automatic type conversion offered by ColumnFixtures (BFL1).
<br><br>
<table BORDER CELLSPACING=0 CELLPADDING=3>
<tr>
<td colspan=5>eg.ArithmeticColumnFixture</td>
</tr>
<tr>
<td>x</td>
<td>y</td>
<td>plus()</td>
<td>times()</td>
<td>divide()</td>
<td>floating()</td>
</tr>
<tr>
<td>2</td>
<td>3</td>
<td bgcolor="#cfffcf">5</td>
<td bgcolor="#cfffcf">6</td>
<td bgcolor="#cfffcf">0</td>
<td bgcolor="#cfffcf">0.6666667</td>
</tr>
<tr>
<td>0</td>
<td>0</td>
<td bgcolor="#cfffcf">0</td>
<td bgcolor="#cfffcf">0</td>
<td bgcolor="#cfffcf">error</td>
<td bgcolor="#cfffcf">error</td>
</tr>
<tr>
<td>0</td>
<td>0</td>
<td bgcolor="#cfffcf">0</td>
<td bgcolor="#cfffcf">0</td>
<td> <font color="#808080">error</font></td>
<td> <font color="#808080">error</font></td>
</tr>
<tr>
<td>200</td>
<td>300</td>
<td bgcolor="#cfffcf">500</td>
<td bgcolor="#cfffcf">60000</td>
<td bgcolor="#cfffcf">0</td>
<td bgcolor="#cfffcf">0.6666667</td>
</tr>
<tr>
<td>2</td>
<td>3</td>
<td bgcolor="#ffcfcf">10 <font size=-1 color="#c08080"><i>expected</i></font><hr>5 <font size=-1 color="#c08080"><i>actual</i></font></td>
<td bgcolor="#ffcfcf">10 <font size=-1 color="#c08080"><i>expected</i></font><hr>6 <font size=-1 color="#c08080"><i>actual</i></font></td>
<td bgcolor="#ffcfcf">10 <font size=-1 color="#c08080"><i>expected</i></font><hr>0 <font size=-1 color="#c08080"><i>actual</i></font></td>
</tr>
<tr>
<td>200</td>
<td>3</td>
<td bgcolor="#ffcfcf">5 <font size=-1 color="#c08080"><i>expected</i></font><hr>203 <font size=-1 color="#c08080"><i>actual</i></font></td>
<td bgcolor="#ffcfcf">6 <font size=-1 color="#c08080"><i>expected</i></font><hr>600 <font size=-1 color="#c08080"><i>actual</i></font></td>
<td bgcolor="#ffcfcf">0 <font size=-1 color="#c08080"><i>expected</i></font><hr>66 <font size=-1 color="#c08080"><i>actual</i></font></td>
<td bgcolor="#ffcfcf">0.6666667 <font size=-1 color="#c08080"><i>expected</i></font><hr>66.6666666666667 <font size=-1 color="#c08080"><i>actual</i></font></td>
</tr>
<tr>
<td>2</td>
<td>-3</td>
<td bgcolor="#cfffcf">-1</td>
<td bgcolor="#cfffcf">-6</td>
<td bgcolor="#cfffcf">-0</td>
<td bgcolor="#cfffcf">-0.6666667</td>
</tr>
</table>
<br><br>
<table BORDER CELLSPACING=0 CELLPADDING=3>
<tr>
<td COLSPAN="2">fit.Summary</td>
</tr>
<tr bgcolor="#ffcfcf">
<td> <font color="#808080">counts</font></td>
<td> <font color="#808080">40 right, 8 wrong, 0 ignores, 1 exceptions</font></td></tr>
<tr>
<td> <font color="#808080">input file</font></td>
<td> <font color="#808080">input/arithmetic.html</font></td></tr>
<tr>
<td> <font color="#808080">input update</font></td>
<td> <font color="#808080">Sat Apr 22 22:26:16 2006</font></td></tr>
<tr>
<td> <font color="#808080">output file</font></td>
<td> <font color="#808080">output/arithmetic.html</font></td></tr>
<tr>
<td> <font color="#808080">run date</font></td>
<td> <font color="#808080">Wed May 3 18:11:04 2006</font></td></tr>
<tr>
<td> <font color="#808080">run elapsed time</font></td>
<td> <font color="#808080"> 0 wallclock secs ( 0.02 usr + 0.01 sys = 0.03 CPU)</font></td></tr></table>
<p>Document prepaired by Ward Cunningham
<br>First Version July 11, 2002
<br>Last Update August 17, 2002
</body>
</html>