Skip to content

Commit 8272782

Browse files
committed
[compiler] Define tan(::Float16) method
Implement this as the poplar compiler does in C++: convert the number to single precision, compute the tangent in single precision, convert back to half precision.
1 parent 4a7c01a commit 8272782

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

src/compiler/runtime.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ Base.rand(T::Type{UInt64}) = ccall("extern _llvm_colossus_urand64", llvmcall, U
6868
# Same, for Float16
6969
@device_override Base.sin(x::Float16) = ccall("llvm.sin.f16", llvmcall, Float16, (Float16,), x)
7070
@device_override Base.cos(x::Float16) = ccall("llvm.cos.f16", llvmcall, Float16, (Float16,), x)
71-
# @device_override Base.tan(x::Float16) = ...
71+
@device_override Base.tan(x::Float16) = Float16(tan(Float32(x)))
7272
@device_override Base.exp(x::Float16) = ccall("llvm.exp.f16", llvmcall, Float16, (Float16,), x)
7373
@device_override Base.exp2(x::Float16) = ccall("llvm.exp2.f16", llvmcall, Float16, (Float16,), x)
7474
@device_override Base.log(x::Float16) = ccall("llvm.log.f16", llvmcall, Float16, (Float16,), x)

0 commit comments

Comments
 (0)