BeginPackage["Normalize`"] Normalize::usage = " Normalize[x] returns a unit vector parallel to x,\n which should have head List. If x=0 it returns Null.\n Normalize[x,r] returns a vector of length r parallel to x." Begin["`private`"] Normalize::zero = "Cannot normalize ``" Normalize[x_List] := Message[Normalize::zero,Null] /; x.Conjugate[x]==0 Normalize[x_List] := x/Sqrt[x.Conjugate[x]] Normalize[x_List,r_] := r Normalize[x] End[] EndPackage[]