Fourier Workshop


In order to run the fourier workshop application you must have a java runtime environment (JRE) version 1.3 or later. The easiest method to install and run the Fourier Workshop is with Java Web Start (it is installed automatically with the JRE 1.4). If Java Web Start is installed, just click the following link:

Start FFTV

Note: you may be asked to "trust the signed application", even though the security certificate is unknown. The reason the application needs to be trusted is because it contains the "rhino" javascript engine, which needs some permissions that aren't granted by default. It doesn't touch your hard-disk or network. The reason the certificate is unknown is that I didn't want to pay anything to a certificate authority, so I just created my own.

If you don't have Java web start, you can download the Complete Jar File (this includes the Rhino Runtime and the TableLayout Layout Manager which are needed by the program. Start it with "java -jar fftv_full.jar". On Windows, you may be able to start it by double-clicking the fftv jar file.

A brief overview

The purpose of this program is to help visualize the Fourier transform of Boolean functions. The right pane contains a description of the function in Javascript. It's initialized with the majority function. The function is passed two parameters: "x", the input to the function, and "n" the current number of bits. "x" is a special variable: it can be treated as an integer (for example, "return x & 3;" would return "true" iff either of the two least significant bits are 1). The separate bits can also be indexed as if in an array (e.g., x[0] is the LSB). Finally, the special property "size" returns the number of "1" bits in x. You can use any valid javascript to define the function (including defining variables). The return value of the function is treated as a boolean (non-zero is true). Press the "Evaluate" button to evaluate the function.

The left pane contains the visualization of the function. Blue is "true" and red is "false" (we treat "-1" as the "true" value and "1" as false). The layout of the bits is from least weight, in the top-left corner, to maximum weight, in the bottom-right corner (where weight is the number of "1" bits in the input). Clicking the "FFT View" check toggles between displaying the values of the function itself and the values of its Fourier transform. In the second case, each cell shows the coefficient of the character that corresponds to the "1" bits in the input at that point. When you mouse over the display, the status line shows the actual input (or character) in binary, and the value of the function (or coefficient) for the cell under the pointer.

The buttons in the "Selection" area control the selected cells. Cells can also be selected by clicking on them. Once cells are selected, their values can be changed in the "Selected Values" area. The value you are changing corresponds to the current display: in the FFT view you change coefficient values, while in the normal view you change function values. After changing some values, the function may no longer be Boolean. The "Round to Boolean" button rounds it to the nearest Boolean function.

Sorry for the dearth of documentation. If you have questions, or want the source code, drop me an email