void write_float_4d_array (const void *p, int a, int b, int c, int d)
{
    int i;
    const float *f = (const float *)p;
    for (i = 0; i < a; i++) {
        printf("{\n");
        write_float_3d_array(f, b, c, d);
        printf("},\n");
        f += b * c * d;
    }
}
int main(void)
{
    ps_tableinit();

    write_fileheader();

    printf("static const float pd_re_smooth[8*8*8] = {\n");
    write_float_array(pd_re_smooth, 8*8*8);
    printf("};\n");
    printf("static const float pd_im_smooth[8*8*8] = {\n");
    write_float_array(pd_im_smooth, 8*8*8);
    printf("};\n");

    printf("static const float HA[46][8][4] = {\n");
    write_float_3d_array(HA, 46, 8, 4);
    printf("};\n");
    printf("static const float HB[46][8][4] = {\n");
    write_float_3d_array(HB, 46, 8, 4);
    printf("};\n");

    printf("static const float f20_0_8[8][7][2] = {\n");
    write_float_3d_array(f20_0_8, 8, 7, 2);
    printf("};\n");
    printf("static const float f34_0_12[12][7][2] = {\n");
    write_float_3d_array(f34_0_12, 12, 7, 2);
    printf("};\n");
    printf("static const float f34_1_8[8][7][2] = {\n");
    write_float_3d_array(f34_1_8, 8, 7, 2);
    printf("};\n");
    printf("static const float f34_2_4[4][7][2] = {\n");
    write_float_3d_array(f34_2_4, 4, 7, 2);
    printf("};\n");

    printf("static const float Q_fract_allpass[2][50][3][2] = {\n");
    write_float_4d_array(Q_fract_allpass, 2, 50, 3, 2);
    printf("};\n");
    printf("static const float phi_fract[2][50][2] = {\n");
    write_float_3d_array(phi_fract, 2, 50, 2);
    printf("};\n");

    return 0;
}