add euclidean function