#include <bits/stdc++.h>
using namespace std;
const double pi = M_PI;
double P[8][8] = {
{187, 188, 189, 202, 209, 175, 66, 41},
{191, 186, 193, 209, 193, 98, 40, 39},
{188, 187, 202, 202, 144, 53, 35, 37},
{189, 195, 206, 172, 58, 47, 43, 45},
{197, 204, 194, 106, 50, 48, 42, 45},
{208, 204, 151, 50, 41, 41, 41, 53},
{209, 179, 68, 42, 35, 36, 40, 47},
{200, 117, 53, 41, 34, 38, 39, 63}
};
int main(int argc, char *argv[]) {
double T[8][8];
for (int u = 0; u < 8; u++) {
for (int v = 0; v < 8; v++) {
double cU, cV;
cU = sqrt((u == 0 ? 1 : 2) / 8.0);
cV = sqrt((v == 0 ? 1 : 2) / 8.0);
for (int x = 0; x < 8; x++) {
for (int y = 0; y < 8; y++) {
T[u][v] += P[x][y] * cU * cV * cos((2 * x + 1) * u * pi / 16.0) * cos((2 * y + 1) * v * pi / 16.0);
}
}
}
}
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
printf("%10.3f", T[i][j]);
}
printf("\n");
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBkb3VibGUgcGkgPSBNX1BJOwoKZG91YmxlIFBbOF1bOF0gPSB7CiAgICB7MTg3LCAxODgsIDE4OSwgMjAyLCAyMDksIDE3NSwgNjYsICA0MX0sCiAgICB7MTkxLCAxODYsIDE5MywgMjA5LCAxOTMsICA5OCwgNDAsICAzOX0sCiAgICB7MTg4LCAxODcsIDIwMiwgMjAyLCAxNDQsICA1MywgMzUsICAzN30sCiAgICB7MTg5LCAxOTUsIDIwNiwgMTcyLCA1OCwgIDQ3LCAgNDMsICA0NX0sCiAgICB7MTk3LCAyMDQsIDE5NCwgMTA2LCA1MCwgIDQ4LCAgNDIsICA0NX0sCiAgICB7MjA4LCAyMDQsIDE1MSwgIDUwLCA0MSwgIDQxLCAgNDEsICA1M30sCiAgICB7MjA5LCAxNzksICA2OCwgIDQyLCAzNSwgIDM2LCAgNDAsICA0N30sCiAgICB7MjAwLCAxMTcsICA1MywgIDQxLCAzNCwgIDM4LCAgMzksICA2M30KfTsKCmludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsKICAgIGRvdWJsZSBUWzhdWzhdOwogICAgZm9yIChpbnQgdSA9IDA7IHUgPCA4OyB1KyspIHsKICAgICAgICBmb3IgKGludCB2ID0gMDsgdiA8IDg7IHYrKykgewogICAgICAgICAgICBkb3VibGUgY1UsIGNWOwogICAgICAgICAgICBjVSA9IHNxcnQoKHUgPT0gMCA/IDEgOiAyKSAvIDguMCk7CiAgICAgICAgICAgIGNWID0gc3FydCgodiA9PSAwID8gMSA6IDIpIC8gOC4wKTsKICAgICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCA4OyB4KyspIHsKICAgICAgICAgICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwgODsgeSsrKSB7CiAgICAgICAgICAgICAgICAgICAgVFt1XVt2XSArPSBQW3hdW3ldICogY1UgKiBjViAqIGNvcygoMiAqIHggKyAxKSAqIHUgKiBwaSAvIDE2LjApICogY29zKCgyICogeSArIDEpICogdiAqIHBpIC8gMTYuMCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCA4OyBpKyspIHsKICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IDg7IGorKykgewogICAgICAgICAgICBwcmludGYoIiUxMC4zZiIsIFRbaV1bal0pOwogICAgICAgIH0KICAgICAgICBwcmludGYoIlxuIik7CiAgICB9Cn0K