add new generation type: double, float