> double x[4],y[4];
> double a[4][4];

一体これはいつ初期化されているんだい?
未初期化のまま

> y[i]=a[i][j]*x[j]+y[i];

とかやったって、ゴミが演算対象になるだけだろう。
コンパイラは警告を出さないのか?