$ od -c -N 50000 [eris]<LispCore>SOURCES>CMLFLOAT!7 0000000 ( D E F I N E - F I L E - I N F 0000020 O 247 R E A D T A B L E " X C 0000040 L " 247 P A C K A G E " I N T 0000060 E R L I S P " ) \r 006 001 ( F I L E 0000100 C R E A T E D " 2 1 - O c t - 0000120 8 6 0 1 : 0 1 : 5 5 " 006 004 { 0000140 E R I S } < L I S P C O R E > S 0000160 O U R C E S > C M L F L O A T . 0000200 \ ; 7 006 001 6 0 0 4 5 \r \r 0000220 | c h a n g e s | | 0000240 t o : | ( V A R S C M L F 0000260 L O A T C O M S ) \r 0000300 0000320 ( F N S C L : L O G C L : 0000340 A S I N C L : A C O S C L : 0000360 S I N H C L : C O S H C L : 0000400 T A N H C L : E X P C L : S 0000420 I N C L : C O S \r 0000440 0000460 C L : T A N ) \r \r 0000500 | p r e v i o u s | 0000520 | d a t e : | " 1 6 - S e p 0000540 - 8 6 1 3 : 1 0 : 1 9 " { E 0000560 R I S } < L I S P C O R E > S O 0000600 U R C E S > C M L F L O A T . \ 0000620 ; 3 ) \r \r \r ; C o p y r i g h 0000640 t ( c ) 1 9 8 6 b y X e 0000660 r o x C o r p o r a t i o n . 0000700 A l l r i g h t s r e s 0000720 e r v e d . \r \r ( P R E T T Y C 0000740 O M P R I N T C M L F L O A T 0000760 C O M S ) \r \r ( R P A Q Q 006 002 0001000 C M L F L O A T C O M S 006 001 \r 0001020 ( ( * | ; ; ; | 0001040 " C M L F L O A T - - C o 0001060 v e r i n g s e c t i o n s 0001100 1 2 . 5 - 1 2 . 5 . 3 i r r a 0001120 t i o n a l , t r a n s c e n 0001140 d e n t a l , e x p o n e n t 0001160 i a l , l o g a r i t h m i c 0001200 , t r i g o n o m e t r i c , 0001220 a n d h y p e r b o l i c 0001240 f u n c t i o n s . S e c t 0001260 i o n 1 2 . 1 0 , i m p l e 0001300 m e n t a t i o n p a r a m e 0001320 t e r s . - - B y K e l 0001340 l y R o a c h . * " \r 0001360 ) \r 0001400 ( D E C L A R E \ : E V 0001420 A L @ C O M P I L E D O N T C 0001440 O P Y ( F I L E S ( L O A D 0001460 C O M P ) \r 0001500 * 0001540 L L F L O A T ) ) \r 0001560 ( C O M S ( * 0001600 | ; ; | \r " S e c t i o n 0001620 1 2 . 1 0 , i m p l e m e n 0001640 t a t i o n p a r a m e t e r 0001660 s . T h e c o n s t a n t 0001700 s i n t h i s C O M S a 0001720 r e e x p o r t e d t o t 0001740 h e u s e r . * " \r 0001760 ) \r 0002000 ( * 0002020 | ; ; | " % F L O A T a l 0002040 l o w s u s t o r e c r e 0002060 a t e F L O A T P s i n a 0002100 w a y t h a t i s i n d 0002120 e p e n d e n t o f t h e 0002140 o r d i n a i r y r e a d i n 0002160 g a n d p r i n t i n g F 0002200 L O A T P s t o f i l e s 0002220 w h i c h i n v o l v e s l 0002240 o s s o f t h e l a s t 0002260 c o u p l e b i t s o f a 0002300 c c u r a c y d u e t o r 0002320 o u n d i n g e f f e c t s . 0002340 * " \r 0002360 ) \r 0002400 ( * | ; ; | " U 0002420 s i n g I N I T V A R S i n 0002440 s t e a d o f C O N S T A N 0002460 T S i n v a r i o u s p l 0002500 a c e s h e r e b e c a u s 0002520 e o f p r o b l e m s w i 0002540 t h t h e w a y B Y T E C 0002560 O M P I L E R s t o r e s F 0002600 L O A T P s i n D C O M f 0002620 i l e s . R e f e r e n c e 0002640 s t o H a r r i s a r e 0002660 a c t u a l l y p r o b a b l 0002700 y r e f e r e n c e s t o 0002720 H a r t . " \r 0002740 ) \r 0002760 ( F N S % F L 0003000 O A T ) \r 0003020 ( C O N S T A N T S ( C 0003040 L : M O S T - P O S I T I V E - 0003060 F I X N U M 6 5 5 3 5 ) \r 0003100 0003120 ( C L : M O S T - N E G A 0003140 T I V E - F I X N U M - 6 5 5 0003160 3 6 ) ) \r 0003200 ( I N I T V A R S ( C L 0003220 : M O S T - P O S I T I V E - S 0003240 I N G L E - F L O A T ( % F L 0003260 O A T 3 2 6 3 9 6 5 5 3 5 ) 0003300 ) \r 0003320 ( C L : L E A S T 0003340 - P O S I T I V E - S I N G L E 0003360 - F L O A T ( % F L O A T 1 0003400 2 8 0 ) ) \r 0003420 ( C L : 0003440 L E A S T - N E G A T I V E - S 0003460 I N G L E - F L O A T ( % F L 0003500 O A T 3 2 8 9 6 0 ) ) \r 0003520 0003540 ( C L : M O S T - N E G A 0003560 T I V E - S I N G L E - F L O A 0003600 T ( % F L O A T 6 5 4 0 7 0003620 6 5 5 3 5 ) ) \r 0003640 ( C L 0003660 : M O S T - P O S I T I V E - S 0003700 H O R T - F L O A T C L : M O 0003720 S T - P O S I T I V E - S I N G 0003740 L E - F L O A T ) \r 0003760 ( 0004000 C L : L E A S T - P O S I T I V 0004020 E - S H O R T - F L O A T C L 0004040 : L E A S T - P O S I T I V E - 0004060 S I N G L E - F L O A T ) \r 0004100 0004120 ( C L : L E A S T - N E G 0004140 A T I V E - S H O R T - F L O A 0004160 T C L : L E A S T - N E G A T 0004200 I V E - S I N G L E - F L O A T 0004220 ) \r 0004240 ( C L : M O S T - 0004260 N E G A T I V E - S H O R T - F 0004300 L O A T C L : M O S T - N E G 0004320 A T I V E - S I N G L E - F L O 0004340 A T ) \r 0004360 ( C L : M O S 0004400 T - P O S I T I V E - D O U B L 0004420 E - F L O A T C L : M O S T - 0004440 P O S I T I V E - S I N G L E - 0004460 F L O A T ) \r 0004500 ( C L : 0004520 L E A S T - P O S I T I V E - D 0004540 O U B L E - F L O A T C L : L 0004560 E A S T - P O S I T I V E - S I 0004600 N G L E - F L O A T ) \r 0004620 0004640 ( C L : L E A S T - N E G A T 0004660 I V E - D O U B L E - F L O A T 0004700 C L : L E A S T - N E G A T I 0004720 V E - S I N G L E - F L O A T ) 0004740 \r 0004760 ( C L : M O S T - N 0005000 E G A T I V E - D O U B L E - F 0005020 L O A T C L : M O S T - N E G 0005040 A T I V E - S I N G L E - F L O 0005060 A T ) \r 0005100 ( C L : M O S 0005120 T - P O S I T I V E - L O N G - 0005140 F L O A T C L : M O S T - P O 0005160 S I T I V E - S I N G L E - F L 0005200 O A T ) \r 0005220 ( C L : L E 0005240 A S T - P O S I T I V E - L O N 0005260 G - F L O A T C L : L E A S T 0005300 - P O S I T I V E - S I N G L E 0005320 - F L O A T ) \r 0005340 ( C L 0005360 : L E A S T - N E G A T I V E - 0005400 L O N G - F L O A T C L : L E 0005420 A S T - N E G A T I V E - S I N 0005440 G L E - F L O A T ) \r 0005460 0005500 ( C L : M O S T - N E G A T I V 0005520 E - L O N G - F L O A T C L : 0005540 M O S T - N E G A T I V E - S I 0005560 N G L E - F L O A T ) ) \r 0005600 ( * | ; 0005620 ; | " E P S I L O N i s t 0005640 h e s m a l l e s t p o s i 0005660 t i v e f l o a t i n g p o 0005700 i n t n u m b e r s u c h 0005720 t h a t ( N O T ( = ( F L 0005740 O A T 1 E P S I L O N ) ( 0005760 + ( F L O A T 1 E P S I L 0006000 O N ) E P S I L O N ) ) ) * 0006020 " \r 0006040 ) \r 0006060 ( I N I T V A R S ( C L 0006100 : S I N G L E - F L O A T - E P 0006120 S I L O N ( % F L O A T 1 3 0006140 3 1 2 0 ) ) \r 0006160 ( C L 0006200 : S H O R T - F L O A T - E P S 0006220 I L O N C L : S I N G L E - F 0006240 L O A T - E P S I L O N ) \r 0006260 0006300 ( C L : D O U B L E - F L 0006320 O A T - E P S I L O N C L : S 0006340 I N G L E - F L O A T - E P S I 0006360 L O N ) \r 0006400 ( C L : L O 0006420 N G - F L O A T - E P S I L O N 0006440 C L : S I N G L E - F L O A T 0006460 - E P S I L O N ) ) \r 0006500 ( * | ; ; | 0006520 " N E G A T I V E - E P S I L 0006540 O N i s t h e s m a l l e 0006560 s t n e g a t i v e f l o a 0006600 t i n g p o i n t n u m b e 0006620 r s u c h t h a t ( N O T 0006640 ( = ( F L O A T 1 N E G 0006660 A T I V E - E P S I L O N ) ( 0006700 - - - ( F L O A T 1 N E G 0006720 A T I V E - E P S I L O N ) N 0006740 E G A T I V E - E P S I L O N ) 0006760 ) ) * " \r 0007000 ) \r 0007020 ( I N I T V A R S 0007040 ( C L : S I N G L E - F L O A 0007060 T - N E G A T I V E - E P S I L 0007100 O N ( % F L O A T 1 3 1 8 4 0007120 0 ) ) \r 0007140 ( C L : S H 0007160 O R T - F L O A T - N E G A T I 0007200 V E - E P S I L O N C L : S I 0007220 N G L E - F L O A T - N E G A T 0007240 I V E - E P S I L O N ) \r 0007260 0007300 ( C L : D O U B L E - F L O 0007320 A T - N E G A T I V E - E P S I 0007340 L O N C L : S I N G L E - F L 0007360 O A T - N E G A T I V E - E P S 0007400 I L O N ) \r 0007420 ( C L : L 0007440 O N G - F L O A T - N E G A T I 0007460 V E - E P S I L O N C L : S I 0007500 N G L E - F L O A T - N E G A T 0007520 I V E - E P S I L O N ) ) ) \r 0007540 ( C O M S ( * 0007560 \ ; " M i s c e l l a n e o u 0007600 s . * " ) \r 0007620 ( D E C L A R E \ : 0007640 E V A L @ C O M P I L E D O 0007660 N T C O P Y ( F I L E S ( L 0007700 O A D C O M P ) \r 0007720 * 0007760 L 0010000 L F L O A T ) ) \r 0010020 ( I N I T V A R S 0010040 ( C L : P I ( % F L O A T 0010060 1 6 4 5 7 4 0 5 9 ) ) ) \r 0010100 ( * | 0010120 ; ; | " S h o u l d b e ( 0010140 D E C L A R E : E V A L @ C O 0010160 M P I L E D O N T C O P Y ( 0010200 C O N S T A N T S . . . ) ) 0010220 e x c e p t t h a t c o m p 0010240 i l e r d o e s a p o o r 0010260 j o b o f c o m p i l i n 0010300 g F L O A T P s . U s e 0010320 a n I N I T V A R S t o p 0010340 a t c h a r o u n d t h i s 0010360 s i t u a t i o n f o r n 0010400 o w . * " \r 0010420 ) \r 0010440 ( I N I T V A 0010460 R S ( % E ( % F L O A T 1 0010500 6 4 2 9 6 3 5 7 2 ) ) \r 0010520 0010540 ( % 2 P I ( % F L O A T 0010560 1 6 5 8 5 4 0 5 9 ) ) \r 0010600 0010620 ( % P I ( % F L O A T 1 0010640 6 4 5 7 4 0 5 9 ) ) \r 0010660 0010700 ( % 2 P I / 3 ( % F L O A T 0010720 1 6 3 9 0 2 7 0 6 ) ) \r 0010740 0010760 ( % P I / 2 ( % F L O A 0011000 T 1 6 3 2 9 4 0 5 9 ) ) \r 0011020 0011040 ( % - P I / 2 ( % F L 0011060 O A T 4 9 0 9 7 4 0 5 9 ) ) 0011100 \r 0011120 ( % P I / 3 ( % F 0011140 L O A T 1 6 2 6 2 2 7 0 6 ) 0011160 ) \r 0011200 ( % P I / 4 ( % 0011220 F L O A T 1 6 2 0 1 4 0 5 9 0011240 ) ) \r 0011260 ( % - P I / 4 0011300 ( % F L O A T 4 8 9 6 9 4 0 0011320 5 9 ) ) \r 0011340 ( % P I / 6 0011360 ( % F L O A T 1 6 1 3 4 2 0011400 7 0 6 ) ) \r 0011420 ( % 2 / P 0011440 I ( % F L O A T 1 6 1 6 2 0011460 6 3 8 7 5 ) ) ) \r 0011500 ( F N S % M A K 0011520 E - A R R A Y ) ) \r 0011540 ( C O M S ( * C L : E X 0011560 P * ) \r 0011600 ( C O M S ( I N I T V A 0011620 R S ( % L O G - B A S E 2 - E 0011640 ( % F L O A T 1 6 3 1 2 4 0011660 3 5 7 9 ) ) ) \r 0011700 ( * | 0011720 ; ; | " % E X P - P O L Y c 0011740 o n t a i n s P a n d Q 0011760 c o e f f i c i e n t s o f 0012000 H a r r i s e t a l E X P 0012020 B 1 1 0 3 r a t i o n a l 0012040 a p p r o x i m a t i o n t o 0012060 ( E X P T 2 X ) i n i 0012100 n t e r v a l ( 0 . 1 2 5 ) 0012120 . % E X P - T A B L E c o 0012140 n t a i n s v a l u e s o f 0012160 p o w e r s ( E X P T 2 0012200 ( / N 8 ) ) . * " \r 0012220 0012240 ) \r 0012260 ( V A R 0012300 S ( % E X P - P O L Y ( % M 0012320 A K E - A R R A Y ( L I S T 0012340 ( % F L O A T 1 5 5 4 9 1 7 0012360 6 5 9 ) \r 0012400 * 0012440 ( % F 0012460 L O A T 1 6 2 5 6 0 ) \r 0012500 * 0012560 ( % F L O A T 1 6 0012600 8 0 1 3 8 2 7 3 ) \r 0012620 * 0012700 ( % F L O A T 1 7 2 5 7 0012720 7 7 1 7 ) \r 0012740 * 0013000 ( 0013020 % F L O A T 1 7 5 9 7 1 1 7 0013040 3 9 ) \r 0013060 * 0013120 ( % F L 0013140 O A T 1 7 8 0 0 3 0 4 0 1 ) 0013160 ) ) ) \r 0013200 ( % 0013220 E X P - T A B L E ( % M A K E 0013240 - A R R A Y ( L I S T ( % F 0013260 L O A T 1 6 2 5 6 0 ) \r 0013300 * 0013360 ( % F L O A T 1 0013400 6 2 6 7 3 8 3 3 8 ) \r 0013420 * 0013500 ( % F L O A T 1 6 2 0013520 8 0 1 4 3 2 0 ) \r 0013540 * 0013620 ( % F L O A T 1 6 2 9 3 0013640 6 5 2 3 9 ) \r 0013660 * 0013740 ( % F L O A T 1 6 3 0 9 1 0013760 2 6 7 ) \r 0014000 * 0014040 ( % 0014060 F L O A T 1 6 3 2 5 2 6 4 1 0014100 0 ) \r 0014120 * 0014160 ( % F L 0014200 O A T 1 6 3 4 3 1 7 6 6 1 ) 0014220 \r 0014240 * 0014300 ( % F L O A 0014320 T 1 6 3 6 2 4 9 3 5 1 ) ) ) 0014340 ) ) ) \r 0014360 ( F N S C L : E X P % E 0014400 X P - F L O A T % E X P - C O 0014420 M P L E X ) ) \r 0014440 ( C O M S ( * E X P T * ) 0014460 \r ( 0014500 F N S C L : E X P T % E X P 0014520 T - I N T E G E R % E X P T - 0014540 F L O A T % E X P T - C O M P 0014560 L E X % E X P T - C O M P L E 0014600 X - P O W E R ) ) \r 0014620 ( C O M S ( * C L : L O 0014640 G * ) \r 0014660 ( C O M S ( I N I T V A 0014700 R S ( % L O G 2 ( % F L O A 0014720 T 1 6 1 7 7 2 9 2 0 8 ) ) \r 0014740 0014760 ( % S Q R 0015000 T 2 ( % F L O A T 1 6 3 0 9 0015020 1 2 6 7 ) ) ) \r 0015040 ( * 0015060 | ; ; | " % L O G - P P O L Y 0015100 a n d % L O G - Q P O L Y 0015120 c o n t a i n P a n d Q 0015140 c o e f f i c i e n t s o f 0015160 H a r r i s e t a l L O G 0015200 E 2 7 0 7 r a t i o n a l 0015220 a p p r o x i m a t i o n t o 0015240 ( L O G X ) i n i n t e 0015260 r v a l ( ( S Q R T . 5 ) 0015300 ( S Q R T 2 ) ) . * " \r 0015320 0015340 ) \r 0015360 ( V A 0015400 R S ( % L O G - P P O L Y ( 0015420 % M A K E - A R R A Y ( L I S 0015440 T ( % F L O A T 1 6 0 4 2 0015460 2 2 8 0 3 ) \r 0015500 * 0015560 ( % F L O A T 4 9 4 8 4 2 3 0015600 5 9 0 ) \r 0015620 * 0015660 ( % 0015700 F L O A T 1 7 0 4 4 1 7 9 8 0015720 2 ) \r 0015740 * 0016000 ( % F L 0016020 O A T 4 9 9 2 6 3 7 1 5 3 ) 0016040 \r 0016060 * 0016120 ( % F L O A 0016140 T 1 7 0 4 6 5 3 6 7 ) ) ) ) 0016160 \r 0016200 ( % L O G 0016220 - Q P O L Y ( % M A K E - A R 0016240 R A Y ( L I S T ( % F L O A 0016260 T 1 6 2 5 6 0 ) \r 0016300 * 0016360 ( % F L O A T 4 9 5 1 0016400 2 9 1 0 3 ) \r 0016420 * 0016500 ( % F L O A T 1 6 9 9 2 4 0016520 2 2 7 4 ) \r 0016540 * 0016600 ( 0016620 % F L O A T 4 9 8 2 3 3 8 0 0016640 4 8 ) \r 0016660 * 0016720 ( % F 0016740 L O A T 1 6 9 1 8 5 3 6 7 ) 0016760 ) ) ) ) ) \r 0017000 ( F N S C L : L O G 0017020 % L O G - F L O A T % L O G - 0017040 C O M P L E X ) ) \r 0017060 ( C O M S ( * S Q R T 0017100 * ) \r 0017120 ( F N S C L : S Q R T % S 0017140 Q R T - F L O A T % S Q R T - 0017160 C O M P L E X ) ) \r 0017200 ( C O M S ( * S I N * 0017220 ) \r 0017240 ( C O M S ( * | ; ; | " % 0017260 S I N - E P S I L O N i s s 0017300 u f f i c i e n t l y s m a l 0017320 l t h a t ( S I N X ) = 0017340 X f o r X i n i n t e 0017360 r v a l ( 0 % S I N - E P S 0017400 I L O N ) . I t s u f f i 0017420 c e s t o t a k e % S I N 0017440 - E P S I L O N a l i t t l 0017460 e b i t s m a l l e r t h 0017500 a n ( S Q R T ( * 6 S I 0017520 N G L E - F L O A T - E P S I L 0017540 O N ) ) w h i c h w e g e 0017560 t b y t h e T a y l o r 0017600 s e r i e s e x p a n s i o n 0017620 ( S I N X ) = ( + X 0017640 ( / ( E X P T X 3 ) 6 ) 0017660 . . . ) ( T h e r e l a t 0017700 i v e e r r o r c a u s e d 0017720 b y o m m i t t i n g ( / 0017740 ( E X P T X 3 ) 6 ) i 0017760 s n ' t o b s e r v a b l e . 0020000 ) C o m p a r i s o n a g a 0020020 i n s t % S I N - E P S I L O 0020040 N i s u s e d t o a v o 0020060 i d P O L Y E V A L m i c r 0020100 o c o d e u n d e r f l o w 0020120 w h e n c o m p u t i n g S 0020140 I N . * " \r 0020160 ) 0020200 \r 0020220 ( I N I T V A R S ( 0020240 % S I N - E P S I L O N ( % F 0020260 L O A T 1 4 7 2 0 0 ) ) ) \r 0020300 0020320 ( * | ; ; | " % S I 0020340 N - P P O L Y a n d % S I N 0020360 - Q P O L Y c o n t a i n a 0020400 d a p t e d P a n d Q c 0020420 o e f f i c i e n t s o f H 0020440 a r r i s e t a l S I N 0020460 3 3 7 4 r a t i o n a l a p 0020500 p r o x i m a t i o n t o ( 0020520 S I N X ) i n i n t e r v 0020540 a l ( 0 ( / P I 2 ) ) . 0020560 T h e c o e f f i c i e n 0020600 t s f o r % S I N - P P O L 0020620 Y a n d % S I N - Q P O L Y 0020640 h a v e b e e n c o m p u 0020660 t e d f r o m H a r r i s 0020700 u s i n g e x t e n d e d p 0020720 r e c i s i o n r o u t i n e 0020740 s a n d t h e r e l a t i 0020760 o n s % S I N - P P O L Y = 0021000 ( R E V E R S E ( f o r I 0021020 f r o m 0 a s E N T R Y 0021040 i n P S c o l l e c t ( 0021060 / ( * ( E X P T ( / 2 0021100 P I ) ( 1 + ( * 2 I ) ) 0021120 ) E N T R Y ) Q 0 ) ) ) a 0021140 n d % S I N - Q P O L Y = 0021160 ( R E V E R S E ( f o r I 0021200 f r o m 0 a s E N T R Y 0021220 i n Q S c o l l e c t ( / 0021240 ( * ( E X P T ( / 2 P 0021260 I ) ( * 2 I ) ) E N T R 0021300 Y ) Q 0 ) ) ) * " \r 0021320 0021340 ) \r 0021360 ( V A R S ( 0021400 % S I N - P P O L Y ( % M A K 0021420 E - A R R A Y ( L I S T ( % 0021440 F L O A T 4 5 2 3 6 2 5 6 1 0021460 1 ) \r 0021500 * 0021540 ( % F L 0021560 O A T 1 3 5 8 9 2 6 1 4 8 ) 0021600 \r 0021620 * 0021660 ( % F L O A 0021700 T 4 7 2 8 6 3 4 7 9 7 ) \r 0021720 * 0022000 ( % F L O A T 0022020 1 5 2 9 5 3 3 0 6 ) \r 0022040 * 0022120 ( % F L O A T 4 8 6 0022140 6 6 3 4 8 0 5 ) \r 0022160 * 0022240 ( % F L O A T 1 6 2 5 6 0022260 0 ) ) ) ) \r 0022300 0022320 ( % S I N - Q P O L Y ( % M 0022340 A K E - A R R A Y ( L I S T 0022360 ( % F L O A T 1 1 3 8 4 5 2 0022400 8 6 5 ) \r 0022420 * 0022460 ( % 0022500 F L O A T 1 2 5 5 3 9 5 5 0 0022520 ) \r 0022540 * 0022600 ( % F L O 0022620 A T 1 3 6 0 4 3 8 3 8 5 ) \r 0022640 * 0022720 ( % F L O A T 0022740 1 4 5 9 3 1 8 8 4 1 ) \r 0022760 * 0023040 ( % F L O A T 1 0023060 5 4 8 9 5 5 4 9 ) \r 0023100 * 0023160 ( % F L O A T 1 6 2 5 0023200 6 0 ) ) ) ) ) ) \r 0023220 ( F N S C L : 0023240 S I N % S I N - F L O A T % 0023260 S I N - C O M P L E X ) ) \r 0023300 ( C O M S ( * C 0023320 O S * ) \r 0023340 ( F N S C L : C O S 0023360 % C O S - C O M P L E X ) ) \r 0023400 ( C O M S ( * 0023420 T A N * ) \r 0023440 ( C O M S ( * | ; 0023460 ; | " % T A N - E P S I L O N 0023500 i s s u f f i c i e n t l y 0023520 s m a l l t h a t ( T A N 0023540 X ) = X f o r X i n 0023560 i n t e r v a l ( 0 % T A 0023600 N - E P S I L O N ) . I t 0023620 s u f f i c e s t o t a k e 0023640 % T A N - E P S I L O N a 0023660 l i t t l e b i t s m a l l 0023700 e r t h a n ( S Q R T ( * 0023720 3 S I N G L E - F L O A T - 0023740 E P S I L O N ) ) w h i c h 0023760 w e g e t b y t h e T a 0024000 y l o r s e r i e s e x p a 0024020 n s i o n ( T A N X ) = 0024040 ( + X ( / ( E X P T X 0024060 3 ) 3 ) . . . ) ( T h e 0024100 r e l a t i v e e r r o r c 0024120 a u s e d b y o m m i t t i 0024140 n g ( / ( E X P T X 3 ) 0024160 3 ) i s n ' t o b s e r v 0024200 a b l e . ) C o m p a r i s o 0024220 n a g a i n s t % T A N - E 0024240 P S I L O N i s u s e d t 0024260 o a v o i d P O L Y E V A L 0024300 m i c r o c o d e u n d e r 0024320 f l o w w h e n c o m p u t 0024340 i n g T A N . * " \r 0024360 0024400 ) \r 0024420 ( I N I T V 0024440 A R S ( % T A N - E P S I L O 0024460 N ( % F L O A T 1 4 7 2 0 0024500 0 ) ) ) \r 0024520 ( * | ; ; | 0024540 " % T A N - P P O L Y a n d 0024560 % T A N - Q P O L Y c o n t 0024600 a i n a d a p t e d P a n 0024620 d Q c o e f f i c i e n t s 0024640 o f H a r r i s e t a l 0024660 T A N 4 2 8 8 r a t i o n 0024700 a l a p p r o x i m a t i o n 0024720 t o ( T A N X ) i n i 0024740 n t e r v a l ( - P I / 4 P 0024760 I / 4 ) . T h e c o e f f 0025000 i c i e n t s f o r % T A N 0025020 - P P O L Y a n d % T A N - 0025040 Q P O L Y h a v e b e e n 0025060 c o m p u t e d f r o m H a 0025100 r r i s u s i n g e x t e n 0025120 d e d p r e c i s i o n r o 0025140 u t i n e s a n d t h e r 0025160 e l a t i o n s % T A N - P P 0025200 O L Y = ( R E V E R S E ( 0025220 f o r I f r o m 0 a s 0025240 E N T R Y i n P S c o l l 0025260 e c t ( / ( * ( E X P T 0025300 ( / 4 P I ) ( 1 + ( * 0025320 2 I ) ) ) E N T R Y ) Q 0 0025340 ) ) ) a n d % T A N - Q P O 0025360 L Y = ( R E V E R S E ( f 0025400 o r I f r o m 0 a s E 0025420 N T R Y i n Q S c o l l e 0025440 c t ( / ( * ( E X P T ( 0025460 / 4 P I ) ( * 2 I ) ) 0025500 E N T R Y ) Q 0 ) ) ) * " 0025520 \r 0025540 ) \r 0025560 ( V 0025600 A R S ( % T A N - P P O L Y 0025620 ( % M A K E - A R R A Y ( L I 0025640 S T ( % F L O A T 1 3 2 3 7 0025660 2 1 0 9 0 ) \r 0025700 * 0025760 ( % F L O A T 4 7 1 4 1 1 0026000 5 8 2 5 ) \r 0026020 * 0026060 ( 0026100 % F L O A T 1 5 2 4 6 8 7 8 0026120 5 ) \r 0026140 * 0026200 ( % F L 0026220 O A T 4 8 6 5 5 4 8 7 6 1 ) 0026240 \r 0026260 * 0026320 ( % F L O A 0026340 T 1 6 2 5 6 0 ) ) ) ) \r 0026360 0026400 ( % T A N - Q P 0026420 O L Y ( % M A K E - A R R A Y 0026440 ( L I S T ( % F L O A T 4 0026460 5 2 6 7 3 6 9 4 7 ) \r 0026500 * 0026560 ( % F L O A T 1 3 8 0026600 4 8 4 6 8 7 5 ) \r 0026620 * 0026700 ( % F L O A T 4 7 6 1 2 0026720 5 3 7 3 8 ) \r 0026740 * 0027020 ( % F L O A T 1 5 5 9 6 5 0027040 2 8 5 4 ) \r 0027060 * 0027120 ( 0027140 % F L O A T 4 8 8 8 2 3 5 3 0027160 0 3 ) \r 0027200 * 0027240 ( % F 0027260 L O A T 1 6 2 5 6 0 ) ) ) ) 0027300 ) ) \r 0027320 ( F N S C L : T A N % T A 0027340 N - F L O A T % T A N - C O M 0027360 P L E X ) ) \r ( 0027400 C O M S ( * C L : A S I N 0027420 * ) \r 0027440 ( C O M S ( * | ; ; | " 0027460 % A S I N - E P S I L O N i s 0027500 s u f f i c i e n t l y s m 0027520 a l l t h a t ( A S I N X 0027540 ) = X f o r X i n i 0027560 n t e r v a l ( 0 % A S I N 0027600 - E P S I L O N ) . I t s 0027620 u f f i c e s t o t a k e 0027640 % A S I N - E P S I L O N a 0027660 l i t t l e b i t s m a l l 0027700 e r t h a n ( * 2 S I N 0027720 G L E - F L O A T - E P S I L O 0027740 N ) w h i c h w e g e t 0027760 b y t h e T a y l o r s e 0030000 r i e s e x p a n s i o n ( 0030020 A S I N X ) = ( + X ( 0030040 / ( E X P T X 3 ) 6 ) 0030060 . . . ) ( T h e r e l a t i 0030100 v e e r r o r c a u s e d 0030120 b y o m m i t t i n g ( / 0030140 ( E X P T X 3 ) 6 ) i s 0030160 n ' t o b s e r v a b l e . ) 0030200 C o m p a r i s o n a g a i 0030220 n s t % A S I N - E P S I L O 0030240 N i s u s e d t o a v o 0030260 i d P O L Y E V A L m i c r 0030300 o c o d e u n d e r f l o w 0030320 w h e n c o m p u t i n g S 0030340 I N . * " \r 0030360 ) 0030400 \r 0030420 ( I N I T V A R S ( 0030440 % A S I N - E P S I L O N ( % 0030460 F L O A T 1 4 7 2 0 0 ) ) ) 0030500 \r 0030520 ( * | ; ; | " % A 0030540 S I N - P P O L Y a n d % A 0030560 S I N - Q P O L Y c o n t a i 0030600 n P a n d Q c o e f f i 0030620 c i e n t s o f H a r r i s 0030640 e t a l A R C S N 4 6 7 0030660 1 r a t i o n a l a p p r o 0030700 x i m a t i o n t o ( A S I 0030720 N X ) i n i n t e r v a l 0030740 ( 0 ( S Q R T . 5 ) ) 0030760 . * " \r 0031000 ) \r 0031020 0031040 ( V A R S ( % A S I N - P 0031060 P O L Y ( % M A K E - A R R A 0031100 Y ( L I S T ( % F L O A T 0031120 1 6 0 0 7 5 0 0 4 5 ) \r 0031140 * 0031220 ( % F L O A T 4 0031240 9 5 4 9 8 0 2 0 ) \r 0031260 * 0031340 ( % F L O A T 1 7 2 0031360 3 6 1 5 8 4 8 ) \r 0031400 * 0031460 ( % F L O A T 5 0 2 8 0031500 5 6 3 4 6 4 ) \r 0031520 * 0031600 ( % F L O A T 1 7 6 5 0 0031620 3 1 2 3 5 ) \r 0031640 * 0031720 ( % F L O A T 5 0 4 0 3 0031740 6 2 8 5 2 ) \r 0031760 * 0032040 ( % F L O A T 1 7 4 4 0 3 0032060 9 4 7 1 ) ) ) ) \r 0032100 0032120 ( % A S I N - Q P O L Y 0032140 ( % M A K E - A R R A Y ( L I 0032160 S T ( % F L O A T 1 6 2 5 6 0032200 0 ) \r 0032220 * 0032260 ( % 0032300 F L O A T 4 9 6 7 2 2 5 8 1 0032320 7 ) \r 0032340 * 0032400 ( % F 0032420 L O A T 1 7 3 0 8 5 5 2 6 0 0032440 ) \r 0032460 * 0032520 ( % F L 0032540 O A T 5 0 3 2 6 3 8 0 9 8 ) 0032560 \r 0032600 * 0032640 ( % F L O 0032660 A T 1 7 6 7 4 2 2 2 1 0 ) \r 0032700 * 0032760 ( % F L O A 0033000 T 5 0 4 1 7 2 2 4 5 1 ) \r 0033020 * 0033100 ( % F L O A T 0033120 1 7 4 4 0 3 9 4 7 1 ) ) ) ) 0033140 ) ) \r 0033160 ( F N S C L : A S I N % A 0033200 S I N - F L O A T % A S I N - 0033220 C O M P L E X ) ) \r 0033240 ( C O M S ( * C L : A C 0033260 O S * ) \r 0033300 ( F N S C L : A C O S 0033320 % A C O S - C O M P L E X ) ) 0033340 \r ( C O M S ( 0033360 * A T A N * ) \r 0033400 ( I N I T V A R 0033420 S ( % S Q R T 3 ( % F L O A 0033440 T 1 6 3 4 9 4 6 0 3 9 ) ) \r 0033460 0033500 ( % 2 - S Q R T 3 ( 0033520 % F L O A T 1 6 0 0 9 1 2 4 0033540 5 1 ) ) \r 0033560 ( % I N V - 0033600 2 - S Q R T 3 ( % F L O A T 0033620 1 6 4 9 4 5 5 7 8 8 ) ) ) \r 0033640 ( F N 0033660 S C L : A T A N % A T A N - 0033700 F L O A T 1 % A T A N - F L O 0033720 A T 2 % A T A N - D O M A I N 0033740 - C H E C K % A T A N - F L O 0033760 A T % A T A N - C O M P L E X 0034000 ) ) \r ( C O M S 0034020 ( * C L : C I S * ) \r 0034040 ( F N S 0034060 C L : C I S ) ) \r 0034100 ( C O M S ( * C L : S I 0034120 N H C L : C O S H C L : T A 0034140 N H * ) \r 0034160 ( F N S C L : S I N H 0034200 C L : C O S H C L : T A N H 0034220 ) ) \r ( C O M S 0034240 ( * C L : A S I N H C L : 0034260 A C O S H C L : A T A N H * 0034300 ) \r 0034320 ( F N S C L : A S I N H C L 0034340 : A C O S H C L : A T A N H 0034360 % A T A N H - D O M A I N - C H 0034400 E C K ) ) \r ( P 0034420 R O P F I L E T Y P E C M L 0034440 F L O A T ) \r ( 0034460 D E C L A R E \ : D O N T E V 0034500 A L @ L O A D D O E V A L @ C 0034520 O M P I L E D O N T C O P Y 0034540 C O M P I L E R V A R S \r 0034560 ( A D D 0034600 V A R S ( N L A M A ) \r 0034620 0034640 ( N L A M L ) \r 0034660 0034700 ( L A M A % A T A N H - D O 0034720 M A I N - C H E C K C L : A T 0034740 A N H C L : A C O S H C L : 0034760 A S I N H C L : T A N H C L 0035000 : C O S H C L : S I N H \r 0035020 0035040 C L : C I 0035060 S % A T A N - C O M P L E X 0035100 % A T A N - F L O A T % A T A 0035120 N - D O M A I N - C H E C K % 0035140 A T A N - F L O A T 2 \r 0035160 0035200 % A T A N - F 0035220 L O A T 1 C L : A T A N % A 0035240 C O S - C O M P L E X C L : A 0035260 C O S % A S I N - C O M P L E 0035300 X C L : A S I N \r 0035320 0035340 % T A N - C O M P 0035360 L E X C L : T A N % C O S - 0035400 C O M P L E X C L : C O S % 0035420 S I N - C O M P L E X C L : S 0035440 I N C L : S Q R T \r 0035460 0035500 % L O G - C O M 0035520 P L E X C L : L O G % E X P 0035540 T - C O M P L E X - P O W E R 0035560 % E X P T - C O M P L E X % E 0035600 X P T - I N T E G E R \r 0035620 0035640 C L : E X P T 0035660 % E X P - C O M P L E X % E 0035700 X P - F L O A T C L : E X P ) 0035720 ) ) ) ) \r \r \r \r 006 004 ( * | ; ; 0035740 ; | \r " C M L F L O A T - - 0035760 C o v e r i n g s e c t i o 0036000 n s 1 2 . 5 - 1 2 . 5 . 3 i 0036020 r r a t i o n a l , t r a n s 0036040 c e n d e n t a l , e x p o n 0036060 e n t i a l , l o g a r i t h 0036100 m i c , t r i g o n o m e t r 0036120 i c , a n d h y p e r b o l 0036140 i c f u n c t i o n s . S 0036160 e c t i o n 1 2 . 1 0 , i m 0036200 p l e m e n t a t i o n p a r 0036220 a m e t e r s . - - B y 0036240 K e l l y R o a c h . * " 0036260 \r ) 006 001 \r \r ( D E C L A R E \ : 0036300 E V A L @ C O M P I L E D O 0036320 N T C O P Y \r ( F I L E S L O 0036340 A D ( L O A D C O M P ) \r 0036360 L L F L O A T ) \r ) \r 0036400 \r \r \r 006 004 ( * | ; ; | \r " S 0036420 e c t i o n 1 2 . 1 0 , i m 0036440 p l e m e n t a t i o n p a r 0036460 a m e t e r s . T h e c o 0036500 n s t a n t s i n t h i s 0036520 C O M S a r e e x p o r t e 0036540 d t o t h e u s e r . 0036560 * " ) 006 001 \r \r \r \r \r 006 004 ( * | 0036600 ; ; | \r " % F L O A T a l l 0036620 o w s u s t o r e c r e a 0036640 t e F L O A T P s i n a 0036660 w a y t h a t i s i n d e 0036700 p e n d e n t o f t h e o 0036720 r d i n a i r y r e a d i n g 0036740 a n d p r i n t i n g F L 0036760 O A T P s t o f i l e s w 0037000 h i c h i n v o l v e s l o 0037020 s s o f t h e l a s t c 0037040 o u p l e b i t s o f a c 0037060 c u r a c y d u e t o r o 0037100 u n d i n g e f f e c t s . 0037120 * " \r ) 006 001 \r \r \r \r \r 006 004 ( * 0037140 | ; ; | \r " U s i n g I N 0037160 I T V A R S i n s t e a d o 0037200 f C O N S T A N T S i n v 0037220 a r i o u s p l a c e s h e 0037240 r e b e c a u s e o f p r 0037260 o b l e m s w i t h t h e 0037300 w a y B Y T E C O M P I L E R 0037320 s t o r e s F L O A T P s 0037340 i n D C O M f i l e s . 0037360 R e f e r e n c e s t o H a 0037400 r r i s a r e a c t u a l l 0037420 y p r o b a b l y r e f e r 0037440 e n c e s t o H a r t . " \r 0037460 ) 006 001 \r \r ( D E F I N E Q \r \r ( 0037500 006 004 % F L O A T 006 001 \r ( L A 0037520 M B D A ( H I W O R D L O W 0037540 O R D ) 006 006 006 001 0037560 0037600 006 006 ( * 0037620 | k b r : | " 1 4 - M a y - 0037640 8 6 1 6 : 4 3 " ) 006 001 \r 0037660 ( \ \ F L O A T B O X ( \ \ 0037700 V A G 2 H I W O R D L O W O 0037720 R D ) ) ) ) \r ) \r ( D E C L A R 0037740 E \ : E V A L @ C O M P I L E 0037760 \r \r ( R P A Q Q 006 002 C L : M 0040000 O S T - P O S I T I V E - F I X 0040020 N U M 006 001 6 5 5 3 5 ) \r \r ( R 0040040 P A Q Q 006 002 C L : M O S T - N 0040060 E G A T I V E - F I X N U M 006 001 0040100 - 6 5 5 3 6 ) \r \r ( C O N S T 0040120 A N T S ( C L : M O S T - P O 0040140 S I T I V E - F I X N U M 6 5 0040160 5 3 5 ) \r ( C L : 0040200 M O S T - N E G A T I V E - F I 0040220 X N U M - 6 5 5 3 6 ) ) \r ) \r 0040240 \r ( R P A Q ? 006 002 C L : M O S 0040260 T - P O S I T I V E - S I N G L 0040300 E - F L O A T 006 001 ( % F L O A 0040320 T 3 2 6 3 9 6 5 5 3 5 ) ) \r 0040340 \r ( R P A Q ? 006 002 C L : L E A 0040360 S T - P O S I T I V E - S I N G 0040400 L E - F L O A T 006 001 ( % F L O 0040420 A T 1 2 8 0 ) ) \r \r ( R P A 0040440 Q ? 006 002 C L : L E A S T - N E 0040460 G A T I V E - S I N G L E - F L 0040500 O A T 006 001 ( % F L O A T 3 2 0040520 8 9 6 0 ) ) \r \r ( R P A Q ? 0040540 006 002 C L : M O S T - N E G A T I 0040560 V E - S I N G L E - F L O A T 006 0040600 001 ( % F L O A T 6 5 4 0 7 0040620 6 5 5 3 5 ) ) \r \r ( R P A Q ? 0040640 006 002 C L : M O S T - P O S I T I 0040660 V E - S H O R T - F L O A T 006 001 0040700 C L : M O S T - P O S I T I V 0040720 E - S I N G L E - F L O A T ) \r 0040740 \r ( R P A Q ? 006 002 C L : L E A 0040760 S T - P O S I T I V E - S H O R 0041000 T - F L O A T 006 001 C L : L E A 0041020 S T - P O S I T I V E - S I N G 0041040 L E - F L O A T ) \r \r ( R P A Q 0041060 ? 006 002 C L : L E A S T - N E G 0041100 A T I V E - S H O R T - F L O A 0041120 T 006 001 C L : L E A S T - N E G 0041140 A T I V E - S I N G L E - F L O 0041160 A T ) \r \r ( R P A Q ? 006 002 C L 0041200 : M O S T - N E G A T I V E - S 0041220 H O R T - F L O A T 006 001 C L : 0041240 M O S T - N E G A T I V E - S I 0041260 N G L E - F L O A T ) \r \r ( R P 0041300 A Q ? 006 002 C L : M O S T - P O 0041320 S I T I V E - D O U B L E - F L 0041340 O A T 006 001 C L : M O S T - P O 0041360 S I T I V E - S I N G L E - F L 0041400 O A T ) \r \r ( R P A Q ? 006 002 C 0041420 L : L E A S T - P O S I T I V E 0041440 - D O U B L E - F L O A T 006 001 0041460 C L : L E A S T - P O S I T I V 0041500 E - S I N G L E - F L O A T ) \r 0041520 \r ( R P A Q ? 006 002 C L : L E A 0041540 S T - N E G A T I V E - D O U B 0041560 L E - F L O A T 006 001 C L : L E 0041600 A S T - N E G A T I V E - S I N 0041620 G L E - F L O A T ) \r \r ( R P A 0041640 Q ? 006 002 C L : M O S T - N E G 0041660 A T I V E - D O U B L E - F L O 0041700 A T 006 001 C L : M O S T - N E G 0041720 A T I V E - S I N G L E - F L O 0041740 A T ) \r \r ( R P A Q ? 006 002 C L 0041760 : M O S T - P O S I T I V E - L 0042000 O N G - F L O A T 006 001 C L : M 0042020 O S T - P O S I T I V E - S I N 0042040 G L E - F L O A T ) \r \r ( R P A 0042060 Q ? 006 002 C L : L E A S T - P O 0042100 S I T I V E - L O N G - F L O A 0042120 T 006 001 C L : L E A S T - P O S 0042140 I T I V E - S I N G L E - F L O 0042160 A T ) \r \r ( R P A Q ? 006 002 C L 0042200 : L E A S T - N E G A T I V E - 0042220 L O N G - F L O A T 006 001 C L : 0042240 L E A S T - N E G A T I V E - S 0042260 I N G L E - F L O A T ) \r \r ( R 0042300 P A Q ? 006 002 C L : M O S T - N 0042320 E G A T I V E - L O N G - F L O 0042340 A T 006 001 C L : M O S T - N E G 0042360 A T I V E - S I N G L E - F L O 0042400 A T ) \r \r \r \r 006 004 ( * | ; ; | 0042420 \r " E P S I L O N i s t h 0042440 e s m a l l e s t p o s i t 0042460 i v e f l o a t i n g p o i 0042500 n t n u m b e r s u c h t 0042520 h a t ( N O T ( = ( F L O 0042540 A T 1 E P S I L O N ) ( + 0042560 ( F L O A T 1 E P S I L O 0042600 N ) E P S I L O N ) ) ) * " 0042620 \r ) 006 001 \r \r \r ( R P A Q ? 006 002 0042640 C L : S I N G L E - F L O A T - 0042660 E P S I L O N 006 001 ( % F L O A 0042700 T 1 3 3 1 2 0 ) ) \r \r ( R P 0042720 A Q ? 006 002 C L : S H O R T - F 0042740 L O A T - E P S I L O N 006 001 C 0042760 L : S I N G L E - F L O A T - E 0043000 P S I L O N ) \r \r ( R P A Q ? 0043020 006 002 C L : D O U B L E - F L O A 0043040 T - E P S I L O N 006 001 C L : S 0043060 I N G L E - F L O A T - E P S I 0043100 L O N ) \r \r ( R P A Q ? 006 002 C 0043120 L : L O N G - F L O A T - E P S 0043140 I L O N 006 001 C L : S I N G L E 0043160 - F L O A T - E P S I L O N ) \r 0043200 \r \r \r 006 004 ( * | ; ; | \r " N 0043220 E G A T I V E - E P S I L O N 0043240 i s t h e s m a l l e s t 0043260 n e g a t i v e f l o a t i n 0043300 g p o i n t n u m b e r s 0043320 u c h t h a t ( N O T ( = 0043340 ( F L O A T 1 N E G A T I 0043360 V E - E P S I L O N ) ( - - - 0043400 ( F L O A T 1 N E G A T I 0043420 V E - E P S I L O N ) N E G A 0043440 T I V E - E P S I L O N ) ) ) 0043460 * " \r ) 006 001 \r \r \r ( R P A Q ? 0043500 006 002 C L : S I N G L E - F L O A 0043520 T - N E G A T I V E - E P S I L 0043540 O N 006 001 ( % F L O A T 1 3 1 0043560 8 4 0 ) ) \r \r ( R P A Q ? 006 0043600 002 C L : S H O R T - F L O A T - 0043620 N E G A T I V E - E P S I L O N 0043640 006 001 C L : S I N G L E - F L O 0043660 A T - N E G A T I V E - E P S I 0043700 L O N ) \r \r ( R P A Q ? 006 002 C 0043720 L : D O U B L E - F L O A T - N 0043740 E G A T I V E - E P S I L O N 006 0043760 001 C L : S I N G L E - F L O A 0044000 T - N E G A T I V E - E P S I L 0044020 O N ) \r \r ( R P A Q ? 006 002 C L 0044040 : L O N G - F L O A T - N E G A 0044060 T I V E - E P S I L O N 006 001 C 0044100 L : S I N G L E - F L O A T - N 0044120 E G A T I V E - E P S I L O N ) 0044140 \r \r \r \r 006 004 ( * \ ; " M i s 0044160 c e l l a n e o u s . * " ) 0044200 006 001 \r \r ( D E C L A R E \ : E 0044220 V A L @ C O M P I L E D O N T 0044240 C O P Y \r ( F I L E S L O A D 0044260 ( L O A D C O M P ) \r 0044300 L L F L O A T ) \r ) \r \r ( 0044320 R P A Q ? 006 002 C L : P I 006 001 0044340 ( % F L O A T 1 6 4 5 7 4 0 0044360 5 9 ) ) \r \r \r \r 006 004 ( * | ; ; 0044400 | \r " S h o u l d b e ( D 0044420 E C L A R E : E V A L @ C O M 0044440 P I L E D O N T C O P Y ( C 0044460 O N S T A N T S . . . ) ) e 0044500 x c e p t t h a t c o m p i 0044520 l e r d o e s a p o o r 0044540 j o b o f c o m p i l i n g 0044560 F L O A T P s . U s e a 0044600 n I N I T V A R S t o p a 0044620 t c h a r o u n d t h i s 0044640 s i t u a t i o n f o r n o 0044660 w . * " \r ) 006 001 \r \r \r ( R P 0044700 A Q ? 006 002 % E 006 001 ( % F L O 0044720 A T 1 6 4 2 9 6 3 5 7 2 ) ) 0044740 \r \r ( R P A Q ? 006 002 % 2 P I 006 0044760 001 ( % F L O A T 1 6 5 8 5 0045000 4 0 5 9 ) ) \r \r ( R P A Q ? 006 0045020 002 % P I 006 001 ( % F L O A T 1 0045040 6 4 5 7 4 0 5 9 ) ) \r \r ( R P 0045060 A Q ? 006 002 % 2 P I / 3 006 001 ( 0045100 % F L O A T 1 6 3 9 0 2 7 0 0045120 6 ) ) \r \r ( R P A Q ? 006 002 % P 0045140 I / 2 006 001 ( % F L O A T 1 6 0045160 3 2 9 4 0 5 9 ) ) \r \r ( R P A 0045200 Q ? 006 002 % - P I / 2 006 001 ( % 0045220 F L O A T 4 9 0 9 7 4 0 5 9 0045240 ) ) \r \r ( R P A Q ? 006 002 % P I 0045260 / 3 006 001 ( % F L O A T 1 6 2 0045300 6 2 2 7 0 6 ) ) \r \r ( R P A Q 0045320 ? 006 002 % P I / 4 006 001 ( % F L 0045340 O A T 1 6 2 0 1 4 0 5 9 ) ) 0045360 \r \r ( R P A Q ? 006 002 % - P I / 0045400 4 006 001 ( % F L O A T 4 8 9 6 0045420 9 4 0 5 9 ) ) \r \r ( R P A Q ? 0045440 006 002 % P I / 6 006 001 ( % F L O 0045460 A T 1 6 1 3 4 2 7 0 6 ) ) \r 0045500 \r ( R P A Q ? 006 002 % 2 / P I 006 0045520 001 ( % F L O A T 1 6 1 6 2 0045540 6 3 8 7 5 ) ) \r ( D E F I N E Q 0045560 \r \r ( 006 004 % M A K E - A R R A Y 0045600 006 001 \r ( L A M B D A ( L I 0045620 S T ) 006 006 006 001 0045640 * 0045700 006 006 ( * | k b r : | 0045720 " 1 5 - M a y - 8 6 1 8 : 0 9 0045740 " ) 006 001 \r \r 0045760 006 006 ( * | 0046000 F u n c t i o n | | t o | | 0046020 b u i l d | | I n t e r l i s 0046040 p | | a r r a y s . | \r 006 001 0046060 006 006 I | w o 0046100 u l d | | p r e f e r | | t 0046120 o | | b u i l d | | C o m m 0046140 o n | | L i s p | | a r r a 0046160 y s , | | b u t | I | d o 0046200 n ' t | \r 006 001 0046220 006 006 | t h i n k | P O L Y 0046240 E V A L | o p c o d e | | w 0046260 i l l | | u n d e r s t a n d 0046300 | | t h e m . | \r 006 001 0046320 006 006 * ) 006 001 \r \r 0046340 ( P R O G ( A R R A Y ) \r 0046360 ( S E T Q 0046400 A R R A Y ( A R R A Y ( L E 0046420 N G T H L I S T ) \r 0046440 0046460 ' F L O A T P 0046500 0 . 0 0 ) ) \r 0046520 ( 006 002 | f o r | 006 001 E L E 0046540 M E N T 006 002 | i n | 006 001 L I 0046560 S T 006 002 | a s | 006 001 I 006 002 0046600 | f r o m | 006 001 0 006 002 | d o 0046620 | 006 001 ( S E T A A R R A Y 0046640 I E L E M E N T ) ) \r 0046660 ( R E T U R N A R 0046700 R A Y ) ) ) ) \r ) \r \r \r \r 006 004 ( 0046720 * C L : E X P * ) 006 001 \r \r \r 0046740 ( R P A Q ? 006 002 % L O G - B A 0046760 S E 2 - E 006 001 ( % F L O A T 0047000 1 6 3 1 2 4 3 5 7 9 ) ) \r \r \r 0047020 \r 006 004 ( * | ; ; | \r " % E X 0047040 P - P O L Y c o n t a i n s 0047060 P a n d Q c o e f f i c i 0047100 e n t s o f H a r r i s e 0047120 t a l E X P B 1 1 0 3 r 0047140 a t i o n a l a p p r o x i m 0047160 a t i o n t o ( E X P T 2 0047200 X ) i n i n t e r v a l 0047220 ( 0 . 1 2 5 ) . % E X P - 0047240 T A B L E c o n t a i n s v 0047260 a l u e s o f p o w e r s 0047300 ( E X P T 2 ( / N 8 ) ) 0047320 . * " \r ) 006 001 \r \r \r ( R P 0047340 A Q 006 002 % E X P - P O L Y 006 001 0047360 ( % M A K E - A R R A Y ( L 0047400 I S T ( % F L O A T 1 5 5 4 0047420 9 1 7 6 5 9 ) \r 0047440 0047460 ( % F L 0047500 O A T 1 6 2 5 6 0 ) \r 0047520 * 0047560 ( % F L O A T 1 6 8 0 1 3 8 0047600 2 7 3 ) \r 0047620 0047640 ( % F L O A T 0047660 1 7 2 5 7 7 7 1 7 ) \r 0047700 0047720 ( 0047740 % F L O A T 1 7 5 9 7 1 1 7 0047760 3 9 ) \r 0050000 0050020 ( % F L O A T 1 0050040 7 8 0 0 3 0 4 0 1 ) ) ) ) \r \r 0050060 ( R P A Q 006 002 % E X P - T A B 0050100 L E 006 001 ( % M A K E - A R R A 0050120 Y ( L I S T ( % F L O A T 0050140 1 6 2 5 6 0 ) \r 0050160 0050200 ( % F 0050220 L O A T 1 6 2 6 7 3 8 3 3 8 0050240 ) \r 0050260 0050300 ( % F L O A T 1 6 0050320 2 8 0 1 4 3 2 0 ) \r 0050340 0050360 ( 0050400 % F L O A T 1 6 2 9 3 6 5 2 0050420 3 9 ) \r 0050440 0050460 ( % F L O A T 0050500 1 6 3 0 9 1 2 6 7 ) \r 0050520 * 0050560 ( % F L O A T 1 6 3 2 5 2 6 0050600 4 1 0 ) \r 0050620 0050640 ( % F L O A T 0050660 1 6 3 4 3 1 7 6 6 1 ) \r 0050700 * 0050740 ( % F L O A T 1 6 3 6 2 0050760 4 9 3 5 1 ) ) ) ) \r ( D E F I N 0051000 E Q \r \r ( 006 004 C L : E X P 006 001 \r 0051020 ( C L : L A M B D A ( N U 0051040 M B E R ) 006 006 006 001 0051060 * 0051120 006 006 ( * F S " 2 0 - O c t 0051140 - 8 6 2 3 : 1 7 " ) 006 001 006 006 006 0051160 001 \r 0051200 * 0051240 006 006 ( * | ; ; | \r 006 0051260 001 0051300 006 006 " C a l c u l a 0051320 t e s e t o t h e g i v 0051340 e n p o w e r , w h e r e 0051360 e i s t h e b a s e o f 0051400 n a t u r a l l o g a r i t 0051420 h m s . * " ) 006 001 \r 0051440 ( C T Y P E C A S E 0051460 N U M B E R ( C O M P L E X 0051500 ( 006 002 % E X P - C O M P L E X 006 0051520 001 N U M B E R ) ) \r 0051540 ( C L : N 0051560 U M B E R ( 006 002 % E X P - F L 0051600 O A T 006 001 ( F L O A T N U M 0051620 B E R ) ) ) ) ) ) \r \r ( 006 004 % E 0051640 X P - F L O A T 006 001 \r ( C L 0051660 : L A M B D A ( X ) 006 006 006 001 0051700 * 0051740 006 006 ( * 0051760 | k b r : | " 2 3 - J u l - 0052000 8 6 1 3 : 4 5 " ) 006 001 \r 0052020 \r 0052040 006 006 ( * * ( E X P X ) 0052060 | f o r | | f l o a t | X 0052100 | c a l c u l a t e d | | v 0052120 i a | E X P B 1 1 0 3 | r 0052140 a t i o n a l | \r 006 001 0052160 006 006 | a p p r o x i 0052200 m a t i o n | | o f | | H a 0052220 r r i s | | e t | | a l . | 0052240 \r 006 001 006 006 * 0052260 ) 006 001 \r \r ( P 0052300 R O G ( R E C I P F L G M 0052320 N R A N S W E R ) \r 0052340 ( 006 002 D E 0052360 C L A R E 006 001 ( G L O B A L V 0052400 A R S % E X P - T A B L E % 0052420 E X P - P O L Y ) ) \r 0052440 \r 0052460 006 006 ( * * | F i r s t , | 0052500 | a r r a n g e | X | t o | 0052520 | b e | | i n | | i n t e 0052540 r v a l | \r 006 001 0052560 006 006 ( 0 | i n f i n i t y 0052600 | ) | v i a | | i d e n t i 0052620 t y | ( E X P ( | m i n u s 0052640 | X ) ) = \r 006 001 0052660 006 006 ( / ( E X P X ) 0052700 ) * ) 006 001 \r \r 0052720 ( S E T Q R X 0052740 ) \r 0052760 ( C O N D \r 0053000 ( ( < R 0 0053020 ) \r 0053040 ( S E T Q R ( - 0053060 R ) ) \r 0053100 ( S E T Q R E C 0053120 I P F L G T ) ) ) \r 0053140 \r 0053160 006 006 ( * * | N e x t , | | 0053200 t h e | | p r o b l e m | | 0053220 o f | ( E X P X ) | i s | 0053240 | c o n v e r t e d | | i n 0053260 t o | \ a | p r o b l e m | 0053300 \r 006 001 006 006 ( 0053320 E X P T 2 Y ) | w h e r e 0053340 | Y = ( C L : * % L O G 0053360 - B A S E 2 - E X ) \ . \r 006 001 0053400 006 006 | T h e 0053420 n | | r a n g e | | r e d u 0053440 c t i o n | | i s | | a c c 0053460 o m p l i s h e d | | v i a | 0053500 \r 006 001 006 006 ( 0053520 E X P T 2 Y ) = ( C L : 0053540 * ( E X P T 2 M ) ( E X 0053560 P T 2 ( / N 8 ) ) \r 006 001 0053600 006 006 ( E X P 0053620 T 2 R ) ) | w h e r e | 0053640 M | a n d | N | a r e | 0053660 | i n t e g e r s | | a n d | 0053700 R | i s | \ a | f l o a 0053720 t | | i n | \r 006 001 0053740 006 006 | t h e | | i n 0053760 t e r v a l | ( 0 . 0 . 1 2 0054000 5 ) | A f t e r | M N R 0054020 | a r e | | d e t e r m i n 0054040 e d , | \r 006 001 0054060 006 006 ( E X P T 2 M ) | i 0054100 s | | e f f e c t e d | | b 0054120 y | | s c a l i n g , | \r 006 001 0054140 006 006 ( E X P 0054160 T 2 ( / N 8 ) ) | i s 0054200 | | f o u n d | | b y | | 0054220 t a b l e | | l o o k u p , | 0054240 | a n d | \r 006 001 0054260 006 006 ( E X P T 2 R ) 0054300 | i s | | c a l c u l a t e d 0054320 | | b y | | r a t i o n a l 0054340 | | a p p r o x i m a t i o n 0054360 | E X P B 1 1 0 3 | o f | 0054400 \r 006 001 006 006 0054420 | H a r r i s | | e t | | a 0054440 l . | * ) 006 001 \r \r 0054460 ( C L : M U L 0054500 T I P L E - V A L U E - S E T Q 0054520 ( M R ) \r 0054540 ( C L 0054560 : T R U N C A T E ( C L : * 0054600 % L O G - B A S E 2 - E R ) ) 0054620 ) \r 0054640 ( C L : M U L T I P L E - V A 0054660 L U E - S E T Q ( N R ) \r 0054700 0054720 ( C L : T R U N C A T 0054740 E R . 1 2 5 ) ) \r 0054760 ( S E T Q 0055000 A N S W E R ( C L : S C A L E 0055020 - F L O A T ( C L : * ( E L 0055040 T % E X P - T A B L E N ) \r 0055060 * 0055140 ( / ( P O L Y E V A L R 0055160 % E X P - P O L Y 5 ) \r 0055200 * 0055260 ( P O L Y E V A L ( - 0055300 R ) \r 0055320 * 0055360 % 0055400 E X P - P O L Y 5 ) ) ) \r 0055420 * 0055460 M ) ) \r 0055500 ( C O N D \r 0055520 ( R E C 0055540 I P F L G ( S E T Q A N S W 0055560 E R ( / A N S W E R ) ) ) ) 0055600 \r 0055620 ( R E T U R N A N S W E R ) ) 0055640 ) ) \r \r ( 006 004 % E X P - C O M P 0055660 L E X 006 001 \r ( C L : L A M B 0055700 D A ( Z ) \r 0055720 \r 006 006 ( * 0055740 | c o m p u t e | | e x p | 0055760 ( \ z ) | w h e r e | \ z 0056000 | i s | | c o m p l e x | 0056020 | i s | | c a l l e d | | b 0056040 y | | e x p | * ) 006 001 \r \r 0056060 ( L E T * ( ( 0056100 X ( C L : R E A L P A R T Z 0056120 ) ) \r 0056140 ( Y ( C L : I M A G P A 0056160 R T Z ) ) ) \r 0056200 ( C L : * ( E X 0056220 P X ) \r 0056240 ( 006 002 C L : 0056260 C I S 006 001 Y ) ) ) ) ) \r ) \r \r 0056300 \r \r 006 004 ( * E X P T * ) 006 001 0056320 \r \r ( D E F I N E Q \r \r ( 006 004 C 0056340 L : E X P T 006 001 \r ( C L : L 0056360 A M B D A ( B A S E - N U M B 0056400 E R P O W E R - N U M B E R ) 0056420 006 006 006 001 0056440 006 006 ( * | 0056460 l m m | " 2 7 - J u n - 8 6 0056500 2 2 : 5 2 " ) 006 001 \r 0056520 \r 006 0056540 006 ( * | T h i s | | f u n c 0056560 t i o n | | c a l c u l a t e 0056600 s | B A S E - N U M B E R | 0056620 r a i s e d | | t o | | t h 0056640 e | | n t h | \r 006 001 0056660 006 006 | p o w e r . | 0056700 I \ t | s e p a r a t e s | 0056720 | t h e | | c a s e s | | 0056740 b y | | t h e | | t y p e | 0056760 | o f | P O W E R - N U M B 0057000 E R \r 006 001 0057020 006 006 | f o r | | e f f i c i e 0057040 n c y | | r e a s o n s , | 0057060 | a s | | p o w e r s | | c 0057100 a n | | b e | | c a l c u l 0057120 a t e d | | m o r e | \r 006 001 0057140 006 006 | e f f 0057160 i c i e n t l y | | i f | P 0057200 O W E R - N U M B E R | i s | 0057220 \ a | p o s i t i v e | | 0057240 i n t e g e r , | | T h e r e 0057260 f o r e , | \r 006 001 0057300 006 006 | A l l | | i n t 0057320 e g e r | | v a l u e s | | 0057340 o f | P O W E R - N U M B E R 0057360 | a r e | | c a l c u l a t 0057400 e d | | a s | | p o s i t i 0057420 v e | \r 006 001 0057440 006 006 | i n t e g e r s , | | 0057460 a n d | | i n v e r t e d | 0057500 | i f | | n e g a t i v e . | 0057520 \r 006 001 006 006 * 0057540 ) 006 001 \r \r ( C 0057560 O N D \r 0057600 ( ( A N D ( C L : R A T I O N 0057620 A L P B A S E - N U M B E R ) 0057640 \r 0057660 ( C L : I N T E G E R P 0057700 P O W E R - N U M B E R ) ) \r 0057720 ( 006 002 % 0057740 E X P T - I N T E G E R 006 001 B 0057760 A S E - N U M B E R P O W E R 0060000 - N U M B E R ) ) \r 0060020 ( ( = B A S E - N 0060040 U M B E R 0 ) \r 0060060 ( C L : I F ( C L 0060100 : P L U S P P O W E R - N U M 0060120 B E R ) \r 0060140 B A S E - N U 0060160 M B E R \r 0060200 ( C L : E R R 0060220 O R " ~ A t o a n o n - 0060240 p o s i t i v e p o w e r ~ 0060260 A . " B A S E - N U M B E R 0060300 P O W E R - N U M B E R ) ) ) \r 0060320 ( ( A N 0060340 D ( C L : C O M P L E X P B 0060360 A S E - N U M B E R ) \r 0060400 ( C 0060420 L : I N T E G E R P P O W E R 0060440 - N U M B E R ) ) \r 0060460 ( 006 002 % E X P T - 0060500 I N T E G E R 006 001 B A S E - N 0060520 U M B E R P O W E R - N U M B 0060540 E R ) ) \r 0060560 ( ( C L : C O M P L E X P P 0060600 O W E R - N U M B E R ) \r 0060620 ( C L : I F 0060640 ( O R ( C L : C O M P L E X 0060660 P B A S E - N U M B E R ) \r 0060700 0060720 ( C L : P L U S P 0060740 B A S E - N U M B E R ) ) \r 0060760 0061000 ( 006 002 % E X P T - C O M P 0061020 L E X - P O W E R 006 001 B A S E 0061040 - N U M B E R P O W E R - N U 0061060 M B E R ) \r 0061100 ( C L : E R 0061120 R O R " ~ A n e g a t i v e 0061140 n u m b e r t o a c o m 0061160 p l e x p o w e r ~ A . " 0061200 B A S E - N U M B E R P O W E 0061220 R - N U M B E R ) ) ) \r 0061240 ( ( C L : C O M 0061260 P L E X P B A S E - N U M B E 0061300 R ) \r 0061320 ( 006 002 % E X P T - C O M P L E X 0061340 006 001 B A S E - N U M B E R P 0061360 O W E R - N U M B E R ) ) \r 0061400 ( ( A N D 0061420 ( N O T ( C L : I N T E G E R 0061440 P P O W E R - N U M B E R ) ) 0061460 \r 0061500 ( M I N U S P B A S E - 0061520 N U M B E R ) ) \r 0061540 ( C L : E R R O R 0061560 " N e g a t i v e n u m b e r 0061600 ~ A t o n o n - i n t e g 0061620 r a l p o w e r ~ A . " B 0061640 A S E - N U M B E R P O W E R 0061660 - N U M B E R ) ) \r 0061700 ( T ( 006 002 % E X P 0061720 T - F L O A T 006 001 ( F L O A T 0061740 B A S E - N U M B E R ) \r 0061760 0062000 ( F L O A T P O W E R 0062020 - N U M B E R ) ) ) ) ) ) \r \r ( 0062040 006 004 % E X P T - I N T E G E R 006 0062060 001 \r ( C L : L A M B D A ( 0062100 B A S E P O W E R ) 006 006 006 001 0062120 * 0062160 006 006 ( * | k b r : | " 0062200 1 6 - S e p - 8 6 1 3 : 0 3 " 0062220 ) 006 001 \r \r 0062240 006 006 ( * * 0062260 ( E X P T B A S E P O W E R 0062300 ) | w h e r e | B A S E | 0062320 i s | | r a t i o n a l | | 0062340 a n d | P O W E R | i s | 0062360 | a n | \r 006 001 0062400 006 006 | i n t e g e r . | * 0062420 ) 006 001 \r \r ( C 0062440 O N D \r 0062460 ( ( E Q B A S E M I N . I N 0062500 T E G E R ) \r 0062520 ( C O N D \r 0062540 ( ( C L : I 0062560 N T E G E R P P O W E R ) \r 0062600 0062620 ( C O N D \r 0062640 ( ( < P O 0062660 W E R 0 ) \r 0062700 0 ) \r 0062720 0062740 ( ( E Q P O W E R 0 ) 0062760 \r 0063000 1 ) \r 0063020 ( ( E 0063040 Q P O W E R M A X . I N T E 0063060 G E R ) \r 0063100 ( E R R O R 0063120 " C a n ' t r a i s e n e 0063140 g a t i v e i n f i n i t y 0063160 t o i n f i n i t e p o w e 0063200 r . " ) ) \r 0063220 ( ( E V E N 0063240 P P O W E R ) \r 0063260 M A 0063300 X . I N T E G E R ) \r 0063320 ( 0063340 T 0063360 0063400 006 006 ( * | O d 0063420 d | | i n t e g e r | P O W 0063440 E R * ) 006 001 \r 0063460 M 0063500 I N . I N T E G E R ) ) ) \r 0063520 ( T 0063540 * 0063600 006 006 ( * 0063620 P O W E R | i s | \ a | n 0063640 o n i n t e g e r | \r 006 001 0063660 * 0063740 006 006 | r a 0063760 t i o n a l | * ) 006 001 \r 0064000 0064020 ( E R R O R " C a n ' t r a 0064040 i s e n e g a t i v e i n f 0064060 i n i t y t o n o n i n t e 0064100 g e r p o w e r . " ) ) ) ) \r 0064120 ( ( E Q 0064140 B A S E M A X . I N T E G E 0064160 R ) \r 0064200 ( C O N D \r 0064220 ( ( E Q P O W E R 0064240 0 ) \r 0064260 1 ) \r 0064300 ( T M A X . I 0064320 N T E G E R ) ) ) \r 0064340 ( ( E Q P O W E R 0064360 M I N . I N T E G E R ) \r 0064400 ( C O N D 0064420 \r 0064440 ( ( E Q B A S E 0 ) \r 0064460 ( 0064500 E R R O R " C a n ' t e x p 0064520 t 0 t o a n e g a t i v 0064540 e p o w e r . " ) ) \r 0064560 ( T 0 0064600 ) ) ) \r 0064620 ( ( E Q P O W E R M A X . I 0064640 N T E G E R ) \r 0064660 ( C O N D \r 0064700 ( ( E Q 0064720 B A S E 0 ) \r 0064740 0 ) \r 0064760 ( ( > 0065000 B A S E 0 ) \r 0065020 M A X . I N T 0065040 E G E R ) \r 0065060 ( T \r 0065100 \r 006 0065120 006 ( * | U n d e f i n e d | 0065140 | b e c a u s e | | s i g n | 0065160 | o s c i l l a t e s | | a 0065200 s | | y o u | | t a k e | 0065220 | t h e | | l i m i t . | \r 006 0065240 001 006 006 * ) 006 0065260 001 \r \r 0065300 ( E R R O R " C a 0065320 n ' t e x p t n e g a t i v 0065340 e n u m b e r t o i n f i 0065360 n i t e p o w e r . " ) ) ) ) 0065400 \r ( ( M 0065420 I N U S P P O W E R ) \r 0065440 ( / ( 006 002 0065460 % E X P T - I N T E G E R 006 001 0065500 B A S E ( - P O W E R ) ) ) 0065520 ) \r ( ( 0065540 A N D ( C L : R A T I O N A L 0065560 P B A S E ) \r 0065600 ( N O T ( 0065620 C L : I N T E G E R P B A S E 0065640 ) ) ) \r 0065660 ( % M A K E - R A T I O ( 006 0065700 002 % E X P T - I N T E G E R 006 001 0065720 ( C L : N U M E R A T O R B 0065740 A S E ) \r 0065760 0066000 P O W E R ) \r 0066020 0066040 ( 006 002 % E X P T - I N T E G E 0066060 R 006 001 ( C L : D E N O M I N A 0066100 T O R B A S E ) \r 0066120 0066140 P O W E R ) ) ) \r 0066160 ( ( A N D 0066200 ( C L : I N T E G E R P B A S 0066220 E ) \r 0066240 ( = B A S E 2 ) ) 0066260 \r ( C 0066300 L : A S H 1 P O W E R ) ) \r 0066320 ( T ( 0066340 C L : D O ( ( N E X T N ( C 0066360 L : A S H P O W E R - 1 ) \r 0066400 0066420 ( C 0066440 L : A S H P O W E R - 1 ) ) 0066460 \r 0066500 ( T O T A L ( 0066520 C L : I F ( O D D P P O W E 0066540 R ) \r 0066560 0066600 B A S E 1 ) \r 0066620 0066640 ( C 0066660 L : I F ( O D D P P O W E R 0066700 ) \r 0066720 0066740 ( C L : * B A S 0066760 E T O T A L ) \r 0067000 0067020 T O 0067040 T A L ) ) ) \r 0067060 ( ( Z 0067100 E R O P N E X T N ) \r 0067120 0067140 T O T A L ) \r 0067160 0067200 ( S E T Q B A S E ( C L : * 0067220 B A S E B A S E ) ) \r 0067240 0067260 ( S E T Q P O W E R N 0067300 E X T N ) ) ) ) ) ) \r \r ( 006 004 % 0067320 E X P T - F L O A T 006 001 \r ( 0067340 L A M B D A ( X Y ) 006 006 006 001 0067360 * 0067420 006 006 0067440 ( * | k b r : | " 2 9 - M a 0067460 y - 8 6 0 0 : 0 3 " ) 006 001 \r 0067500 \r 0067520 006 006 ( * * ( E X P T 0067540 X Y ) | w h e r e | X 0067560 | i s | \ a | n o n n e g a 0067600 t i v e | | f l o a t | | a 0067620 n d | Y | i s | \ a \r 006 0067640 001 006 006 | f l 0067660 o a t . | * ) 006 001 \r \r 0067700 ( C O N D \r ( ( = 0067720 X 0 . 0 ) \r 0067740 0 . 0 ) \r ( T ( 0067760 E X P ( C L : * Y ( 006 002 C 0070000 L : L O G 006 001 X ) ) ) ) ) ) ) 0070020 \r \r ( 006 004 % E X P T - C O M P L 0070040 E X 006 001 \r ( C L : L A M B D 0070060 A ( Z N ) \r 0070100 \r 006 006 ( 0070120 * | c o m p u t e | ( | c o 0070140 m p l e x | ) ^ \ n | w h e 0070160 r e | \ n | i s | | a n | 0070200 | i n t e g e r | | s o m e 0070220 | | r o u n d - o f f | \r 006 0070240 001 006 006 | e r 0070260 r o r | | i f | \ n | i s 0070300 | | n o t | \ a | f i x n 0070320 u m | * ) 006 001 \r \r 0070340 ( C L : * ( 006 002 C L : E 0070360 X P T 006 001 ( % C O M P L E X - 0070400 A B S Z ) \r 0070420 N ) \r 0070440 ( 0070460 006 002 C L : C I S 006 001 ( C L : * 0070500 N ( C L : P H A S E Z ) ) 0070520 ) ) ) ) \r \r ( 006 004 % E X P T - C 0070540 O M P L E X - P O W E R 006 001 \r 0070560 ( C L : L A M B D A ( Z W 0070600 ) \r \r 0070620 006 006 ( * | t h i 0070640 s | | f u n c t i o n | | c 0070660 o m p u t e s | \ z ^ \ w 0070700 | w h e r e | \ w | i s | 0070720 \ a | c o m p l e x | | n 0070740 u m b e r | \r 006 001 0070760 006 006 | i t | | c a n | 0071000 | a l s o | | b e | | u s 0071020 e d | | f o r | | a n y | 0071040 | p o s i t i v e | | r e a l 0071060 | | n u m b e r . | \r 006 001 0071100 006 006 * ) 006 001 \r \r 0071120 ( E X P ( C 0071140 L : * W ( 006 002 C L : L O G 006 0071160 001 Z ) ) ) ) ) \r ) \r \r \r \r 006 004 0071200 ( * C L : L O G * ) 006 001 \r \r 0071220 \r ( R P A Q ? 006 002 % L O G 2 006 0071240 001 ( % F L O A T 1 6 1 7 7 0071260 2 9 2 0 8 ) ) \r \r ( R P A Q ? 0071300 006 002 % S Q R T 2 006 001 ( % F L O 0071320 A T 1 6 3 0 9 1 2 6 7 ) ) \r 0071340 \r \r \r 006 004 ( * | ; ; | \r " % 0071360 L O G - P P O L Y a n d % L 0071400 O G - Q P O L Y c o n t a i n 0071420 P a n d Q c o e f f i c 0071440 i e n t s o f H a r r i s 0071460 e t a l L O G E 2 7 0 7 0071500 r a t i o n a l a p p r o x i 0071520 m a t i o n t o ( L O G X 0071540 ) i n i n t e r v a l ( ( 0071560 S Q R T . 5 ) ( S Q R T 2 0071600 ) ) . * " \r ) 006 001 \r \r \r ( 0071620 R P A Q 006 002 % L O G - P P O L 0071640 Y 006 001 ( % M A K E - A R R A Y 0071660 ( L I S T ( % F L O A T 1 0071700 6 0 4 2 2 2 8 0 3 ) \r 0071720 * 0071760 ( % F L O A T 4 9 4 8 4 2 3 0072000 5 9 0 ) \r 0072020 0072040 ( % F L O A T 0072060 1 7 0 4 4 1 7 9 8 2 ) \r 0072100 * 0072140 ( % F L O A T 4 9 9 2 6 0072160 3 7 1 5 3 ) \r 0072200 0072220 ( % F L O 0072240 A T 1 7 0 4 6 5 3 6 7 ) ) ) 0072260 ) \r \r ( R P A Q 006 002 % L O G - 0072300 Q P O L Y 006 001 ( % M A K E - A 0072320 R R A Y ( L I S T ( % F L O 0072340 A T 1 6 2 5 6 0 ) \r 0072360 * 0072420 ( % F L O A T 4 9 5 1 2 9 1 0072440 0 3 ) \r 0072460 0072500 ( % F L O A T 0072520 1 6 9 9 2 4 2 2 7 4 ) \r 0072540 * 0072600 ( % F L O A T 4 9 8 2 3 3 0072620 8 0 4 8 ) \r 0072640 0072660 ( % F L O A 0072700 T 1 6 9 1 8 5 3 6 7 ) ) ) ) 0072720 \r ( D E F I N E Q \r \r ( 006 004 C L 0072740 : L O G 006 001 \r ( C L : L A M 0072760 B D A ( N U M B E R & O P T 0073000 I O N A L ( B A S E N I L 0073020 B A S E - S U P P L I E D ) ) 006 0073040 006 006 001 006 006 ( * F S 0073060 " 2 1 - O c t - 8 6 0 0 : 4 8 0073100 " ) 006 001 \r ( C 0073120 O N D \r 0073140 ( B A S E - S U P P L I E D ( 0073160 / ( 006 002 C L : L O G 006 001 N U 0073200 M B E R ) \r 0073220 0073240 ( 006 002 C L : L O G 006 001 0073260 B A S E ) ) ) \r 0073300 ( T ( C T Y P E C A S 0073320 E N U M B E R ( C O M P L E 0073340 X ( 006 002 % L O G - C O M P L E 0073360 X 006 001 N U M B E R ) ) \r 0073400 0073420 ( C L : N U M B E R ( C 0073440 L : I F ( M I N U S P N U M 0073460 B E R ) \r 0073500 0073520 ( C O 0073540 M P L E X ( 006 002 % L O G - F L 0073560 O A T 006 001 ( F L O A T ( - 0073600 N U M B E R ) ) ) \r 0073620 * 0073660 % P I ) \r 0073700 * 0073740 ( 006 002 % L O G - F L 0073760 O A T 006 001 ( F L O A T N U M 0074000 B E R ) ) ) ) ) ) ) ) ) \r \r ( 006 0074020 004 % L O G - F L O A T 006 001 \r 0074040 ( L A M B D A ( X ) 006 006 006 001 0074060 * 0074120 006 0074140 006 ( * | k b r : | " 3 0 - M 0074160 a y - 8 6 0 0 : 0 4 " ) 006 001 \r 0074200 \r 0074220 006 006 ( * * ( E X P 0074240 X ) | f o r | | f l o a t 0074260 | X | c a l c u l a t e d | 0074300 | v i a | E X P B 1 1 0 3 0074320 | r a t i o n a l | \r 006 001 0074340 006 006 | a p p r 0074360 o x i m a t i o n | | o f | 0074400 | H a r r i s | | e t | | a 0074420 l . | \r 006 001 0074440 006 006 * ) 006 001 \r 0074460 \r 006 006 ( * 0074500 * ( L O G X ) | f o r | 0074520 | n o n n e g a t i v e | | 0074540 f l o a t | X . \r 006 001 0074560 006 006 * ) 006 001 \r \r 0074600 ( P R O G ( R E X P Z 0074620 Z 2 A N S W E R ) \r 0074640 ( 006 002 D E C L A R E 0074660 006 001 ( G L O B A L V A R S % 0074700 L O G - P P O L Y % L O G - Q 0074720 P O L Y ) ) \r 0074740 \r 006 006 ( * 0074760 * N O T E \ : | P r o b a 0075000 b l y | | b e s t | | n o t 0075020 | | t o | | d e c l a r e | 0075040 | t y p e | | o f | | v a 0075060 r i a b l e s | \r 006 001 0075100 006 006 | i n s i d e | 0075120 | t h i s | | r o u t i n e 0075140 | | f o r | | n o w . | | 0075160 I ' v e | | f o u n d | | t 0075200 h a t | F L O A T P | s m a 0075220 s h i n g | \r 006 001 0075240 006 006 | c o m b i n e d | 0075260 | w i t h | F L O A T P | 0075300 d e c l a r a t i o n s | | c 0075320 o m p i l e s | | w r o n g . 0075340 | \r 006 001 006 006 0075360 * ) 006 001 \r \r 0075400 ( C O N D \r 0075420 ( ( N O T ( F G R E A T 0075440 E R P X 0 . 0 ) ) \r 0075460 ( E R R O R 0075500 " L O G O F Z E R O : " 0075520 X ) ) ) \r \r 0075540 006 006 ( * * 0075560 | R a n g e | | r e d u c e 0075600 | | t o | | a n | R | i 0075620 n | | i n t e r v a l | \r 006 001 0075640 006 006 ( ( S Q 0075660 R T . 5 ) ( S Q R T 2 ) ) 0075700 | v i a | | i d e n t i t y 0075720 | ( L O G X ) = \r 006 001 0075740 006 006 ( + ( L O 0075760 G R ) ( C L : * % L O G - 0076000 2 E X P ) ) | f o r | \ a 0076020 | s u i t a b l e | | i n t 0076040 e g e r | E X P . \r 006 001 0076060 006 006 | T h i s | 0076100 | r e d u c t i o n | | d e p 0076120 e n d s | | o n | | a n d | 0076140 | s m a s h e s | | t h e | 0076160 F L O A T P | r e p r e s e 0076200 n t a t i o n | \r 006 001 0076220 006 006 | o f | R . 0076240 * ) 006 001 \r \r 0076260 ( S E T Q R ( \ \ F L O A T 0076300 . B O X X ) ) \r 0076320 ( S E T Q E X P ( - 0076340 ( 006 002 | f e t c h | 006 001 ( F L 0076360 O A T P E X P O N E N T ) 006 0076400 002 | o f | 006 001 R ) \r 0076420 0076440 \ \ E X P O N E N T . B I A 0076460 S ) ) \r ( 006 0076500 002 | r e p l a c e | 006 001 ( F L 0076520 O A T P E X P O N E N T ) 006 0076540 002 | o f | 006 001 R 006 002 | w i t 0076560 h | 006 001 \ \ E X P O N E N T . 0076600 B I A S ) \r 0076620 ( C O N D \r 0076640 ( ( > R % S Q R T 2 ) 0076660 \r ( 0076700 S E T Q E X P ( C L : 1 + 0076720 E X P ) ) \r 0076740 ( S E T Q R ( / R 0076760 2 . 0 ) ) ) ) \r 0077000 \r 006 006 0077020 ( * * ( L O G R ) | i s 0077040 | | c a l c u l a t e d | | 0077060 b y | | r a t i o n a l | | 0077100 a p p r o x i m a t i o n | L 0077120 O G E 2 7 0 7 | o f | \r 006 0077140 001 006 006 | H a 0077160 r r i s | | e t | | a l . | 0077200 * ) 006 001 \r \r 0077220 ( S E T Q Z ( / ( C L : 0077240 1 - R ) \r 0077260 ( C L : 1 0077300 + R ) ) ) \r 0077320 ( S E T Q Z 2 ( C L : * 0077340 Z Z ) ) \r 0077360 ( S E T Q A N S W E R ( + 0077400 ( C L : * Z ( / ( P O L Y 0077420 E V A L Z 2 % L O G - P P O 0077440 L Y 4 ) \r 0077460 0077500 ( P O L Y 0077520 E V A L Z 2 % L O G - Q P O 0077540 L Y 4 ) ) ) \r 0077560 0077600 ( C L : * % L O G 2 E X 0077620 P ) ) ) \r ( 0077640 R E T U R N A N S W E R ) ) ) 0077660 ) \r \r ( 006 004 % L O G - C O M P L 0077700 E X 006 001 \r ( C L : L A M B D 0077720 A ( Z ) 0077740 * 0100000 006 006 ( * | n a t u r a l | 0100020 | l o g | | o f | \ a | 0100040 c o m p l e x | \r 006 001 0100060 * 0100140 006 006 | n u m b 0100160 e r | * ) 006 001 \r 0100200 ( C O M P L E X ( 006 002 C L 0100220 : L O G 006 001 ( % C O M P L E X 0100240 - A B S Z ) ) \r 0100260 ( C L : P H A 0100300 S E Z ) ) ) ) \r ) \r \r \r \r 006 004 0100320 ( * S Q R T * ) 006 001 \r \r ( D 0100340 E F I N E Q \r \r ( 006 004 C L : S Q 0100360 R T 006 001 \r ( C L : L A M B D 0100400 A ( X ) 006 006 006 001 0100420 * 0100460 006 006 ( * | k b r : 0100500 | " 2 8 - J u l - 8 6 1 4 : 0100520 0 6 " ) 006 001 \r 0100540 ( C O N D \r 0100560 ( ( C L : C O M P L E X P 0100600 X ) \r 0100620 ( 006 002 % S Q R T - C O M P L E X 0100640 006 001 X ) ) \r 0100660 ( ( M I N U S P X ) 0100700 * 0100740 006 006 ( * | N e g a t i 0100760 v e | | r e a l | | a x i s 0101000 | | m a p s | \r 006 001 0101020 * 0101100 006 006 | i n t o 0101120 | | p o s i t i v e | | i m 0101140 a g i n a r y | | a x i s . | 0101160 \r 006 001 0101200 * 0101260 006 006 * ) 006 001 \r 0101300 ( C O M P L E X 0 ( 0101320 006 002 C L : S Q R T 006 001 ( - X 0101340 ) ) ) ) \r 0101360 ( T ( 006 002 % S Q R T - F L O 0101400 A T 006 001 ( F L O A T X ) ) ) 0101420 ) ) ) \r \r ( 006 004 % S Q R T - F L 0101440 O A T 006 001 \r ( L A M B D A 0101460 ( X ) 006 006 006 001 0101500 * 0101540 006 006 ( * | k b r 0101560 : | " 2 1 - J u l - 8 6 1 6 0101600 : 3 8 " ) 006 001 \r 0101620 \r 006 006 ( 0101640 * * ( S Q R T X ) | f o 0101660 r | | n o n n e g a t i v e | 0101700 | f l o a t | X . \r 006 001 0101720 006 006 * ) 006 001 \r \r 0101740 ( P R O G ( V ) \r 0101760 ( 006 002 D E C L A 0102000 R E 006 001 ( T Y P E F L O A T 0102020 P X V ) ) \r 0102040 ( C O N D \r 0102060 ( ( N O T ( F G R E 0102100 A T E R P X 0 . 0 ) ) 0102120 0102140 006 006 ( * | T r i c h 0102160 o t o m y | = = > X = 0 0102200 . 0 * ) 006 001 \r 0102220 ( R E T U R N 0 . 0102240 0 ) ) ) \r ( 0102260 S E T Q V ( 006 002 | c r e a t 0102300 e | 006 001 F L O A T P \r 0102320 0102340 E X P O N E N T _ 0102360 ( L O G A N D ( I P L U S \ 0102400 \ E X P O N E N T . B I A S \r 0102420 * 0102500 ( L R S H ( L O G A N D 0102520 ( I D I F F E R E N C E ( 006 002 0102540 | f e t c h | 006 001 ( F L O A T 0102560 P E X P ) \r 0102600 * 0102700 006 002 | o f | 006 001 0102720 X ) \r 0102740 * 0103020 \ \ E X 0103040 P O N E N T . B I A S ) \r 0103060 * 0103140 ( M A 0103160 S K . 1 \ ' S 0 B I T S P E 0103200 R W O R D ) ) \r 0103220 * 0103300 1 ) ) \r 0103320 * 0103360 \ \ M A X . E X P O N E N T ) \r 0103400 0103420 H I F R A C T 0103440 I O N _ ( 006 002 | f e t c h | 0103460 006 001 ( F L O A T P H I F R A 0103500 C ) 006 002 | o f | 006 001 X ) ) ) 0103520 \r \r 0103540 006 006 ( * | E x p o 0103560 n e n t | | i s | | s t o r 0103600 e d | | a s | | e x c e s s 0103620 | \ \ E X P O N E N T . B I A 0103640 S | a n d | | a l t h o u g 0103660 h | \r 006 001 0103700 006 006 | t h e | L R S H | d o 0103720 e s n ' t | | r e a l l y | 0103740 | d o | | d i v i s i o n | 0103760 | b y | 2 \r 006 001 0104000 006 006 ( | e . g . , | | w 0104020 h e n | | t h e | | a r g | 0104040 | i s | | n e g a t i v e | 0104060 ) | a t | | l e a s t | | 0104100 t h e | | l o w - o r d e r | 0104120 8 \r 006 001 0104140 006 006 | b i t s | | w i l l | 0104160 | b e | | r i g h t . | I \ 0104200 t | d o e s n ' t | | e v e 0104220 n | | m a t t e r | | t h a 0104240 t | | i t | | m a y | \r 006 0104260 001 006 006 | b e 0104300 | | o f f - b y - o n e , | 0104320 | d u e | | t o | | t h e | 0104340 | i n f a m o u s | " A r i 0104360 t h m e t i c S h i f t i n g 0104400 C o n s i d e r e d H a r m 0104420 f u l " \r 006 001 0104440 006 006 | s i n c e | | i t | 0104460 | i s | | o n l y | | a n 0104500 | | e s t i m a t e . | \r 006 001 0104520 006 006 * ) 006 001 0104540 \r \r ( F R P 0104560 T Q 4 ( S E T Q V ( C L 0104600 : * . 5 ( + V ( / X 0104620 V ) ) ) ) ) \r 0104640 ( R E T U R N V ) ) ) ) \r \r 0104660 ( 006 004 % S Q R T - C O M P L E X 0104700 006 001 \r ( L A M B D A ( X ) 0104720 006 006 006 001 0104740 * 0105000 006 006 ( * | k b r : | 0105020 " 2 8 - J u l - 8 6 1 4 : 0 4 0105040 " ) 006 001 \r \r 0105060 006 006 ( * * 0105100 ( S Q R T X ) | f o r | 0105120 | c o m p l e x | X . * ) 006 0105140 001 \r \r ( P R O G ( A B 0105160 S C L : P H A S E A B C 0105200 D E A N S W E R ) \r 0105220 ( 006 002 D E C L A R 0105240 E 006 001 ( T Y P E F L O A T P 0105260 A B S C L : P H A S E A 0105300 B C D E ) ) \r 0105320 ( S E T Q A ( F L O 0105340 A T ( C L : R E A L P A R T 0105360 X ) ) ) \r ( 0105400 S E T Q B ( F L O A T ( C 0105420 L : I M A G P A R T X ) ) ) \r 0105440 \r 0105460 006 006 ( * * | M a k 0105500 e | | i n i t i a l | | g u 0105520 e s s . | * ) 006 001 \r \r 0105540 ( S E T Q A B S 0105560 ( 006 002 C L : S Q R T 006 001 ( A B 0105600 S X ) ) ) \r 0105620 ( S E T Q C L : P H A S E 0105640 ( / ( C L : P H A S E X ) \r 0105660 0105700 2 . 0 ) 0105720 ) \r ( S E T 0105740 Q C ( C L : * A B S ( 006 0105760 002 C L : C O S 006 001 C L : P H A 0106000 S E ) ) ) \r 0106020 ( S E T Q D ( C L : * A B 0106040 S ( 006 002 C L : S I N 006 001 C L 0106060 : P H A S E ) ) ) \r 0106100 \r 006 0106120 006 ( * * | N e w t o n ' s | 0106140 | m e t h o d . | * ) 006 001 \r 0106160 \r ( 006 002 | f 0106200 o r | 006 001 I 006 002 | f r o m | 0106220 006 001 1 006 002 | t o | 006 001 4 0106240 006 002 | d o | 006 001 ( S E T Q E 0106260 ( + ( C L : * C C ) \r 0106300 * 0106360 ( C L : * D D ) ) ) \r 0106400 * 0106440 ( S E T Q C ( 0106460 C L : * . 5 ( + C ( / 0106500 ( + ( C L : * A C ) \r 0106520 * 0106620 ( C L : * B D ) ) \r 0106640 * 0106720 E 0106740 ) ) ) ) \r 0106760 0107000 ( S E 0107020 T Q D ( C L : * . 5 ( + 0107040 D ( / ( - ( C L : * B 0107060 C ) \r 0107100 * 0107160 ( C L : * A 0107200 D ) ) \r 0107220 * 0107300 E ) ) ) ) ) \r 0107320 ( S E T Q A N S W 0107340 E R ( C O M P L E X C D ) 0107360 ) \r ( R E T 0107400 U R N A N S W E R ) ) ) ) \r ) 0107420 \r \r \r \r 006 004 ( * S I N * ) 006 0107440 001 \r \r \r \r \r 006 004 ( * | ; ; | 0107460 \r " % S I N - E P S I L O N i 0107500 s s u f f i c i e n t l y s 0107520 m a l l t h a t ( S I N X 0107540 ) = X f o r X i n i 0107560 n t e r v a l ( 0 % S I N - 0107600 E P S I L O N ) . I t s u 0107620 f f i c e s t o t a k e % 0107640 S I N - E P S I L O N a l i 0107660 t t l e b i t s m a l l e r 0107700 t h a n ( S Q R T ( * 6 0107720 S I N G L E - F L O A T - E P 0107740 S I L O N ) ) w h i c h w e 0107760 g e t b y t h e T a y l 0110000 o r s e r i e s e x p a n s 0110020 i o n ( S I N X ) = ( + 0110040 X ( / ( E X P T X 3 ) 0110060 6 ) . . . ) ( T h e r e 0110100 l a t i v e e r r o r c a u 0110120 s e d b y o m m i t t i n g 0110140 ( / ( E X P T X 3 ) 6 0110160 ) i s n ' t o b s e r v a b 0110200 l e . ) C o m p a r i s o n 0110220 a g a i n s t % S I N - E P S 0110240 I L O N i s u s e d t o 0110260 a v o i d P O L Y E V A L m 0110300 i c r o c o d e u n d e r f l 0110320 o w w h e n c o m p u t i n 0110340 g S I N . * " \r ) 006 001 \r \r 0110360 \r ( R P A Q ? 006 002 % S I N - E 0110400 P S I L O N 006 001 ( % F L O A T 0110420 1 4 7 2 0 0 ) ) \r \r \r \r 006 004 0110440 ( * | ; ; | \r " % S I N - P 0110460 P O L Y a n d % S I N - Q P 0110500 O L Y c o n t a i n a d a p 0110520 t e d P a n d Q c o e f 0110540 f i c i e n t s o f H a r r 0110560 i s e t a l S I N 3 3 7 0110600 4 r a t i o n a l a p p r o 0110620 x i m a t i o n t o ( S I N 0110640 X ) i n i n t e r v a l 0110660 ( 0 ( / P I 2 ) ) . T 0110700 h e c o e f f i c i e n t s 0110720 f o r % S I N - P P O L Y a 0110740 n d % S I N - Q P O L Y h a 0110760 v e b e e n c o m p u t e d 0111000 f r o m H a r r i s u s i 0111020 n g e x t e n d e d p r e c 0111040 i s i o n r o u t i n e s a 0111060 n d t h e r e l a t i o n s 0111100 % S I N - P P O L Y = ( R 0111120 E V E R S E ( f o r I f r 0111140 o m 0 a s E N T R Y i n 0111160 P S c o l l e c t ( / ( 0111200 * ( E X P T ( / 2 P I ) 0111220 ( 1 + ( * 2 I ) ) ) E 0111240 N T R Y ) Q 0 ) ) ) a n d 0111260 % S I N - Q P O L Y = ( R E 0111300 V E R S E ( f o r I f r o 0111320 m 0 a s E N T R Y i n 0111340 Q S c o l l e c t ( / ( * 0111360 ( E X P T ( / 2 P I ) 0111400 ( * 2 I ) ) E N T R Y ) 0111420 Q 0 ) ) ) * " \r ) 006 001 \r \r \r ( 0111440 R P A Q 006 002 % S I N - P P O L 0111460 Y 006 001 ( % M A K E - A R R A Y 0111500 ( L I S T ( % F L O A T 4 0111520 5 2 3 6 2 5 6 1 1 ) \r 0111540 * 0111600 ( % F L O A T 1 3 5 8 9 2 6 0111620 1 4 8 ) \r 0111640 0111660 ( % F L O A T 0111700 4 7 2 8 6 3 4 7 9 7 ) \r 0111720 * 0111760 ( % F L O A T 1 5 2 9 5 0112000 3 3 0 6 ) \r 0112020 0112040 ( % F L O A 0112060 T 4 8 6 6 6 3 4 8 0 5 ) \r 0112100 * 0112140 ( % F L O A T 1 6 2 5 6 0112160 0 ) ) ) ) \r \r ( R P A Q 006 002 0112200 % S I N - Q P O L Y 006 001 ( % M 0112220 A K E - A R R A Y ( L I S T 0112240 ( % F L O A T 1 1 3 8 4 5 2 0112260 8 6 5 ) \r 0112300 0112320 ( % F L O A T 0112340 1 2 5 5 3 9 5 5 0 ) \r 0112360 * 0112420 ( % F L O A T 1 3 6 0 4 3 0112440 8 3 8 5 ) \r 0112460 0112500 ( % F L O A 0112520 T 1 4 5 9 3 1 8 8 4 1 ) \r 0112540 * 0112600 ( % F L O A T 1 5 4 8 9 0112620 5 5 4 9 ) \r 0112640 0112660 ( % F L O 0112700 A T 1 6 2 5 6 0 ) ) ) ) \r ( 0112720 D E F I N E Q \r \r ( 006 004 C L : S 0112740 I N 006 001 \r ( C L : L A M B D 0112760 A ( R A D I A N S ) 006 006 006 001 0113000 * 0113040 006 006 ( * F S " 2 0113060 0 - O c t - 8 6 2 3 : 3 7 " ) 0113100 006 001 \r ( C T Y 0113120 P E C A S E R A D I A N S ( 0113140 C O M P L E X ( 006 002 % S I N - 0113160 C O M P L E X 006 001 R A D I A N 0113200 S ) ) \r 0113220 ( F L O A T ( 006 002 % S 0113240 I N - F L O A T 006 001 R A D I A 0113260 N S N I L ) ) \r 0113300 ( C L : N U M 0113320 B E R ( 006 002 % S I N - F L O A 0113340 T 006 001 ( F L O A T R A D I A 0113360 N S ) \r 0113400 0113420 N I L ) ) ) ) ) \r \r 0113440 ( 006 004 % S I N - F L O A T 006 001 \r 0113460 ( L A M B D A ( X C O S 0113500 - F L A G ) 006 006 006 001 0113520 * 0113560 006 006 ( * | k b r : | " 2 3 0113600 - J u l - 8 6 1 5 : 5 3 " ) 006 0113620 001 \r \r 0113640 006 006 ( * * S I 0113660 N | o f | \ a F L O A T 0113700 X | c a l c u l a t e d | | 0113720 v i a | S I N 3 3 7 4 | r 0113740 a t i o n a l | | a p p r o x 0113760 i m a t i o n | \r 006 001 0114000 006 006 | o f | | H a 0114020 r r i s | | e t | | a l . | 0114040 * ) 006 001 \r \r ( P R O G 0114060 ( R S I G N R 2 A N S W 0114100 E R ) \r ( 006 0114120 002 D E C L A R E 006 001 ( G L O B 0114140 A L V A R S % S I N - P P O L 0114160 Y % S I N - Q P O L Y ) \r 0114200 ( 0114220 T Y P E F L O A T P X R 0114240 S I G N R 2 A N S W E R ) ) 0114260 \r \r 0114300 006 006 ( * * I \ f 0114320 | t h i s | | f u n c t i o 0114340 n | | c a l l e d | | b y | 0114360 C O S | t h e n | | u s e 0114400 | \r 006 001 006 006 0114420 ( C O S X ) = ( S I N ( 0114440 | m i n u s | % P I / 2 X ) 0114460 ) = ( S I N \r 006 001 0114500 006 006 ( + % P I / 2 0114520 X ) ) | C a s e | | o u t | 0114540 | o n | | s i g n | | o f 0114560 | X | f o r | | i m p r o 0114600 v e d | | n u m e r i c a l | 0114620 \r 006 001 006 006 0114640 | s t a b i l i t y . | | A v 0114660 o i d s | | u n n e c e s s a 0114700 r y | | r o u n d i n g | | 0114720 a n d | | p r o m o t e s | 0114740 | s y m m e t r i c | \r 006 001 0114760 006 006 | p r o p 0115000 e r t i e s . | ( C O S X ) 0115020 = ( C O S ( | m i n u s | 0115040 X ) ) | i s | | g u a r a 0115060 n t e e d | | b y | | t h i 0115100 s | \r 006 001 0115120 006 006 | s t r a t e g y . | * ) 0115140 006 001 \r \r ( S 0115160 E T Q R ( C O N D \r 0115200 0115220 ( ( N O T C O S - F L A G ) 0115240 \r 0115260 X ) \r 0115300 ( 0115320 ( > X 0 ) \r 0115340 ( - 0115360 % P I / 2 X ) ) \r 0115400 0115420 ( T ( + % P I / 2 X ) ) ) 0115440 ) \r \r 0115460 006 006 ( * * | F 0115500 i r s t | | r a n g e | | r 0115520 e d u c e | | t o | ( 0 | 0115540 i n f i n i t y | ) | b y | \r 0115560 006 001 006 006 ( S 0115600 I N ( | m i n u s | X ) ) 0115620 = ( | m i n u s | ( S I N 0115640 X ) ) | T h i s | | s t r a 0115660 t e g y | | g u a r a n t e e 0115700 s | \r 006 001 006 0115720 006 ( S I N ( | m i n u s | X 0115740 ) ) = ( | m i n u s | ( S 0115760 I N X ) ) * ) 006 001 \r \r 0116000 ( C O N D \r 0116020 ( ( < R 0116040 0 ) \r 0116060 ( S E T Q S I G N - 1 . 0 0116100 ) \r 0116120 ( S E T Q R ( - R ) ) ) \r 0116140 ( T 0116160 ( S E T Q S I G N 1 . 0 ) ) 0116200 ) \r \r 0116220 006 006 ( * * | N 0116240 e x t | | r a n g e | | r e 0116260 d u c e | | t o | | i n t e 0116300 r v a l | \r 006 001 0116320 006 006 ( 0 % 2 P I ) | b y 0116340 | ( S I N X ) = ( S I N 0116360 ( M O D X % 2 P I ) ) . 0116400 * ) 006 001 \r \r 0116420 ( S E T Q R ( C L : R E M 0116440 R % 2 P I ) ) \r 0116460 \r 006 0116500 006 ( * * | N e x t | | r a 0116520 n g e | | r e d u c e | | t 0116540 o | | i n t e r v a l | \r 006 001 0116560 006 006 ( 0 C 0116600 L : P I ) | b y | ( S I N 0116620 ( + X C L : P I ) ) = ( 0116640 | m i n u s | \r 006 001 0116660 006 006 ( S I N X ) ) * 0116700 ) 006 001 \r \r ( 0116720 C O N D \r 0116740 ( ( > R % P I ) \r 0116760 ( S E T Q 0117000 S I G N ( - S I G N ) ) \r 0117020 ( S 0117040 E T Q R ( - R % P I ) ) 0117060 ) ) \r \r 0117100 006 006 ( * * | 0117120 N e x t | | r a n g e | | r 0117140 e d u c e | | t o | | i n t 0117160 e r v a l | \r 006 001 0117200 006 006 ( 0 % P I / 2 ) | 0117220 b y | ( S I N ( + X % P 0117240 I / 2 ) ) = ( S I N ( | m 0117260 i n u s | % P I / 2 X ) ) 0117300 * ) 006 001 \r \r 0117320 ( C O N D \r 0117340 ( ( > R % P I / 2 ) \r 0117360 ( S 0117400 E T Q R ( - % P I R ) ) 0117420 ) ) \r ( C O 0117440 N D \r 0117460 ( ( < R % S I N - E P S I L 0117500 O N ) \r \r 0117520 006 006 ( * * 0117540 I \ f R | i s | | i n | 0117560 | t h e | | i n t e r v a l | 0117600 ( 0 % S I N - E P S I L O N 0117620 ) | t h e n | \r 006 001 0117640 006 006 ( S I N R ) = 0117660 R | t o | | t h e | | p 0117700 r e c i s i o n | | t h a t | 0117720 | w e | | c a n | | o f f 0117740 e r . | \r 006 001 0117760 006 006 | R e t u r n | R | b 0120000 e c a u s e | ( 1 ) | i t | 0120020 | i s | | d e s i r a b l e 0120040 | | t h a t | \r 006 001 0120060 006 006 ( S I N R ) = 0120100 R | e x a c t l y | | f o 0120120 r | | s m a l l | R | a n 0120140 d | \r 006 001 006 0120160 006 ( 2 ) | m i c r o c o d e | 0120200 P O L Y E V A L | w i l l | 0120220 | u n d e r f l o w | | o n 0120240 | | s u f f i c i e n t l y | 0120260 | s m a l l | \r 006 001 0120300 006 006 | p o s i t i v 0120320 e | R . * ) 006 001 \r \r 0120340 ( R E T U R 0120360 N ( C L : * S I G N R ) ) 0120400 ) ) \r \r 0120420 006 006 ( * * | 0120440 N o w | | u s e | S I N 3 0120460 3 7 4 | r a t i o n a l | | 0120500 a p p r o x i m a t i o n | | 0120520 o f | | H a r r i s | | e t 0120540 | | a l . | \r 006 001 0120560 006 006 | w h i c h | | w 0120600 o r k s | | o n | | i n t e 0120620 r v a l | ( 0 % P I / 2 ) 0120640 * ) 006 001 \r \r 0120660 ( S E T Q R 2 ( C L : * R 0120700 R ) ) \r ( 0120720 S E T Q A N S W E R ( C L : 0120740 * S I G N R ( / ( P O L 0120760 Y E V A L R 2 % S I N - P P 0121000 O L Y 5 ) \r 0121020 0121040 ( P 0121060 O L Y E V A L R 2 % S I N - 0121100 Q P O L Y 5 ) ) ) ) \r 0121120 ( R E T U R N A N 0121140 S W E R ) ) ) ) \r \r ( 006 004 % S I 0121160 N - C O M P L E X 006 001 \r ( C 0121200 L : L A M B D A ( Z ) 0121220 * 0121260 006 006 ( * | s 0121300 i n | | o f | \ a | c o m 0121320 p l e x | | n u m b e r | * 0121340 ) 006 001 \r ( L E 0121360 T * ( ( X ( C L : R E A L P 0121400 A R T Z ) ) \r 0121420 ( Y ( C L : I 0121440 M A G P A R T Z ) ) ) \r 0121460 ( C O M 0121500 P L E X ( C L : * ( 006 002 C L 0121520 : S I N 006 001 X ) \r 0121540 0121560 ( 006 002 C L : C O 0121600 S H 006 001 Y ) ) \r 0121620 ( 0121640 C L : * ( 006 002 C L : C O S 006 001 0121660 X ) \r 0121700 0121720 ( 006 002 C L : S I N H 006 001 Y ) ) 0121740 ) ) ) ) \r ) \r \r \r \r 006 004 ( * C 0121760 O S * ) 006 001 \r \r ( D E F I N E 0122000 Q \r \r ( 006 004 C L : C O S 006 001 \r 0122020 ( C L : L A M B D A ( R A D 0122040 I A N S ) 006 006 006 001 0122060 * 0122120 006 006 ( * F S " 2 0 - O c t - 0122140 8 6 2 3 : 3 7 " ) 006 001 \r 0122160 ( C T Y P E C A S E 0122200 R A D I A N S ( F L O A T 0122220 ( 006 002 % S I N - F L O A T 006 001 0122240 R A D I A N S T ) ) \r 0122260 ( C O M 0122300 P L E X ( 006 002 % C O S - C O M 0122320 P L E X 006 001 R A D I A N S ) ) 0122340 \r 0122360 ( C L : N U M B E R ( 006 002 % 0122400 S I N - F L O A T 006 001 ( F L O 0122420 A T R A D I A N S ) \r 0122440 0122460 T ) 0122500 ) ) ) ) \r \r ( 006 004 % C O S - C O 0122520 M P L E X 006 001 \r ( C L : L A 0122540 M B D A ( Z ) 0122560 * 0122620 006 006 ( * | c o s i n 0122640 e | | o f | \ a | c o m p 0122660 l e x | | n u m b e r | \r 006 0122700 001 0122720 * 0122760 006 006 0123000 * ) 006 001 \r ( L 0123020 E T * ( ( X ( C L : R E A L 0123040 P A R T Z ) ) \r 0123060 ( Y ( C L : 0123100 I M A G P A R T Z ) ) ) \r 0123120 ( C O 0123140 M P L E X ( C L : * ( 006 002 C 0123160 L : C O S 006 001 X ) \r 0123200 0123220 ( 006 002 C L : C 0123240 O S H 006 001 Y ) ) \r 0123260 0123300 ( - ( C L : * ( 006 002 C L : S 0123320 I N 006 001 X ) \r 0123340 0123360 ( 006 002 C L : S I N 0123400 H 006 001 Y ) ) ) ) ) ) ) \r ) \r \r 0123420 \r \r 006 004 ( * T A N * ) 006 001 \r 0123440 \r \r \r \r 006 004 ( * | ; ; | \r " 0123460 % T A N - E P S I L O N i s 0123500 s u f f i c i e n t l y s m a 0123520 l l t h a t ( T A N X ) 0123540 = X f o r X i n i n t 0123560 e r v a l ( 0 % T A N - E P 0123600 S I L O N ) . I t s u f f 0123620 i c e s t o t a k e % T A 0123640 N - E P S I L O N a l i t t 0123660 l e b i t s m a l l e r t 0123700 h a n ( S Q R T ( * 3 S 0123720 I N G L E - F L O A T - E P S I 0123740 L O N ) ) w h i c h w e g 0123760 e t b y t h e T a y l o r 0124000 s e r i e s e x p a n s i o 0124020 n ( T A N X ) = ( + X 0124040 ( / ( E X P T X 3 ) 3 0124060 ) . . . ) ( T h e r e l a 0124100 t i v e e r r o r c a u s e 0124120 d b y o m m i t t i n g ( 0124140 / ( E X P T X 3 ) 3 ) 0124160 i s n ' t o b s e r v a b l e 0124200 . ) C o m p a r i s o n a g 0124220 a i n s t % T A N - E P S I L 0124240 O N i s u s e d t o a v 0124260 o i d P O L Y E V A L m i c 0124300 r o c o d e u n d e r f l o w 0124320 w h e n c o m p u t i n g 0124340 T A N . * " \r ) 006 001 \r \r \r ( 0124360 R P A Q ? 006 002 % T A N - E P S 0124400 I L O N 006 001 ( % F L O A T 1 0124420 4 7 2 0 0 ) ) \r \r \r \r 006 004 ( * 0124440 | ; ; | \r " % T A N - P P O 0124460 L Y a n d % T A N - Q P O L 0124500 Y c o n t a i n a d a p t e 0124520 d P a n d Q c o e f f i 0124540 c i e n t s o f H a r r i s 0124560 e t a l T A N 4 2 8 8 0124600 r a t i o n a l a p p r o x i 0124620 m a t i o n t o ( T A N X 0124640 ) i n i n t e r v a l ( - 0124660 P I / 4 P I / 4 ) . T h e 0124700 c o e f f i c i e n t s f o 0124720 r % T A N - P P O L Y a n d 0124740 % T A N - Q P O L Y h a v e 0124760 b e e n c o m p u t e d f 0125000 r o m H a r r i s u s i n g 0125020 e x t e n d e d p r e c i s 0125040 i o n r o u t i n e s a n d 0125060 t h e r e l a t i o n s % 0125100 T A N - P P O L Y = ( R E V 0125120 E R S E ( f o r I f r o m 0125140 0 a s E N T R Y i n P 0125160 S c o l l e c t ( / ( * 0125200 ( E X P T ( / 4 P I ) ( 0125220 1 + ( * 2 I ) ) ) E N T 0125240 R Y ) Q 0 ) ) ) a n d % T 0125260 A N - Q P O L Y = ( R E V E 0125300 R S E ( f o r I f r o m 0125320 0 a s E N T R Y i n Q S 0125340 c o l l e c t ( / ( * ( 0125360 E X P T ( / 4 P I ) ( * 0125400 2 I ) ) E N T R Y ) Q 0 0125420 ) ) ) * " \r ) 006 001 \r \r \r ( R P 0125440 A Q 006 002 % T A N - P P O L Y 006 0125460 001 ( % M A K E - A R R A Y ( 0125500 L I S T ( % F L O A T 1 3 2 0125520 3 7 2 1 0 9 0 ) \r 0125540 0125560 ( % 0125600 F L O A T 4 7 1 4 1 1 5 8 2 0125620 5 ) \r 0125640 0125660 ( % F L O A T 1 0125700 5 2 4 6 8 7 8 5 ) \r 0125720 0125740 ( 0125760 % F L O A T 4 8 6 5 5 4 8 7 0126000 6 1 ) \r 0126020 0126040 ( % F L O A T 0126060 1 6 2 5 6 0 ) ) ) ) \r \r ( R P 0126100 A Q 006 002 % T A N - Q P O L Y 006 0126120 001 ( % M A K E - A R R A Y ( 0126140 L I S T ( % F L O A T 4 5 2 0126160 6 7 3 6 9 4 7 ) \r 0126200 0126220 ( % 0126240 F L O A T 1 3 8 4 8 4 6 8 7 0126260 5 ) \r 0126300 0126320 ( % F L O A T 4 0126340 7 6 1 2 5 3 7 3 8 ) \r 0126360 * 0126420 ( % F L O A T 1 5 5 9 6 5 2 0126440 8 5 4 ) \r 0126460 0126500 ( % F L O A T 0126520 4 8 8 8 2 3 5 3 0 3 ) \r 0126540 * 0126600 ( % F L O A T 1 6 2 5 6 0126620 0 ) ) ) ) \r ( D E F I N E Q \r \r 0126640 ( 006 004 C L : T A N 006 001 \r ( C 0126660 L : L A M B D A ( R A D I A N 0126700 S ) 006 006 006 001 0126720 0126740 006 006 ( 0126760 * F S " 2 0 - O c t - 8 6 0127000 2 3 : 3 7 " ) 006 001 \r 0127020 ( C T Y P E C A S E R A 0127040 D I A N S ( C O M P L E X ( 0127060 006 002 % T A N - C O M P L E X 006 001 0127100 R A D I A N S ) ) \r 0127120 ( C L : N 0127140 U M B E R ( 006 002 % T A N - F L 0127160 O A T 006 001 ( F L O A T R A D 0127200 I A N S ) ) ) ) ) ) \r \r ( 006 004 % 0127220 T A N - F L O A T 006 001 \r ( L 0127240 A M B D A ( X ) 006 006 006 001 0127260 * 0127320 006 006 ( 0127340 * | k b r : | " 2 0 - A u g 0127360 - 8 6 2 0 : 1 3 " ) 006 001 \r 0127400 \r 0127420 006 006 ( * * T A N | o 0127440 f | \ a F L O A T X | c 0127460 a l c u l a t e d | | v i a | 0127500 T A N 4 2 8 8 | r a t i o 0127520 n a l | | a p p r o x i m a t 0127540 i o n | \r 006 001 0127560 006 006 | o f | | H a r r i s 0127600 | | e t | | a l . | * ) 006 0127620 001 \r \r ( P R O G ( R 0127640 S I G N R E C I P F L G R 2 0127660 A N S W E R ) \r 0127700 ( 006 002 D E C L A R E 006 001 0127720 ( G L O B A L V A R S % T A N 0127740 - P P O L Y % T A N - Q P O L 0127760 Y ) \r 0130000 ( T Y P E F L O A T P 0130020 X R R 2 A N S W E R ) ) 0130040 \r ( S E T Q 0130060 R X ) \r 0130100 \r 006 006 ( * 0130120 * | F i r s t | | r a n g e 0130140 | | r e d u c e | | t o | 0130160 ( 0 | i n f i n i t y | ) | 0130200 b y | \r 006 001 0130220 006 006 ( T A N ( | m i n u s | 0130240 X ) ) = ( | m i n u s | ( 0130260 T A N X ) ) * ) 006 001 \r \r 0130300 ( C O N D \r 0130320 ( ( < R 0130340 0 ) \r 0130360 ( S E T Q S I G N - 1 . 0130400 0 ) \r 0130420 ( S E T Q R ( - R ) ) ) 0130440 \r ( T 0130460 ( S E T Q S I G N 1 . 0 ) 0130500 ) ) \r \r 0130520 006 006 ( * * | 0130540 N e x t | | r a n g e | | r 0130560 e d u c e | | t o | ( 0 C 0130600 L : P I ) * ) 006 001 \r \r 0130620 ( S E T Q R ( C 0130640 L : R E M R % P I ) ) \r 0130660 \r 0130700 006 006 ( * * | N e x t , 0130720 | | r a n g e | | r e d u c 0130740 e | | t o | ( - P I / 4 P 0130760 I / 4 ) | u s i n g | \r 006 001 0131000 006 006 ( T A N 0131020 X ) = ( T A N ( | m i n u 0131040 s | X C L : P I ) ) | t o 0131060 | | g e t | | i n t o | | 0131100 i n t e r v a l | \r 006 001 0131120 006 006 ( - P I / 2 P 0131140 I / 2 ) | a n d | | t h e n 0131160 | ( T A N X ) = ( / ( 0131200 T A N \r 006 001 0131220 006 006 ( | m i n u s | P I / 2 0131240 X ) ) ) | t o | | g e t | 0131260 | i n t o | | i n t e r v a l 0131300 | \r 006 001 006 006 0131320 ( - P I / 4 P I / 4 ) * ) 006 0131340 001 \r \r ( C O 0131360 N D \r 0131400 ( ( > R % P I / 2 ) \r 0131420 ( S E T Q 0131440 R ( - R % P I ) ) \r 0131460 ( C O N 0131500 D \r 0131520 ( ( < R % - P I / 4 ) 0131540 \r 0131560 ( S E T Q R E C I P F L 0131600 G T ) \r 0131620 ( S E T Q R ( 0131640 - % - P I / 2 R ) ) ) ) ) \r 0131660 ( T 0131700 ( C O N D \r 0131720 ( ( > R % 0131740 P I / 4 ) \r 0131760 ( S E T Q 0132000 R E C I P F L G T ) \r 0132020 0132040 ( S E T Q R ( - % P I / 2 0132060 R ) ) ) ) ) ) \r 0132100 ( C O N D \r 0132120 ( ( < ( A B S R 0132140 ) \r 0132160 % T A N - E P S I L O N ) \r 0132200 \r 0132220 006 006 ( * * I \ f R 0132240 | i s | | i n | | t h e | 0132260 | i n t e r v a l | ( 0 % 0132300 T A N - E P S I L O N ) | t h 0132320 e n | \r 006 001 0132340 006 006 ( T A N R ) = R | t 0132360 o | | t h e | | p r e c i s 0132400 i o n | | t h a t | | w e | 0132420 | c a n | | o f f e r . | \r 0132440 006 001 006 006 | R 0132460 e t u r n | R | b e c a u s 0132500 e | ( 1 ) | i t | | i s | 0132520 | d e s i r a b l e | | t h 0132540 a t | \r 006 001 0132560 006 006 ( T A N R ) = R | e 0132600 x a c t l y | | f o r | | s 0132620 m a l l | R | a n d | \r 006 001 0132640 006 006 ( 2 ) 0132660 | m i c r o c o d e | P O L Y 0132700 E V A L | w i l l | | u n d 0132720 e r f l o w | | o n | | s u 0132740 f f i c i e n t l y | | s m a 0132760 l l | \r 006 001 0133000 006 006 | p o s i t i v e | R . 0133020 * ) 006 001 \r \r 0133040 ( S E T Q A N S W E 0133060 R ( C L : * S I G N R ) ) 0133100 \r ( 0133120 C O N D \r 0133140 ( R E C I P F L G 0133160 ( S E T Q A N S W E R ( / 0133200 A N S W E R ) ) ) ) \r 0133220 ( R E T U R N 0133240 A N S W E R ) ) ) \r 0133260 \r 0133300 006 006 ( * * | N o w | | u s 0133320 e | T A N 4 2 8 8 | r a t 0133340 i o n a l | | a p p r o x i m 0133360 a t i o n | | o f | | H a r 0133400 r i s | | e t | | a l . | \r 0133420 006 001 006 006 | w 0133440 h i c h | | w o r k s | | o 0133460 n | | i n t e r v a l | ( 0 0133500 % P I / 4 ) * ) 006 001 \r \r 0133520 ( S E T Q R 2 0133540 ( C L : * R R ) ) \r 0133560 ( S E T Q A N S 0133600 W E R ( C L : * S I G N R 0133620 ( / ( P O L Y E V A L R 2 0133640 % T A N - P P O L Y 4 ) \r 0133660 * 0133720 ( P O L Y E V A L 0133740 R 2 % T A N - Q P O L Y 5 ) 0133760 ) ) ) \r ( C 0134000 O N D \r 0134020 ( R E C I P F L G ( S E T Q 0134040 A N S W E R ( / A N S W E 0134060 R ) ) ) ) \r 0134100 ( R E T U R N A N S W E R ) ) 0134120 ) ) \r \r ( 006 004 % T A N - C O M P 0134140 L E X 006 001 \r ( C L : L A M B 0134160 D A ( Z ) \r 0134200 \r 006 006 ( * 0134220 | t a n | | o f | \ a | 0134240 c o m p l e x | | n u m b e r 0134260 | | t h e r e | | w a s | 0134300 \ a | n i c e r | | a l g o 0134320 r i t h m | | b u t | \r 006 001 0134340 006 006 | i t | 0134360 | t u r n e d | | o u t | 0134400 | n o t | | t o | | w o r k 0134420 | | s o | | w e l l . | \r 006 0134440 001 006 006 * ) 006 0134460 001 \r \r ( L E T 0134500 * ( ( N U M ( 006 002 C L : S I 0134520 N 006 001 Z ) ) \r 0134540 ( D E N O M ( 0134560 006 002 C L : C O S 006 001 Z ) ) ) \r 0134600 ( 0134620 C L : I F ( Z E R O P D E N 0134640 O M ) \r 0134660 ( C L : E R 0134700 R O R " ~ S u n d e f i n e 0134720 d t a n g e n t . " Z ) \r 0134740 0134760 ( / N U M D E N O 0135000 M ) ) ) ) ) \r ) \r \r \r \r 006 004 ( * 0135020 C L : A S I N * ) 006 001 \r \r \r 0135040 \r \r 006 004 ( * | ; ; | \r " % A 0135060 S I N - E P S I L O N i s s 0135100 u f f i c i e n t l y s m a l 0135120 l t h a t ( A S I N X ) 0135140 = X f o r X i n i n t 0135160 e r v a l ( 0 % A S I N - E 0135200 P S I L O N ) . I t s u f 0135220 f i c e s t o t a k e % A 0135240 S I N - E P S I L O N a l i 0135260 t t l e b i t s m a l l e r 0135300 t h a n ( * 2 S I N G L 0135320 E - F L O A T - E P S I L O N ) 0135340 w h i c h w e g e t b y 0135360 t h e T a y l o r s e r i 0135400 e s e x p a n s i o n ( A S 0135420 I N X ) = ( + X ( / 0135440 ( E X P T X 3 ) 6 ) . . 0135460 . ) ( T h e r e l a t i v e 0135500 e r r o r c a u s e d b y 0135520 o m m i t t i n g ( / ( E 0135540 X P T X 3 ) 6 ) i s n ' 0135560 t o b s e r v a b l e . ) C 0135600 o m p a r i s o n a g a i n s 0135620 t % A S I N - E P S I L O N 0135640 i s u s e d t o a v o i d 0135660 P O L Y E V A L m i c r o c 0135700 o d e u n d e r f l o w w h 0135720 e n c o m p u t i n g S I N 0135740 . * " \r ) 006 001 \r \r \r ( R P A 0135760 Q ? 006 002 % A S I N - E P S I L 0136000 O N 006 001 ( % F L O A T 1 4 7 0136020 2 0 0 ) ) \r \r \r \r 006 004 ( * | 0136040 ; ; | \r " % A S I N - P P O L 0136060 Y a n d % A S I N - Q P O L 0136100 Y c o n t a i n P a n d 0136120 Q c o e f f i c i e n t s o 0136140 f H a r r i s e t a l A 0136160 R C S N 4 6 7 1 r a t i o n 0136200 a l a p p r o x i m a t i o n 0136220 t o ( A S I N X ) i n 0136240 i n t e r v a l ( 0 ( S Q R 0136260 T . 5 ) ) . * " \r ) 006 001 0136300 \r \r \r ( R P A Q 006 002 % A S I N 0136320 - P P O L Y 006 001 ( % M A K E - 0136340 A R R A Y ( L I S T ( % F L 0136360 O A T 1 6 0 0 7 5 0 0 4 5 ) 0136400 \r 0136420 0136440 ( % F L O A T 4 9 0136460 5 4 9 8 0 2 0 ) \r 0136500 0136520 ( 0136540 % F L O A T 1 7 2 3 6 1 5 8 0136560 4 8 ) \r 0136600 0136620 ( % F L O A T 0136640 5 0 2 8 5 6 3 4 6 4 ) \r 0136660 * 0136720 ( % F L O A T 1 7 6 5 0 0136740 3 1 2 3 5 ) \r 0136760 0137000 ( % F 0137020 L O A T 5 0 4 0 3 6 2 8 5 2 0137040 ) \r 0137060 0137100 ( % F L O A T 1 0137120 7 4 4 0 3 9 4 7 1 ) ) ) ) \r \r 0137140 ( R P A Q 006 002 % A S I N - Q P 0137160 O L Y 006 001 ( % M A K E - A R R 0137200 A Y ( L I S T ( % F L O A T 0137220 1 6 2 5 6 0 ) \r 0137240 0137260 ( 0137300 % F L O A T 4 9 6 7 2 2 5 8 0137320 1 7 ) \r 0137340 0137360 ( % F L O A T 0137400 1 7 3 0 8 5 5 2 6 0 ) \r 0137420 * 0137460 ( % F L O A T 5 0 3 2 6 0137500 3 8 0 9 8 ) \r 0137520 0137540 ( % F 0137560 L O A T 1 7 6 7 4 2 2 2 1 0 0137600 ) \r 0137620 0137640 ( % F L O A T 5 0137660 0 4 1 7 2 2 4 5 1 ) \r 0137700 * 0137740 ( % F L O A T 1 7 4 4 0 3 0137760 9 4 7 1 ) ) ) ) \r ( D E F I N E 0140000 Q \r \r ( 006 004 C L : A S I N 006 001 \r 0140020 ( C L : L A M B D A ( N U 0140040 M B E R ) 006 006 006 001 0140060 * 0140120 006 006 ( * F S " 2 1 - O c t 0140140 - 8 6 0 0 : 5 1 " ) 006 001 \r 0140160 ( C T Y P E C A S 0140200 E N U M B E R ( F L O A T 0140220 ( 006 002 % A S I N - F L O A T 006 001 0140240 N U M B E R ) ) \r 0140260 ( C O M P L 0140300 E X ( 006 002 % A S I N - C O M P 0140320 L E X 006 001 N U M B E R ) ) \r 0140340 ( 0140360 C L : N U M B E R ( 006 002 % A S 0140400 I N - F L O A T 006 001 ( F L O A 0140420 T N U M B E R ) ) ) ) ) ) \r \r 0140440 ( 006 004 % A S I N - F L O A T 006 001 0140460 \r ( L A M B D A ( X A C 0140500 O S - F L A G ) 006 006 006 001 0140520 * 0140560 006 006 ( * | k b r : | " 3 0140600 0 - M a y - 8 6 1 6 : 4 6 " ) 0140620 006 001 \r \r 0140640 006 006 ( * * ( 0140660 C L : A S I N X ) | f o r | 0140700 | f l o a t | X | c a l c 0140720 u l a t e d | | v i a | A R 0140740 C S N 4 6 7 1 | r a t i o n 0140760 a l | \r 006 001 0141000 006 006 | a p p r o x i m a t i o 0141020 n | | o f | | H a r r i s | 0141040 | e t | | a l . | \r 006 001 0141060 006 006 * ) 006 001 \r \r 0141100 ( P R O G ( N E G A T 0141120 I V E R E D U C E D R R 2 0141140 A N S W E R ) \r 0141160 ( 006 002 D E C L A R E 006 001 0141200 ( G L O B A L V A R S % A S I 0141220 N - P P O L Y % A S I N - Q P 0141240 O L Y ) ) \r 0141260 ( S E T Q R X ) \r 0141300 ( C O N D \r 0141320 ( ( O R ( < 0141340 R - 1 . 0 ) \r 0141360 ( > R 1 0141400 . 0 ) ) \r 0141420 ( E R R O R " A R C S I 0141440 N : a r g n o t i n r a 0141460 n g e " R ) ) ) \r 0141500 ( C O N D \r 0141520