change to double to increase precision
change to double to increase precision
change to double to increase precision