On Fri, Jan 17, 2003 at 12:21:33PM -0500, Dan Sugalski wrote: > Sorry this one sat. I want to apply it, but the test patch looks to
On Tue, Jan 14, 2003 at 04:53:25PM +0000, Bernhard Schmalhofer wrote: > For the operator 'abs' I use the functions 'abs()' and 'fabs()' from the > C math library. 'abs()' might be problematic, as it isn't in the C99 > standard, http://std.dkuug.dk/JTC1/SC22/WG14/www/standards. > fabs() is in C89 and C99. ??? Dan, problem, surely? Unless/until we work around things we want being absent. In this case it's more getting the Configure infrastructure in place to probe for the missing functions Secondly, these routines assume that INTVAL is an int (not a long, nor heresy), and that FLOATVAL is a double. I believe we can't make that assumption: > inline op abs( inout INT) { > $1 = abs( $1 ); > goto NEXT(); > } > > inline op abs(inout NUM) { > $1 = fabs( $1 ); > goto NEXT(); > } > > inline op abs(out INT, in INT) { > $1 = abs( $2 ); > goto NEXT(); > } > > inline op abs(out INT, in NUM) { > $1 = (INTVAL)fabs($2); > goto NEXT(); > } > > inline op abs(out NUM, in INT) { > $1 = (FLOATVAL)abs($2); > goto NEXT(); > } > > inline op abs(out NUM, in NUM) { > $1 = fabs( $2 ); > goto NEXT(); > } We'd need more complex code to conditionally use fabs, fabsf, fabsl (or work around absence of fabsf and fabsl), and abs, labs, llabs (and work around the last one being missing) We could make the call that we're not going to work around missing long double functions - if you ain't got 'em, we refuse to Configure for that size. Given that if you don't have fabsl, you probably don't have more tricky functions such as sqrtl, modfl or atan2l Nicholas Clark