require double precision for GPU