HÜLLKURVEN
Verfasst: 2. Januar 2014, 20:18
3.2.3 Modellrechnungen mit verschiedenen Clock-Raten
Woran liegt es? Nun wenn man bedenkt, dass dort mit Hilfe der Logarithmus- und der Exponentialfunktion ein Wurzelwert berechnet wird, dann lohnt sich ein Blick auf die Rechengenauigkeit:
einige kleine Modellrechnungen:
Es wird in dem Potenz-Makro die Wurzel berechnet, wobei t die Zeit in Sekunden, r die clock-Rate und b der Krümmungsgrad ist.
REAKTOR berechnet dies nach der Rechenvorschrift: Setzen wir zunächst mal die ControlRate CR=400, b=-5 und t=1s (entspricht time=60) : und nun ... CR=400, b=-0,1 und t=10s (time=80) : Die Hüllkurve ist fast linear und endet korrekt nach 10s.
Wir vergleichen nun mit der SampleRate SR.R=44100, b=-5 und t=1s: setzt man aber nun SR.R=44100, b=-0,5 , t=5s, so erhält man 0,999998; verringert man b, erhält man immer denselben Wert 0,999999 und für b=-0,1 gar 1! Mit anderen Worten: der Hüllkurvenwert verändert sich gar nicht mehr.
Woran liegt es? - an der Norm IEEE 754. Diese regelt die Umrechnung von Dezimalzahlen in Gleitkommazahlen. REAKTOR benutzt für die Potenzrechnungen die Logarithmus- und die Exponentialfunktion nur im 32bit-Format.
D.h. mit der sechsten Stelle nach dem Komma hört die Genauigkeit auf!
Mit anderen Worten, solange diese beiden Funktionen nicht auf 64-bit-Genauigkeit erhöht werden (leider noch nicht in Version R5.9.0), kann man damit nicht rechnen.
Wir testen mal mit einer ControlRate von CR=800, b=-0,1 und t=10s: 0,999991; das geht noch. Bei t=100s kommt man auch schon wieder an die Rechengrenze, bei CR=400 geht es wieder gerade. D.h. die ControlRate stellt eine „natürliche Rechengrenze” dar.
Woran liegt es? Nun wenn man bedenkt, dass dort mit Hilfe der Logarithmus- und der Exponentialfunktion ein Wurzelwert berechnet wird, dann lohnt sich ein Blick auf die Rechengenauigkeit:
einige kleine Modellrechnungen:
Es wird in dem Potenz-Makro die Wurzel berechnet, wobei t die Zeit in Sekunden, r die clock-Rate und b der Krümmungsgrad ist.
REAKTOR berechnet dies nach der Rechenvorschrift: Setzen wir zunächst mal die ControlRate CR=400, b=-5 und t=1s (entspricht time=60) : und nun ... CR=400, b=-0,1 und t=10s (time=80) : Die Hüllkurve ist fast linear und endet korrekt nach 10s.
Wir vergleichen nun mit der SampleRate SR.R=44100, b=-5 und t=1s: setzt man aber nun SR.R=44100, b=-0,5 , t=5s, so erhält man 0,999998; verringert man b, erhält man immer denselben Wert 0,999999 und für b=-0,1 gar 1! Mit anderen Worten: der Hüllkurvenwert verändert sich gar nicht mehr.
Woran liegt es? - an der Norm IEEE 754. Diese regelt die Umrechnung von Dezimalzahlen in Gleitkommazahlen. REAKTOR benutzt für die Potenzrechnungen die Logarithmus- und die Exponentialfunktion nur im 32bit-Format.
D.h. mit der sechsten Stelle nach dem Komma hört die Genauigkeit auf!
Mit anderen Worten, solange diese beiden Funktionen nicht auf 64-bit-Genauigkeit erhöht werden (leider noch nicht in Version R5.9.0), kann man damit nicht rechnen.
Wir testen mal mit einer ControlRate von CR=800, b=-0,1 und t=10s: 0,999991; das geht noch. Bei t=100s kommt man auch schon wieder an die Rechengrenze, bei CR=400 geht es wieder gerade. D.h. die ControlRate stellt eine „natürliche Rechengrenze” dar.