|
1 | 1 | __precompile__()
|
2 | 2 | module NaNMath
|
3 | 3 |
|
| 4 | +const libm = Base.libm_name |
| 5 | + |
4 | 6 | for f in (:sin, :cos, :tan, :asin, :acos, :acosh, :atanh, :log, :log2, :log10,
|
5 | 7 | :lgamma, :log1p)
|
6 | 8 | @eval begin
|
7 |
| - ($f)(x::Float64) = ccall(($(string(f)),Base.Math.libm), Float64, (Float64,), x) |
8 |
| - ($f)(x::Float32) = ccall(($(string(f,"f")),Base.Math.libm), Float32, (Float32,), x) |
| 9 | + ($f)(x::Float64) = ccall(($(string(f)),libm), Float64, (Float64,), x) |
| 10 | + ($f)(x::Float32) = ccall(($(string(f,"f")),libm), Float32, (Float32,), x) |
9 | 11 | ($f)(x::Real) = ($f)(float(x))
|
10 | 12 | function ($f)(x::AbstractArray{T}) where T<:Number
|
11 | 13 | Base.depwarn("$f{T<:Number}(x::AbstractArray{T}) is deprecated, use $f.(x) instead.", $f)
|
|
19 | 21 | sqrt(x::Real) = x < 0.0 ? NaN : Base.sqrt(x)
|
20 | 22 |
|
21 | 23 | # Don't override built-in ^ operator
|
22 |
| -pow(x::Float64, y::Float64) = ccall((:pow,Base.Math.libm), Float64, (Float64,Float64), x, y) |
23 |
| -pow(x::Float32, y::Float32) = ccall((:powf,Base.Math.libm), Float32, (Float32,Float32), x, y) |
| 24 | +pow(x::Float64, y::Float64) = ccall((:pow,libm), Float64, (Float64,Float64), x, y) |
| 25 | +pow(x::Float32, y::Float32) = ccall((:powf,libm), Float32, (Float32,Float32), x, y) |
24 | 26 | pow(x::Number,y::Number) = pow(float(x),float(y))
|
25 | 27 |
|
26 | 28 | """
|
|
0 commit comments