INTRODUCTION TO COMPUTER SCIENCE
Robert Sedgewick and Kevin Wayne


This is the syntax highlighted version of RootsOfUnity.java.

/*************************************************************************
 *  Compilation:  javac RootsOfUnity.java Complex.java
 *  Execution:    java RootsOfUnity N
 *
 *  Compute the N Nth roots of unity and check them by direct
 *  multiplication.
 *
 *  % java RootsOfUnity 4
 *  1.0 + 0.0i
 *  error = 0.0
 *  6.123233995736766E-17 + 1.0i
 *  error = 2.4492935982947064E-16
 * 
 *  -1.0 + 1.2246467991473532E-16i
 *  error = 4.898587196589413E-16
 * 
 *  -1.8369701987210297E-16 + -1.0i
 *  error = 7.347880794884119E-16
 *
 *************************************************************************/

class RootsOfUnity {

    public static void main(String[] args) {
        int N = Integer.parseInt(args[0]);
        Complex one = new Complex(1, 0);

        for (int i = 0; i < N; i++) {

            // compute root of unity
            double x = Math.cos(2.0 * Math.PI * i / N);
            double y = Math.sin(2.0 * Math.PI * i / N);
            Complex t = new Complex(x, y);
            System.out.println(t);

            // test mult by computing t^N and comparing to 1 + 0i
            Complex z = one;
            for (int j = 0; j < N; j++)
                z = z.times(t);

            // compute error
            Complex error = z.minus(one);
            System.out.println("error = " + error.abs());
            System.out.println();
        }
    }
}


Last updated: Thu Mar 4 09:09:01 EST 2004 .
Copyright © 2004, Robert Sedgewick and Kevin Wayne.