@Override
	public boolean equals( Object toCompare ) {
		
		//only deal with PolynomialTerm comparison
		if ( toCompare instanceof PolynomialTerm ) {
			
			//check for equaling to zero
			if ( toCompare instanceof Numerical ) {
				if ( toCompare.equals( Numerical.ZERO ) ) {
					for ( Monomial aTerm : this.m_numerator ) {
						if ( aTerm.equals( Numerical.ZERO ) ) {
							return true;
						}
					}
					return this.m_numerator.size() == 0;
				}
				if ( toCompare.equals( Numerical.ONE ) ) {
					return this.m_numerator.equals( Numerical.ONE.getNumerator() );
				}
			}
			
			PolynomialTerm polynomialToCompare = ( PolynomialTerm ) toCompare;
			
			//make sure numerators are the same
			if ( this.getNumerator().equals( polynomialToCompare.getNumerator() ) ) {
				
				//continue
				
			} else {
				return false;
			}
			
			//make sure denominators are the same
			if ( this.getDenominator().equals( polynomialToCompare.getDenominator() ) ) {
				
				//continue
				
			} else {
				return false;
			}
			
			//make sure exponents are the same
			if ( this.getPolynomialTermExponent().equals( polynomialToCompare.getPolynomialTermExponent() ) ) {
				
				//continue
				
			} else {
				return false;
			}
			
			//if all conditions satisfied, then the two PolynomialTerms are equal
			return true;
		} else {
			return super.equals( toCompare );
		}
	}