diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2015-06-19 16:09:27 +0200 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2015-06-19 16:09:27 +0200 |
commit | 98a13441679bcc2f6414bfdcfe3610ce3ff35d7f (patch) | |
tree | 5699f9e5293c1d8523a7951c8ad27d4587010f8f | |
parent | 37ff086c86129602c34f660cd4193c9a02273f81 (diff) | |
parent | c0c4a7d6a649e9934530364893228fa65d787991 (diff) | |
download | Nim-98a13441679bcc2f6414bfdcfe3610ce3ff35d7f.tar.gz |
Merge pull request #2957 from apense/patch-7
Added some C99 funcs
-rw-r--r-- | lib/pure/math.nim | 18 |
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)) |