1 ! Copyright (C) 2007 Robbert van Dalen.
2 ! See http://factorcode.org/license.txt for BSD license.
4 IN: isequences.ops.modulus
5 USING: generic kernel math sequences isequences.interface isequences.base ;
8 : %%g++ ( s1 s2 -- ms1 ms2 )
9 2dup [ i-length ] 2apply 2dup [ 0 = ] 2apply or
11 [ 2dup mod -rot swap mod swap rot swap ihead >r ihead r> ] if ;
13 : %%g-+ ( s1 s2 -- ms1 ms2 )
16 : %%g+- ( s1 s2 -- ms2 ms2 )
19 : %%g-- ( s1 s2 -- ms1 ms2 )
22 : %%g ( s1 s2 -- ms1 ms2 )
23 2dup [ neg? ] 2apply [ [ %%g-- ] [ %%g+- ] if ]
24 [ [ %%g-+ ] [ %%g++ ] if ] if ; inline