PROGRAM MATH (INPUT,OUTPUT);{$DEBUG-}
	CONST
		two='2.000000';

	TYPE
		string=SUPER PACKED ARRAY [1..*] OF char;
		realstr=lstring(20);
	VAR
	   	X,Y,Z		:REAL;
      	 	M,N		:INTEGER;
		start,stop	:string(20);
		index,count	:word;
		success		:boolean;
		one		:realstr;
PROCEDURE time (VAR T : string);EXTERN;
FUNCTION MAXRQQ(X,Y:REAL):REAL;EXTERN;
FUNCTION RSRRQQ(X,Y:REAL):REAL;EXTERN;
FUNCTION ANNRQQ(X:REAL):REAL;EXTERN;

FUNCTION REALC(numstr : realstr):real;

VAR
	DUMMY	:BOOLEAN;
	BEGIN
		DUMMY :=DECODE(numstr,realc)		
	END;

	BEGIN
		REPEAT
	X:=REALC('2.345');WRITE('X= ');WRITELN(X);

	one:= '1.0000';
	success:= DECODE(ONE,X);WRITELN('DECODE',X);
	writeln('success =',success);
	WRITELN(TWO);	
			WRITE ('ENTER NUMBER: ');READLN(X);
			WRITE ('ENTER number of loops: ');READLN(index);
			WRITE ('ENTER NUMBER: ');READLN(Y);

			time(start);
			for count := 1 to index DO Z := X + Y;
			time (stop);

			WRITE ('sum= ');WRITELN(Z);
			WRITELN ('start= ',start,'end= ',stop);

			time(start);
			for count := 1 to index DO Z := X - Y;
			time (stop);

			WRITE ('DIFFERENCE= ');WRITELN(Z);
			WRITELN ('start= ',start,'end= ',stop);

			time(start);
			for count := 1 to index DO Z := X * Y;
			time (stop);

			WRITE ('PRODUCT= ');WRITELN(Z);
			WRITELN ('start= ',start,'end= ',stop);

			time(start);
			for count := 1 to index DO Z := X / Y;
			time (stop);

			WRITE ('QUOTIENT= ');WRITELN(Z);
			WRITELN ('start= ',start,'end= ',stop);

			time(start);
			for count := 1 to index DO Z := SQRT(X);
			time (stop);

			WRITE ('sqrt= ');WRITELN(Z);
			WRITELN ('start= ',start,'end= ',stop);

			time(start);
			for count := 1 to index DO Z := SQR(X);
			time (stop);

			WRITE ('SQUARE= ');WRITELN(Z);
			WRITELN ('start= ',start,'end= ',stop);

			time(start);
			for count := 1 to index DO Z := EXP(X);
			time (stop);

			WRITE ('EXP= ');WRITELN(Z);
			WRITELN ('start= ',start,'end= ',stop);

			time(start);
			for count := 1 to index DO Z := LN(X);
			time (stop);

			WRITE ('LN= ');WRITELN(Z);
			WRITELN ('start= ',start,'end= ',stop);



			time(start);
			for count := 1 to index DO Z := SIN(X);
			time (stop);

			WRITE ('SIN= ');WRITELN(Z);
			WRITELN ('start= ',start,'end= ',stop);

			time(start);
			for count := 1 to index DO Z := RSRRQQ(X,Y);
			time (stop);

			WRITE ('X**Y= ');WRITELN(Z);
			WRITELN ('start= ',start,'end= ',stop);

			time(start);
			for count := 1 to index DO Z := MAXRQQ(X,Y);
			time (stop);

			WRITE ('MAX= ');WRITELN(Z);
			WRITELN ('start= ',start,'end= ',stop);

			time(start);
			for count := 1 to index DO Z := COS(X);
			time (stop);

			WRITE ('COS = ');WRITELN(Z);
			WRITELN ('start= ',start,'end= ',stop)


		UNTIL   X=0;
	END.
