From ba80acb1168a4adc6e67f6cc85133714ba2ccd1f Mon Sep 17 00:00:00 2001 From: Sam Anthony Date: Tue, 25 Jun 2024 16:27:44 -0400 Subject: logarithm functions --- func.go | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) 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 } -- cgit v1.2.3