@@ -10,16 +10,24 @@ using Base.Math: throw_complex_domainerror
10
10
11
11
# ## Constants
12
12
# π
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
17
21
18
22
# ℯ
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
23
31
24
32
# ## Common Intrinsics
25
33
@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