Browse Source

+ Added missing sign functions

michael 22 years ago
parent
commit
d2cc0fa55a
1 changed files with 56 additions and 8 deletions
  1. 56 8
      rtl/objpas/math.pp

+ 56 - 8
rtl/objpas/math.pp

@@ -139,6 +139,20 @@ function Min(a, b: Extended): Extended;
 function Max(a, b: Extended): Extended;
 {$endif FPC_HAS_TYPE_EXTENDED}
 
+
+// Sign functions
+Type
+  TValueSign = -1..1;
+  
+const
+  NegativeValue = Low(TValueSign);
+  ZeroValue = 0;
+  PositiveValue = High(TValueSign);
+      
+function Sign(const AValue: Integer): TValueSign; overload;
+function Sign(const AValue: Int64): TValueSign; overload;
+function Sign(const AValue: Double): TValueSign; overload;
+        
 { angle conversion }
 
 function degtorad(deg : float) : float;
@@ -292,6 +306,41 @@ begin
   Raise EInvalidArgument.Create(SInvalidArgument);
 end;
 
+
+function Sign(const AValue: Integer): TValueSign; 
+
+begin
+  If Avalue<0 then
+    Result:=NegativeValue
+  else If Avalue>0 then
+    Result:=PositiveValue
+  else
+    Result:=ZeroValue;
+end;
+
+function Sign(const AValue: Int64): TValueSign; 
+
+begin
+  If Avalue<0 then
+    Result:=NegativeValue
+  else If Avalue>0 then
+    Result:=PositiveValue
+  else
+    Result:=ZeroValue;
+end;
+
+function Sign(const AValue: Double): TValueSign;
+
+begin
+  If Avalue<0.0 then
+    Result:=NegativeValue
+  else If Avalue>0.0 then
+    Result:=PositiveValue
+  else
+    Result:=ZeroValue;
+end;
+        
+
 function degtorad(deg : float) : float;
 
   begin
@@ -360,14 +409,10 @@ procedure sincos(theta : float;var sinus,cosinus : float);
     cosinus:=cos(theta);
   end;
 
-{ Sign, ArcSin and ArcCos from Arjan van Dijk ([email protected]) }
 
-function sign(x : float) : float;
-begin
-  if      x > 0 then sign :=  1.0
-  else if x < 0 then sign := -1.0
-  else               sign :=  0.0;
-end;
+
+{ ArcSin and ArcCos from Arjan van Dijk ([email protected]) }
+
 
 function arcsin(x : float) : float;
 begin
@@ -1019,7 +1064,10 @@ end;
 end.
 {
   $Log$
-  Revision 1.14  2003-10-29 19:10:07  jonas
+  Revision 1.15  2003-11-09 21:52:54  michael
+  + Added missing sign functions
+
+  Revision 1.14  2003/10/29 19:10:07  jonas
     * fixed arctan2
 
   Revision 1.13  2003/10/26 15:58:05  florian