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