/*
Short Discrete Cosine Transform
    data length :8x8, 16x16
    method      :row-column, radix 4 FFT
functions
    ddct8x8s  : 8x8 DCT
    ddct16x16s: 16x16 DCT
function prototypes
    void ddct8x8s(int isgn, double **a);
    void ddct16x16s(int isgn, double **a);
*/

/*
-------- 8x8 DCT (Discrete Cosine Transform) / Inverse of DCT --------
    [definition]
        <case1> Normalized 8x8 IDCT
            C[k1][k2] = (1/4) * sum_j1=0^7 sum_j2=0^7
                            a[j1][j2] * s[j1] * s[j2] *
                            cos(pi*j1*(k1+1/2)/8) *
                            cos(pi*j2*(k2+1/2)/8), 0<=k1<8, 0<=k2<8
                            (s[0] = 1/sqrt(2), s[j] = 1, j > 0)
        <case2> Normalized 8x8 DCT
            C[k1][k2] = (1/4) * s[k1] * s[k2] * sum_j1=0^7 sum_j2=0^7
                            a[j1][j2] *
                            cos(pi*(j1+1/2)*k1/8) *
                            cos(pi*(j2+1/2)*k2/8), 0<=k1<8, 0<=k2<8
                            (s[0] = 1/sqrt(2), s[j] = 1, j > 0)
    [usage]
        <case1>
            ddct8x8s(1, a);
        <case2>
            ddct8x8s(-1, a);
    [parameters]
        a[0...7][0...7] :input/output data (double **)
                         output data
                             a[k1][k2] = C[k1][k2], 0<=k1<8, 0<=k2<8
*/

/* Cn_kR = sqrt(2.0/n) * cos(pi/2*k/n) */
/* Cn_kI = sqrt(2.0/n) * sin(pi/2*k/n) */
/* Wn_kR = cos(pi/2*k/n) */
/* Wn_kI = sin(pi/2*k/n) */
#define C8_1R 0.49039264020161522456
#define C8_1I 0.09754516100806413392
#define C8_2R 0.46193976625564337806
#define C8_2I 0.19134171618254488586
#define C8_3R 0.41573480615127261854
#define C8_3I 0.27778511650980111237
#define C8_4R 0.35355339059327376220
#define W8_4R 0.70710678118654752440

void ddct8x8s(int isgn, double **a) {
  int j;
  double x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i;
  double xr, xi;

  if (isgn < 0) {
    for (j = 0; j <= 7; j++) {
      x0r = a[0][j] + a[7][j];
      x1r = a[0][j] - a[7][j];
      x0i = a[2][j] + a[5][j];
      x1i = a[2][j] - a[5][j];
      x2r = a[4][j] + a[3][j];
      x3r = a[4][j] - a[3][j];
      x2i = a[6][j] + a[1][j];
      x3i = a[6][j] - a[1][j];
      xr = x0r + x2r;
      xi = x0i + x2i;
      a[0][j] = C8_4R * (xr + xi);
      a[4][j] = C8_4R * (xr - xi);
      xr = x0r - x2r;
      xi = x0i - x2i;
      a[2][j] = C8_2R * xr - C8_2I * xi;
      a[6][j] = C8_2R * xi + C8_2I * xr;
      xr = W8_4R * (x1i - x3i);
      x1i = W8_4R * (x1i + x3i);
      x3i = x1i - x3r;
      x1i += x3r;
      x3r = x1r - xr;
      x1r += xr;
      a[1][j] = C8_1R * x1r - C8_1I * x1i;
      a[7][j] = C8_1R * x1i + C8_1I * x1r;
      a[3][j] = C8_3R * x3r - C8_3I * x3i;
      a[5][j] = C8_3R * x3i + C8_3I * x3r;
    }
    for (j = 0; j <= 7; j++) {
      x0r = a[j][0] + a[j][7];
      x1r = a[j][0] - a[j][7];
      x0i = a[j][2] + a[j][5];
      x1i = a[j][2] - a[j][5];
      x2r = a[j][4] + a[j][3];
      x3r = a[j][4] - a[j][3];
      x2i = a[j][6] + a[j][1];
      x3i = a[j][6] - a[j][1];
      xr = x0r + x2r;
      xi = x0i + x2i;
      a[j][0] = C8_4R * (xr + xi);
      a[j][4] = C8_4R * (xr - xi);
      xr = x0r - x2r;
      xi = x0i - x2i;
      a[j][2] = C8_2R * xr - C8_2I * xi;
      a[j][6] = C8_2R * xi + C8_2I * xr;
      xr = W8_4R * (x1i - x3i);
      x1i = W8_4R * (x1i + x3i);
      x3i = x1i - x3r;
      x1i += x3r;
      x3r = x1r - xr;
      x1r += xr;
      a[j][1] = C8_1R * x1r - C8_1I * x1i;
      a[j][7] = C8_1R * x1i + C8_1I * x1r;
      a[j][3] = C8_3R * x3r - C8_3I * x3i;
      a[j][5] = C8_3R * x3i + C8_3I * x3r;
    }
  } else {
    for (j = 0; j <= 7; j++) {
      x1r = C8_1R * a[1][j] + C8_1I * a[7][j];
      x1i = C8_1R * a[7][j] - C8_1I * a[1][j];
      x3r = C8_3R * a[3][j] + C8_3I * a[5][j];
      x3i = C8_3R * a[5][j] - C8_3I * a[3][j];
      xr = x1r - x3r;
      xi = x1i + x3i;
      x1r += x3r;
      x3i -= x1i;
      x1i = W8_4R * (xr + xi);
      x3r = W8_4R * (xr - xi);
      xr = C8_2R * a[2][j] + C8_2I * a[6][j];
      xi = C8_2R * a[6][j] - C8_2I * a[2][j];
      x0r = C8_4R * (a[0][j] + a[4][j]);
      x0i = C8_4R * (a[0][j] - a[4][j]);
      x2r = x0r - xr;
      x2i = x0i - xi;
      x0r += xr;
      x0i += xi;
      a[0][j] = x0r + x1r;
      a[7][j] = x0r - x1r;
      a[2][j] = x0i + x1i;
      a[5][j] = x0i - x1i;
      a[4][j] = x2r - x3i;
      a[3][j] = x2r + x3i;
      a[6][j] = x2i - x3r;
      a[1][j] = x2i + x3r;
    }
    for (j = 0; j <= 7; j++) {
      x1r = C8_1R * a[j][1] + C8_1I * a[j][7];
      x1i = C8_1R * a[j][7] - C8_1I * a[j][1];
      x3r = C8_3R * a[j][3] + C8_3I * a[j][5];
      x3i = C8_3R * a[j][5] - C8_3I * a[j][3];
      xr = x1r - x3r;
      xi = x1i + x3i;
      x1r += x3r;
      x3i -= x1i;
      x1i = W8_4R * (xr + xi);
      x3r = W8_4R * (xr - xi);
      xr = C8_2R * a[j][2] + C8_2I * a[j][6];
      xi = C8_2R * a[j][6] - C8_2I * a[j][2];
      x0r = C8_4R * (a[j][0] + a[j][4]);
      x0i = C8_4R * (a[j][0] - a[j][4]);
      x2r = x0r - xr;
      x2i = x0i - xi;
      x0r += xr;
      x0i += xi;
      a[j][0] = x0r + x1r;
      a[j][7] = x0r - x1r;
      a[j][2] = x0i + x1i;
      a[j][5] = x0i - x1i;
      a[j][4] = x2r - x3i;
      a[j][3] = x2r + x3i;
      a[j][6] = x2i - x3r;
      a[j][1] = x2i + x3r;
    }
  }
}

/*
-------- 16x16 DCT (Discrete Cosine Transform) / Inverse of DCT --------
    [definition]
        <case1> Normalized 16x16 IDCT
            C[k1][k2] = (1/8) * sum_j1=0^15 sum_j2=0^15
                            a[j1][j2] * s[j1] * s[j2] *
                            cos(pi*j1*(k1+1/2)/16) *
                            cos(pi*j2*(k2+1/2)/16), 0<=k1<16, 0<=k2<16
                            (s[0] = 1/sqrt(2), s[j] = 1, j > 0)
        <case2> Normalized 16x16 DCT
            C[k1][k2] = (1/8) * s[k1] * s[k2] * sum_j1=0^15 sum_j2=0^15
                            a[j1][j2] *
                            cos(pi*(j1+1/2)*k1/16) *
                            cos(pi*(j2+1/2)*k2/16), 0<=k1<16, 0<=k2<16
                            (s[0] = 1/sqrt(2), s[j] = 1, j > 0)
    [usage]
        <case1>
            ddct16x16s(1, a);
        <case2>
            ddct16x16s(-1, a);
    [parameters]
        a[0...15][0...15] :input/output data (double **)
                           output data
                               a[k1][k2] = C[k1][k2], 0<=k1<16, 0<=k2<16
*/

/* Cn_kR = sqrt(2.0/n) * cos(pi/2*k/n) */
/* Cn_kI = sqrt(2.0/n) * sin(pi/2*k/n) */
/* Wn_kR = cos(pi/2*k/n) */
/* Wn_kI = sin(pi/2*k/n) */
#define C16_1R 0.35185093438159561476
#define C16_1I 0.03465429229977286565
#define C16_2R 0.34675996133053686546
#define C16_2I 0.06897484482073575308
#define C16_3R 0.33832950029358816957
#define C16_3I 0.10263113188058934529
#define C16_4R 0.32664074121909413196
#define C16_4I 0.13529902503654924610
#define C16_5R 0.31180625324666780814
#define C16_5I 0.16666391461943662432
#define C16_6R 0.29396890060483967924
#define C16_6I 0.19642373959677554532
#define C16_7R 0.27330046675043937206
#define C16_7I 0.22429189658565907106
#define C16_8R 0.25
#define W16_4R 0.92387953251128675613
#define W16_4I 0.38268343236508977173
#define W16_8R 0.70710678118654752440

void ddct16x16s(int isgn, double **a) {
  int j;
  double x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i;
  double x4r, x4i, x5r, x5i, x6r, x6i, x7r, x7i;
  double xr, xi;

  if (isgn < 0) {
    for (j = 0; j <= 15; j++) {
      x4r = a[0][j] - a[15][j];
      xr = a[0][j] + a[15][j];
      x4i = a[8][j] - a[7][j];
      xi = a[8][j] + a[7][j];
      x0r = xr + xi;
      x0i = xr - xi;
      x5r = a[2][j] - a[13][j];
      xr = a[2][j] + a[13][j];
      x5i = a[10][j] - a[5][j];
      xi = a[10][j] + a[5][j];
      x1r = xr + xi;
      x1i = xr - xi;
      x6r = a[4][j] - a[11][j];
      xr = a[4][j] + a[11][j];
      x6i = a[12][j] - a[3][j];
      xi = a[12][j] + a[3][j];
      x2r = xr + xi;
      x2i = xr - xi;
      x7r = a[6][j] - a[9][j];
      xr = a[6][j] + a[9][j];
      x7i = a[14][j] - a[1][j];
      xi = a[14][j] + a[1][j];
      x3r = xr + xi;
      x3i = xr - xi;
      xr = x0r + x2r;
      xi = x1r + x3r;
      a[0][j] = C16_8R * (xr + xi);
      a[8][j] = C16_8R * (xr - xi);
      xr = x0r - x2r;
      xi = x1r - x3r;
      a[4][j] = C16_4R * xr - C16_4I * xi;
      a[12][j] = C16_4R * xi + C16_4I * xr;
      x0r = W16_8R * (x1i - x3i);
      x2r = W16_8R * (x1i + x3i);
      xr = x0i + x0r;
      xi = x2r + x2i;
      a[2][j] = C16_2R * xr - C16_2I * xi;
      a[14][j] = C16_2R * xi + C16_2I * xr;
      xr = x0i - x0r;
      xi = x2r - x2i;
      a[6][j] = C16_6R * xr - C16_6I * xi;
      a[10][j] = C16_6R * xi + C16_6I * xr;
      xr = W16_8R * (x6r - x6i);
      xi = W16_8R * (x6i + x6r);
      x6r = x4r - xr;
      x6i = x4i - xi;
      x4r += xr;
      x4i += xi;
      xr = W16_4I * x7r - W16_4R * x7i;
      xi = W16_4I * x7i + W16_4R * x7r;
      x7r = W16_4R * x5r - W16_4I * x5i;
      x7i = W16_4R * x5i + W16_4I * x5r;
      x5r = x7r + xr;
      x5i = x7i + xi;
      x7r -= xr;
      x7i -= xi;
      xr = x4r + x5r;
      xi = x5i + x4i;
      a[1][j] = C16_1R * xr - C16_1I * xi;
      a[15][j] = C16_1R * xi + C16_1I * xr;
      xr = x4r - x5r;
      xi = x5i - x4i;
      a[7][j] = C16_7R * xr - C16_7I * xi;
      a[9][j] = C16_7R * xi + C16_7I * xr;
      xr = x6r - x7i;
      xi = x7r + x6i;
      a[5][j] = C16_5R * xr - C16_5I * xi;
      a[11][j] = C16_5R * xi + C16_5I * xr;
      xr = x6r + x7i;
      xi = x7r - x6i;
      a[3][j] = C16_3R * xr - C16_3I * xi;
      a[13][j] = C16_3R * xi + C16_3I * xr;
    }
    for (j = 0; j <= 15; j++) {
      x4r = a[j][0] - a[j][15];
      xr = a[j][0] + a[j][15];
      x4i = a[j][8] - a[j][7];
      xi = a[j][8] + a[j][7];
      x0r = xr + xi;
      x0i = xr - xi;
      x5r = a[j][2] - a[j][13];
      xr = a[j][2] + a[j][13];
      x5i = a[j][10] - a[j][5];
      xi = a[j][10] + a[j][5];
      x1r = xr + xi;
      x1i = xr - xi;
      x6r = a[j][4] - a[j][11];
      xr = a[j][4] + a[j][11];
      x6i = a[j][12] - a[j][3];
      xi = a[j][12] + a[j][3];
      x2r = xr + xi;
      x2i = xr - xi;
      x7r = a[j][6] - a[j][9];
      xr = a[j][6] + a[j][9];
      x7i = a[j][14] - a[j][1];
      xi = a[j][14] + a[j][1];
      x3r = xr + xi;
      x3i = xr - xi;
      xr = x0r + x2r;
      xi = x1r + x3r;
      a[j][0] = C16_8R * (xr + xi);
      a[j][8] = C16_8R * (xr - xi);
      xr = x0r - x2r;
      xi = x1r - x3r;
      a[j][4] = C16_4R * xr - C16_4I * xi;
      a[j][12] = C16_4R * xi + C16_4I * xr;
      x0r = W16_8R * (x1i - x3i);
      x2r = W16_8R * (x1i + x3i);
      xr = x0i + x0r;
      xi = x2r + x2i;
      a[j][2] = C16_2R * xr - C16_2I * xi;
      a[j][14] = C16_2R * xi + C16_2I * xr;
      xr = x0i - x0r;
      xi = x2r - x2i;
      a[j][6] = C16_6R * xr - C16_6I * xi;
      a[j][10] = C16_6R * xi + C16_6I * xr;
      xr = W16_8R * (x6r - x6i);
      xi = W16_8R * (x6i + x6r);
      x6r = x4r - xr;
      x6i = x4i - xi;
      x4r += xr;
      x4i += xi;
      xr = W16_4I * x7r - W16_4R * x7i;
      xi = W16_4I * x7i + W16_4R * x7r;
      x7r = W16_4R * x5r - W16_4I * x5i;
      x7i = W16_4R * x5i + W16_4I * x5r;
      x5r = x7r + xr;
      x5i = x7i + xi;
      x7r -= xr;
      x7i -= xi;
      xr = x4r + x5r;
      xi = x5i + x4i;
      a[j][1] = C16_1R * xr - C16_1I * xi;
      a[j][15] = C16_1R * xi + C16_1I * xr;
      xr = x4r - x5r;
      xi = x5i - x4i;
      a[j][7] = C16_7R * xr - C16_7I * xi;
      a[j][9] = C16_7R * xi + C16_7I * xr;
      xr = x6r - x7i;
      xi = x7r + x6i;
      a[j][5] = C16_5R * xr - C16_5I * xi;
      a[j][11] = C16_5R * xi + C16_5I * xr;
      xr = x6r + x7i;
      xi = x7r - x6i;
      a[j][3] = C16_3R * xr - C16_3I * xi;
      a[j][13] = C16_3R * xi + C16_3I * xr;
    }
  } else {
    for (j = 0; j <= 15; j++) {
      x5r = C16_1R * a[1][j] + C16_1I * a[15][j];
      x5i = C16_1R * a[15][j] - C16_1I * a[1][j];
      xr = C16_7R * a[7][j] + C16_7I * a[9][j];
      xi = C16_7R * a[9][j] - C16_7I * a[7][j];
      x4r = x5r + xr;
      x4i = x5i - xi;
      x5r -= xr;
      x5i += xi;
      x7r = C16_5R * a[5][j] + C16_5I * a[11][j];
      x7i = C16_5R * a[11][j] - C16_5I * a[5][j];
      xr = C16_3R * a[3][j] + C16_3I * a[13][j];
      xi = C16_3R * a[13][j] - C16_3I * a[3][j];
      x6r = x7r + xr;
      x6i = x7i - xi;
      x7r -= xr;
      x7i += xi;
      xr = x4r - x6r;
      xi = x4i - x6i;
      x4r += x6r;
      x4i += x6i;
      x6r = W16_8R * (xi + xr);
      x6i = W16_8R * (xi - xr);
      xr = x5r + x7i;
      xi = x5i - x7r;
      x5r -= x7i;
      x5i += x7r;
      x7r = W16_4I * x5r + W16_4R * x5i;
      x7i = W16_4I * x5i - W16_4R * x5r;
      x5r = W16_4R * xr + W16_4I * xi;
      x5i = W16_4R * xi - W16_4I * xr;
      xr = C16_4R * a[4][j] + C16_4I * a[12][j];
      xi = C16_4R * a[12][j] - C16_4I * a[4][j];
      x2r = C16_8R * (a[0][j] + a[8][j]);
      x3r = C16_8R * (a[0][j] - a[8][j]);
      x0r = x2r + xr;
      x1r = x3r + xi;
      x2r -= xr;
      x3r -= xi;
      x0i = C16_2R * a[2][j] + C16_2I * a[14][j];
      x2i = C16_2R * a[14][j] - C16_2I * a[2][j];
      x1i = C16_6R * a[6][j] + C16_6I * a[10][j];
      x3i = C16_6R * a[10][j] - C16_6I * a[6][j];
      xr = x0i - x1i;
      xi = x2i + x3i;
      x0i += x1i;
      x2i -= x3i;
      x1i = W16_8R * (xi + xr);
      x3i = W16_8R * (xi - xr);
      xr = x0r + x0i;
      xi = x0r - x0i;
      a[0][j] = xr + x4r;
      a[15][j] = xr - x4r;
      a[8][j] = xi + x4i;
      a[7][j] = xi - x4i;
      xr = x1r + x1i;
      xi = x1r - x1i;
      a[2][j] = xr + x5r;
      a[13][j] = xr - x5r;
      a[10][j] = xi + x5i;
      a[5][j] = xi - x5i;
      xr = x2r + x2i;
      xi = x2r - x2i;
      a[4][j] = xr + x6r;
      a[11][j] = xr - x6r;
      a[12][j] = xi + x6i;
      a[3][j] = xi - x6i;
      xr = x3r + x3i;
      xi = x3r - x3i;
      a[6][j] = xr + x7r;
      a[9][j] = xr - x7r;
      a[14][j] = xi + x7i;
      a[1][j] = xi - x7i;
    }
    for (j = 0; j <= 15; j++) {
      x5r = C16_1R * a[j][1] + C16_1I * a[j][15];
      x5i = C16_1R * a[j][15] - C16_1I * a[j][1];
      xr = C16_7R * a[j][7] + C16_7I * a[j][9];
      xi = C16_7R * a[j][9] - C16_7I * a[j][7];
      x4r = x5r + xr;
      x4i = x5i - xi;
      x5r -= xr;
      x5i += xi;
      x7r = C16_5R * a[j][5] + C16_5I * a[j][11];
      x7i = C16_5R * a[j][11] - C16_5I * a[j][5];
      xr = C16_3R * a[j][3] + C16_3I * a[j][13];
      xi = C16_3R * a[j][13] - C16_3I * a[j][3];
      x6r = x7r + xr;
      x6i = x7i - xi;
      x7r -= xr;
      x7i += xi;
      xr = x4r - x6r;
      xi = x4i - x6i;
      x4r += x6r;
      x4i += x6i;
      x6r = W16_8R * (xi + xr);
      x6i = W16_8R * (xi - xr);
      xr = x5r + x7i;
      xi = x5i - x7r;
      x5r -= x7i;
      x5i += x7r;
      x7r = W16_4I * x5r + W16_4R * x5i;
      x7i = W16_4I * x5i - W16_4R * x5r;
      x5r = W16_4R * xr + W16_4I * xi;
      x5i = W16_4R * xi - W16_4I * xr;
      xr = C16_4R * a[j][4] + C16_4I * a[j][12];
      xi = C16_4R * a[j][12] - C16_4I * a[j][4];
      x2r = C16_8R * (a[j][0] + a[j][8]);
      x3r = C16_8R * (a[j][0] - a[j][8]);
      x0r = x2r + xr;
      x1r = x3r + xi;
      x2r -= xr;
      x3r -= xi;
      x0i = C16_2R * a[j][2] + C16_2I * a[j][14];
      x2i = C16_2R * a[j][14] - C16_2I * a[j][2];
      x1i = C16_6R * a[j][6] + C16_6I * a[j][10];
      x3i = C16_6R * a[j][10] - C16_6I * a[j][6];
      xr = x0i - x1i;
      xi = x2i + x3i;
      x0i += x1i;
      x2i -= x3i;
      x1i = W16_8R * (xi + xr);
      x3i = W16_8R * (xi - xr);
      xr = x0r + x0i;
      xi = x0r - x0i;
      a[j][0] = xr + x4r;
      a[j][15] = xr - x4r;
      a[j][8] = xi + x4i;
      a[j][7] = xi - x4i;
      xr = x1r + x1i;
      xi = x1r - x1i;
      a[j][2] = xr + x5r;
      a[j][13] = xr - x5r;
      a[j][10] = xi + x5i;
      a[j][5] = xi - x5i;
      xr = x2r + x2i;
      xi = x2r - x2i;
      a[j][4] = xr + x6r;
      a[j][11] = xr - x6r;
      a[j][12] = xi + x6i;
      a[j][3] = xi - x6i;
      xr = x3r + x3i;
      xi = x3r - x3i;
      a[j][6] = xr + x7r;
      a[j][9] = xr - x7r;
      a[j][14] = xi + x7i;
      a[j][1] = xi - x7i;
    }
  }
}
