home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / extra18 / wita / math.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1992-01-20  |  4.7 KB  |  223 lines

  1. (* ------------------------------------------------- *)
  2. (*                    MATH.PAS                       *)
  3. (*        (c) 1992 W.Hermanns & DMV-Verlag           *)
  4. (* ------------------------------------------------- *)
  5. {$R-,S-,I-,V-}
  6.  
  7. UNIT Math;
  8.  
  9. INTERFACE
  10.  
  11. CONST
  12.   HexBinZif = '0123456789ABCDEF';
  13.  
  14. TYPE
  15.   Str36 = STRING[36];
  16.  
  17. VAR
  18.   Error, Basis : BYTE;
  19.   WiMo, Wa, Wn : REAL;
  20.  
  21.  
  22.   FUNCTION Sgn(X : REAL) : ShortInt;
  23.   FUNCTION Fakultaet(X : REAL) : REAL;
  24.   FUNCTION Modulo(X, Y : REAL) : REAL;
  25.   FUNCTION Sih(X : REAL) : REAL;
  26.   FUNCTION Coh(X : REAL) : REAL;
  27.   FUNCTION Tah(X : REAL) : REAL;
  28.   FUNCTION Ash(X : REAL) : REAL;
  29.   FUNCTION Ach(X : REAL) : REAL;
  30.   FUNCTION Ath(X : REAL) : REAL;
  31.   FUNCTION Dez(Ein : Str36) : REAL;
  32.   FUNCTION Hexbin(Ein : LongInt) : Str36;
  33.   FUNCTION Lint(X : REAL) : LongInt;
  34.   FUNCTION Lg(X : REAL) : REAL;
  35.   FUNCTION XhochY(X, Y : REAL) : REAL;
  36.   FUNCTION Cos(X : REAL) : REAL;
  37.   FUNCTION Sin(X : REAL) : REAL;
  38.   FUNCTION Tan(X : REAL) : REAL;
  39.   FUNCTION Acs(X : REAL) : REAL;
  40.   FUNCTION Asn(X : REAL) : REAL;
  41.   FUNCTION Atn(X : REAL) : REAL;
  42.  
  43. IMPLEMENTATION
  44.  
  45. VAR
  46.   C : REAL; I, J : BYTE; H : Str36;
  47.  
  48.   FUNCTION Sgn(X : REAL) : ShortInt;
  49.   BEGIN
  50.     IF X > 0 THEN
  51.       Sgn := 1
  52.     ELSE IF X < 0 THEN
  53.       Sgn := -1
  54.     ELSE
  55.       Sgn := 0;
  56.   END;
  57.  
  58.   FUNCTION Fakultaet(X : REAL) : REAL;
  59.   BEGIN
  60.     IF (X < 33) THEN
  61.       IF (Frac(X) = 0) AND (X >= 0) THEN BEGIN
  62.         C := 1;
  63.         FOR i := 1 TO Trunc(X) DO C := C*i;
  64.         Fakultaet := C;
  65.       END ELSE Error := 2
  66.     ELSE Error := 3;
  67.   END;
  68.  
  69.   FUNCTION Modulo(X, Y : REAL) : REAL;
  70.   BEGIN
  71.     IF (Y <> 0) AND (Frac(Y) = 0) THEN
  72.       Modulo := X - Int(X/Y)*Y
  73.     ELSE Error := 2;
  74.   END;
  75.  
  76.   FUNCTION Sih(X : REAL) : REAL;
  77.   BEGIN
  78.     IF Abs(X) <= 88 THEN
  79.       Sih := (Exp(X)-Exp(-X))/2
  80.     ELSE Error:=3;
  81.   END;
  82.  
  83.   FUNCTION Coh(X : REAL) : REAL;
  84.   BEGIN
  85.     IF Abs(X) <= 88 THEN
  86.       Coh:=(Exp(X)+Exp(-X))/2
  87.     ELSE Error:=3;
  88.   END;
  89.  
  90.   FUNCTION Tah(X : REAL) : REAL;
  91.   BEGIN
  92.     IF Abs(X) <= 88 THEN
  93.       Tah := Sih(X)/Coh(X)
  94.     ELSE Error:=3;
  95.   END;
  96.  
  97.   FUNCTION Ash(X : REAL) : REAL;
  98.   BEGIN
  99.     IF Abs(X) <= 1E18 THEN
  100.       Ash:=Sgn(X)*Ln(Abs(X)+Sqrt(X*X+1))
  101.     ELSE Error:=3;
  102.   END;
  103.  
  104.   FUNCTION Ach(X : REAL) : REAL;
  105.   BEGIN
  106.     IF X <= 1E18 THEN
  107.       IF X >= 1 THEN
  108.         Ach := Ln(X+Sqrt(X*X-1))
  109.       ELSE Error := 2
  110.     ELSE Error := 3;
  111.   END;
  112.  
  113.   FUNCTION Ath(X : REAL) : REAL;
  114.   BEGIN
  115.     IF Abs(X) < 1 THEN
  116.       Ath := Ln((1+X)/(1-X))/2
  117.     ELSE Error := 2
  118.   END;
  119.  
  120.   FUNCTION Dez(Ein : Str36) : REAL;
  121.   BEGIN
  122.     C := 0;
  123.     FOR i := 1 TO Length(Ein) DO BEGIN
  124.       J := Pred(Pos(Ein[i], HexBinZif));
  125.       C := C*(1 SHL Basis)+J;
  126.     END;
  127.     Dez := C;
  128.   END;
  129.  
  130.   FUNCTION Hexbin(Ein : LongInt) : Str36;
  131.   BEGIN
  132.     H := '';
  133.     FOR I := Pred((5-Basis) SHL 3) DOWNTO 0 DO BEGIN
  134.       J := (Ein SHR (I * Basis)) AND
  135.             Pred(1 SHL Basis);
  136.       H := H + Copy(Hexbinzif,Succ(J),1);
  137.       IF (I MOD 8) = 0 THEN H := H + ' ';
  138.     END;
  139.     Hexbin := H;
  140.   END;
  141.  
  142.   FUNCTION Lint(X : REAL) : LongInt;
  143.   BEGIN
  144.     IF Abs(X) <= Maxlongint THEN
  145.       Lint := Trunc(X)
  146.     ELSE Error := 3;
  147.   END;
  148.  
  149.   FUNCTION Lg(X : REAL) : REAL;
  150.   BEGIN
  151.     IF X > 0 THEN
  152.       Lg := Ln(X)/Ln(10)
  153.     ELSE Error := 2;
  154.   END;
  155.  
  156.   FUNCTION XhochY(X, Y : REAL) : REAL;
  157.   BEGIN
  158.     IF X = 0 THEN BEGIN
  159.       IF Y <= 0 THEN
  160.         Error := 2
  161.       ELSE XhochY := 0
  162.     END ELSE IF X > 0 THEN
  163.       XhochY := Exp(Y*Ln(X))
  164.     ELSE BEGIN
  165.       X := Abs(X);
  166.       IF Y = Trunc(Y) THEN
  167.         IF Odd(Trunc(Y)) THEN
  168.           XhochY := -XhochY(X, Y)
  169.         ELSE
  170.           XhochY:=XhochY(X,Y)
  171.       ELSE BEGIN
  172.         IF (Abs(Round(1/Y)-1/Y) < 1E-8) AND
  173.            (Odd(Round(1/Y))) THEN
  174.           XhochY := -XhochY(X,Y)
  175.         ELSE
  176.           Error := 2;
  177.       END;
  178.     END;
  179.   END;
  180.  
  181.   FUNCTION Cos(X : REAL) : REAL;
  182.   BEGIN
  183.     Cos := System.Cos(X * WiMo)
  184.   END;
  185.  
  186.   FUNCTION Sin(X : REAL) : REAL;
  187.   BEGIN
  188.     Sin := System.Sin(X * WiMo)
  189.   END;
  190.  
  191.   FUNCTION Tan(X : REAL) : REAL;
  192.   BEGIN
  193.     C := Cos(X);
  194.     IF C = 0 THEN Error := 2 ELSE Tan := Sin(X)/C
  195.   END;
  196.  
  197.   FUNCTION Acs(X : REAL) : REAL;
  198.   BEGIN
  199.     IF Abs(X) > 1 THEN
  200.       Error := 2
  201.     ELSE IF Abs(X) = 1 THEN
  202.       C := (1-X)*Pi/2
  203.     ELSE
  204.       C := -ArcTan(X/Sqrt(1-X*X)) + Pi/2;
  205.     Acs := C/WiMo
  206.   END;
  207.  
  208.   FUNCTION Asn(X : REAL) : REAL;
  209.   BEGIN
  210.     Asn := Pi/2/WiMo-Acs(X);
  211.   END;
  212.  
  213.   FUNCTION Atn(X : REAL) : REAL;
  214.   BEGIN
  215.     Atn := System.ArcTan(X)/WiMo;
  216.   END;
  217.  
  218. BEGIN
  219.   Wa := Pi/180;  Wn := Pi/200;
  220. END.
  221. (* ------------------------------------------------- *)
  222. (*               Ende von MATH.PAS                   *)
  223.