Also, beware that in floating-point math, another phenomenon often shows up known as "Loss of significance". Wikipedia has a page describing it. I can't tell with a quick look if your formula will suffere from it, but you may want to look into it.
Basically, it's a problem that arises when you subtract a number from another number of similar magnitude, then multiply it, or square it etc. All of the significant digits get lost in the subtraction, then you multiply the remaining insignificant digits by some meaningful value. The result is just amplified noise, and can be completely meaningless.
I usually perform a check anytime I perform a subtraction (if the result is to be used for other operations). If the difference is less than some percentage of either (or both) of the first two values, then you have to force it to zero. (And do a check for a divide-by-zero if your next step divides.)
There are probably other ways to avoid this problem for specific purposes as well.