\ Gforth primitives

\ Copyright (C) 1995,1996,1997,1998,2000,2003 Free Software Foundation, Inc.

\ This file is part of Gforth.

\ Gforth is free software; you can redistribute it and/or
\ modify it under the terms of the GNU General Public License
\ as published by the Free Software Foundation; either version 2
\ of the License, or (at your option) any later version.

\ This program is distributed in the hope that it will be useful,
\ but WITHOUT ANY WARRANTY; without even the implied warranty of
\ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
\ GNU General Public License for more details.

\ You should have received a copy of the GNU General Public License
\ along with this program; if not, write to the Free Software
\ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.


\ WARNING: This file is processed by m4. Make sure your identifiers
\ don't collide with m4's (e.g. by undefining them).
\ 
\ 
\ 
\ This file contains primitive specifications in the following format:
\ 
\ forth name	( stack effect )	category	[pronunciation]
\ [""glossary entry""]
\ C code
\ [:
\ Forth code]
\ 
\ Note: Fields in brackets are optional.  Word specifications have to
\ be separated by at least one empty line
\
\ Both pronounciation and stack items (in the stack effect) must
\ conform to the C identifier syntax or the C compiler will complain.
\ If you don't have a pronounciation field, the Forth name is used,
\ and has to conform to the C identifier syntax.
\ 
\ These specifications are automatically translated into C-code for the
\ interpreter and into some other files. I hope that your C compiler has
\ decent optimization, otherwise the automatically generated code will
\ be somewhat slow. The Forth version of the code is included for manual
\ compilers, so they will need to compile only the important words.
\ 
\ Note that stack pointer adjustment is performed according to stack
\ effect by automatically generated code and NEXT is automatically
\ appended to the C code. Also, you can use the names in the stack
\ effect in the C code. Stack access is automatic. One exception: if
\ your code does not fall through, the results are not stored into the
\ stack. Use different names on both sides of the '--', if you change a
\ value (some stores to the stack are optimized away).
\
\ For superinstructions the syntax is:
\
\ forth-name [/ c-name] = forth-name forth-name ...
\
\ 
\ The stack variables have the following types:
\ 
\ name matches	type
\ f.*		Bool
\ c.*		Char
\ [nw].*	Cell
\ u.*		UCell
\ d.*		DCell
\ ud.*		UDCell
\ r.*		Float
\ a_.*		Cell *
\ c_.*		Char *
\ f_.*		Float *
\ df_.*		DFloat *
\ sf_.*		SFloat *
\ xt.*		XT
\ f83name.*	F83Name *

\E stack data-stack   sp Cell
\E stack fp-stack     fp Float
\E stack return-stack rp Cell
\E
\E get-current prefixes set-current
\E 
\E s" Bool"		single data-stack type-prefix f
\E s" Char"		single data-stack type-prefix c
\E s" Cell"		single data-stack type-prefix n
\E s" Cell"		single data-stack type-prefix w
\E s" UCell"		single data-stack type-prefix u
\E s" DCell"		double data-stack type-prefix d
\E s" UDCell"		double data-stack type-prefix ud
\E s" Float"		single fp-stack   type-prefix r
\E s" Cell *"		single data-stack type-prefix a_
\E s" Char *"		single data-stack type-prefix c_
\E s" Float *"		single data-stack type-prefix f_
\E s" DFloat *"		single data-stack type-prefix df_
\E s" SFloat *"		single data-stack type-prefix sf_
\E s" Xt"		single data-stack type-prefix xt
\E s" struct F83Name *"	single data-stack type-prefix f83name
\E s" struct Longname *" single data-stack type-prefix longname
\E 
\E return-stack stack-prefix R:
\E inst-stream  stack-prefix #
\E 
\E set-current
\E store-optimization on
\E ' noop tail-nextp2 ! \ now INST_TAIL just stores, but does not jump
\E
\E include-skipped-insts on \ static superinsts include cells for components
\E                          \ useful for dynamic programming and
\E                          \ superinsts across entry points

\ 
\ 
\ 
\ In addition the following names can be used:
\ ip	the instruction pointer
\ sp	the data stack pointer
\ rp	the parameter stack pointer
\ lp	the locals stack pointer
\ NEXT	executes NEXT
\ cfa	
\ NEXT1	executes NEXT1
\ FLAG(x)	makes a Forth flag from a C flag
\ 
\ 
\ 
\ Percentages in comments are from Koopmans book: average/maximum use
\ (taken from four, not very representative benchmarks)
\ 
\ 
\ 
\ To do:
\ 
\ throw execute, cfa and NEXT1 out?
\ macroize *ip, ip++, *ip++ (pipelining)?

\ these m4 macros would collide with identifiers
undefine(`index')
undefine(`shift')
undefine(`symbols')

\F 0 [if]

\ run-time routines for non-primitives.  They are defined as
\ primitives, because that simplifies things.

(docol)	( -- R:a_retaddr )	gforth-internal	paren_docol
""run-time routine for colon definitions""
a_retaddr = (Cell *)IP;
SET_IP((Xt *)PFA(CFA));

(docon) ( -- w )	gforth-internal	paren_docon
""run-time routine for constants""
w = *(Cell *)PFA(CFA);

(dovar) ( -- a_body )	gforth-internal	paren_dovar
""run-time routine for variables and CREATEd words""
a_body = PFA(CFA);

(douser) ( -- a_user )	gforth-internal	paren_douser
""run-time routine for constants""
a_user = (Cell *)(up+*(Cell *)PFA(CFA));

(dodefer) ( -- )	gforth-internal	paren_dodefer
""run-time routine for deferred words""
ip=IP; /* undo any ip updating that may have been performed by NEXT_P0 */
SUPER_END; /* !! probably unnecessary and may lead to measurement errors */
EXEC(*(Xt *)PFA(CFA));

(dofield) ( n1 -- n2 )	gforth-internal	paren_field
""run-time routine for fields""
n2 = n1 + *(Cell *)PFA(CFA);

(dodoes) ( -- a_body R:a_retaddr )	gforth-internal	paren_dodoes
""run-time routine for @code{does>}-defined words""
a_retaddr = (Cell *)IP;
a_body = PFA(CFA);
SET_IP(DOES_CODE1(CFA));

(does-handler) ( -- )	gforth-internal	paren_does_handler
""just a slot to have an encoding for the DOESJUMP, 
which is no longer used anyway (!! eliminate this)""

\F [endif]

\g control

noop	( -- )		gforth
:
 ;

call	( #a_callee -- R:a_retaddr )	new
""Call callee (a variant of docol with inline argument).""
#ifdef NO_IP
INST_TAIL;
JUMP(a_callee);
#else
#ifdef DEBUG
    {
      CFA_TO_NAME((((Cell *)a_callee)-2));
      fprintf(stderr,"%08lx: call %08lx %.*s\n",(Cell)ip,(Cell)a_callee,
	      len,name);
    }
#endif
a_retaddr = (Cell *)IP;
SET_IP((Xt *)a_callee);
#endif

execute	( xt -- )		core
""Perform the semantics represented by the execution token, @i{xt}.""
#ifndef NO_IP
ip=IP;
#endif
IF_spTOS(spTOS = sp[0]);
SUPER_END;
EXEC(xt);

perform	( a_addr -- )	gforth
""@code{@@ execute}.""
/* and pfe */
#ifndef NO_IP
ip=IP;
#endif
IF_spTOS(spTOS = sp[0]);
SUPER_END;
EXEC(*(Xt *)a_addr);
:
 @ execute ;

;s	( R:w -- )		gforth	semis
""The primitive compiled by @code{EXIT}.""
#ifdef NO_IP
INST_TAIL;
goto *(void *)w;
#else
SET_IP((Xt *)w);
#endif

unloop	( R:w1 R:w2 -- )	core
/* !! alias for 2rdrop */
:
 r> rdrop rdrop >r ;

lit-perform	( #a_addr -- )	new	lit_perform
#ifndef NO_IP
ip=IP;
#endif
SUPER_END;
EXEC(*(Xt *)a_addr);

does-exec ( #a_cfa -- R:nest a_pfa )	new	does_exec
#ifdef NO_IP
/* compiled to LIT CALL by compile_prim */
assert(0);
#else
a_pfa = PFA(a_cfa);
nest = (Cell)IP;
IF_spTOS(spTOS = sp[0]);
#ifdef DEBUG
    {
      CFA_TO_NAME(a_cfa);
      fprintf(stderr,"%08lx: does %08lx %.*s\n",
	      (Cell)ip,(Cell)a_cfa,len,name);
    }
#endif
SET_IP(DOES_CODE1(a_cfa));
#endif

\+glocals

branch-lp+!# ( #a_target #nlocals -- )	gforth	branch_lp_plus_store_number
/* this will probably not be used */
lp += nlocals;
#ifdef NO_IP
INST_TAIL;
JUMP(a_target);
#else
SET_IP((Xt *)a_target);
#endif

\+

branch	( #a_target -- )	gforth
#ifdef NO_IP
INST_TAIL;
JUMP(a_target);
#else
SET_IP((Xt *)a_target);
#endif
:
 r> @ >r ;

\ condbranch(forthname,stackeffect,restline,code1,code2,forthcode)
\ this is non-syntactical: code must open a brace that is closed by the macro
define(condbranch,
$1 ( `#'a_target $2 ) $3
$4	#ifdef NO_IP
INST_TAIL;
#endif
$5	#ifdef NO_IP
JUMP(a_target);
#else
SET_IP((Xt *)a_target);
INST_TAIL; NEXT_P2;
#endif
}
SUPER_CONTINUE;
$6

\+glocals

$1-lp+!`#' ( `#'a_target `#'nlocals $2 ) $3_lp_plus_store_number
$4	#ifdef NO_IP
INST_TAIL;
#endif
$5	lp += nlocals;
#ifdef NO_IP
JUMP(a_target);
#else
SET_IP((Xt *)a_target);
INST_TAIL; NEXT_P2;
#endif
}
SUPER_CONTINUE;

\+
)

condbranch(?branch,f --,f83	question_branch,
,if (f==0) {
,:
 0= dup 0=          \ !f f
 r> tuck cell+      \ !f branchoffset f IP+
 and -rot @ and or  \ f&IP+|!f&branch
 >r ;)

\ we don't need an lp_plus_store version of the ?dup-stuff, because it
\ is only used in if's (yet)

\+xconds

?dup-?branch	( #a_target f -- f )	new	question_dupe_question_branch
""The run-time procedure compiled by @code{?DUP-IF}.""
if (f==0) {
  sp++;
  IF_spTOS(spTOS = sp[0]);
#ifdef NO_IP
INST_TAIL;
JUMP(a_target);
#else
SET_IP((Xt *)a_target);
  INST_TAIL; NEXT_P2;
#endif
}
SUPER_CONTINUE;

?dup-0=-?branch ( #a_target f -- ) new	question_dupe_zero_equals_question_branch
""The run-time procedure compiled by @code{?DUP-0=-IF}.""
/* the approach taken here of declaring the word as having the stack
effect ( f -- ) and correcting for it in the branch-taken case costs a
few cycles in that case, but is easy to convert to a CONDBRANCH
invocation */
if (f!=0) {
  sp--;
#ifdef NO_IP
  JUMP(a_target);
#else
  SET_IP((Xt *)a_target);
  NEXT;
#endif
}
SUPER_CONTINUE;

\+
\fhas? skiploopprims 0= [IF]

condbranch((next),R:n1 -- R:n2,cmFORTH	paren_next,
n2=n1-1;
,if (n1) {
,:
 r> r> dup 1- >r
 IF @ >r ELSE cell+ >r THEN ;)

condbranch((loop),R:nlimit R:n1 -- R:nlimit R:n2,gforth	paren_loop,
n2=n1+1;
,if (n2 != nlimit) {
,:
 r> r> 1+ r> 2dup =
 IF >r 1- >r cell+ >r
 ELSE >r >r @ >r THEN ;)

condbranch((+loop),n R:nlimit R:n1 -- R:nlimit R:n2,gforth paren_plus_loop,
/* !! check this thoroughly */
/* sign bit manipulation and test: (x^y)<0 is equivalent to (x<0) != (y<0) */
/* dependent upon two's complement arithmetic */
Cell olddiff = n1-nlimit;
n2=n1+n;	
,if ((olddiff^(olddiff+n))>=0   /* the limit is not crossed */
    || (olddiff^n)>=0          /* it is a wrap-around effect */) {
,:
 r> swap
 r> r> 2dup - >r
 2 pick r@ + r@ xor 0< 0=
 3 pick r> xor 0< 0= or
 IF    >r + >r @ >r
 ELSE  >r >r drop cell+ >r THEN ;)

\+xconds

condbranch((-loop),u R:nlimit R:n1 -- R:nlimit R:n2,gforth paren_minus_loop,
UCell olddiff = n1-nlimit;
n2=n1-u;
,if (olddiff>u) {
,)

condbranch((s+loop),n R:nlimit R:n1 -- R:nlimit R:n2,gforth	paren_symmetric_plus_loop,
""The run-time procedure compiled by S+LOOP. It loops until the index
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
/* dependex
crosses the boundary between limit and limit-sign(n). I.e. a symmetric
version of (+LOOP).""
/* to (x<0) != (y<0) */
