$ 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