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, radians(d))
c += rect(1.0, degToRad(d))
degrees(phase(c / float(deg.len)))
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: -2.745176884498468e-14 degrees
<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>