use double for float arguments to safe heap