aboutsummaryrefslogtreecommitdiffstats
path: root/func.go
diff options
context:
space:
mode:
authorSam Anthony <sam@samanthony.xyz>2024-06-25 16:27:44 -0400
committerSam Anthony <sam@samanthony.xyz>2024-06-25 16:27:44 -0400
commitba80acb1168a4adc6e67f6cc85133714ba2ccd1f (patch)
tree815d3edb0982993db82a2bf6180629b54df3f0fc /func.go
parente2095de46b5939d6d4cb7256cf699744e6e3bdd8 (diff)
downloadpfc-ba80acb1168a4adc6e67f6cc85133714ba2ccd1f.zip
logarithm functions
Diffstat (limited to 'func.go')
-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
}