[Libclc-dev] [PATCH] Add definition for M_PI_F v2
Jan Vesely
jan.vesely at rutgers.edu
Tue Mar 11 11:15:22 PDT 2014
On Tue, 2014-03-11 at 10:50 -0700, Matt Arsenault wrote:
> On 03/11/2014 08:38 AM, Tom Stellard wrote:
> > v2:
> > - Use a hexadecimal constant.
> > ---
> > generic/include/clc/float/definitions.h | 11 +++++++++++
> > 1 file changed, 11 insertions(+)
> >
> > diff --git a/generic/include/clc/float/definitions.h b/generic/include/clc/float/definitions.h
> > index e6ef1d8..a6c947f 100644
> > --- a/generic/include/clc/float/definitions.h
> > +++ b/generic/include/clc/float/definitions.h
> > @@ -9,6 +9,17 @@
> > #define FLT_MIN 0x1.0p-126f
> > #define FLT_EPSILON 0x1.0p-23f
> >
> > +_CLC_INLINE static float m_pi_f() {
> > + union {
> > + unsigned i;
> > + float f;
> > + } pi;
> > + pi.i = 0x40490fdb;
> > + return pi.f;
> > +}
> > +
> > +#define M_PI_F m_pi_f()
> > +
> > #ifdef cl_khr_fp64
> >
> > #define DBL_DIG 15
> I think this is technically undefined behavior that everyone violates.
type-punning is afaik legal in c99 (implementation defined in c89),
"man gcc" includes an example same as this use-case
quick search gives this:
http://www.open-std.org/jtc1/sc22/wg14/www/docs/dr_283.htm
although I'd ask the same question as Jeroen,
what's wrong with 3.14159274101257f ?
regards,
> If you want the hex constant, you could use the format that comes out of
> the %a format specifier:
>
> float cast = M_PI;
> printf("M_PI %a\n", M_PI);
> printf("M_PI cast float: %a\n", cast);
>
> Gives me:
>
> M_PI 0x1.921fb54442d18p+1
> M_PI cast float: 0x1.921fb6p+1
>
>
>
>
> _______________________________________________
> Libclc-dev mailing list
> Libclc-dev at pcc.me.uk
> http://www.pcc.me.uk/cgi-bin/mailman/listinfo/libclc-dev
--
Jan Vesely <jan.vesely at rutgers.edu>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part
URL: <http://lists.llvm.org/pipermail/libclc-dev/attachments/20140311/c9f8fa7f/attachment.sig>
More information about the Libclc-dev
mailing list