4. Är det någon assemblerskillnad mellan P++ jämfört med P?
Nu hittade jag problemet! Denna gör INTE som den ska göra.
Kod: Markera allt
// Repeat, substract, power and then sum
// MATLAB:
// Q = sum(pow(P-repmat(Q, 1, size(P, 2)), 2), 1);
static void repmat_substract_power_sum(float Q[], const float P[]){
// First row of Repeat -> Substract ->Ppower^2 -> Sum
float q = *Q; // First column and first row value
for(uint16_t j = 0; j < Pcolumns; j++){
*Q = *P - q; // Substract
*Q = *Q * *Q; // Power^2
Q++;
P++;
}
// The rest of the rows of Repeat -> Substract -> Power^2 -> Sum
for(uint16_t i = 1; i < Prows; i++){
q = *Q; // First column value at row i
for(uint16_t j = 0; j < Pcolumns; j++){
*Q = *P - q; // Substract
Q[j] += *Q * *Q; // Power^2 -> Sum to the top row at column index j
Q++;
P++;
}
}
}
Om jag håller på och trixa med Q++ lite här och där, sedan så anropar jag Q[j] där jag vill skriva till ett specifikt index. Då fungerar det inte.
Kod: Markera allt
Q[j] += *Q * *Q; // Power^2 -> Sum to the top row at column index j
Kod: Markera allt
Q[-Pcolumns*i] += *Q * *Q; // Power^2 -> Sum to the top row at column index j