I get absolutely identical results in all cases:

```
julia> d(f,x,y) = f(x,y) - f(big(x),big(y))
julia> f1(x,y) = x/sqrt(y);
julia> f2(x,y) = x*sqrt(1/y);
julia> f3(x,y) = x*(1/sqrt(y));
julia> f4(x,y) = sqrt(x^2/y);
julia> x = rand(); y = rand();
julia> d(f1,x,y) == d(f2,x,y) == d(f3,x,y) == d(f4,x,y)
true
julia> d(f1,x,y)
-4.407656372008221707500556004683899793700299580520962546832391917766617849819689e-18
```

Does that makes sense or are we tricked by something? The lowered codes are not identical.

If we define `x`

and `y`

as `BigFloats`

and convert them back instead in `d`

, then we get a difference:

```
julia> x = rand(BigFloat)
0.9793180540915932364829244784180117806999674427403793663059170823324311264381625
julia> y = rand(BigFloat)
0.3233069578761485009887950171010027218596435775913905575889005425608602252122216
julia> d(f,x,y) = f(Float64(x),Float64(y)) - f(big(x),big(y))
d (generic function with 1 method)
julia> d(f1,x,y)
-9.759393809419778848327739693818875724638531567376830791086116873272363299254071e-17
julia> d(f2,x,y)
1.2445066683083351960144893667997530525361468432623169208913881399493925681857e-16
julia> d(f3,x,y)
-9.759393809419778848327739693818875724638531567376830791086116873272363299254071e-17
julia> d(f4,x,y)
-9.759393809419778848327739693818875724638531567376830791086118600506074318142996e-17
```