def *(rhs)
      Util3D.check_arg_type(Quat, rhs)

      pw = self.w; px = self.x; py = self.y; pz = self.z;
      qw = rhs.w ; qx = rhs.x ; qy = rhs.y ; qz = rhs.z;

      w = pw * qw - px * qx - py * qy - pz * qz
      x = pw * qx + px * qw + py * qz - pz * qy
      y = pw * qy - px * qz + py * qw + pz * qx
      z = pw * qz + px * qy - py * qx + pz * qw
      return Quat.new( x,y,z,w )
    end
def *(rhs)
      Util3D.check_arg_type(Quat, rhs)

      pw = self.w; px = self.x; py = self.y; pz = self.z;
      qw = rhs.w ; qx = rhs.x ; qy = rhs.y ; qz = rhs.z;

      w = pw * qw - px * qx - py * qy - pz * qz
      x = pw * qx + px * qw + py * qz - pz * qy
      y = pw * qy - px * qz + py * qw + pz * qx
      z = pw * qz + px * qy - py * qx + pz * qw
      return Quat.new( x,y,z,w )
    end
[Input]
  _rsh_ should be Quat.
 [Output]
  return (outer products) multiplyed result as Quat.