First add. has both single and double percision verison