Ethiopian multiplication: Difference between revisions
Content added Content deleted
m (Move ooRexx to correct position in collating sequence) |
Johnicholas (talk | contribs) No edit summary |
||
Line 2,924: | Line 2,924: | ||
This is possibly the smallest multiply routine so far discovered for SNUSP. |
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}}== |
=={{header|Tcl}}== |