code: @Pure
  	public boolean epsilonEquals(Quaternion t1, double epsilon) {
  		double diff;
  
  		diff = this.x - t1.getX();
  		if(Double.isNaN(diff)) return false;
  		if((diff<0?-diff:diff) > epsilon) return false;
  
  		diff = this.y - t1.getY();
  		if(Double.isNaN(diff)) return false;
  		if((diff<0?-diff:diff) > epsilon) return false;
  
  		diff = this.z - t1.getZ();
  		if(Double.isNaN(diff)) return false;
  		if((diff<0?-diff:diff) > epsilon) return false;
  
  		diff = this.w - t1.getW();
  		if(Double.isNaN(diff)) return false;
  		if((diff<0?-diff:diff) > epsilon) return false;
  
  		return true;
  	}
docs: Returns true if the L-infinite distance between this tuple
  and tuple t1 is less than or equal to the epsilon parameter,
  otherwise returns false.  The L-infinite
  distance is equal to MAX[abs(x1-x2), abs(y1-y2)].
  @param t1  the tuple to be compared to this tuple
  @param epsilon  the threshold value
  @return  true or false