added floating-point math