Ich habe ein Array von double:Log Anrufe Rückkehr NaN in C
double theoretical_distribution[] = {1/21, 2/21, 3/21, 4/21, 5/21, 6/21};
Und ich Computer versuche es Entropie:
double entropy = 0;
for (int i = 0; i < sizeof(theoretical_distribution)/sizeof(*theoretical_distribution); i++) {
entropy -= (theoretical_distribution[i] * (log10(theoretical_distribution[i])/log10(arity)));
}
aber ich NaN bin immer ich das überprüft haben Teil
(theoretical_distribution[i] * (log10(theoretical_distribution[i])/log10(arity)))
Und fand es NaN selbst zurück, so dass ich davon ausgehen, es ist der Schuldige, aber alle es angenommen hat, ist ein einfacher Basis konv ersion des logs? Fehle ich etwas Detail über die Mathematik davon?
Warum bewertet es zu NaN.
'1/21' ->' 1.0/21' dito. – BLUEPIXY
Integer-Division schneidet ab, was zu 0 führt. Log von 0 ist NaN. –
@Mark Ransom "Log von 0 ist NaN" oder vielleicht -INF. Der Rest der OP-Gleichung macht das NaN. – chux