Roots of Unity L.J. Dickey At the recent conference, APL89, held in New York, a brief notice was posted on the bulletin board which stated that the first algorithm in ,eLL Quote Quad was one that calculates the N roots of unity, such as the 2 square roots of 1, the 3 cube roots of 1, and so on. The N roots of unity may be thought of as N equally spaced points on a circle of radius 1 whose center is (0, 0), and one of the N points on the circle is the point (1, 0). The notice said that this algorithm appeared in Quote Quad 4/1969 and was submitted by W . J . J o n e s o f Syracuse University: V R R002'3 ~I ROOffS 7 .623~9 .78183 -.22252 .97~93 -.90097 .q3388 -.90097 -.q3388 -.22252 -.97;93 .623;9 -.TB183 1 0 BOOTS 11 .8q125 .5q06~ .g15q2 .90963 -.1;231 .9B982 -.65q86 .75575 -.95999 .28173 -.959~9 -.28173 -.65q86 -.75575 -.1~231 -.98982 .~15~2 [1] V R + 2 1 e.OO2 JV tJV The same algorithm, presented in the newer, and to my eyes preferable, direct definition form, is: ,ROOTS: 2 1 o.O02 w tm .09125 1 -.90963 -.5q06~ and example of it's use is: -.5 ROOTS 3 -.5 2 .B6603 - 86603 0 This algorithm uses 1S0 Standard APL, and should produce the same results on any system. My personal preference for this function is that it should present its results in two columns. This way, whether you choose to think of the result as complex numbers or as pairs of real numbers giving points in the xy-plane, each row of the resulting table represents each point or complex number. I would have written the function this way: ROOT,R: ~ 2 1 = . o 0 2 = t = BOOTS 3 .86603 -.86603 0 -.5 -.5 1 Some recent APL implementations have included complex numbers for the benefit of their users, and it appears likely that complex numbers will be an optional feature in "Extended APL", which is the current work item of the ISO APL working group and various national APL working groups. So, a natural question is, how would this algorithm be presented, making use of complex numbers in APL? Here some further exam~es that use the function BOOTS. APL Quote Ouad 20 1 September 1989
/lp/association-for-computing-machinery/roots-of-unity-AuxH0gfgPA