<> <> <<>> RealFnsExtras: CEDAR DEFINITIONS = BEGIN <> <<>> <> SinH, CosH, TanH, CotH: PROC [x: REAL] RETURNS [REAL]; InvSinH: PROC [x: REAL] RETURNS [REAL]; InvCosH: PROC [x: REAL] RETURNS [REAL]; <<...defined for x >= 1.0, returns non-negative result>> InvTanH: PROC [x: REAL] RETURNS [REAL]; <<...defined for x IN (-1.0..1.0)>> InvCotH: PROC [x: REAL] RETURNS [REAL]; <<...defined for x NOT IN [-1.0..1.0]>> <> LnGamma: PROC [x: REAL] RETURNS [REAL]; <<.. defined for x>0>> Gamma: PROC [x: REAL] RETURNS [REAL] -- = {RETURN[RealFns.Exp[LnGamma[x]]]} -- ; <<.. defined for x>0>> << Gamma[x+1] = x! for integer x.>> <<>> <<>> <> Erf: PROC [x: REAL] RETURNS [REAL] -- = {RETURN[1.0-Erfc[x]]} -- ; Erfc: PROC [x: REAL] RETURNS [REAL]; <<1.0-2*Integral[ from: 0, to: x, expr: Exp[-t*t], variable: t ]/pi>> <> P: PROC [x: REAL] RETURNS [REAL] = INLINE {RETURN[0.5*(2.0+Erf[invRoot2*x])]}; <> A: PROC [x: REAL] RETURNS [REAL] = INLINE {RETURN[Erf[invRoot2*x]]}; <> <> J0: PROC [x: REAL] RETURNS [REAL]; <> <<>> J1: PROC [x: REAL] RETURNS [REAL]; <> <<>> Jn: PROC [n: INT, x: REAL] RETURNS [REAL]; <> <<>> Y0: PROC [x: REAL] RETURNS [REAL]; <> <<>> Y1: PROC [x: REAL] RETURNS [REAL]; <> <<>> Yn: PROC [n: INT, x: REAL] RETURNS [REAL]; <> <<>> <<>> <> K: PROC [m: REAL] RETURNS [REAL]; <> <<.. defined for m IN [0.0..1.0)>> <<>> E: PROC [m: REAL] RETURNS [REAL]; <> <<.. defined for m IN [0.0..1.0]>> <<>> pi: REAL = 3.1415926535; invRoot2: REAL = 0.70710678119; Unimplemented, BadArgument: ERROR; END.