C-Programmierung/Leap 15.1: Funktion fmax(x,y) liefert nicht das Maximum

  • Ich arbeite mit C unter Leap 15.1, die C-Funktion fmax tut nicht, was sie tun sollte:

    das C-Programm fmax_test.c


    #include <stdio.h>

    #include <math.h>


    int main()

    {

    double t1, t2, t3;


    t1 = (double)-1.0;

    t2 = (double)100.0;

    t3 = fmax( -1.0, 100.0 );


    printf("\nt1=%+.2lE t2=%+.2lE t3=%+.2lE fmax(t1,t2)= %+.2lE\n\n",t1,t2,t3,fmax( t1, t2));


    return;

    }


    übersetzt mit dem Kommando

    gcc -ansi -pedantic fmax_test.c -o fmax_test.exe -lm


    liefert bei Ausführung mit dem Kommando "./fmax_test.exe" als Ausgabe die Zeile

    t1=-1.00E+00 t2=+1.00E+02 t3=+2.00E+00 fmax(t1,t2)= +3.23E-319


    Sehr überraschend: die Auswertung von fmax in printf liefert einen anderen (aber ebenfalls inkorrekten!) Wert als die Auswertung außerhalb (Variable t3)!

    Ich bin ratlos, was läuft hier falsch bzw. wie geht es richtig?


    Danke für jeden Hinweis!


    Franz Polster