now have separate constructors for float, double, real
templatized floating point constructor