Browse Source

+ some inline directives added
+ max/min(cardinal,cardinal) removed, causes trouble, see e.g. webtbs/tw3900.pp

git-svn-id: trunk@817 -

florian 20 years ago
parent
commit
494664ae3f
1 changed files with 56 additions and 53 deletions
  1. 56 53
      rtl/objpas/math.pp

+ 56 - 53
rtl/objpas/math.pp

@@ -1,6 +1,6 @@
 {
 {
     This file is part of the Free Pascal run time library.
     This file is part of the Free Pascal run time library.
-    Copyright (c) 1999-2000 by Florian Klaempfl
+    Copyright (c) 1999-2005 by Florian Klaempfl
     member of the Free Pascal development team
     member of the Free Pascal development team
 
 
     See the file COPYING.FPC, included in this distribution,
     See the file COPYING.FPC, included in this distribution,
@@ -16,17 +16,16 @@
   (with some improvements)
   (with some improvements)
 
 
   What's to do:
   What's to do:
-    o a lot of function :), search for !!!!
     o some statistical functions
     o some statistical functions
     o all financial functions
     o all financial functions
     o optimizations
     o optimizations
 }
 }
 
 
+{$MODE objfpc}
+{$inline on }
 unit math;
 unit math;
 interface
 interface
 
 
-{$MODE objfpc}
-
     uses
     uses
        sysutils;
        sysutils;
 
 
@@ -138,29 +137,31 @@ function MinIntValue(const Data: array of Integer): Integer;
 function MaxIntValue(const Data: array of Integer): Integer;
 function MaxIntValue(const Data: array of Integer): Integer;
 
 
 { Extra, not present in Delphi, but used frequently  }
 { Extra, not present in Delphi, but used frequently  }
-function Min(a, b: Integer): Integer;
-function Max(a, b: Integer): Integer;
+function Min(a, b: Integer): Integer;inline;
+function Max(a, b: Integer): Integer;inline;
+{ this causes more trouble than it solves
 function Min(a, b: Cardinal): Cardinal;
 function Min(a, b: Cardinal): Cardinal;
 function Max(a, b: Cardinal): Cardinal;
 function Max(a, b: Cardinal): Cardinal;
-function Min(a, b: Int64): Int64;
-function Max(a, b: Int64): Int64;
+}
+function Min(a, b: Int64): Int64;inline;
+function Max(a, b: Int64): Int64;inline;
 {$ifdef FPC_HAS_TYPE_SINGLE}
 {$ifdef FPC_HAS_TYPE_SINGLE}
-function Min(a, b: Single): Single;
-function Max(a, b: Single): Single;
+function Min(a, b: Single): Single;inline;
+function Max(a, b: Single): Single;inline;
 {$endif FPC_HAS_TYPE_SINGLE}
 {$endif FPC_HAS_TYPE_SINGLE}
 {$ifdef FPC_HAS_TYPE_DOUBLE}
 {$ifdef FPC_HAS_TYPE_DOUBLE}
-function Min(a, b: Double): Double;
-function Max(a, b: Double): Double;
+function Min(a, b: Double): Double;inline;
+function Max(a, b: Double): Double;inline;
 {$endif FPC_HAS_TYPE_DOUBLE}
 {$endif FPC_HAS_TYPE_DOUBLE}
 {$ifdef FPC_HAS_TYPE_EXTENDED}
 {$ifdef FPC_HAS_TYPE_EXTENDED}
-function Min(a, b: Extended): Extended;
-function Max(a, b: Extended): Extended;
+function Min(a, b: Extended): Extended;inline;
+function Max(a, b: Extended): Extended;inline;
 {$endif FPC_HAS_TYPE_EXTENDED}
 {$endif FPC_HAS_TYPE_EXTENDED}
 
 
-function InRange(const AValue, AMin, AMax: Integer): Boolean;
-function InRange(const AValue, AMin, AMax: Int64): Boolean;
+function InRange(const AValue, AMin, AMax: Integer): Boolean;inline;
+function InRange(const AValue, AMin, AMax: Int64): Boolean;inline;
 {$ifdef FPC_HAS_TYPE_DOUBLE}
 {$ifdef FPC_HAS_TYPE_DOUBLE}
-function InRange(const AValue, AMin, AMax: Double): Boolean;
+function InRange(const AValue, AMin, AMax: Double): Boolean;inline;
 {$endif FPC_HAS_TYPE_DOUBLE}
 {$endif FPC_HAS_TYPE_DOUBLE}
 
 
 function EnsureRange(const AValue, AMin, AMax: Integer): Integer;
 function EnsureRange(const AValue, AMin, AMax: Integer): Integer;
@@ -182,31 +183,31 @@ const
   ZeroValue = 0;
   ZeroValue = 0;
   PositiveValue = High(TValueSign);
   PositiveValue = High(TValueSign);
 
 
-function Sign(const AValue: Integer): TValueSign;
-function Sign(const AValue: Int64): TValueSign;
-function Sign(const AValue: Double): TValueSign;
+function Sign(const AValue: Integer): TValueSign;inline;
+function Sign(const AValue: Int64): TValueSign;inline;
+function Sign(const AValue: Double): TValueSign;inline;
 
 
 function IsZero(const A: Single; Epsilon: Single): Boolean;
 function IsZero(const A: Single; Epsilon: Single): Boolean;
-function IsZero(const A: Single): Boolean;
+function IsZero(const A: Single): Boolean;inline;
 {$ifdef FPC_HAS_TYPE_DOUBLE}
 {$ifdef FPC_HAS_TYPE_DOUBLE}
 function IsZero(const A: Double; Epsilon: Double): Boolean;
 function IsZero(const A: Double; Epsilon: Double): Boolean;
-function IsZero(const A: Double): Boolean;
+function IsZero(const A: Double): Boolean;inline;
 {$endif FPC_HAS_TYPE_DOUBLE}
 {$endif FPC_HAS_TYPE_DOUBLE}
 {$ifdef FPC_HAS_TYPE_EXTENDED}
 {$ifdef FPC_HAS_TYPE_EXTENDED}
 function IsZero(const A: Extended; Epsilon: Extended): Boolean;
 function IsZero(const A: Extended; Epsilon: Extended): Boolean;
-function IsZero(const A: Extended): Boolean;
+function IsZero(const A: Extended): Boolean;inline;
 {$endif FPC_HAS_TYPE_EXTENDED}
 {$endif FPC_HAS_TYPE_EXTENDED}
 
 
 function IsNan(const d : Double): Boolean;
 function IsNan(const d : Double): Boolean;
 function IsInfinite(const d : Double): Boolean;
 function IsInfinite(const d : Double): Boolean;
 
 
 {$ifdef FPC_HAS_TYPE_EXTENDED}
 {$ifdef FPC_HAS_TYPE_EXTENDED}
-function SameValue(const A, B: Extended): Boolean;
+function SameValue(const A, B: Extended): Boolean;inline;
 {$endif}
 {$endif}
 {$ifdef FPC_HAS_TYPE_DOUBLE}
 {$ifdef FPC_HAS_TYPE_DOUBLE}
-function SameValue(const A, B: Double): Boolean;
+function SameValue(const A, B: Double): Boolean;inline;
 {$endif}
 {$endif}
-function SameValue(const A, B: Single): Boolean;
+function SameValue(const A, B: Single): Boolean;inline;
 {$ifdef FPC_HAS_TYPE_EXTENDED}
 {$ifdef FPC_HAS_TYPE_EXTENDED}
 function SameValue(const A, B: Extended; Epsilon: Extended): Boolean;
 function SameValue(const A, B: Extended; Epsilon: Extended): Boolean;
 {$endif}
 {$endif}
@@ -377,7 +378,7 @@ begin
 end;
 end;
 
 
 
 
-function Sign(const AValue: Integer): TValueSign;
+function Sign(const AValue: Integer): TValueSign;inline;
 
 
 begin
 begin
   If Avalue<0 then
   If Avalue<0 then
@@ -388,7 +389,7 @@ begin
     Result:=ZeroValue;
     Result:=ZeroValue;
 end;
 end;
 
 
-function Sign(const AValue: Int64): TValueSign;
+function Sign(const AValue: Int64): TValueSign;inline;
 
 
 begin
 begin
   If Avalue<0 then
   If Avalue<0 then
@@ -399,7 +400,7 @@ begin
     Result:=ZeroValue;
     Result:=ZeroValue;
 end;
 end;
 
 
-function Sign(const AValue: Double): TValueSign;
+function Sign(const AValue: Double): TValueSign;inline;
 
 
 begin
 begin
   If Avalue<0.0 then
   If Avalue<0.0 then
@@ -1052,7 +1053,7 @@ begin
 end;
 end;
 
 
 
 
-function Min(a, b: Integer): Integer;
+function Min(a, b: Integer): Integer;inline;
 begin
 begin
   if a < b then
   if a < b then
     Result := a
     Result := a
@@ -1060,7 +1061,7 @@ begin
     Result := b;
     Result := b;
 end;
 end;
 
 
-function Max(a, b: Integer): Integer;
+function Max(a, b: Integer): Integer;inline;
 begin
 begin
   if a > b then
   if a > b then
     Result := a
     Result := a
@@ -1068,7 +1069,8 @@ begin
     Result := b;
     Result := b;
 end;
 end;
 
 
-function Min(a, b: Cardinal): Cardinal;
+{
+function Min(a, b: Cardinal): Cardinal;inline;
 begin
 begin
   if a < b then
   if a < b then
     Result := a
     Result := a
@@ -1076,15 +1078,16 @@ begin
     Result := b;
     Result := b;
 end;
 end;
 
 
-function Max(a, b: Cardinal): Cardinal;
+function Max(a, b: Cardinal): Cardinal;inline;
 begin
 begin
   if a > b then
   if a > b then
     Result := a
     Result := a
   else
   else
     Result := b;
     Result := b;
 end;
 end;
+}
 
 
-function Min(a, b: Int64): Int64;
+function Min(a, b: Int64): Int64;inline;
 begin
 begin
   if a < b then
   if a < b then
     Result := a
     Result := a
@@ -1092,7 +1095,7 @@ begin
     Result := b;
     Result := b;
 end;
 end;
 
 
-function Max(a, b: Int64): Int64;
+function Max(a, b: Int64): Int64;inline;
 begin
 begin
   if a > b then
   if a > b then
     Result := a
     Result := a
@@ -1101,7 +1104,7 @@ begin
 end;
 end;
 
 
 {$ifdef FPC_HAS_TYPE_SINGLE}
 {$ifdef FPC_HAS_TYPE_SINGLE}
-function Min(a, b: Single): Single;
+function Min(a, b: Single): Single;inline;
 begin
 begin
   if a < b then
   if a < b then
     Result := a
     Result := a
@@ -1109,7 +1112,7 @@ begin
     Result := b;
     Result := b;
 end;
 end;
 
 
-function Max(a, b: Single): Single;
+function Max(a, b: Single): Single;inline;
 begin
 begin
   if a > b then
   if a > b then
     Result := a
     Result := a
@@ -1119,7 +1122,7 @@ end;
 {$endif FPC_HAS_TYPE_SINGLE}
 {$endif FPC_HAS_TYPE_SINGLE}
 
 
 {$ifdef FPC_HAS_TYPE_DOUBLE}
 {$ifdef FPC_HAS_TYPE_DOUBLE}
-function Min(a, b: Double): Double;
+function Min(a, b: Double): Double;inline;
 begin
 begin
   if a < b then
   if a < b then
     Result := a
     Result := a
@@ -1127,7 +1130,7 @@ begin
     Result := b;
     Result := b;
 end;
 end;
 
 
-function Max(a, b: Double): Double;
+function Max(a, b: Double): Double;inline;
 begin
 begin
   if a > b then
   if a > b then
     Result := a
     Result := a
@@ -1137,7 +1140,7 @@ end;
 {$endif FPC_HAS_TYPE_DOUBLE}
 {$endif FPC_HAS_TYPE_DOUBLE}
 
 
 {$ifdef FPC_HAS_TYPE_EXTENDED}
 {$ifdef FPC_HAS_TYPE_EXTENDED}
-function Min(a, b: Extended): Extended;
+function Min(a, b: Extended): Extended;inline;
 begin
 begin
   if a < b then
   if a < b then
     Result := a
     Result := a
@@ -1145,7 +1148,7 @@ begin
     Result := b;
     Result := b;
 end;
 end;
 
 
-function Max(a, b: Extended): Extended;
+function Max(a, b: Extended): Extended;inline;
 begin
 begin
   if a > b then
   if a > b then
     Result := a
     Result := a
@@ -1154,26 +1157,26 @@ begin
 end;
 end;
 {$endif FPC_HAS_TYPE_EXTENDED}
 {$endif FPC_HAS_TYPE_EXTENDED}
 
 
-function InRange(const AValue, AMin, AMax: Integer): Boolean;
+function InRange(const AValue, AMin, AMax: Integer): Boolean;inline;
 
 
 begin
 begin
   Result:=(AValue>=AMin) and (AValue<=AMax);
   Result:=(AValue>=AMin) and (AValue<=AMax);
 end;
 end;
 
 
-function InRange(const AValue, AMin, AMax: Int64): Boolean;
+function InRange(const AValue, AMin, AMax: Int64): Boolean;inline;
 begin
 begin
   Result:=(AValue>=AMin) and (AValue<=AMax);
   Result:=(AValue>=AMin) and (AValue<=AMax);
 end;
 end;
 
 
 {$ifdef FPC_HAS_TYPE_DOUBLE}
 {$ifdef FPC_HAS_TYPE_DOUBLE}
-function InRange(const AValue, AMin, AMax: Double): Boolean;
+function InRange(const AValue, AMin, AMax: Double): Boolean;inline;
 
 
 begin
 begin
   Result:=(AValue>=AMin) and (AValue<=AMax);
   Result:=(AValue>=AMin) and (AValue<=AMax);
 end;
 end;
 {$endif FPC_HAS_TYPE_DOUBLE}
 {$endif FPC_HAS_TYPE_DOUBLE}
 
 
-function EnsureRange(const AValue, AMin, AMax: Integer): Integer;
+function EnsureRange(const AValue, AMin, AMax: Integer): Integer;inline;
 
 
 begin
 begin
   Result:=AValue;
   Result:=AValue;
@@ -1183,7 +1186,7 @@ begin
     Result:=AMax;
     Result:=AMax;
 end;
 end;
 
 
-function EnsureRange(const AValue, AMin, AMax: Int64): Int64;
+function EnsureRange(const AValue, AMin, AMax: Int64): Int64;inline;
 
 
 begin
 begin
   Result:=AValue;
   Result:=AValue;
@@ -1194,7 +1197,7 @@ begin
 end;
 end;
 
 
 {$ifdef FPC_HAS_TYPE_DOUBLE}
 {$ifdef FPC_HAS_TYPE_DOUBLE}
-function EnsureRange(const AValue, AMin, AMax: Double): Double;
+function EnsureRange(const AValue, AMin, AMax: Double): Double;inline;
 
 
 begin
 begin
   Result:=AValue;
   Result:=AValue;
@@ -1219,7 +1222,7 @@ begin
   Result:=Abs(A)<=Epsilon;
   Result:=Abs(A)<=Epsilon;
 end;
 end;
 
 
-function IsZero(const A: Single): Boolean;
+function IsZero(const A: Single): Boolean;inline;
 
 
 begin
 begin
   Result:=IsZero(A,single(SZeroResolution));
   Result:=IsZero(A,single(SZeroResolution));
@@ -1234,7 +1237,7 @@ begin
   Result:=Abs(A)<=Epsilon;
   Result:=Abs(A)<=Epsilon;
 end;
 end;
 
 
-function IsZero(const A: Double): Boolean;
+function IsZero(const A: Double): Boolean;inline;
 
 
 begin
 begin
   Result:=IsZero(A,DZeroResolution);
   Result:=IsZero(A,DZeroResolution);
@@ -1250,7 +1253,7 @@ begin
   Result:=Abs(A)<=Epsilon;
   Result:=Abs(A)<=Epsilon;
 end;
 end;
 
 
-function IsZero(const A: Extended): Boolean;
+function IsZero(const A: Extended): Boolean;inline;
 
 
 begin
 begin
   Result:=IsZero(A,EZeroResolution);
   Result:=IsZero(A,EZeroResolution);
@@ -1309,7 +1312,7 @@ begin
     Result:=((B-A)<=Epsilon);
     Result:=((B-A)<=Epsilon);
 end;
 end;
 
 
-function SameValue(const A, B: Extended): Boolean;
+function SameValue(const A, B: Extended): Boolean;inline;
 
 
 begin
 begin
   Result:=SameValue(A,B,0);
   Result:=SameValue(A,B,0);
@@ -1318,7 +1321,7 @@ end;
 
 
 
 
 {$ifdef FPC_HAS_TYPE_DOUBLE}
 {$ifdef FPC_HAS_TYPE_DOUBLE}
-function SameValue(const A, B: Double): Boolean;
+function SameValue(const A, B: Double): Boolean;inline;
 
 
 begin
 begin
   Result:=SameValue(A,B,0);
   Result:=SameValue(A,B,0);
@@ -1336,7 +1339,7 @@ begin
 end;
 end;
 {$endif FPC_HAS_TYPE_DOUBLE}
 {$endif FPC_HAS_TYPE_DOUBLE}
 
 
-function SameValue(const A, B: Single): Boolean;
+function SameValue(const A, B: Single): Boolean;inline;
 
 
 begin
 begin
   Result:=SameValue(A,B,0);
   Result:=SameValue(A,B,0);