double floating point precision works