|  | @@ -110,17 +110,17 @@ public class LispEval {
 | 
	
		
			
				|  |  |  			switch(lisp.size()) {				
 | 
	
		
			
				|  |  |  				case 1:
 | 
	
		
			
				|  |  |  					LispElement elt = LispElement.getElement(lisp.car());
 | 
	
		
			
				|  |  | -					if(elt.isNumber()) {
 | 
	
		
			
				|  |  | -						return LispElement.generate(elt.toNumber() * -1); //Pb pitest qui remplace * par / or *-1 == /-1
 | 
	
		
			
				|  |  | +					if(elt.isInt()) {
 | 
	
		
			
				|  |  | +						return LispElement.generate(elt.toInt().multiply(new BigInteger("-1")));
 | 
	
		
			
				|  |  |  					}
 | 
	
		
			
				|  |  | -					return LispElement.generate(elt.toInt().multiply(new BigInteger("-1")));
 | 
	
		
			
				|  |  | +					return LispElement.generate(elt.toNumber() * -1); //Pb pitest qui remplace * par / or *-1 == /-1
 | 
	
		
			
				|  |  |  				case 2:
 | 
	
		
			
				|  |  |  					LispElement elt1 = LispElement.getElement(lisp.car());
 | 
	
		
			
				|  |  |  					LispElement elt2 = LispElement.getElement(lisp.cdr().car());
 | 
	
		
			
				|  |  | -					if(elt1.isNumber() || elt2.isNumber()) {
 | 
	
		
			
				|  |  | -						return LispElement.generate(elt1.toNumber() - elt2.toNumber());
 | 
	
		
			
				|  |  | +					if(elt1.isInt() && elt2.isInt()) {
 | 
	
		
			
				|  |  | +						return LispElement.generate(elt1.toInt().subtract(elt2.toInt()));
 | 
	
		
			
				|  |  |  					}
 | 
	
		
			
				|  |  | -					return LispElement.generate(elt1.toInt().subtract(elt2.toInt()));
 | 
	
		
			
				|  |  | +					return LispElement.generate(elt1.toNumber() - elt2.toNumber());
 | 
	
		
			
				|  |  |  				default:
 | 
	
		
			
				|  |  |  					throw new LispError(LispError.ERR_NUM_ARG);
 | 
	
		
			
				|  |  |  			}
 | 
	
	
		
			
				|  | @@ -134,10 +134,10 @@ public class LispEval {
 | 
	
		
			
				|  |  |  			if(elt2.toNumber() == 0) {
 | 
	
		
			
				|  |  |  				throw new LispError("Division by zero");
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  | -			if(elt1.isNumber() || elt2.isNumber()) {
 | 
	
		
			
				|  |  | -				return LispElement.generate(elt1.toNumber() / elt2.toNumber());
 | 
	
		
			
				|  |  | +			if(elt1.isInt() && elt2.isInt()) {
 | 
	
		
			
				|  |  | +				return LispElement.generate(elt1.toInt().divide(elt2.toInt()));
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  | -			return LispElement.generate(elt1.toInt().divide(elt2.toInt()));
 | 
	
		
			
				|  |  | +			return LispElement.generate(elt1.toNumber() / elt2.toNumber());
 | 
	
		
			
				|  |  |  		});
 | 
	
		
			
				|  |  |  		operators.put("abs", (op, lisp) -> {
 | 
	
		
			
				|  |  |  			if(lisp.size() != 1) {
 |