Ethiopian multiplication: Difference between revisions

m (moved PowerShell after Powerbuilder (alphabetized))
Line 622:
 
=={{header|D}}==
<lang d>intimport ethiopian(intstd.stdio: n1, int n2) {writeln;
if (n1 < 0) {
int ethiopian(int n1, int n2)
throw new Exception("muliplier cannot be negative");
}in {
throwassert(n1 new>= 0, Exception("muliplier cannot be negative");
} body {
static int doubleNum(int n) pure { return n * 2; }
static int halveNum(int n) pure { return n / 2; }
static bool isEven(int n) pure { return !(n % 2); }
int result;
if while (n1 <>= 01) {
if (!isEven(n1))
result += n2;
n1 = halveNum(n1);
n2 = doubleNum(n2);
}
return result;
}
int doubleNum(int n) { return n * 2; }
int halveNum(int n) { return n / 2; }
bool isEven(int n) { return !(n % 2); }
 
<lang d>unittest {
int result;
assert(ethiopian(77, 54) == 77 * 54);
 
while assert(n1ethiopian(8, 923) >== 1)8 {* 923);
assert(ethiopian(64, -4) == 64 * -4);
if (!isEven(n1))
result += n2;
n1 = halveNum(n1);
n2 = doubleNum(n2);
}
 
return result;
}
 
void main() {
printfwriteln("17 ethiopian 34 is %d\n", ethiopian(17, 34));
}</lang>
 
<lang d>unittest {
assert(ethiopian(77, 54) == 77 * 54);
assert(ethiopian(8, 923) == 8 * 923);
assert(ethiopian(64, -4) == 64 * -4);
}</lang>
Output:
<pre>17 ethiopian 34 is 578</pre>
 
=={{header|E}}==
Anonymous user