{ MSGID: 2:228/406 68DEA672 Here is the unit of trigonometric and hyperbolic real functions: } UNIT trighyp; { Juhani Kaukoranta, Sysop of Pooki MBBS, Finland Pooki MBBS 358-82-221 782 } INTERFACE FUNCTION TAN(x:Real):Real; FUNCTION COT(x:Real): Real; FUNCTION SEC(x:Real): Real; FUNCTION COSEC(x:Real): Real; FUNCTION SINH(x:Real): Real; FUNCTION COSH(x:Real): Real; FUNCTION TANH(x:Real): Real; FUNCTION COTH(x:Real): Real; FUNCTION SECH(x:Real): Real; FUNCTION COSECH(x:Real): Real; FUNCTION ARCSIN(x:Real):Real; FUNCTION ARCCOS(x:Real):Real; FUNCTION ARCCOT(x:Real): Real; FUNCTION ARCSEC(x:Real): Real; FUNCTION ARCCOSEC(x:Real): Real; FUNCTION ARCSINH(x:Real): Real; FUNCTION ARCCOSH(x:Real): Real; FUNCTION ARCTANH(x:Real): Real; FUNCTION ARCCOTH(x:Real): Real; IMPLEMENTATION FUNCTION TAN(x: Real): Real; { argument x is in radians } BEGIN TAN := SIN(x)/COS(x); END; FUNCTION COT(x:Real): Real; { cotangent, x is in radians } BEGIN COT := 1/TAN(x); END; FUNCTION SEC(x:Real): Real; { secant, x is in radians } BEGIN SEC := 1/COS(x); END; FUNCTION COSEC(x:Real): Real; { cosecant, x is in radians } BEGIN COSEC := 1/SIN(x); END; FUNCTION SINH(x:real):Real; { hyperbolic sin } BEGIN SINH := (EXP(x)-EXP(-x))/2; END; FUNCTION COSH(x:Real): Real; { hyperbolic cos } BEGIN COSH := (EXP(x)+EXP(-x))/2; END; FUNCTION TANH(x:Real): REAL; { hyperbolic tan } BEGIN TANH := SINH(x)/COSH(x); END; FUNCTION COTH(x: Real): Real; { hyperbolic cotangent } BEGIN COTH :=SINH(x)/COSH(x); END; FUNCTION SECH(x:Real): Real; { hyperbolic secant } BEGIN SECH := 1/COSH(x); END; FUNCTION COSECH(x:Real): Real; { hyperbolic cosecant } BEGIN COSECH := 1/SINH(x); END; FUNCTION ARCSIN(x:Real):Real; { inverse of sin, return value is in radians } BEGIN IF ABS(x)=1.0 THEN ARCSIN := x*Pi/2 ELSE ARCSIN := ARCTAN(x/SQRT(-SQR(x)+1)); END; FUNCTION ARCCOS(x:Real):Real; { inverse of cos, return value is in radians } BEGIN IF x = 1.0 THEN ARCCOS := 0 ELSE IF x = -1.0 THEN ARCCOS :=Pi ELSE ARCCOS := -ARCTAN(x/SQRT(-SQR(x)+1))+Pi/2; END; FUNCTION ARCCOT(x:Real): Real; { inverse of cot, return value is in radians } BEGIN ARCCOT := ARCTAN(1/x); END; FUNCTION ARCSEC(x:Real): Real; { inverse of secant, return value is in radians } BEGIN ARCSEC := ARCCOS(1/x); END; FUNCTION ARCCOSEC(x:Real): Real; { inverse of cosecant, return value is in radians } BEGIN ARCCOSEC := ARCSIN(1/x); END; FUNCTION ARCSINH(x:Real): Real; { inverse of hyperbolic sin } BEGIN ARCSINH := LN(x + SQRT(x*x+1)); END; FUNCTION ARCCOSH(x:Real): Real; { inverse of hyperbolic cos} BEGIN ARCCOSH := LN(x + SQRT(x*x-1)); END; FUNCTION ARCTANH(x:Real): Real; { inverse of hyperbolic tan } BEGIN ARCTANH := LN((1+x)/(1-x))/2; END; FUNCTION ARCCOTH(x:Real): REAL; { inverse of hyperbolic cotangent } BEGIN ARCCOTH := LN((x+1)/(x-1))/2; END; END. { of unit }