File: ACOS.RA of Disk: V50/Source/Source-Listing-RALF-1
(Source file text) 

/R=ACOS(R) SINGLE PREC. TRIG. ARC-COSINE
/
/
/ VERSION 50A 23-MAY-80 WVDM
/
/
	SECT	ACOS
	JA	#ACOS
	EXTERN	#ARGER
ACOSER,	TRAP4	#ARGER
	TEXT	+ACOS  +
ACOSXR,	SETX	XRACOS
	SETB	BPACOS
BPACOS,	FNOP
	0
	0
XRACOS,	F 0.0
ACOS8,	F 0.0
ACOS7,	F 0.0
FPI2AC,	1			/PI OVER 2
	3110
	3755
F1ACOS,	F 1.
FPIACS,	2			/PI
	3110
	3755
	ORG	10*3+BPACOS
	FNOP
	JA	ACOSXR
	0
ACSRTN,	JA	.
/
	BASE	0
#ACOS,	STARTD
	FLDA	10*3
	FSTA	ACSRTN
	FLDA	0
	SETX	XRACOS
	SETB	BPACOS
	BASE	BPACOS
	LDX	1,1
	FSTA	BPACOS
	FLDA%	BPACOS,1	/ADDR OF X
	FSTA	BPACOS
	STARTF
	FLDA%	BPACOS		/GET X
	FSTA	ACOS8		/SAVE IT
	JEQ	ACOSEQ		/IF 0 RETURN PI OVER 2
	LDX	-1,0		/JUMP TIME
	JGE	.+5
	LDX	0,0
	FNEG
	FSUB	F1ACOS		/1-ABS(X)
	JGT	ACOSER		/IS IT .GT. 1.? ERROR
	FLDA	ACOS8		/X
	FMUL	ACOS8		/X^2
	FNEG			/-X^2
	FADD	F1ACOS		/1-X^2
	FSTA	ACOS7
	EXTERN	SQRT
	JSR	SQRT		/CALL SQRT
	JA	.+4		/SQRT (1-X^2)
	JA	ACOS7
	FDIV	ACOS8		/SQRT (1-X^2)/X
	FSTA	ACOS7
	EXTERN	ATAN
	JSR	ATAN		/CALL ATAN
	JA	.+4		/ATAN (SQRT(1-X^2)/X)
	JA	ACOS7
	JXN	ACSRTN,0	/NO SIGN CHANGE NECESSARY
	FADD	FPIACS		/ADD PI IF MINUS
	JA	ACSRTN
/
ACOSEQ,	FLDA	FPI2AC		/RETURN PI OVER 2 IF 0
	JA	ACSRTN