Specific float32/float64 procs

I still used generics, but made them choose from `float32` or `float64`. I can rewrite in separate, explicit procs if is wanted
This commit is contained in:
apense 2015-06-24 14:49:15 -04:00
commit bfcbe64778

View file

@ -16,10 +16,6 @@
## Note that the trigonometric functions naturally operate on radians. ## Note that the trigonometric functions naturally operate on radians.
## The helper functions `degToRad` and `radToDeg` provide conversion ## The helper functions `degToRad` and `radToDeg` provide conversion
## between radians and degrees. ## between radians and degrees.
##
## Note that the trigonometric functions naturally operate on radians.
## The helper functions `degToRad` and `radToDeg` provide conversion
## between radians and degrees.
include "system/inclrtl" include "system/inclrtl"
{.push debugger:off .} # the user does not want to trace a part {.push debugger:off .} # the user does not want to trace a part
@ -326,13 +322,13 @@ else:
{.pop.} {.pop.}
proc degToRad*[T](d: T): float {.inline.} = proc degToRad*[T: float32|float64](d: T): T {.inline.} =
## Convert from degrees to radians ## Convert from degrees to radians
result = float(d) * RadPerDeg result = T(d) * RadPerDeg
proc radToDeg*[T](d: T): float {.inline.} = proc radToDeg*[T: float32|float64](d: T): T {.inline.} =
## Convert from radians to degrees ## Convert from radians to degrees
result = float(d) / RadPerDeg result = T(d) / RadPerDeg
proc `mod`*(x, y: float): float = proc `mod`*(x, y: float): float =
result = if y == 0.0: x else: x - y * (x/y).floor result = if y == 0.0: x else: x - y * (x/y).floor