I have a basic question regarding building functions from symbolic expressions for which I cannot find the answer on the documentation (Symbolic Calculations and Building Callable Functions · Symbolics.jl)

Suppose that I want to build a callable function from a reasonable symbolic expression that happens to have a singularity at a particular point. In ordinary non-symbolic programming I would be able to put a special exception to remove the singularity artificially, so that NaNs did not propagate through the code. I would like to do something similar to the callable function built from a symbolic expression.

For example, let us consider the function f = x/sqrt(x^2 + y^2). There is an undefined point at x = y = 0, and the value of the function there depends on how you approach x = y = 0. If one takes y->0 first, then x->0, the result is f =1, whereas if one takes x->0 then y-> 0 the result is f= 0. I would like to force a choice of limit on this point rather than evaluating 0/0 = NaN.

Output from the Julia REPL below. I would like the final call f(0.0,0.0) = 0.0 rather than NaN. Is there an easy way to build special exceptions into the build_function call? I can wrap if statements around calls to f_callable, but this seems like a dumb solution.

using Symbolics

julia> @variables x y

2-element Vector{Num}:

x

y

julia> f = x/sqrt(x^2 + y^2)

x / sqrt(x^2 + y^2)

julia> f_callable = build_function(f, x, y, expression=Val{false})

julia> f_callable(1.0,1.0)

0.7071067811865475

julia> f_callable(0.0,1.0)

0.0

julia> f_callable(0.0,0.0)

NaN