erfinv(x::BigFloat) not defined, but says to be depreciated


#1
               _
   _       _ _(_)_     |  A fresh approach to technical computing
  (_)     | (_) (_)    |  Documentation: https://docs.julialang.org
   _ _   _| |_  __ _   |  Type "?help" for help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 0.6.0 (2017-06-19 13:05 UTC)
 _/ |\__'_|_|_|\__'_|  |  Official http://julialang.org/ release
|__/                   |  x86_64-apple-darwin13.4.0

julia> Pkg.update()
INFO: Updating METADATA...
INFO: Computing changes...
INFO: No packages to install, update or remove

julia> using SpecialFunctions

julia> erfinv(BigFloat(0.1))
ERROR: erfinv(1.000000000000000055511151231257827021181583404541015625000000000000000000000000e-01,) has been moved to the package SpecialFunctions.jl.
Run Pkg.add("SpecialFunctions") to install SpecialFunctions on Julia v0.6 and later,
and then run `using SpecialFunctions`.
Stacktrace:
 [1] erfinv(::BigFloat) at ./deprecated.jl:1294

This error is misleading. The problem is that erfinv(x::BigFloat) is not defined, not that it has been moved.

julia> @which erfinv(BigFloat(0.1))
erfinv(args...) in Base at deprecated.jl:1294

Wouldn’t it be more sensible, that depreciated.jl defines only those methods of erfinv that have been implemented?


#2

You are right, the function for BigFloat is not defined. Can you please file an issue at SpecialFunctions.jl?


#3

This is an issue with the deprecation in Base, not with the SpecialFunctions package. Typically when we do deprecations like this, we try to be as general as possible to make sure people know that the function was moved, regardless of how they’re trying to use it.

In more recent deprecations like this, I’ve avoided repeating the input so that the message is clearer than the function has moved but not necessarily that the method ever necessarily existed. That is, you’d get ERROR: erfinv has moved rather than ERROR: erfinv(1.000......) has moved. It might be a good idea to change the existing deprecation to that, though I’m not sure whether that’s something that could be backported to 0.6.


#4

Also, if you forget the . notation for arrays, you get the same error about the function being moved instead of a deprecation warning (on 0.6).

erfinv(rand(10))
ERROR: erfinv([0.105557, 0.669202, 0.139597, 0.331199, 0.0114656, 0.125419, 0.932514, 0.748232, 0.231306, 0.145145],) has been moved to the package SpecialFunctions.jl.
Run Pkg.add("SpecialFunctions") to install SpecialFunctions on Julia v0.6 and later,
and then run `using SpecialFunctions`.
Stacktrace:
 [1] #erfinv#802(::Array{Any,1}, ::Function, ::Array{Float64,1}, ::Vararg{Array{Float64,1},N} where N) at ./deprecated.jl:1294
 [2] erfinv(::Array{Float64,1}, ::Vararg{Array{Float64,1},N} where N) at ./deprecated.jl:1294