Eventuell führst Du nicht alles in einem Schritt durch, sondern ziehst erst die Wurzel und schaust, ob da ein "ln-taugliches" Ergebnis raus kommt (zumindest mal positiv).
Sherlock
b := (LN(Sqrt(sqr(Spectrum[i1].r) + sqr(Spectrum[i1].i)) + 0.0001) + 9.21034037197618) * q1;
In Prinzip kann das ganze nur negativ werden wenn q1 < 0 ist.
LN bekommt immer ein positiven Wert gebildet aus: sqrt(sqr(Spectrum[i1].r) + sqr(Spectrum[i1].i)) + 0.0001
Grüße
Klaus