package ip.gui;

public class Haar {

    public static void main(String args[]) {
        int data[][] =
                {
                    {9, 7, 5, 3},
                    {3, 5, 7, 9},
                    {2, 4, 6, 8},
                    {4, 6, 8, 10}
                };
        int in[] = {9, 7, 5, 3, 9, 7, 5, 3};
        fhw(in, in.length);
        println(in);
        decompositionStep(in, in.length);
        println(in);

    }

    public static void fhw(int in[], int size) {
        int tmp[] = new int[size];

        for (int i = 0; i < size; i += 2) {
            tmp[i / 2] = (in[i] + in[i + 1]) / 2;
            tmp[size / 2 + i / 2] = (in[i] - in[i + 1]) / 2;
        }

        for (int i = 0; i < size; i++)
            in[i] = tmp[i];
        show(in, size, true);
    }

    public static void show(int in[], int size, boolean colon) {

        for (int i = 0; i < size; i++) {
            if ((size / 2 == i) && colon)
                System.out.print(", ");
            System.out.print(in[i] + "\t");
        }
        System.out.println("");
    }

    public static void fhw2(int in[]) {
        int g = in.length;
        while (g > 2) {
            println(in);
            decompositionStep(in, g);
            g = g / 2;
        }
    }

    public static void decompositionStep(int a[], int g) {
        println("g=" + g);
        println("g/2=" + g / 2);
        int c[] = new int[a.length];
        for (int i = 1; i < g / 2; i++) {
            c[i] = (a[2 * i - 1] + a[2 * i]) / 2;
            c[g / 2 + i] = (a[2 * i - 1] - a[2 * i]) / 2;
        }
        for (int i = 0; i < c.length; i++)
            a[i] = c[i];
    }

    public static void println(int a[]) {
        print(a);
        System.out.println();
    }

    public static void println(String s) {
        System.out.println(s);
    }

    public static void print(String s) {
        System.out.print(s);
    }

    public static void print(int a[]) {
        for (int i = 0; i < a.length; i++)
            System.out.print(a[i] + " ");
    }

}