Ethiopian multiplication: Difference between revisions
Content added Content deleted
(→{{header|CoffeeScript}}: added one liner option to coffeescript) |
|||
Line 5,365: | Line 5,365: | ||
578 |
578 |
||
</pre> |
</pre> |
||
=={{header|RPL}}== |
|||
Calculations are here made on binary integers, on which built-in instructions <code>SL</code> and <code>SR</code> perform resp. doubling and halving. |
|||
{{works with|Halcyon Calc|4.2.7}} |
|||
{| class="wikitable" |
|||
! RPL code |
|||
! Comment |
|||
|- |
|||
| |
|||
≪ # 1d AND # 0d == |
|||
≫ ''''EVEN?'''' STO |
|||
≪ |
|||
# 0d ROT R→B ROT R→B |
|||
'''WHILE''' OVER # 0d ≠ '''REPEAT''' |
|||
'''IF''' OVER '''EVEN?''' NOT |
|||
'''THEN''' ROT OVER + ROT ROT '''END ''' |
|||
SL SWAP SR SWAP |
|||
'''END''' DROP2 B→R |
|||
≫ ''''ETMUL'''' STO |
|||
| |
|||
'''EVEN?''' ''( #n -- boolean ) '' |
|||
return 1 if n is even, 0 otherwise |
|||
'''ETMUL''' ''( a b -- a*b ) '' |
|||
put accumulator, a and b (converted to integers) in stack |
|||
while b > 0 |
|||
if b is odd |
|||
add a to accumulator |
|||
halve b, double a |
|||
delete a and b and convert a*b to floating point |
|||
|} |
|||
=={{header|Ruby}}== |
=={{header|Ruby}}== |