У меня есть эта функция:
float calc_nnc(struct ImageWindow *window1, struct ImageWindow *window2) {
/* More code */
double numerator = (double) sum_a_x_b;
double divisor = ( sqrt(sum_a) * sqrt(sum_b) );
double result = numerator / divisor;
float resultf = (float) result;
printf("numerator: %lf, divisor: %lf, result: %lf, resultf: %f\n",
numerator, divisor, result, resultf);
return resultf;
}
printf
печатает результаты, которые я ожидаю увидеть:
axb = 1383, a = 1776, b = 4959
числитель: 1383.000000, делитель: 2967.690011, результат: 0.466019, результат: 0.466019
Однако, когда я пытаюсь напечатать результат calc_nnc
в другой функции:
float nnc_likeness;
unsigned int x, y;
for (y = 0; y <= y_max; y++) {
for (x = 0; x <= x_max; x++) {
set_image_window(&window_big, big, x, y, width, height);
nnc_likeness = calc_nnc(&window_small, &window_big);
printf("likeness: %f\n", nnc_likeness);
}
}
Я получаю мусор:
сходство: 1055824384.000000
То есть я вижу правильные значения calc_nnc
вычисляет, но сразу после этого я вижу искаженное значениедля nnc_likeness
.
Есть идеи, что происходит?Спасибо!