As your code stands now, your variables are handled solely by perl's own internal representation, and aren't converted into bigints until the very last minute, after the exponentation and multiplication. At that point it is too late to preserve the extra tens of digits that you want, because they aren't there to be preserved.
in reply to Re^2: Misunderstanding with Math::BigInt
in thread Misunderstanding with Math::BigInt
Convert your $out, $driver, and $grade variables to bigints before you do any exponentation and multiplying.
By the way, don't you mean to use Math::BigFloat instead?