PACKET real operation DEFINES real assign, row real, real add, real mult, real div, real incr, real mod, real equal, real lequal, real abs, real min : (***************************************************************************) (* *) (* Autor: A. Steinmann Copyright (C): HRZ - Unibi *) (* *) (***************************************************************************) ROW 10 REAL VAR real row ; INT VAR index, i ; REAL VAR begin, end, first real, second real, third real, rest, act result, real assign factor ; PROC real assign (INT CONST frequency) : first real := 0.0 ; second real := 1.0 ; begin := clock (0) ; FOR index FROM 1 UPTO frequency REP first real := second real END REP ; end := clock (0) ; act result := end - begin ; real assign s (frequency) END PROC real assign ; PROC real assign s (INT CONST frequency) : first real := 0.0 ; second real := 1.0 ; begin := clock (0) ; FOR index FROM 1 UPTO frequency REP first real := second real END REP ; end := clock (0) ; IF act result > end - begin THEN act result := end - begin FI ; real assign factor := act result * msec factor (frequency) - for corr ; notice result ("REAL :=", real assign factor) ; END PROC real assign s ; PROC row real (INT CONST frequency) : first real := 1.0 ; i := 7 ; real row [i] := 0.0 ; begin := clock (0) ; FOR index FROM 1 UPTO frequency REP real row [i] := first real END REP ; end := clock (0) ; act result := end - begin ; row real s (frequency) END PROC row real ; PROC row real s (INT CONST frequency) : first real := 1.0 ; i := 7 ; real row [i] := 0.0 ; begin := clock (0) ; FOR index FROM 1 UPTO frequency REP real row [i] := first real END REP ; end := clock (0) ; IF act result > end - begin THEN act result := end - begin FI ; notice result ("ROW REAL [i]", act result * msec factor (frequency) - for corr) ; END PROC row real s ; PROC real equal (INT CONST frequency) : first real := 10.0 ; second real := 10.0 ; begin := clock (0) ; FOR index FROM 1 UPTO frequency REP IF first real = second real THEN FI END REP ; end := clock (0) ; act result := end - begin ; real equal s (frequency) END PROC real equal ; PROC real equal s (INT CONST frequency) : first real := 10.0 ; second real := 10.0 ; begin := clock (0) ; FOR index FROM 1 UPTO frequency REP IF first real = second real THEN FI END REP ; end := clock (0) ; IF act result > end - begin THEN act result := end - begin FI ; notice result ("REAL =", act result * msec factor (frequency) - for corr) END PROC real equal s ; PROC real lequal (INT CONST frequency) : first real := 10.0 ; second real := 11.0 ; begin := clock(0) ; FOR index FROM 1 UPTO frequency REP IF first real <= second real THEN FI END REP ; end := clock (0) ; act result := end - begin ; real lequal s (frequency) END PROC real lequal ; PROC real lequal s (INT CONST frequency) : first real := 10.0 ; second real := 11.0 ; begin := clock(0) ; FOR index FROM 1 UPTO frequency REP IF first real <= second real THEN FI END REP ; end := clock (0) ; IF act result > end - begin THEN act result := end - begin FI ; notice result ("REAL <=", act result * msec factor (frequency) - for corr) END PROC real lequal s ; PROC real add (INT CONST frequency) : first real := 0.0 ; second real := 1.0 ; third real := 1.0 ; begin := clock (0) ; FOR index FROM 1 UPTO frequency REP first real := second real + third real END REP ; end := clock (0) ; act result := end - begin ; real add s (frequency) END PROC real add ; PROC real add s (INT CONST frequency) : first real := 0.0 ; second real := 1.0 ; third real := 1.0 ; begin := clock (0) ; FOR index FROM 1 UPTO frequency REP first real := second real + third real END REP ; end := clock (0) ; IF act result > end - begin THEN act result := end - begin FI ; notice result ("REAL +", act result * msec factor (frequency) - for corr) ; END PROC real add s ; PROC real mult (INT CONST frequency) : first real := 0.0 ; second real := 1.001 ; third real := 1.001 ; begin := clock (0) ; FOR index FROM 1 UPTO frequency REP first real := second real * third real END REP ; end := clock (0) ; act result := end - begin ; real mult s (frequency) END PROC real mult ; PROC real mult s (INT CONST frequency) : first real := 0.0 ; second real := 1.001 ; third real := 1.001 ; begin := clock (0) ; FOR index FROM 1 UPTO frequency REP first real := second real * third real END REP ; end := clock (0) ; IF act result > end - begin THEN act result := end - begin FI ; notice result ("REAL *", act result * msec factor (frequency) - for corr) ; END PROC real mult s ; PROC real div (INT CONST frequency) : first real := 0.0 ; second real := 10000.0 ; third real := 1.0001 ; begin := clock (0) ; FOR index FROM 1 UPTO frequency REP first real := second real / third real END REP ; end := clock (0) ; act result := end - begin ; real div s (frequency) END PROC real div ; PROC real div s (INT CONST frequency) : first real := 0.0 ; second real := 10000.0 ; third real := 1.0001 ; begin := clock (0) ; FOR index FROM 1 UPTO frequency REP first real := second real / third real END REP ; end := clock (0) ; IF act result > end - begin THEN act result := end - begin FI ; notice result ("REAL /", act result * msec factor (frequency) - for corr) ; END PROC real div s ; PROC real incr (INT CONST frequency) : first real := 0.0 ; second real := 1.0 ; begin := clock (0) ; FOR index FROM 1 UPTO frequency REP first real INCR second real END REP ; end := clock (0) ; act result := end - begin ; real incr s (frequency) END PROC real incr ; PROC real incr s (INT CONST frequency) : first real := 0.0 ; second real := 1.0 ; begin := clock (0) ; FOR index FROM 1 UPTO frequency REP first real INCR second real END REP ; end := clock (0) ; IF act result > end - begin THEN act result := end - begin FI ; notice result ("INCR", act result * msec factor (frequency) - for corr) ; END PROC real incr s ; PROC real mod (INT CONST frequency) : first real := 9999.9 ; second real := 21.21 ; begin := clock (0) ; FOR index FROM 1 UPTO frequency REP rest := first real MOD second real END REP ; end := clock (0) ; act result := end - begin ; real mod s (frequency) END PROC real mod ; PROC real mod s (INT CONST frequency) : first real := 9999.9 ; second real := 21.21 ; begin := clock (0) ; FOR index FROM 1 UPTO frequency REP rest := first real MOD second real END REP ; end := clock (0) ; IF act result > end - begin THEN act result := end - begin FI ; notice result ("MOD", act result * msec factor (frequency) - for corr) ; END PROC real mod s ; PROC real abs (INT CONST frequency) : first real := 0.0 ; second real := - 12345.6 ; begin := clock (0) ; FOR index FROM 1 UPTO frequency REP first real := abs (second real) END REP ; end := clock (0) ; act result := end - begin ; real abs s (frequency) END PROC real abs ; PROC real abs s (INT CONST frequency) : first real := 0.0 ; second real := - 12345.6 ; begin := clock (0) ; FOR index FROM 1 UPTO frequency REP first real := abs (second real) END REP ; end := clock (0) ; IF act result > end - begin THEN act result := end - begin FI ; notice result ("abs (REAL)", act result * msec factor (frequency) - for corr) ; END PROC real abs s ; PROC real min (INT CONST frequency) : first real := 10000.0 ; second real := 1.0 ; begin := clock (0) ; FOR index FROM 1 UPTO frequency REP rest := min (first real, second real) END REP ; end := clock (0) ; act result := end - begin ; real min s (frequency) END PROC real min ; PROC real min s (INT CONST frequency) : first real := 10000.0 ; second real := 1.0 ; begin := clock (0) ; FOR index FROM 1 UPTO frequency REP rest := min (first real, second real) END REP ; end := clock (0) ; IF act result > end - begin THEN act result := end - begin FI ; notice result ("min (REAL, REAL)", act result * msec factor (frequency) - for corr) ; END PROC real min s ; END PACKET real operation ;