Program FLPTDEMO(0);
{$IFLPTCONS.PAS  }
{$IFLPTTYPE.PAS  }
{$IFLPTVAR.PAS   }
	i		: integer;
	alfa, beta	: extdatum;
	k, l, a, b, c, d: newreal;
	continue	: boolean;
	ch		: char;
{$IFLPTEXT.PAS   }

begin
{insert here clear screen}
mode := rounded;
writeln('          EXTENDED PRECISION FLOATING POINT PACKAGE');
writeln('		       DEMONSTRATION PROGRAM');
writeln;
writeln;
writeln('Enter the first operand by typing a string of consecutive digits');
writeln(
'(up to but no more than ',prec:1,' ) optionally preceeded by either "+" or');
writeln('"-" and followed by "E" or "e" and then by the exponent. ');
writeln('The number may contain a decimal point as in any standard Pascal');
writeln('implementation. Leading zeros are discarded.');
writeln('Note that :');
writeln('   the absence of sign results in a positive number;');
writeln('   the exponent should consist of a signed or unsigned number');
writeln('   with one, two or three digits.');
writeln('After any operand has been composed, type twice return to indicate');
writeln('completion.');
writeln;
continue := true;
repeat
writeln('Enter the first operand.');
do_read(alfa, k);
writeln;
writeln('Enter the second operand.');
writeln;
do_read(beta, l);
writeln;
writeln;
write('The first operand is equal to  : ');
if alfa.s = plus then write('+') else write('-');
write(alfa.f[1]:1, '.');
for i := 2 to prec do write(alfa.f[i]:1);
if alfa.f[1] <> 0 then
	begin
	write('E');
	if (alfa.e-1) < 0 then write('-') else write('+');
	if abs(alfa.e-1) < 10 then write('0');
	writeln(abs(alfa.e-1):1)
	end
  else
	writeln('+00');
writeln;
write('The second operand is equal to : ');
if beta.s = plus then write('+') else write('-');
write(beta.f[1]:1, '.');
for i := 2 to prec do write(beta.f[i]:1);
if beta.f[1] <> 0 then
	begin
	write('E');
	if (beta.e-1) < 0 then write('-') else write('+');
	if abs(beta.e-1) < 10 then write('0');
	writeln(abs(beta.e-1):1)
	end
  else
	writeln('+00');
writeln;
a := add(k, l);
b := sub(k, l);
c := multp(k, l);
d := divde(k, l);
write('The sum of the first and the second operand is :        ');
do_write(a);
writeln;
writeln;
write('The difference of the first and the second operand is : ');
do_write(b);
writeln;
writeln;
write('The product of the first and the second operand is :    ');
do_write(c);
writeln;
writeln;
write('The quotient of the first and the second operand is :   ');
do_write(d);
writeln;
writeln;
writeln;
writeln('Type "T" to terminate the program. Press any other key to continue.');
read(ch);
if ch = 'T' then continue := false
until continue = false;
writeln;
writeln;
writeln('WARNING : Roundoff errors may affect the least significant digit(s).');
writeln;
writeln;
writeln('                    END OF THE DEMONSTRATION PROGRAM');
end.
