Anonymous user
Ethiopian multiplication: Difference between revisions
Lua comes BEFORE Metafont :-) .(What does this say about the average RC'er?)
(Clojure comes BEFORE Coldfusion :-) .) |
(Lua comes BEFORE Metafont :-) .(What does this say about the average RC'er?)) |
||
Line 1,060:
[output eproduct halve :x double :y] ~
[output :y + eproduct halve :x double :y]
end</lang>▼
=={{header|Metafont}}==▼
Implemented without the ''tutor''.▼
<lang metafont>vardef halve(expr x) = floor(x/2) enddef;▼
vardef double(expr x) = x*2 enddef;▼
vardef iseven(expr x) = if (x mod 2) = 0: true else: false fi enddef;▼
primarydef a ethiopicmult b =▼
begingroup▼
save r_, plier_, plicand_;▼
plier_ := a; plicand_ := b;▼
r_ := 0;▼
forever: exitif plier_ < 1;▼
if not iseven(plier_): r_ := r_ + plicand_; fi▼
plier_ := halve(plier_);▼
plicand_ := double(plicand_);▼
endfor▼
r_▼
endgroup▼
enddef;▼
show( (17 ethiopicmult 34) );▼
end</lang>
Line 1,114 ⟶ 1,091:
print(ethiopian(17, 34))</lang>
▲=={{header|Metafont}}==
▲Implemented without the ''tutor''.
▲<lang metafont>vardef halve(expr x) = floor(x/2) enddef;
▲vardef double(expr x) = x*2 enddef;
▲vardef iseven(expr x) = if (x mod 2) = 0: true else: false fi enddef;
▲primarydef a ethiopicmult b =
▲ begingroup
▲ save r_, plier_, plicand_;
▲ plier_ := a; plicand_ := b;
▲ r_ := 0;
▲ forever: exitif plier_ < 1;
▲ if not iseven(plier_): r_ := r_ + plicand_; fi
▲ plier_ := halve(plier_);
▲ plicand_ := double(plicand_);
▲ endfor
▲ r_
▲ endgroup
▲enddef;
▲show( (17 ethiopicmult 34) );
▲end</lang>
=={{header|MATLAB}}==
|