In this simple calculus, all the results are OK :
program main
real :: x,y,z
x=0.0
y=1/x; print *,y
y=log(x); print *,y
z=0.99; y=z**(1/x); print *,y
z=1.0; y=z**(1/x); print *,y
z=1.01; y=z**(1/x); print *,y
end program main
I found it very convenient. Indeed, if X is an array, I have not to do loop check (e.g. x(i)/=0) on array elements to calculate z**(1/x(i)). But I wonder how far can we trust this kind of calculus ?