#include <stdio.h>
#define M 4
int main(void){
int i,j,k;
double l[M][M],u[M][M],x[M];
double a[M][M] = {{ 2, 4, -10,-1 },{ 1, 6, 7 ,7},
{ 3, 5, -13, 4 },{ 2, 5, -3, 4 }},
b[M] = {0,10,2,6};
for(i = 0; i < M; i++){ /* L行列、U行列を1と0で初期化*/
for(j = 0; j < M; j++){
u[i][j] = 0;
if(i == j)l[i][j] = 1;
else
l[i][j] = 0;
}
}
for(i = 0; i < M; i++){
for(j = i; j < M; j++){ /* U行列の生成*/
u[i][j] = a[i][j];
for(k = 0; k < i; k++){
u[i][j] -= u[k][j] * l[i][k];
}
}
for(j = i+1; j < M; j++){ /* L行列の生成*/
l[j][i] = a[j][i];
for(k = 0; k < i; k++){
l[j][i] -= u[k][i] * l[j][k];
}
l[j][i] /= u[i][i];
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNkZWZpbmUgTSA0CmludCBtYWluKHZvaWQpewppbnQgaSxqLGs7CmRvdWJsZSBsW01dW01dLHVbTV1bTV0seFtNXTsKZG91YmxlIGFbTV1bTV0gPSB7eyAyLCA0LCAtMTAsLTEgfSx7IDEsIDYsIDcgLDd9LAogICAgICAgICAgICAgICAgeyAzLCA1LCAtMTMsIDQgfSx7IDIsIDUsIC0zLCA0IH19LAogICAgICAgIGJbTV0gPSB7MCwxMCwyLDZ9OyAgIAoKZm9yKGkgPSAwOyBpIDwgTTsgaSsrKXsgICAgICAgICAgICAgICAgLyogTOihjOWIl+OAgVXooYzliJfjgpIx44GoMOOBp+WIneacn+WMliovCmZvcihqID0gMDsgaiA8IE07IGorKyl7CiAgICB1W2ldW2pdID0gMDsKICAgIGlmKGkgPT0gailsW2ldW2pdID0gMTsKICAgIGVsc2UKICAgIGxbaV1bal0gPSAwOwogICAgfQp9Cgpmb3IoaSA9IDA7IGkgPCBNOyBpKyspewogICAgZm9yKGogPSBpOyBqIDwgTTsgaisrKXsgICAgICAgICAvKiBV6KGM5YiX44Gu55Sf5oiQKi8KICAgIHVbaV1bal0gPSBhW2ldW2pdOwogICAgZm9yKGsgPSAwOyBrIDwgaTsgaysrKXsKICAgICAgICB1W2ldW2pdIC09IHVba11bal0gKiBsW2ldW2tdOwogICAgfQp9CgogICAgZm9yKGogPSBpKzE7IGogPCBNOyBqKyspeyAgICAvKiBM6KGM5YiX44Gu55Sf5oiQKi8KICAgIGxbal1baV0gPSBhW2pdW2ldOwogICAgZm9yKGsgPSAwOyBrIDwgaTsgaysrKXsKICAgIGxbal1baV0gLT0gdVtrXVtpXSAqIGxbal1ba107CiAgICB9CiAgICBsW2pdW2ldIC89IHVbaV1baV07Cn0KfQoKCgoKCQo=