;*******************************************************
; Sprawdz tan(3*a)=(3*tan(a)-(tan(a))^3/(1-3*(tan(a))^2)
; K. R.

.387

CODE    SEGMENT
        ASSUME CS:CODE,DS:CODE
        ORG 100H             ; Program typu .COM, CS=DS


START:  MOV  AX,CS            
        MOV  DS,AX      ; DS <- CS

	FLD A    	; zalad A na stos
	FPTAN		; TAN(A)
	FDIVR ST,ST(1)	; TAN(A)
	FST T		; T=TAN(A)
	FFREE ST(2)
	FFREE ST(1)
	FLD  TRZY	; 3
	FMUL ST(1),ST	; 3*T=3*TAN(A)	
	;FXCH ST ST(1)	;
	FSTP SMIEC
	FLD T
	FLD T
	FMUL ST,ST(1)
	FMUL ST,ST(1)
	; TRASH - SMIETNIK DO CZYSZCZ. STOSU Z NIEPOTRZ. RZECZY
	; FFREE	
	; FSTP TRASH
	; FXCH - ZAMIANA
	FSUB ST(2), ST	; 3TG(A)-TG^3(A)
	FSTP SMIEC
	FSTP SMIEC
	FST L		; LICZNIK
	; FLD1	- LADUJE 1
	FLD T
	FLD T
	FMUL ST,ST(1)
	FLD TRZY
	FMUL ST,ST(1)
	FLD1
	FSUB ST,ST(1) ; MIANOWNIK
	FLD L
	FDIV ST,ST(1)
	FST STR_PR
	FSTP SMIEC
	FSTP SMIEC
	FSTP SMIEC
	FSTP SMIEC
	FSTP SMIEC
	FSTP SMIEC
	FSTP SMIEC

 	FLD A
	FLD TRZY
	FMUL ST,ST(1)	;3*A
	FPTAN		; TAN(3A)
	FDIVR ST,ST(1)	; TAN(3A)
	FLD STR_PR
	FSUB ST,ST(1); 	;STRONA PRAWA - STRONA LEWA

	MOV AX,4C00H
	INT 21H


;*******************  Dane  ***********************
A	DQ	1.0	; KAT A W RAD
T	DQ	1.0 	;TANGENS A
TRZY	DQ	3.0
L	DQ	0.0 	;LICZNIK PRAWEJ STRONY
STR_PR	DQ	0.0	;STRONA PRAWA
SMIEC	DQ	0.0

CODE ENDS
END START
