An arbitrary radix "r" (as well as mixed radices) can be employed, as was shown by both Cooley and Tukey as well as Gauss (who gave examples of radix-3 and radix-6 steps). Cooley and Tukey originally assumed that the radix butterfly required O("r"2) work and hence reckoned the complexity for a radix "r" to be O("r"2 "N"/"r" log"r""N") = O("N" log2("N") "r"/log2"r"); from calculation of values of "r"/log2"r" for integer values of "r" from 2 to 12 the optimal radix is found to be 3 (the closest integer to "e", which minimizes "r"/log2"r"). This analysis was erroneous, however: the radix-butterfly is also a DFT and can be performed via an FFT algorithm in O("r" log "r") operations, hence the radix "r" actually cancels in the complexity O("r" log("r") "N"/"r" log"r""N"), and the optimal "r" is determined by more complicated considerations. In practice, quite large "r" (32 or 64) are important in order to effectively exploit e.g. the large number of processor registers on modern processors, and even an unbounded radix "r"= also achieves O("N" log "N") complexity and has theoretical and practical advantages for large "N" as mentioned above. Although the abstract Cooley–Tukey factorization of the DFT, above, applies in some form to all implementations of the algorithm, much greater diversity exists in the techniques for ordering and accessing the data at each stage of the FFT. Of special interest is the problem of devising an in-place algorithm that overwrites its input with its output data using only O(1) auxiliary storage. The most well-known reordering technique involves explicit bit reversal for in-place radix-2 algorithms. Bit reversal is the permutation where the data at an index "n", written in binary with digits "b"4"b"3"b"2"b"1"b"0 (e.g. 5 digits for "N"=32 inputs), is transferred to the index with reversed digits "b"0"b"1"b"2"b"3"b"4 .