@@ -10,16 +10,24 @@ using Base.Math: throw_complex_domainerror
1010
1111# ## Constants
1212# π
13- @device_override Core. Float32 (:: typeof (π), :: RoundingMode ) = reinterpret (Float32, 0x40490fdb ) # 3.1415927f0 reinterpret(UInt32,Float32(reinterpret(Float64,0x400921FB60000000)))
14- @device_override Core. Float32 (:: typeof (π), :: RoundingMode{:Down} ) = reinterpret (Float32, 0x40490fda ) # 3.1415925f0 prevfloat(reinterpret(UInt32,Float32(reinterpret(Float64,0x400921FB60000000))))
15- @device_override Core. Float16 (:: typeof (π), :: RoundingMode{:Up} ) = reinterpret (Float16, 0x4249 ) # Float16(3.143)
16- @device_override Core. Float16 (:: typeof (π), :: RoundingMode ) = reinterpret (Float16, 0x4248 ) # Float16(3.14)
13+ const M_PI_F = Float32 (reinterpret (Float64, 0x400921FB60000000 ))
14+ const M_PI_H = reinterpret (Float16, 0x4248 )
15+ @eval begin
16+ @device_override Core. Float32 (:: typeof (π), :: RoundingMode ) = $ M_PI_F
17+ @device_override Core. Float32 (:: typeof (π), :: RoundingMode{:Down} ) = $ (prevfloat (M_PI_F))
18+ @device_override Core. Float16 (:: typeof (π), :: RoundingMode{:Up} ) = $ (nextfloat (M_PI_H))
19+ @device_override Core. Float16 (:: typeof (π), :: RoundingMode ) = $ M_PI_H
20+ end
1721
1822# ℯ
19- @device_override Core. Float32 (:: typeof (ℯ), :: RoundingMode{:Up} ) = reinterpret (Float32, 0x402df855 ) # 2.718282f0 nextfloat(reinterpret(UInt32,Float32(reinterpret(Float64,0x4005BF0A80000000))))
20- @device_override Core. Float32 (:: typeof (ℯ), :: RoundingMode ) = reinterpret (Float32, 0x402df854 ) # 2.7182817f0 reinterpret(UInt32,Float32(reinterpret(Float64,0x4005BF0A80000000)))
21- @device_override Core. Float16 (:: typeof (ℯ), :: RoundingMode ) = reinterpret (Float16, 0x4170 ) # Float16(2.719)
22- @device_override Core. Float16 (:: typeof (ℯ), :: RoundingMode{:Down} ) = reinterpret (Float16, 0x416f ) # Float16(2.717)
23+ const M_E_F = Float32 (reinterpret (Float64, 0x4005BF0A80000000 ))
24+ const M_E_H = reinterpret (Float16, 0x4170 )
25+ @eval begin
26+ @device_override Core. Float32 (:: typeof (ℯ), :: RoundingMode{:Up} ) = $ (nextfloat (M_E_F))
27+ @device_override Core. Float32 (:: typeof (ℯ), :: RoundingMode ) = $ M_E_F
28+ @device_override Core. Float16 (:: typeof (ℯ), :: RoundingMode ) = $ M_E_H
29+ @device_override Core. Float16 (:: typeof (ℯ), :: RoundingMode{:Down} ) = $ (prevfloat (M_E_H))
30+ end
2331
2432# ## Common Intrinsics
2533@device_function clamp_fast (x:: Float32 , minval:: Float32 , maxval:: Float32 ) = ccall (" extern air.fast_clamp.f32" , llvmcall, Cfloat, (Cfloat, Cfloat, Cfloat), x, minval, maxval)
0 commit comments