public static AlgebraicParticle add(MixedNumber a, MixedNumber b, RoundingRule round) {
		//if the mixednumbers are negative, make the numbers negative before adding
		Number numA = a.numeral, numB = b.numeral;
		Fraction fracA = a.fraction, fracB = b.fraction;
		if(!a.sign()){numA = numA.cloneWithNewSign(false); fracA = fracA.cloneWithNewSign(false);}
		if(!b.sign()){numB = numB.cloneWithNewSign(false); fracB = fracB.cloneWithNewSign(false);}
		
		//Number numA = a.sign() ? a.numeral : a.numeral.cloneWithNewSign(false);
		//Number numB = b.sign() ? b.numeral : b.numeral.cloneWithNewSign(false);
		//Fraction fracA = 
		
		
		Number sum = Number.add(numA, numB, round);
		Fraction fracSum = Fraction.add(fracA, fracB, round);
		//the sign of the new mixednumber should be the sign of the sum of the two numbers
		boolean sign = sum.sign();
		if (!sum.sign()) sum = sum.cloneWithNewSign(true);
		if (!fracSum.sign()) fracSum = fracSum.cloneWithNewSign(true);
		if (fracSum.getTop().equals(Number.ZERO)) return sum;
		return new MixedNumber(sign, sum, fracSum, 1);
	}