11# Math Functions
22
33# TODO : vector types
4- const generic_types = [Float32,Float64]
4+ const generic_types = [Float16, Float32, Float64]
55const generic_types_float = [Float32]
66const generic_types_double = [Float64]
77
@@ -151,11 +151,13 @@ end
151151# frexp(x::Float64{n}, Int32{n} *exp) = @builtin_ccall("frexp", Float64{n}, (Float64{n}, Int32{n} *), x, exp)
152152# frexp(x::Float64, Int32 *exp) = @builtin_ccall("frexp", Float64, (Float64, Int32 *), x, exp)
153153
154+ @device_function ilogb(x:: Float16 ) = @builtin_ccall(" ilogb" , Int32, (Float16,), x)
154155# ilogb(x::Float32{n}) = @builtin_ccall("ilogb", Int32{n}, (Float32{n},), x)
155156@device_function ilogb(x:: Float32 ) = @builtin_ccall(" ilogb" , Int32, (Float32,), x)
156157# ilogb(x::Float64{n}) = @builtin_ccall("ilogb", Int32{n}, (Float64{n},), x)
157158@device_function ilogb(x:: Float64 ) = @builtin_ccall(" ilogb" , Int32, (Float64,), x)
158159
160+ @device_override Base. ldexp(x:: Float16 , k:: Int32 ) = @builtin_ccall(" ldexp" , Float16, (Float16, Int32), x, k)
159161# ldexp(x::Float32{n}, k::Int32{n}) = @builtin_ccall("ldexp", Float32{n}, (Float32{n}, Int32{n}), x, k)
160162# ldexp(x::Float32{n}, k::Int32) = @builtin_ccall("ldexp", Float32{n}, (Float32{n}, Int32), x, k)
161163@device_override Base. ldexp(x:: Float32 , k:: Int32 ) = @builtin_ccall(" ldexp" , Float32, (Float32, Int32), x, k)
@@ -168,11 +170,13 @@ end
168170# lgamma_r(x::Float64{n}, Int32{n} *signp) = @builtin_ccall("lgamma_r", Float64{n}, (Float64{n}, Int32{n} *), x, signp)
169171# Float64 lgamma_r(x::Float64, Int32 *signp) = @builtin_ccall("lgamma_r", Float64, (Float64, Int32 *), x, signp)
170172
173+ @device_function nan(nancode:: UInt16 ) = @builtin_ccall(" nan" , Float16, (UInt16,), nancode)
171174# nan(nancode::uintn) = @builtin_ccall("nan", Float32{n}, (uintn,), nancode)
172175@device_function nan(nancode:: UInt32 ) = @builtin_ccall(" nan" , Float32, (UInt32,), nancode)
173176# nan(nancode::UInt64{n}) = @builtin_ccall("nan", Float64{n}, (UInt64{n},), nancode)
174177@device_function nan(nancode:: UInt64 ) = @builtin_ccall(" nan" , Float64, (UInt64,), nancode)
175178
179+ @device_override Base.:(^ )(x:: Float16 , y:: Int32 ) = @builtin_ccall(" pown" , Float16, (Float16, Int32), x, y)
176180# pown(x::Float32{n}, y::Int32{n}) = @builtin_ccall("pown", Float32{n}, (Float32{n}, Int32{n}), x, y)
177181@device_override Base.:(^ )(x:: Float32 , y:: Int32 ) = @builtin_ccall(" pown" , Float32, (Float32, Int32), x, y)
178182# pown(x::Float64{n}, y::Int32{n}) = @builtin_ccall("pown", Float64{n}, (Float64{n}, Int32{n}), x, y)
0 commit comments