Ethiopian multiplication: Difference between revisions
no edit summary
m (Move ooRexx to correct position in collating sequence) |
Johnicholas (talk | contribs) No edit summary |
||
Line 2,924:
This is possibly the smallest multiply routine so far discovered for SNUSP.
=={{header|Soar}}==
<lang soar>##########################################
# multiply takes ^left and ^right numbers
# and a ^return-to
sp {multiply*elaborate*initialize
(state <s> ^superstate.operator <o>)
(<o> ^name multiply
^left <x>
^right <y>
^return-to <r>)
-->
(<s> ^name multiply
^left <x>
^right <y>
^return-to <r>)}
sp {multiply*propose*recurse
(state <s> ^name multiply
^left <x> > 0
^right <y>
^return-to <r>
-^multiply-done)
-->
(<s> ^operator <o> +)
(<o> ^name multiply
^left (div <x> 2)
^right (* <y> 2)
^return-to <s>)}
sp {multiply*elaborate*mod
(state <s> ^name multiply
^left <x>)
-->
(<s> ^left-mod-2 (mod <x> 2))}
sp {multiply*elaborate*recursion-done-even
(state <s> ^name multiply
^left <x>
^right <y>
^multiply-done <temp>
^left-mod-2 0)
-->
(<s> ^answer <temp>)}
sp {multiply*elaborate*recursion-done-odd
(state <s> ^name multiply
^left <x>
^right <y>
^multiply-done <temp>
^left-mod-2 1)
-->
(<s> ^answer (+ <temp> <y>))}
sp {multiply*elaborate*zero
(state <s> ^name multiply
^left 0)
-->
(<s> ^answer 0)}
sp {multiply*elaborate*done
(state <s> ^name multiply
^return-to <r>
^answer <a>)
-->
(<r> ^multiply-done <a>)}</lang>
=={{header|Tcl}}==
|