Funktion ARCUS SINUS in Clipper

Ersatz für Funktion ASIN() in CA-Clipper Tools III

FUNCTION ASINUS(zahl,trigmode)
LOCAL incr := 0
LOCAL pi   := 3.14159265358979323846
LOCAL v0   := 0
LOCAL v1   := 0
LOCAL v2   := 0
LOCAL v3   := 0
LOCAL v4   := 0
LOCAL v5   := 0
LOCAL x    := 0
x=zahl
IF x>0
	v0=x
	v1=1
ELSEIF x<0
	v0=-x
	v1=-1
ELSE
	v0=x
	v1=0
ENDIF
IF v0<1
	v2=x
	x=1-(x*x)
	IF x>0
		x=SQRT(x)
	ENDIF
	x=v2/x
	v0=x
	IF v0<0
		v0=-v0
	ENDIF
	IF v0>2.4142135623731
		v3=2
		v0=-1/v0
	ELSEIF v0>0.41421356237310
		v3=1
		v0=1-(2/(1+v0))
	ELSE
		v3=0
	ENDIF
	v1=216.06230789724
	v2=v0*v0
	v4=(((12.888383034157*v2+132.70239816398)*v2+322.66207001325)*v2+v1)*v0
	v5=(((v2+38.501486508351)*v2+221.05088302842)*v2+394.68283931228)*v2+v1
	v0=v4/v5
	IF v3>1.5
		v0+=1.5707963267949
	ELSEIF v3>0.5
		v0+=0.78539816339745
	ENDIF
	IF x<0
		v0=-v0
	ENDIF
	x=v0
ELSE
	x=v1*0.5*pi
ENDIF
IF UPPER(trigmode)=="DEG"
	x=x
ELSEIF UPPER(trigmode)=="RAD"
	x=x*180/pi
ELSE
	x=x
ENDIF
RETURN(x)

 

© 1998 EDV-Beratung L. Heitz

original work for dBase II 7.2.1986 by Dave C. Oshel, Ames, Iowa.
from the Ashton-Tate "Advanced Programmer's Guide", pp. 460-462.
coming from an article in MICROSYSTEMS 4 (December, 1983), by Lurie.
after the algorithms in Hart et al, "Computer Approximations", Kreiger, 1978.