EnerJ: approximate data types for safe and general low-power computation