Re: nForth signed comparisons
- To: <MISC>
 
- Subject: Re: nForth signed comparisons
 
- From: "Myron Plichota" <mplichot@xxxxxxxxx>
 
- Date: Sat, 20 Mar 1999 22:22:45 -0800
 
This is one set of solutions. Pardon my use of C syntax in the stack
diagrams.
: 0=            ( n -- flag=n==0)
    IF 0 ELSE -1 THEN ;
: =             ( n1 n2 -- flag=n1==n2)
    XOR 0= ;
HEX
: 0<            ( n -- flag=n<0)
    80000000 AND IF -1 THEN ;
: <             ( n1 n2 -- flag=n1<n2)
    OVER OVER XOR 80000000 AND IF       ( if signs are different)
      DROP 0< ELSE                      ( then return sign of n1)
      - 0< THEN ;                       ( else return sign of n1-n2)
: >             ( n1 n2 -- flag=n1>n2)
    SWAP < ;
: <=            ( n1 n2 -- flag=n1<=n2)
    OVER OVER < ROT ROT = OR ;
: >=            ( n1 n2 -- flag=n1>=n2)
    SWAP <= ;