summary refs log tree commit diff stats
path: root/lib/pure
diff options
context:
space:
mode:
authorKoki Fushimi <paalon1936@gmail.com>2018-06-04 16:48:11 +0900
committerKoki Fushimi <paalon1936@gmail.com>2018-06-04 16:48:11 +0900
commitabf8ee049a00676e2b45faaf79b5eff44f20f467 (patch)
treec0ee2b7359967e331d0b9b1f0e770b53254acc7a /lib/pure
parentf849db1c5c38a36c32628e3e95f3e9e8cee55d20 (diff)
downloadNim-abf8ee049a00676e2b45faaf79b5eff44f20f467.tar.gz
Broaden the argument types
Diffstat (limited to 'lib/pure')
-rw-r--r--lib/pure/math.nim7
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/pure/math.nim b/lib/pure/math.nim
index cd7bf5fe2..9cadfb6b7 100644
--- a/lib/pure/math.nim
+++ b/lib/pure/math.nim
@@ -148,8 +148,13 @@ else: # JS
   proc ln*(x: float32): float32 {.importc: "Math.log", nodecl.}
   proc ln*(x: float64): float64 {.importc: "Math.log", nodecl.}
 
-proc log*[T: SomeFloat](b, x: T): T = ln(x) / ln(b)
+proc log*[B, X: SomeFloat](b: B, x: X): auto =
   ## Computes the logarithm base ``b`` of ``x``
+  when B is float64 or X is float64
+    var r: float64
+  else:
+    var r: float32
+  result = ln(x) / ln(b)
 
 when not defined(JS): # C
   proc log10*(x: float32): float32 {.importc: "log10f", header: "<math.h>".}