Ethiopian multiplication: Difference between revisions

Content added Content deleted
(Modula-3)
Line 786: Line 786:


=={{header|PL/SQL}}==
=={{header|PL/SQL}}==
This code was taken from the ADA example above - very minor differences.
{{incorrect|PL/SQL|The task asks for three functions to be defined and used: halve, double, and even.}}
<lang plsql>
<lang plsql>CREATE FUNCTION ethiopianMult(pNum1 NUMBER, pNum2 NUMBER) RETURN NUMBER IS
create or replace package ethiopian is


function multiply
vNum1 NUMBER := pNum1;
( left in integer,
vNum2 NUMBER := pNum2;
right in integer)
vTot NUMBER := 0;
return integer;
BEGIN

loop
end ethiopian;
vNum1 := trunc(vNum1/2);
/
exit when vNum1 < 1;

vNum2 := vNum2 + vNum2;
create or replace package body ethiopian is
if mod(vNum1,2) != 0 then

vTot := vTot + vNum2;
function is_even(item in integer) return boolean is
end if;
begin
end loop;
return vTot;
return item mod 2 = 0;
end is_even;
END;</lang>

function double(item in integer) return integer is
begin
return item * 2;
end double;

function half(item in integer) return integer is
begin
return trunc(item / 2);
end half;

function multiply
( left in integer,
right in integer)
return Integer
is
temp integer := 0;
plier integer := left;
plicand integer := right;
begin

loop
if not is_even(plier) then
temp := temp + plicand;
end if;
plier := half(plier);
plicand := double(plicand);
exit when plier <= 1;
end loop;

temp := temp + plicand;

return temp;

end multiply;

end ethiopian;
/

/* example call */
begin
dbms_output.put_line(ethiopian.multiply(17, 34));
end;
/
</lang>


=={{header|PowerShell}}==
=={{header|PowerShell}}==