Double Precison working version