lispval Llessp() { register int typ; /* do the easy cases first */ if(np-lbot == 2) { if((typ=TYPE(lbot->val)) == INT) { if((typ=TYPE(lbot[1].val)) == INT) return((lbot[0].val->i - lbot[1].val->i) < 0 ? tatom : nil); else if(typ == DOUB) return((lbot[0].val->i - lbot[1].val->r) < 0.0 ? tatom : nil); } else if(typ == DOUB) { if((typ=TYPE(lbot[1].val)) == INT) return((lbot[0].val->r - lbot[1].val->i) < 0.0 ? tatom : nil); else if(typ == DOUB) return((lbot[0].val->r - lbot[1].val->r) < 0.0 ? tatom : nil); } } return(cmpx(TRUE)); }
T compare_exchange(const T &cmp, const T &val) { return T( cmpx(static_cast<uint32>(cmp), static_cast<uint32>(val)) ); }