# File lib/facets/more/quaternion.rb, line 290
  def round_D4
    # round to D4 lattice
    r1=@re.round; a1=@im.round; b1=@jm.round; c1=@km.round;
    q1=Quaternion(r1,a1,b1,c1); d1=(q1-self).abs2
    if d1<=1/4; return q1; end
    if @re<r1; r2=r1-1/2; else r2=r1+1/2; end
    if @im<r1; a2=a1-1/2; else a2=a1+1/2; end
    if @jm<r1; b2=b1-1/2; else b2=b1+1/2; end
    if @km<r1; c2=c1-1/2; else c2=c1+1/2; end
    q2=Quaternion(r2,a2,b2,c2); d2=(q2-self).abs2
    if d1<=d2; return q1; else return q2; end
  end