[Back to HARDWARE SWAG index] [Back to Main SWAG index] [Original]

    {
    Here is a program I wrote to see how good my new 387sx co-processor was. It
    uses the standard REAL type.
    }
    program Math_Speed_Test;
    {$N-,E-,R-,S-}

    uses dos;

    var i : longint;
        num1, num2, num3 : real; { or double }
        output : text;
        hou,minu,seco,s100 : word;
        StartClock,
        StopClock : Real;

    Procedure ClockOn;

    Begin
         GetTime(hou,minu,seco,s100);
         StartClock:=( hou * 3600 ) + ( minu * 60 ) + seco + ( s100 / 100 );
    End;

    Procedure ClockOff;

    Begin
         GetTime(hou,minu,seco,s100);
         StopClock:=( hou * 3600 ) + ( minu * 60 ) + seco + ( s100 / 100 );
         WriteLn(output,'Elapsed Time = ',(StopClock-StartClock):0:2,'s');
    End;

    begin
         assign(output,'');
         rewrite(output);
         clockon;
    {$IFOPT N+}
         writeln(output,'Using 8087 Code');
    {$ELSE}
         writeln(output,'Using Software floating point routines');
    {$ENDIF}
         for i:=1 to 100000 do
         begin

         num1:=random(60000)/100;
         repeat
         num2:=random(60000)/100;
         until num2>0;
         num3:=num1/num2;

         end;
         clockoff;
         close(output);

    end.

    And the results.....

    Using Software floating point routines
    Elapsed Time = 31.03s

    Using 8087 Code
    Elapsed Time = 8.78s

    However, changing REAL to DOUBLE gives

    Using 8087 Code
    Elapsed Time = 5.50s

    I don't want to remove my co-processor, so I can't get the results for
    using the emulation library :-). You could compile the program and try it
    for yourself.

[Back to HARDWARE SWAG index] [Back to Main SWAG index] [Original]