41 lines
705 B
Text
41 lines
705 B
Text
' Ethiopian multiplication
|
|
PROGRAM "ethmult"
|
|
VERSION "0.0000"
|
|
|
|
DECLARE FUNCTION Entry()
|
|
INTERNAL FUNCTION Double(@a&&)
|
|
INTERNAL FUNCTION Halve(@a&&)
|
|
INTERNAL FUNCTION IsEven(a&&)
|
|
|
|
FUNCTION Entry()
|
|
x&& = 17
|
|
y&& = 34
|
|
tot&& = 0
|
|
DO WHILE x&& >= 1
|
|
PRINT FORMAT$("#########", x&&);
|
|
PRINT " ";
|
|
IFF IsEven(x&&) THEN
|
|
tot&& = tot&& + y&&
|
|
PRINT FORMAT$("#########", y&&);
|
|
END IF
|
|
PRINT
|
|
Halve(@x&&)
|
|
Double(@y&&)
|
|
LOOP
|
|
PRINT "= ";
|
|
PRINT FORMAT$("#########", tot&&);
|
|
PRINT
|
|
END FUNCTION
|
|
|
|
FUNCTION Double(a&&)
|
|
a&& = 2 * a&&
|
|
END FUNCTION
|
|
|
|
FUNCTION Halve(a&&)
|
|
a&& = a&& / 2
|
|
END FUNCTION
|
|
|
|
FUNCTION IsEven(a&&)
|
|
RETURN a&& MOD 2 = 0
|
|
END FUNCTION
|
|
END PROGRAM
|