28 lines
703 B
Text
28 lines
703 B
Text
public function boolean wf_iseven (long al_arg);return mod(al_arg, 2 ) = 0
|
|
end function
|
|
|
|
public function long wf_halve (long al_arg);RETURN int(al_arg / 2)
|
|
end function
|
|
|
|
public function long wf_double (long al_arg);RETURN al_arg * 2
|
|
end function
|
|
|
|
public function long wf_ethiopianmultiplication (long al_multiplicand, long al_multiplier);// calculate result
|
|
long ll_product
|
|
|
|
DO WHILE al_multiplicand >= 1
|
|
IF wf_iseven(al_multiplicand) THEN
|
|
// do nothing
|
|
ELSE
|
|
ll_product += al_multiplier
|
|
END IF
|
|
al_multiplicand = wf_halve(al_multiplicand)
|
|
al_multiplier = wf_double(al_multiplier)
|
|
LOOP
|
|
|
|
return ll_product
|
|
end function
|
|
|
|
// example call
|
|
long ll_answer
|
|
ll_answer = wf_ethiopianmultiplication(17,34)
|