Skip to content

Commit

Permalink
Add more functions, fix exponents
Browse files Browse the repository at this point in the history
  • Loading branch information
MobSlicer152 committed Jan 22, 2024
1 parent c22ec29 commit 5789ae9
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 3 deletions.
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

<groupId>dev.randomcode.calculator</groupId>
<artifactId>calculator</artifactId>
<version>1.0.2-SNAPSHOT</version>
<version>1.1.0-SNAPSHOT</version>
<name>calculator</name>
<url>http://github.com/MobSlicer152/calculator</url>

Expand Down
23 changes: 22 additions & 1 deletion src/main/java/dev/randomcode/calculator/MathFunction.java
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,26 @@ public enum MathFunction {
assert (arguments.length == 1);
return Math.atan(arguments[0]);
}),
LOGNATURAL("Logarithm, base e (ln)", "ln", 1, false, false, false,
(Scanner scanner) -> {
return new Double[] {
Util.getValidDouble(scanner, "Enter the number: ")
};
},
(Double[] arguments) -> {
assert (arguments.length == 1);
return Math.log(arguments[0]);
}),
LOG10("Logarithm, base 10 (log10)", "log10", 1, false, false, false,
(Scanner scanner) -> {
return new Double[] {
Util.getValidDouble(scanner, "Enter the number: ")
};
},
(Double[] arguments) -> {
assert (arguments.length == 1);
return Math.log10(arguments[0]);
}),
// These two are here for ease of both inputting and parsing them
SQUARE_ROOT("Square root (sqrt)", "sqrt", 1, false, false, false,
(Scanner scanner) -> {
Expand Down Expand Up @@ -112,7 +132,8 @@ public enum MathFunction {
private Function<Scanner, Double[]> getInputsFunction;
private Function<Double[], Double> executeFunction;

private MathFunction(String text, String token, int argumentCount, boolean isTrig, boolean takesAngle, boolean givesAngle,
private MathFunction(String text, String token, int argumentCount, boolean isTrig, boolean takesAngle,
boolean givesAngle,
Function<Scanner, Double[]> getInputsFunction, Function<Double[], Double> executeFunction) {
this.text = text;
this.token = token;
Expand Down
15 changes: 14 additions & 1 deletion src/main/java/dev/randomcode/calculator/Parser.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,22 @@ private Expression expression() {

// + and -
private Expression term() {
Expression expression = factor();
Expression expression = exponent();

while (match(Token.ADD, Token.SUBTRACT)) {
Token operator = previous();
Expression right = exponent();
expression = new Expression.Binary(expression, operator, right);
}

return expression;
}

// ^
private Expression exponent() {
Expression expression = factor();

while (match(Token.EXPONENT)) {
Token operator = previous();
Expression right = factor();
expression = new Expression.Binary(expression, operator, right);
Expand Down

0 comments on commit 5789ae9

Please sign in to comment.