revert optimization, due to erronous calculation with single precision, which also may happen with double precision, but i`m not sure