aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--func.go33
1 files changed, 33 insertions, 0 deletions
diff --git a/func.go b/func.go
index bc8a0bc..d0cd11e 100644
--- a/func.go
+++ b/func.go
@@ -20,6 +20,12 @@ func parseFunction(fn string) func(*Calculator) {
return fac
case "ch": // choose
return combination
+ case "log10":
+ return log10
+ case "log2":
+ return log2
+ case "ln":
+ return ln
}
return nil
}
@@ -150,6 +156,33 @@ func factorial(n uint) uint {
return n
}
+// decimal logarithm.
+func log10(c *Calculator) {
+ x, err := c.stack.pop()
+ if err != nil {
+ return
+ }
+ c.stack.push(math.Log10(x))
+}
+
+// binary logarithm.
+func log2(c *Calculator) {
+ x, err := c.stack.pop()
+ if err != nil {
+ return
+ }
+ c.stack.push(math.Log2(x))
+}
+
+// natural logarithm.
+func ln(c *Calculator) {
+ x, err := c.stack.pop()
+ if err != nil {
+ return
+ }
+ c.stack.push(math.Log(x))
+}
+
func isUint(n float64) bool {
return float64(uint(n)) == n
}