summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAndreas Rumpf <rumpf_a@web.de>2015-06-19 16:09:27 +0200
committerAndreas Rumpf <rumpf_a@web.de>2015-06-19 16:09:27 +0200
commit98a13441679bcc2f6414bfdcfe3610ce3ff35d7f (patch)
tree5699f9e5293c1d8523a7951c8ad27d4587010f8f
parent37ff086c86129602c34f660cd4193c9a02273f81 (diff)
parentc0c4a7d6a649e9934530364893228fa65d787991 (diff)
downloadNim-98a13441679bcc2f6414bfdcfe3610ce3ff35d7f.tar.gz
Merge pull request #2957 from apense/patch-7
Added some C99 funcs
-rw-r--r--lib/pure/math.nim18
1 files changed, 18 insertions, 0 deletions
diff --git a/lib/pure/math.nim b/lib/pure/math.nim
index b91c7f0d8..494dfc4c8 100644
--- a/lib/pure/math.nim
+++ b/lib/pure/math.nim
@@ -161,6 +161,8 @@ proc randomize*(seed: int) {.benign.}
 when not defined(JS):
   proc sqrt*(x: float): float {.importc: "sqrt", header: "<math.h>".}
     ## computes the square root of `x`.
+  proc cbrt*(x: float): float {.importc: "cbrt", header: "<math.h>".}
+    ## computes the cubic root of `x`
   
   proc ln*(x: float): float {.importc: "log", header: "<math.h>".}
     ## computes ln(x).
@@ -200,6 +202,16 @@ when not defined(JS):
   proc tanh*(x: float): float {.importc: "tanh", header: "<math.h>".}
   proc pow*(x, y: float): float {.importc: "pow", header: "<math.h>".}
     ## computes x to power raised of y.
+  
+  proc erf*(x: float): float {.importc: "erf", header: "<math.h>".}
+    ## The error function
+  proc erfc*(x: float): float {.importc: "erfc", header: "<math.h>".}
+    ## The complementary error function
+  
+  proc lgamma*(x: float): float {.importc: "lgamma", header: "<math.h>".}
+    ## Natural log of the gamma function
+  proc tgamma*(x: float): float {.importc: "tgamma", header: "<math.h>".}
+    ## The gamma function
     
   # C procs:
   when defined(vcc):
@@ -411,3 +423,9 @@ when isMainModule and not defined(JS):
   # Check for no side effect annotation
   proc mySqrt(num: float): float {.noSideEffect.} =
     return sqrt(num)
+  
+  # check gamma function
+  assert(tgamma(5.0) == 24.0) # 4!
+  assert(lgamma(1.0) == 0.0) # ln(1.0) == 0.0
+  assert(erf(6.0) > erf(5.0))
+  assert(erfc(6.0) < erfc(5.0))