diff options
author | apense <apense@users.noreply.github.com> | 2015-06-18 16:07:00 -0400 |
---|---|---|
committer | apense <apense@users.noreply.github.com> | 2015-06-18 16:07:00 -0400 |
commit | c0c4a7d6a649e9934530364893228fa65d787991 (patch) | |
tree | d0bbb2eb794a98685b457e31e5e27cdc52884eec | |
parent | 29b09a3c7d825cda6dad7c5d4030f752de266190 (diff) | |
download | Nim-c0c4a7d6a649e9934530364893228fa65d787991.tar.gz |
Added some C99 funcs
Error function (and complementary) and gamma function (and truncated)
-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)) |