This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Creating imaginary inf/nan in GCC
- From: "Kaveh R. GHAZI" <ghazi at caip dot rutgers dot edu>
- To: gcc at gcc dot gnu dot org
- Date: Thu, 29 Jan 2009 11:01:24 -0500 (EST)
- Subject: Creating imaginary inf/nan in GCC
Hi,
I'm trying to create complex number expressions that contain inf or nan in
the imaginary part. I.e. (0 + inf I) or (0 + nan I).
However when I write (_builtin_nan("") * 1.0i) I get (nan + nan I). For
(__builtin_inf() * 1.0i) I get (nan + inf I).
I don't think these results are a bug, rather it's just an artifact of the
way complex multiplcation is done and having these special values in
there. I had a similar problem getting negative zeros in the imaginary
part, but I solved that using conj(0.0) and conj(-0.0). I don't think
conj helps for inf/nan though.
I know I can simply use a complex variable and set the real/imag parts
separately, but I want a constant expression which I can pass as an
argument to a builtin complex math function for writing testcases that
fold (or not) and compile-time.
Is there a way to get an imaginary inf or nan expression without having
the real part get changed?
Thanks,
--Kaveh
--
Kaveh R. Ghazi ghazi@caip.rutgers.edu