Well, we don't really need the code. The OP demonstrates only 8 digits of precision. That's a Single. The OP wants 16 digits of precision. That's a Double.
Apparently, the OP is trying to use doubles everywhere, but has a single somewhere, whether as a constant, or an intermediate result or variable. Math is hard. Looking at the WallOfCode, and trying to peer past the VB....t,u.v are defined as singles, which is where the precision is lost. But we didn't need to see the code, just needed to remind the OP to read http://msdn.microsoft.com/en-us/library/system.single.aspx and http://msdn.microsoft.com/en-us/library/system.double.aspx a bit more carefully.
