Skip to content

Commit

Permalink
Use new rounding syntax (multiple dispatch) for CRlibm functions
Browse files Browse the repository at this point in the history
  • Loading branch information
dpsanders committed Sep 13, 2015
1 parent caa8221 commit 46ee706
Showing 1 changed file with 16 additions and 11 deletions.
27 changes: 16 additions & 11 deletions crlibm_examples/CRlibm.jl
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,23 @@ import Base:

export cos

function cos(x::Float64, rounding_mode::RoundingMode)
if rounding_mode == RoundDown
c = ccall((:cos_rd, "crlibm"), Float64, (Float64,), x)
elseif rounding_mode == RoundUp
c = ccall((:cos_ru, "crlibm"), Float64, (Float64,), x)
elseif rounding_mode == RoundNearest
c = ccall((:cos_rn, "crlibm"), Float64, (Float64,), x)
end
c
end

cos(x::Float64) = cos(x, get_rounding(Float64))
# function cos(x::Float64, rounding_mode::RoundingMode)
# if rounding_mode == RoundDown
# c = ccall((:cos_rd, "crlibm"), Float64, (Float64,), x)
# elseif rounding_mode == RoundUp
# c = ccall((:cos_ru, "crlibm"), Float64, (Float64,), x)
# elseif rounding_mode == RoundNearest
# c = ccall((:cos_rn, "crlibm"), Float64, (Float64,), x)
# end
# c
# end

cos(x::Float64, ::RoundingMode{:Up}) = ccall((:cos_ru, "crlibm"), Float64, (Float64,), x)
cos(x::Float64, ::RoundingMode{:Down}) = ccall((:cos_rd, "crlibm"), Float64, (Float64,), x)
cos(x::Float64, ::RoundingMode{:Nearest}) = ccall((:cos_rn, "crlibm"), Float64, (Float64,), x)



end

Expand Down

0 comments on commit 46ee706

Please sign in to comment.