OSCAT Forum

oscat.lib => Bestehende Module / Existing Modules => Thema gestartet von: alexdrik am 15. März 2011, 21:06:24

Titel: Verbesserung für Mid3
Beitrag von: alexdrik am 15. März 2011, 21:06:24
Läßt sich die Funktion Mid3 so schneller ausführen?

IF in1 >= in2 THEN

   IF in1 >= in3 THEN                 (* in1 ist am größten *)
      IF in2 >= in3 THEN
         mid3 := in2;
      ELSE
         mid3 := in3;
      END_IF

   ELSE                                        (* in1 ist größer als in2, aber kleiner als in3 *)
      mid3 := in1;
   END_IF

ELSE

   IF in2 >= in3 THEN                 (* in2 ist am größten *)

      IF in1 >= in3 THEN
         mid3 := in1;
      ELSE
         mid3 := in3;
      END_IF

   ELSE                                         (* in2 ist größer als in1, aber kleiner als in3 *)
      mid3 := in2;
   END_IF

END_IF
Titel: Re:Verbesserung für Mid3
Beitrag von: hugo am 18. März 2011, 13:42:19
mid3 wird im nächsten release folgenden code verwenden:

IF IN1 > IN2 THEN MID3 := IN1; IN1 := IN2; IN2 := MID3; END_IF;
IF IN2 > IN3 THEN IN2 := IN3; END_IF;
MID3 := SEL(IN1 > IN2, IN2, IN1);