Averages/Mean angle: Difference between revisions
Content added Content deleted
No edit summary |
(→{{header|Nim}}: Update code to work with newer versions, remove reimplementations of stdlib functions) |
||
Line 1,232: | Line 1,232: | ||
=={{header|Nim}}== |
=={{header|Nim}}== |
||
{{works with|Nim|0.20.0+}} |
|||
<lang nim>import math, complex |
<lang nim>import math, complex |
||
proc rect(r, phi: float): Complex = (r * cos(phi), sin(phi)) |
|||
proc phase(c: Complex): float = arctan2(c.im, c.re) |
|||
proc radians(x: float): float = (x * Pi) / 180.0 |
|||
proc degrees(x: float): float = (x * 180.0) / Pi |
|||
proc meanAngle(deg: openArray[float]): float = |
proc meanAngle(deg: openArray[float]): float = |
||
var c: Complex |
var c: Complex[float] |
||
for d in deg: |
for d in deg: |
||
c += rect(1.0, |
c += rect(1.0, degToRad(d)) |
||
radToDeg(phase(c / float(deg.len))) |
|||
echo "The 1st mean angle is: ", meanAngle([350.0, 10.0]), " degrees" |
echo "The 1st mean angle is: ", meanAngle([350.0, 10.0]), " degrees" |
||
Line 1,250: | Line 1,245: | ||
echo "The 3rd mean angle is: ", meanAngle([10.0, 20.0, 30.0]), " degrees"</lang> |
echo "The 3rd mean angle is: ", meanAngle([10.0, 20.0, 30.0]), " degrees"</lang> |
||
Output: |
Output: |
||
<pre>The 1st mean angle is: - |
<pre>The 1st mean angle is: -1.614809932057922e-15 degrees |
||
The 2nd mean angle is: -90.0 degrees |
The 2nd mean angle is: -90.0 degrees |
||
The 3rd mean angle is: 20.0 degrees</pre> |
The 3rd mean angle is: 20.0 degrees</pre> |