has small bug in float & double of IMP.