This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
import math,strutils
|
||||
|
||||
proc fixedWidth(input: string, minFieldSize: int):string {.inline.} =
|
||||
# Note that field size is a minimum- will expand field if input
|
||||
# string is larger
|
||||
if input.startsWith("-"):
|
||||
return(input & repeatchar(count=(abs(minFieldSize-len(input))),c=' '))
|
||||
else:
|
||||
return(" " & input & repeatchar(count=(abs(minFieldSize-len(input))-1),c=' '))
|
||||
|
||||
template mathOnInterval(lowbound,highbound:float,counts: int,p:proc) =
|
||||
block:
|
||||
var step: float = (highbound - lowbound)/(max(counts,1))
|
||||
var current: float = lowbound
|
||||
while current < highbound:
|
||||
echo($fixedWidth($current,25) & ": " & $fixedWidth($p(current),25))
|
||||
current += step
|
||||
|
||||
echo "Sine of theta from 0 to 2*PI by PI/12"
|
||||
mathOnInterval(0.0,2.0*PI,12,sin)
|
||||
echo("\n")
|
||||
echo "Cosine of theta from 0 to 2*PI by PI/12"
|
||||
mathOnInterval(0.0,2.0*PI,12,cos)
|
||||
|
||||
# The first example above is much the same as:
|
||||
# for i in 1..100:
|
||||
# echo($sin( (float(i)/100.0) * 2.0*PI ))
|
||||
Reference in New Issue
Block a user