|  | @@ -110,16 +110,14 @@ public class LispEval {
 | 
	
		
			
				|  |  |  			switch(lisp.size()) {				
 | 
	
		
			
				|  |  |  				case 1:
 | 
	
		
			
				|  |  |  					LispElement elt = LispElement.getElement(lisp.car());
 | 
	
		
			
				|  |  | -					if(elt.value.getClass() == Double.class) {
 | 
	
		
			
				|  |  | -						//return LispElement.generate(elt.toNumber() * -1); //Pb pitest qui remplace * par / or *-1 == /-1
 | 
	
		
			
				|  |  | -						double value = elt.toNumber();
 | 
	
		
			
				|  |  | -						return LispElement.generate(value - (value * 2));
 | 
	
		
			
				|  |  | +					if(elt.isNumber()) {
 | 
	
		
			
				|  |  | +						return LispElement.generate(elt.toNumber() * -1); //Pb pitest qui remplace * par / or *-1 == /-1
 | 
	
		
			
				|  |  |  					}
 | 
	
		
			
				|  |  |  					return LispElement.generate(elt.toInt().multiply(new BigInteger("-1")));
 | 
	
		
			
				|  |  |  				case 2:
 | 
	
		
			
				|  |  |  					LispElement elt1 = LispElement.getElement(lisp.car());
 | 
	
		
			
				|  |  |  					LispElement elt2 = LispElement.getElement(lisp.cdr().car());
 | 
	
		
			
				|  |  | -					if(elt1.value.getClass() == Double.class || elt2.value.getClass() == Double.class) {
 | 
	
		
			
				|  |  | +					if(elt1.isNumber() || elt2.isNumber()) {
 | 
	
		
			
				|  |  |  						return LispElement.generate(elt1.toNumber() - elt2.toNumber());
 | 
	
		
			
				|  |  |  					}
 | 
	
		
			
				|  |  |  					return LispElement.generate(elt1.toInt().subtract(elt2.toInt()));
 | 
	
	
		
			
				|  | @@ -136,11 +134,21 @@ public class LispEval {
 | 
	
		
			
				|  |  |  			if(elt2.toNumber() == 0) {
 | 
	
		
			
				|  |  |  				throw new LispError("Division by zero");
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  | -			if(elt1.value.getClass() == Double.class || elt2.value.getClass() == Double.class) {
 | 
	
		
			
				|  |  | +			if(elt1.isNumber() || elt2.isNumber()) {
 | 
	
		
			
				|  |  |  				return LispElement.generate(elt1.toNumber() / elt2.toNumber());
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  			return LispElement.generate(elt1.toInt().divide(elt2.toInt()));
 | 
	
		
			
				|  |  |  		});
 | 
	
		
			
				|  |  | +		operators.put("abs", (op, lisp) -> {
 | 
	
		
			
				|  |  | +			if(lisp.size() != 1) {
 | 
	
		
			
				|  |  | +				throw new LispError(LispError.ERR_NUM_ARG);
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +			LispElement le = LispElement.getElement(lisp.car());
 | 
	
		
			
				|  |  | +			if(le.isInt()) {
 | 
	
		
			
				|  |  | +				return LispElement.generate(le.toInt().abs());
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +			return LispElement.generate(Math.abs(le.toNumber()));
 | 
	
		
			
				|  |  | +		});
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	private Object lispElt = null;
 |