Я пытаюсь построить следующий массив 14 * 14 i C: [I 0; 0-I], то есть тождественная матрица 7 * 7 вверху слева, минус единица справа внизу и нули в противном случае.
Это метод:
#define DIM 7
double S[2*DIM][2*DIM];
for(i = 0; i < DIM; i++){
for(j = 0; j < DIM; j++){
if(i == j){
S[i][j] = 1.0;
S[i+7][j+7] = -1.0;
}
else{
S[i][j] = 0.0;
}
}
}
Это прекрасно работает для всех диагональных элементов; однако некоторые элементы массива инициализируются сумасшедшими значениями; например, 13,6
инициализируется до
68111186113812079535019899599437200576833320031036694798491976301968333351950125611739840800974137748034248687763243996679617222196278187875968953700681881752083957666277350377710107236511681624408064.000000
Это, кажется, происходит последовательно (по крайней мере, трижды) с записями 11,13
, 12,9
, 12,10
, 13,12
и 13,6
.
Кто-нибудь может сказать мне, что здесь происходит, или предложить альтернативное решение?
Ура!
РЕДАКТИРОВАТЬ: странные записи не согласованы.
EDIT2: опечатка: 13,12
, а не 13,15