ASMB,R,L,C * * **************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT * * * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * * **************************************************************** * * NAME: PART OF MATH LIBRARY * SOURCE: 24998-18XXX SEE NAM FOR LAST THREE DIGITS * RELOC: PART OF 24998-12001 * PGMR: BG & JTS * HED "DSIN" EXTENDED PRECISION SINE NAM DSIN,6 24998-1X144 REV.2001 750701 ENT DSIN EXT .ZRNT,.ENTP,..DCM EXT .DFER,ENTIX,XPOLY,.XADD,.XSUB,.XMPY,.XDIV SPC 1 * * EVALUATE SIN(X) = Y IN EXTENDED PRECISION. * CALLING SEQUENCE: * JSB DSIN * DEF *+3 * DEF Y * DEF X SPC 1 TDB NOP DEC 14 NOP SUB2 NOP JMP XUB2 SIGN NOP X1 REP 3 NOP TEMP REP 3 NOP Y NOP X NOP SPC 1 DSIN NOP JSB .ZRNT DEF LIBX JSB .ENTP DEF Y STA TDB+2 CLA STA SIGN SET SIGN FLAG = POSITIVE JSB .DFER PUT X INTO X1 DEF X1 DEF X,I LDA X1 SSA,RSS IF X < 0 THEN JMP NOCNG ISZ SIGN CHANGE SIGN JSB ..DCM X = -X SIGN = -SIGN DEF X1 NOCNG JSB .XSUB DEF TEMP TEMP = X - PI DEF X1 DEF PI LDA TEMP SSA,RSS IF X >= PI THEN JSB SUB2 ADJUST X AND SIGN FOR 0<= X = PI/2 THEN JMP NOADJ JSB .XSUB ADJUST X TO -PI/2 <= X < PI/2 DEF X1 DEF X1 DEF PI ISZ SIGN AND SET SIGN = -SIGN SPC 1 NOADJ LDA X1 IF ABS(X) < 10^-6 THEN SSA SIN(X) = X * SIGN JMP MINX JSB .XSUB DEF TEMP DEF X1 DEF .10M6 LDA TEMP SMALL SSA,RSS JMP POLY ELSE USE POLY. APPROX. OUT LDA SIGN SLA,RSS IF SIGN = NEG. JMP EXIT JSB ..DCM X1 = -X1 DEF X1 EXIT JSB .DFER Y = X1 DEF Y,I DEF X1 LIBX JMP TDB+2,I DEF TDB DEC 0 SPC 1 MINX JSB .XADD DEF TEMP DEF X1 DEF .10M6 LDA TEMP CMA JMP SMALL SPC 1 XUB2 JSB .XDIV DEF TEMP TEMP = X / PI DEF X1 DEF PI JSB ENTIX DEF *+3 DEF TEMP TEMP = ENTIER(X/PI) DEF TEMP SLA IF TEMP IS ODD THEN ISZ SIGN SIGN = -SIGN JSB .XMPY DEF TEMP TEMP = PI*ENTIER(X/PI) DEF TEMP DEF PI JSB .XSUB DEF X1 DEF X1 DEF TEMP JMP SUB2,I SPC 1 SPC 1 POLY JSB .XMPY DEF TEMP TEMP = X * X DEF X1 DEF X1 JSB XPOLY DEF *+5 DEF TEMP TEMP = POLY(TEMP) DEF N7 DEF TEMP DEF K1 JSB .XMPY DEF X1 X = TEMP * X DEF TEMP DEF X1 JMP OUT SPC 1 PI OCT 62207,166521,10404 .10M6 OCT 41433,15702,153333 PI2 OCT 62207,166521,10402 N7 OCT 7 K1 OCT 52251,144311,26301 OCT 112177,152274,154317 OCT 56167,34402,77735 OCT 113771,100307,114351 OCT 42104,42102,41365 OCT 125252,125252,125775 OCT 40000,0,2 END *