Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!watmath!clyde!rutgers!seismo!mcnc!philabs!micomvax!musocs!mcgill-vision!mouse From: mouse@mcgill-vision.UUCP Newsgroups: comp.lang.c Subject: Re: fabs(x) vs. (x) < 0 ? -(x) : (x) Message-ID: <642@mcgill-vision.UUCP> Date: Tue, 10-Feb-87 03:33:41 EST Article-I.D.: mcgill-v.642 Posted: Tue Feb 10 03:33:41 1987 Date-Received: Thu, 12-Feb-87 04:04:35 EST References: <4943@mimsy.UUCP> <2550005@hpisod2.HP> <756@unc.unc.UUCP> Organization: McGill University, Montreal Lines: 31 In article <756@unc.unc.UUCP>, steele@unc.UUCP (Oliver Steele) writes: > In article <2550005@hpisod2.HP> decot@hpisod2.HP (Dave Decot) writes: >> #define fabs(X) ((_fabs = (X)), (_fabs < 0? -_fabs : _fabs)) > Beware > fabs(a,fabs(b,c)), > as well as > fabs(a,func(b,c)) > where func is a macro which invokes fabs. fabs(a,fabs(b,c)) -> ((_fabs=(a,((_fabs=(b,c)),(_fabs<0?-_fabs:_fabs)))),(_fabs<0?-_fabs:_fabs)) which looks reliable to me (outer assignment doesn't happen until the inner expression is done). Problem arises with fabs(a)