using scalar(T) type, to carry over precision