aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--calculator.go3
-rw-r--r--ui.go2
2 files changed, 4 insertions, 1 deletions
diff --git a/calculator.go b/calculator.go
index d2371b7..fb1fc90 100644
--- a/calculator.go
+++ b/calculator.go
@@ -2,6 +2,7 @@ package main
import (
"fmt"
+ "math"
"strconv"
)
@@ -58,6 +59,8 @@ func parseOp(op byte) (func(lhs *float64, rhs float64), error) {
*lhs = float64(int64(*lhs) % int64(rhs))
}
}, nil
+ case '^':
+ return func(lhs *float64, rhs float64) { *lhs = math.Pow(*lhs, rhs) }, nil
}
return nil, OpError{op}
}
diff --git a/ui.go b/ui.go
index 5996a9c..aedaa6c 100644
--- a/ui.go
+++ b/ui.go
@@ -37,7 +37,7 @@ func (ui UI) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
switch msg.String() {
case "ctrl+c", "Q":
return ui, tea.Quit
- case "+", "-", "*", "/", "%":
+ case "+", "-", "*", "/", "%", "^":
if err := ui.calc.performOp(msg.String()[0]); err != nil {
panic(err)
}