Bladeren bron

Ajout pow

Arthur Brandao 6 jaren geleden
bovenliggende
commit
573ba23ca0
2 gewijzigde bestanden met toevoegingen van 9 en 0 verwijderingen
  1. 7 0
      src/migl/lisp/LispEval.java
  2. 2 0
      src/migl/lisp/operator/MathOperator.java

+ 7 - 0
src/migl/lisp/LispEval.java

@@ -34,6 +34,7 @@ public class LispEval {
 		operators.put("ceil", new MathOperator());
 		operators.put("floor", new MathOperator());
 		operators.put("log10", new MathOperator());
+		operators.put("cos", new MathOperator());
 		operators.put("quote", (op, lisp) -> {
 			if(lisp.size() != 1) {
 				throw new LispError(LispError.ERR_NUM_ARG);
@@ -154,6 +155,12 @@ public class LispEval {
 			}
 			return LispElement.generate(Math.abs(le.toNumber()));
 		});
+		operators.put("pow", (op, lisp) -> {
+			if(lisp.size() != 2) {
+				throw new LispError(LispError.ERR_NUM_ARG);
+			}
+			return LispElement.generate(Math.pow(LispElement.getElement(lisp.car()).toNumber(), LispElement.getElement(lisp.cdr().car()).toNumber()));
+		});
 	}
 
 	private Object lispElt = null;

+ 2 - 0
src/migl/lisp/operator/MathOperator.java

@@ -22,6 +22,8 @@ public class MathOperator implements LispOperator {
 				return LispElement.generate(Math.floor(elt.toNumber()));
 			case "log10":
 				return LispElement.generate(Math.log10(elt.toNumber()));
+			case "cos":
+				return LispElement.generate(Math.cos(elt.toNumber()));
 			default:
 				throw new LispError(operator + LispError.ERR_UNKNOW);
 		}