I was getting ginormous values like 1.6...E30 and the like. Since I'm using exp(...) to generate them, I never have nice integers to play with, so I doubt they form perfect squares or such. But I'm not current on things like that, so I could be wrong.
It sounds like my method will not help you in this case. I have used it in solving triangles. I want $b=sqrt($c**2-$a**2). The mathematically equivalent statement $b=sqrt(($c+$a)*($c-$a)) allocates almost twice as many bits for the subtraction. Not knowing this simple trick added weeks of effort to my first real FORTRAN program.