home *** CD-ROM | disk | FTP | other *** search
/ Chip: Windows 2000 Professional Resource Kit / W2KPRK.iso / apps / perl / ActivePerl.exe / data.z / BigInt.pm < prev    next >
Encoding:
Perl POD Document  |  1999-10-14  |  55.5 KB  |  429 lines

  1. package Math::BigInt;
  2.  
  3. use overload
  4. '+'    =>    sub {new Math::BigInt &badd},
  5. '-'    =>    sub {new Math::BigInt
  6.                $_[2]? bsub($_[1],${$_[0]}) : bsub(${$_[0]},$_[1])},
  7. '<=>'    =>    sub {new Math::BigInt
  8.                $_[2]? bcmp($_[1],${$_[0]}) : bcmp(${$_[0]},$_[1])},
  9. 'cmp'    =>    sub {new Math::BigInt
  10.                $_[2]? ($_[1] cmp ${$_[0]}) : (${$_[0]} cmp $_[1])},
  11. '*'    =>    sub {new Math::BigInt &bmul},
  12. '/'    =>    sub {new Math::BigInt 
  13.                $_[2]? scalar bdiv($_[1],${$_[0]}) :
  14.              scalar bdiv(${$_[0]},$_[1])},
  15. '%'    =>    sub {new Math::BigInt
  16.                $_[2]? bmod($_[1],${$_[0]}) : bmod(${$_[0]},$_[1])},
  17. '**'    =>    sub {new Math::BigInt
  18.                $_[2]? bpow($_[1],${$_[0]}) : bpow(${$_[0]},$_[1])},
  19. 'neg'    =>    sub {new Math::BigInt &bneg},
  20. 'abs'    =>    sub {new Math::BigInt &babs},
  21.  
  22. qw(
  23. ""    stringify
  24. 0+    numify)            # Order of arguments unsignificant
  25. ;
  26.  
  27. $NaNOK=1;
  28.  
  29. sub new {
  30.   my($class) = shift;
  31.   my($foo) = bnorm(shift);
  32.   die "Not a number initialized to Math::BigInt" if !$NaNOK && $foo eq "NaN";
  33.   bless \$foo, $class;
  34. }
  35. sub stringify { "${$_[0]}" }
  36. sub numify { 0 + "${$_[0]}" }    # Not needed, additional overhead
  37.                 # comparing to direct compilation based on
  38.                 # stringify
  39. sub import {
  40.   shift;
  41.   return unless @_;
  42.   die "unknown import: @_" unless @_ == 1 and $_[0] eq ':constant';
  43.   overload::constant integer => sub {Math::BigInt->new(shift)};
  44. }
  45.  
  46. $zero = 0;
  47.  
  48.  
  49. # normalize string form of number.   Strip leading zeros.  Strip any
  50. #   white space and add a sign, if missing.
  51. # Strings that are not numbers result the value 'NaN'.
  52.  
  53. sub bnorm { #(num_str) return num_str
  54.     local($_) = @_;
  55.     s/\s+//g;                           # strip white space
  56.     if (s/^([+-]?)0*(\d+)$/$1$2/) {     # test if number
  57.     substr($_,$[,0) = '+' unless $1; # Add missing sign
  58.     s/^-0/+0/;
  59.     $_;
  60.     } else {
  61.     'NaN';
  62.     }
  63. }
  64.  
  65. # Convert a number from string format to internal base 100000 format.
  66. #   Assumes normalized value as input.
  67. sub internal { #(num_str) return int_num_array
  68.     local($d) = @_;
  69.     ($is,$il) = (substr($d,$[,1),length($d)-2);
  70.     substr($d,$[,1) = '';
  71.     ($is, reverse(unpack("a" . ($il%5+1) . ("a5" x ($il/5)), $d)));
  72. }
  73.  
  74. # Convert a number from internal base 100000 format to string format.
  75. #   This routine scribbles all over input array.
  76. sub external { #(int_num_array) return num_str
  77.     $es = shift;
  78.     grep($_ > 9999 || ($_ = substr('0000'.$_,-5)), @_);   # zero pad
  79.     &bnorm(join('', $es, reverse(@_)));    # reverse concat and normalize
  80. }
  81.  
  82. # Negate input value.
  83. sub bneg { #(num_str) return num_str
  84.     local($_) = &bnorm(@_);
  85.     return $_ if $_ eq '+0' or $_ eq 'NaN';
  86.     vec($_,0,8) ^= ord('+') ^ ord('-');
  87.     $_;
  88. }
  89.  
  90. # Returns the absolute value of the input.
  91. sub babs { #(num_str) return num_str
  92.     &abs(&bnorm(@_));
  93. }
  94.  
  95. sub abs { # post-normalized abs for internal use
  96.     local($_) = @_;
  97.     s/^-/+/;
  98.     $_;
  99. }
  100.  
  101. # Compares 2 values.  Returns one of undef, <0, =0, >0. (suitable for sort)
  102. sub bcmp { #(num_str, num_str) return cond_code
  103.     local($x,$y) = (&bnorm($_[$[]),&bnorm($_[$[+1]));
  104.     if ($x eq 'NaN') {
  105.     undef;
  106.     } elsif ($y eq 'NaN') {
  107.     undef;
  108.     } else {
  109.     &cmp($x,$y) <=> 0;
  110.     }
  111. }
  112.  
  113. sub cmp { # post-normalized compare for internal use
  114.     local($cx, $cy) = @_;
  115.     
  116.     return 0 if ($cx eq $cy);
  117.  
  118.     local($sx, $sy) = (substr($cx, 0, 1), substr($cy, 0, 1));
  119.     local($ld);
  120.  
  121.     if ($sx eq '+') {
  122.       return  1 if ($sy eq '-' || $cy eq '+0');
  123.       $ld = length($cx) - length($cy);
  124.       return $ld if ($ld);
  125.       return $cx cmp $cy;
  126.     } else { # $sx eq '-'
  127.       return -1 if ($sy eq '+');
  128.       $ld = length($cy) - length($cx);
  129.       return $ld if ($ld);
  130.       return $cy cmp $cx;
  131.     }
  132. }
  133.  
  134. sub badd { #(num_str, num_str) return num_str
  135.     local(*x, *y); ($x, $y) = (&bnorm($_[$[]),&bnorm($_[$[+1]));
  136.     if ($x eq 'NaN') {
  137.     'NaN';
  138.     } elsif ($y eq 'NaN') {
  139.     'NaN';
  140.     } else {
  141.     @x = &internal($x);             # convert to internal form
  142.     @y = &internal($y);
  143.     local($sx, $sy) = (shift @x, shift @y); # get signs
  144.     if ($sx eq $sy) {
  145.         &external($sx, &add(*x, *y)); # if same sign add
  146.     } else {
  147.         ($x, $y) = (&abs($x),&abs($y)); # make abs
  148.         if (&cmp($y,$x) > 0) {
  149.         &external($sy, &sub(*y, *x));
  150.         } else {
  151.         &external($sx, &sub(*x, *y));
  152.         }
  153.     }
  154.     }
  155. }
  156.  
  157. sub bsub { #(num_str, num_str) return num_str
  158.     &badd($_[$[],&bneg($_[$[+1]));    
  159. }
  160.  
  161. # GCD -- Euclids algorithm Knuth Vol 2 pg 296
  162. sub bgcd { #(num_str, num_str) return num_str
  163.     local($x,$y) = (&bnorm($_[$[]),&bnorm($_[$[+1]));
  164.     if ($x eq 'NaN' || $y eq 'NaN') {
  165.     'NaN';
  166.     } else {
  167.     ($x, $y) = ($y,&bmod($x,$y)) while $y ne '+0';
  168.     $x;
  169.     }
  170. }
  171.  
  172. # routine to add two base 1e5 numbers
  173. #   stolen from Knuth Vol 2 Algorithm A pg 231
  174. #   there are separate routines to add and sub as per Kunth pg 233
  175. sub add { #(int_num_array, int_num_array) return int_num_array
  176.     local(*x, *y) = @_;
  177.     $car = 0;
  178.     for $x (@x) {
  179.     last unless @y || $car;
  180.     $x -= 1e5 if $car = (($x += (@y ? shift(@y) : 0) + $car) >= 1e5) ? 1 : 0;
  181.     }
  182.     for $y (@y) {
  183.     last unless $car;
  184.     $y -= 1e5 if $car = (($y += $car) >= 1e5) ? 1 : 0;
  185.     }
  186.     (@x, @y, $car);
  187. }
  188.  
  189. # subtract base 1e5 numbers -- stolen from Knuth Vol 2 pg 232, $x > $y
  190. sub sub { #(int_num_array, int_num_array) return int_num_array
  191.     local(*sx, *sy) = @_;
  192.     $bar = 0;
  193.     for $sx (@sx) {
  194.     last unless @sy || $bar;
  195.     $sx += 1e5 if $bar = (($sx -= (@sy ? shift(@sy) : 0) + $bar) < 0);
  196.     }
  197.     @sx;
  198. }
  199.  
  200. # multiply two numbers -- stolen from Knuth Vol 2 pg 233
  201. sub bmul { #(num_str, num_str) return num_str
  202.     local(*x, *y); ($x, $y) = (&bnorm($_[$[]), &bnorm($_[$[+1]));
  203.     if ($x eq 'NaN') {
  204.     'NaN';
  205.     } elsif ($y eq 'NaN') {
  206.     'NaN';
  207.     } else {
  208.     @x = &internal($x);
  209.     @y = &internal($y);
  210.     &external(&mul(*x,*y));
  211.     }
  212. }
  213.  
  214. # multiply two numbers in internal representation
  215. # destroys the arguments, supposes that two arguments are different
  216. sub mul { #(*int_num_array, *int_num_array) return int_num_array
  217.     local(*x, *y) = (shift, shift);
  218.     local($signr) = (shift @x ne shift @y) ? '-' : '+';
  219.     @prod = ();
  220.     for $x (@x) {
  221.       ($car, $cty) = (0, $[);
  222.       for $y (@y) {
  223.     $prod = $x * $y + ($prod[$cty] || 0) + $car;
  224.     $prod[$cty++] =
  225.       $prod - ($car = int($prod * 1e-5)) * 1e5;
  226.       }
  227.       $prod[$cty] += $car if $car;
  228.       $x = shift @prod;
  229.     }
  230.     ($signr, @x, @prod);
  231. }
  232.  
  233. # modulus
  234. sub bmod { #(num_str, num_str) return num_str
  235.     (&bdiv(@_))[$[+1];
  236. }
  237.  
  238. sub bdiv { #(dividend: num_str, divisor: num_str) return num_str
  239.     local (*x, *y); ($x, $y) = (&bnorm($_[$[]), &bnorm($_[$[+1]));
  240.     return wantarray ? ('NaN','NaN') : 'NaN'
  241.     if ($x eq 'NaN' || $y eq 'NaN' || $y eq '+0');
  242.     return wantarray ? ('+0',$x) : '+0' if (&cmp(&abs($x),&abs($y)) < 0);
  243.     @x = &internal($x); @y = &internal($y);
  244.     $srem = $y[$[];
  245.     $sr = (shift @x ne shift @y) ? '-' : '+';
  246.     $car = $bar = $prd = 0;
  247.     if (($dd = int(1e5/($y[$#y]+1))) != 1) {
  248.     for $x (@x) {
  249.         $x = $x * $dd + $car;
  250.         $x -= ($car = int($x * 1e-5)) * 1e5;
  251.     }
  252.     push(@x, $car); $car = 0;
  253.     for $y (@y) {
  254.         $y = $y * $dd + $car;
  255.         $y -= ($car = int($y * 1e-5)) * 1e5;
  256.     }
  257.     }
  258.     else {
  259.     push(@x, 0);
  260.     }
  261.     @q = (); ($v2,$v1) = ($y[-2] || 0, $y[-1]);
  262.     while ($#x > $#y) {
  263.     ($u2,$u1,$u0) = ($x[-3] || 0, $x[-2] || 0, $x[-1]);
  264.     $q = (($u0 == $v1) ? 99999 : int(($u0*1e5+$u1)/$v1));
  265.     --$q while ($v2*$q > ($u0*1e5+$u1-$q*$v1)*1e5+$u2);
  266.     if ($q) {
  267.         ($car, $bar) = (0,0);
  268.         for ($y = $[, $x = $#x-$#y+$[-1; $y <= $#y; ++$y,++$x) {
  269.         $prd = $q * $y[$y] + $car;
  270.         $prd -= ($car = int($prd * 1e-5)) * 1e5;
  271.         $x[$x] += 1e5 if ($bar = (($x[$x] -= $prd + $bar) < 0));
  272.         }
  273.         if ($x[$#x] < $car + $bar) {
  274.         $car = 0; --$q;
  275.         for ($y = $[, $x = $#x-$#y+$[-1; $y <= $#y; ++$y,++$x) {
  276.             $x[$x] -= 1e5
  277.             if ($car = (($x[$x] += $y[$y] + $car) > 1e5));
  278.         }
  279.         }   
  280.     }
  281.     pop(@x); unshift(@q, $q);
  282.     }
  283.     if (wantarray) {
  284.     @d = ();
  285.     if ($dd != 1) {
  286.         $car = 0;
  287.         for $x (reverse @x) {
  288.         $prd = $car * 1e5 + $x;
  289.         $car = $prd - ($tmp = int($prd / $dd)) * $dd;
  290.         unshift(@d, $tmp);
  291.         }
  292.     }
  293.     else {
  294.         @d = @x;
  295.     }
  296.     (&external($sr, @q), &external($srem, @d, $zero));
  297.     } else {
  298.     &external($sr, @q);
  299.     }
  300. }
  301.  
  302. # compute power of two numbers -- stolen from Knuth Vol 2 pg 233
  303. sub bpow { #(num_str, num_str) return num_str
  304.     local(*x, *y); ($x, $y) = (&bnorm($_[$[]), &bnorm($_[$[+1]));
  305.     if ($x eq 'NaN') {
  306.     'NaN';
  307.     } elsif ($y eq 'NaN') {
  308.     'NaN';
  309.     } elsif ($x eq '+1') {
  310.     '+1';
  311.     } elsif ($x eq '-1') {
  312.     &bmod($x,2) ? '-1': '+1';
  313.     } elsif ($y =~ /^-/) {
  314.     'NaN';
  315.     } elsif ($x eq '+0' && $y eq '+0') {
  316.     'NaN';
  317.     } else {
  318.     @x = &internal($x);
  319.     local(@pow2)=@x;
  320.     local(@pow)=&internal("+1");
  321.     local($y1,$res,@tmp1,@tmp2)=(1); # need tmp to send to mul
  322.     while ($y ne '+0') {
  323.       ($y,$res)=&bdiv($y,2);
  324.       if ($res ne '+0') {@tmp=@pow2; @pow=&mul(*pow,*tmp);}
  325.       if ($y ne '+0') {@tmp=@pow2;@pow2=&mul(*pow2,*tmp);}
  326.     }
  327.     &external(@pow);
  328.     }
  329. }
  330.  
  331. 1;
  332. __END__
  333.  
  334. =head1 NAME
  335.  
  336. Math::BigInt - Arbitrary size integer math package
  337.  
  338. =head1 SYNOPSIS
  339.  
  340.   use Math::BigInt;
  341.   $i = Math::BigInt->new($string);
  342.  
  343.   $i->bneg return BINT               negation
  344.   $i->babs return BINT               absolute value
  345.   $i->bcmp(BINT) return CODE         compare numbers (undef,<0,=0,>0)
  346.   $i->badd(BINT) return BINT         addition
  347.   $i->bsub(BINT) return BINT         subtraction
  348.   $i->bmul(BINT) return BINT         multiplication
  349.   $i->bdiv(BINT) return (BINT,BINT)  division (quo,rem) just quo if scalTr
  350.   $i->bmod(BINT) return BINT             local(@powetub(BIn (Bgca BnalNT) T)n { #(divBigInt->ne =    negation
  351.   $i->babs ree = quiz BINT   integer DESCRIPTION   iAll baetc Arbitope≥~JNT  ╢NT  ╢NT tubΘr DES$i-σ Arbitop▌┴     local(@powetub(BIn (Bgca BnalNT) T)n { #(divBigInt->ne =    
  352.      ++$y,++$x) {
  353. ▀8{
  354.     'N)n { #(divBigInt->ne =    
  355.      ++$y,++$x) {
  356. ▀8{
  357.     'N)        ¡▌CODE    f two numbers -- =~ /^ || 0,| 0,A);
  358. ray, od = $d = $d f (=  0,| 0,» 20,| ë|  r = $prdl ($x, $y) = (&bnorm($_[$[]), &bnorm $i =╤{║Ü
  359. ▀, M   ╞╫,*tmp);}rm $i =orm($ #@d =orm</^[+-]\d+$/> w  } e$d f (=  0,| 0,» 20,| ë|  r = $prdl ($x, $y) = (&bnorm($_[$[]), &I²$[]),
  360.     pInt</^[+-]\d+$/> w  } e$d f (=  0,| 0,» 20,| ë|  r = $prdl ($x, $y) = (&bnorm($_[$[]), &I²$[]),
  361.     pInt</^[+-]\d+$/>▄[rem) m$ddx, $y) = ╞x -= ($car = in&I²$[]),in, M) =▓igI²$[])    pIntlti$x, $y╥;║x (bnorm(ca_[$[\sj  0, =▓k])    pIntltrm($_[$/^[+-= ($car = Oti&I²$[])Oti&I²($car = y£h¡$$/> w  } e[+-]\h }Z)
  362.   $orm($7≡∩{ #(} e[+-$u1τ#(d O$i->babs Eg╘ e[+-$u[y(d O$isun&, $caê $sr, @q), &ext=ca Bn Bdditio▌vision (quo,rem) just quo if scalTr
  363.   $i->bmod(BINT) return BINT             local(@powetub(BIn (Bgca BnalNT) T)n { #(divBigInt->ne =    negation
  364.   $i->babs ree = quiz BINT   integer DESCRIPTION   iAll baetc Arbitope≥~JNT  ╢NT  ╢NT tubΘr DES$i-σ Arbitop▌┴     local(@powetub(BIn (Bgca BnalNT) T)n { #(divBigInt->ne =    
  365.      ++╥Φï├ç= (&bnorm($_[$[]), &I²$[]),
  366.     pInt</^[+-]\d+$/> w  } e$d f (=  0,| 0,» 20,| ë|  r = $prdl ($x, $y) = (&bnorm($_[$[]), &I²$[]),
  367.     pInt</^[+-]\d+$/>▄[rem) m$ddx, $y) = ╞x -= ($car = in&I²$[]),in, M) =▓igI²$[])    pIntlti$x, $y╥;║x (bnorm(ca_[$[\sj  0, =▓k])    pIntltrm($_[$/^[+-= ($car = Oti&I²$[])Oti&I²    pInt</^X┴·t<mti&I²$[í÷ï)[+-$╤ñ£ =    ì╧T,B:lsif$i 5*W ì╧=rs --:gI²:lsiσ║ $x;
  368.         $car = $pe'╝0*1e5+$u1Äf ( } eágI²:╞
  369.      ++╥Φ        $car =+: = Oti&I²$[])Oti&I²    pInt</^X┴·t<mti&I²$[í÷ï)[+-$╤ñ£ =    ì╧T,B:lsif$i 5*W ì╧=rs --:gI²:lsiσ║ $x;
  370.         $car = $pe'╝0*1e5+$u1Äf ( } eágI²:╞
  371.      ++╥Φ        $car =+: = Oti&Ilsiσ= O $si&Ie    $caI}++$y,++$Ω╡┼╒$yåuo,Ye '+0') {@tmp=@po├tio▌vision ╗Ω╡┼╒$ÿ;
  372.         $caormOtΘQBINT).[ZGm[$/Y]q '+1') {
  373.     '+1';
  374.     } elsif ($x ï▓'+1f ╔╧T,B:lsif$i 5*W ì╧=rs --:gI²:lsiσ║ $x;
  375.         $car = $pe++$Ω╡Σ]Fò╒=(1); # need tmp to send to mul
  376.     while ($y$pe+
  377.       ($y,$res)=&bdiv($y,2);
  378.       if ($res ne '+0') {@tmp=@pow2; @pow=&mul(*pow,*tmp);}
  379.       if ($y ne '+0') {@tmp=@pow2;@pow2=&mul(*pow2,*tmp);}
  380.     }
  381.     &external(@pow);
  382.     }
  383. }
  384.  
  385. 1;
  386. __END__
  387.  
  388. =head1 NAME
  389.  
  390. Math::BigInt - Arbitrary size integer math package
  391.  
  392. =head1 SYNOPSIS
  393.  
  394.   use Math::BigInt;
  395.   $i = M√package
  396.  
  397. Rpe'╝0*1e5+$u1Äf ( } eágIYφ░æ e@» 20,|,B:*1e
  398.  mbers -- =~{@tmp= -d(B$y,2);
  399.       if ($res ▒rÖ£th package
  400.  
  401.  
  402. ╤I²$[]),
  403.     pInt</^[+-]\d+$/>▄[rem) m$ddx, $y) = ╞x -= ($car = in&I²$[]),in, M) =▓igI²$[])    pIntlti$x, $y╥;║x (bnorm(ca_[$[\sj  0, =▓k])    pIntltrm($_[$/^[+-= ($car = Oti&I²$[])Oti&I²    pInt</^X┴·t<mti&I²$[í÷ï)[+-$╤ñ£ =    ì╧T,B:lsif$i 5*W ì╧=rs --:gI²:lsiσ║ $x;
  404.         $car = $pe'╝0*1e5+$u1Äf ( } eágI²:╞
  405.      CeágI²:╞
  406.      ++╥Φ        $car =+: = Otà
  407.     ltrm($■-$╤ñ£ =   µO²    pInt<╨ need tmpem) mSkòtm%<:} eánegation
  408.   $i->babs ree = quiz BINT   integer DESCRIPTION   iÑ∩car =SCRIP╥Φ        $ßTION  t[+-]\dòt} eánegation>.ágThnt<TION  s1); #hapP╥╡┼╒$1e5+$plTr
  409. } y ne \uIigI  ╞
  410. uInt</ $peisige-Mt} eánegatio=
  411.   $i->bae-    $cpI²ae2**
  412. } yÿTlsif$ee =io=
  413.   $S¢reánega-$╤ñ£ = r DES$i-σ ArbitS
  414.  
  415. »
  416. __Ex -=on
  417.  s» yteger DESf$ee exes neon
  418. ╤ñ£ = it0') P╥Φ¢rI  ╞ION )    pf
  419.        µOpolsif,in, M\sj  0, =▓k]BUGtrm($
  420.  
  421. I rr$/>▄x -=on
  422.  s»t>.ágT,B:e),
  423.     aOpr$limlsBgcax -=on
  424.  s»t>[í÷£ =s re  µO Arbi.ágT rr$/>lca(amp=@p $pe5.= pInti$x BINx 
  425. p$car\sj  0, =▓k]AUTHOR▌┴     lork  eág  $i╒$ÿ;
  426.         $caopackfacem(caIlcaOZakAralNich.ágT r[$[]), +: = : =age
  427. cem(caIl─I    $car =+: = Otà= (S$inumbers and associated mathematical functions= Ot-- Raphael Manfredi    Since Sep 1996= Ot-- Jarkko Hietaniemi    Since Mar 1997= Ot-- Daniel S. Lewart    Since Sep 1997= O= = require Exporter;= î$╤ñ£ =  quire= Ot-- Jar   ì╧T,$_[}
  428.  
  429. us- strs=t}
  430.  
  431. us- v 1teíÉX¡$$/> w  ªÆ₧£@ÇÆªé█
  432.   $i->bmod(BINT) return BINT             local(@powetub(BIn (Bgca BnalNT) T)næíSep 1996= Ot-- Jarkko Hietaniemi    Since Mar 1997= Ot-- Daniel S. Lewart    Since⌐iem= i    pInt</^X┴·t<mti&I²$[í÷ï)[+-$╤ñ£ =    ì╧T,B:lsif$i 5*W ì╧=rs --:gI²:lsiσ║ $x;
  433.         $car = $pe'╝0*1e)$i 5*my ( $i, $ip2, %logn )$i 5*gI²:lsiσ=B:plsnñêö╠    
  434.      +æ$i 5*gë Bnal18  µOp∞ 5*g! = MON )    pf
  435. ╥Φ        $car =+: = b^`b@``t╜A3->nµOp∞ 5*gW</^X┴─t<É eánegatpñ£ =    ì╧T,BHteger DESCRIPTIT,Bº::Bτåp∞ 5= 
  436. p⌡ar =+          pi=+           Da=+          csc co1ec 1ec cot cotDa=+          asg! aco1 atDa=+          acsc aco1ec a1ec acot acotDa=+          sg!h co1h  Dah=+          csch co1ech 1ech coth cotDah=+          asg!h aco1h atDah=+          acsch aco1ech a1ech acoth acotDah=+         ì╧T,BHtgn )$i = (ar =+         i Re Im rho n (tD arg=+         sqrt  5*  a=+          5*10  5*n cbrt root=+         cplx cplxe=+         ì,=+       5= 
  437. ì╧T,BH5*gI²:lsiσ= = (BH    '= 
  438. ' => [5= 
  439. ],=+)pe'╝0*1e)over 5ad=+    '+'    => \&pl*1,=+    '-'    => \&min*1,=+    '*'    => \&multiply,=+    '/'    => \&diÉeánegatio+    '?ulti┴tiply,=+,='/'    => /diÉeánegatio+    '?ulti┴tiply,= 
  440. %òπesho+'?ultnegiply,= negSe'?ult~iply,= conjugSe'?ultabsiply,= abs'?ultn cbiply,= 
  441.  cb'?ultexpiply,= exp'?ultplxiply,= plx'?ultn    'iply,= 
  442.     ''?ult      iply,= cos'?ult(ariply,= (ar'?ulta(ar2iply,= a(ar2'?ul ar"", $ipngify\&pl*1owetuPcar = $" = vSes"=rs --:   $$car = $= 'pe'╝0*1e)$i 5';        tuPcar = $name-:   $dis$iay$= 'cT,Besiari;        tuDefaati dis$iay$for Ot-:   $eps²:ls= 1e-14;            tuEpsilonpl*1owetuObjecDaht$ipbuBes ( b^ernal):wet    cT,Besiar    [real, i Oginary]ï)[+cT,Besiar$for wet    poiar        [rho,a=+      ]ï)[+poiar$for wet    c_di,By        cT,Besiar$for $n Daup-to-dSewet    p_di,By        poiar$for $n Daup-to-dSewet    dis$iay        dis$iay$for Ot ($car = 's glob Jaw+    n$n Das     )=rs --:tuDi+    'n$b d * Oke()    um    nts. --:-:   $dis$iay$= 'cT,xy$foï   um    nts. --:-:   $dis$iay$= 'cT,xy$foï   um    nts. --:-:   $dis$iay$= 'cT,xy$foï   um    nts. --:-:   $dis$iay$= 'cT,xy$foï   um    nts. --:-:   $dis$iay$= 'cT,xy$foï   um    nts. --:-:   $dis$iay$= 'cT,xy$foï   um    nts. --:-:   $dis$iay$i═─»═╕╬for@{[(5*gler(1))[3]]}ech   $d:liay$_[0]dify$_[1].\n"y]ï}r = 's gl->s$ia= 's glC)  $=y$ï ew=+)$i 5*gI²:ls ( um    nts. --:-:ts. -- --:s$iay$i═    wet    m    lfy=$i 5sy${},  = f 1ec    wet($) ot a:ty=$@_1ec    wet$)r[+por[fy$r[1ec     fec a)r[+)y$i═    i┴tipfec a)r[+eqor[fy$m    lfy)y$i═        $r[+poRe($) ry]ï    i┴ti}+elsay$i═        -:   $dis$ia(")    pum    scha)r[ry]ï    i┴ti}]ï    }ec    wet$)a:+por[fy$a:1ec     fec a)a:+)y$i═    i┴tipfec a)a:+eqor[fy$m    lfy)y$i═        $a:+poIm( a:ty]ï    i┴ti}+elsay$i═        -:   $dis$ia("m    nts. -- pum    scha)a:ty]ï    i┴ti}]ï    }ec    $m    lf->{Sewet    p_di,}+po[ $) ot a: ];ec    $m    lf->{,xy$foï}+po0;ec    $m    lf->{pxy$foï}+po1;ec    $m    lf-> um    nts_ --:-:(Sewet    p_di,ty]ï    ) ╘di,ty]ï    ) ╘di!où 's gl->s$ia= 'es glC)  $=y$ï ew=+)$i 5*gI²:ls ( um    ntsay$oi ntiBnal-- --:s$iay$ie═    wet    m    lfy=$i 5sy${},  = f 1ec    wet($) ot a:t-:-:$   $dec    wet$)r[+por[fh$r[1ec     f-:c a)r[+)y$i═hi┴tipfec a)r[+eqor[hy$m    lfy)y$i═        $r[+poRe(diÉr[1dia:t-:ti}+elsay$i═        -:   $dis$ia(")    pum-:ry]ï    ihti}]ï    }ec    wet$)a:+por[th$r[1ec        $dc a)r[+)y$ithi┴tipfec a)r[+eqorthy$m    lfy)y$i═        $r[+poReeánega=:   $d($   $dei}+elsay$i═        -:   $dis$ia(")    pu   $dry]ï    thti}]ï    }ec    wet$)a:r[+ee(diÉ< 0┴tipfec a)e(diÉiay$- f-:c a)c a)eeánega=:($   $dÉ<= 0┴t?)eeánega+i R   :)eeánega-i R  ;$m    lf->{Sewet    p_--:-:$) ot :t-:-:$   $d    lf->{,xy$foï}+po1;ec    $m    lf->{pxy$foï}+po0;ec    $m    lf-> um    nts_ --:-:(Sewet    p_--:-:$╘di,ty]ï    ) ╘di!où 's gl->ay$ii 5*{ &═    wet}($caFew'cTckDESd*gI²:ëbili;e$= ly.gl->s$ia=conjC)  $=y$ï ew=roo*gI²:ls ( um    ntfrI²oo*( ];e_1ecï    :l.gl=yThiroovoids:   'c    )dm    n].\wri;y]ï Da=+          cs 's gl( ];e_1e.-:s$iay$ily,= {$) ot a:ty=$@_1ec    wet$)r[y]ï    ) ╘day$= 'c 's gl(:ty=$dmfy]+æ$c    $m?$c    $m: 0┴ 's gl->s$ia=conjug  $=y$ï ew=roo*gI²:ls ( um    ntfrI²oo*( -:-:   $decï    :l.gl=yThiroovoids:   'c    )dm    n].\wri;y]ï Da=+          cs 'es gl( -:-:   $de.-:s$iay$ily,=et    m    lfy=a:t-:-:$   $dec    wet$)r[y]ï    ) ╘day$= 'c 'es gl(:t-:-:dmfy]+æ$ceánega?)eeánega: 0┴ 's gl->s$ia= Re s$ia=T  '( um    ntdmfy]+æ$as= R    $m    8h=+egy]ese s$iplx';        sr    [t= R    $> 4 * KORE     ar    [r(1-:1cT,Besiar$f Rt2e s$ia=T  'full';irclee s$iplx';        sr    [t= Rt2    $> 2    *  RT,Besiar$f Rp2e s$ia=T  'qui,tyr';irclee s$iplx';        sr    [t= Rp2    $>  R    / 2T,Besiar$f+eg1ob Jaw+    ]+=+egy]e  cbradï    )s-:plxd  cbnary]ï)[+_--:-:.:   $diplx';        sr    [t=+eg1    $>  R    /     8hT,Besiar$f    :ultnesiar$fUlxd  cbultn(e.-:s$iplx';        sr    [t=    :ultn    $> 1    / KORE     ul(10cT,Besiar$fRe s$ia=T  '( um    ntdmfy]+æ$as=i*R    $m-    lf-s$iay$iR    ()═╕╬for@{@{@{y]ï    ) ╘di)r[+edi╘di,tdi)${},  = f di,tdit    p_di,}+po[ $) ot 0-:1]di,tdit    p_--:-:$) s$iay$[1-: Rp2]di,tdit    p}+po0;ec    $m    lf->{ifoï}+po1;ec    $m    lf->y]ï    ) ╘di 's gl->s$ia=A     )=rs -y,=Sess/--:egs y]+s:   $diay$il --:-:ts.{fy$_[t    p}+po0;ec    ?  $d a)ey$_[t    upT,xy_l --:-:ts.:)ey$_[t    p_di,}+po[ $)}diay$i--:-: s$ia{fy$_[t    p}+po1;ec    ?  $d a)ey$_[t    upT,xy_--:-: :)ey$_[t    p_--:-:$) gl->ay$i--:_l --:-:ts.{)ey$_[t    p}+po1;ec++;)ey$_[t    p_di,}+po[ $)    $mn"y]ï }->ay$i--:_--:-: s$ia{)ey$_[t    p}+po0;ec++;)ey$_[t    p_--:-:$) otn"y]ï }->->s$ia= 'upT,xy_l --:-:ts->s$ia=RegI²:s -y,nd{y]ï    ) ╘   '. --:-:ts. -- , '▓Σ╦upT,xp --:-ö--:-ö°_--:-: :$m?"-:ts.Qt    p}p▓l,tdit    p__-r$f&!╞87═▓l,tdit    p__-r₧) ╘di∙╞= Rp2    $>  R    / 2T,Besiar$f+eg1ob Jaw+    ]+=+egy]e  cba=Tiar$f+eg1▒eg1ob JaW╞]ï    ) ╘day$= 'c 'es gl(:t-:-:dmfy]+æ$ceánega?)eeánega: 0┴ 's gl->s$ia= Re s$ia=T  '( um    ntdmfy]+æ$as= R    $m    8h=+egy]ese s$iplx';        sr    [t= R    $> 4 * KORE     ar    [r(1-:1cT,Besiar$f Rt2e s$ia=T  'full';irclee s$iplx';        sr    [t= Rt2    $> 2    *  RT,Besiar$f Rp2e s$ia=T  'qui,tyr';irclee s$iplx';        sr    [t= Rp2    $>  R    / 2T,Besiar$f+eg1ob Jaw+    ]+=+egy]e  cbradï    )s-:plxd  cbnary]ï)[+_--:-:.:   $diplx';        sr    [t=+eg1    $>  R    /     8hT,Besiar$f    :ultnesiar$fUlxd  cbultn(e.-:s$iplx';        sr    [t=    :ultn    $> 1    / KORE     ul(10c[+_--r    [t= Rt2    $> 2    *  RT,Besiar$f Rpplx';        sr    i,tyr';irclee s$i2e s$ia=T  'qu[t= Rp2    $>  R    / 2plx';    +eg1ob Jaw+    ]+=+egy]e  cbradïx-:syplxd  cbnary]ï)ar$f+eg1ob Jls ( um    ntfrI²oo*( -:-:   $d  R    /     8hT,Besiajug  $=y$ïc++s. $)    ïx=y-:  &&:sy=y-:   $d  R    /     8hT,Besiajug  $=y$ïx';        srq*(dïx*ïx=+:sy*ïy.-:]ï    ) ╘di)r[+ïy-:sx:ultn    $> 1    / ry]lus)$ia=T  '$> 2    *s z1+z2[t= Rp2    $>]luseg1    $>  R    z1-:sz2-:s$egug f->{Sewet    p_-$ipl1-:sim1plxd  cz1esar$f+eg1oJls ( z2lxd    [t=R    z2pluni--:_ï ew=z2wet    p_-$ipl2-:sim2pl=_ï ew=z2:u  cz2esar$f+eg1oJ(:tR    z2,    / KOR    uni--:_(plx';        sr$egug f-:ls (z1esega: 0┴ 's gl([ipl1=+:spl2-:sim1=+:sim2] KOR    d  R    /     8z1┴ 's gl-  R    /     (ï ew=z1pclee s$ipl1=+:spl2-:sim1=+:sim2 KORE     ul(10c(m';us)$ia=T  '$> 2    *s z1-z2[t= Rp2    $>m';useg1    $>  R    z1-:sz2-:s';ve┴ 'df->{Sewet    p_-$ipl1-:sim1plxd  cz1esar$f+eg1oJls ( z2lxd    [t=R    z2pluni--:_ï ew=z2wet    p_-$ipl2-:sim2pl=_  cz2esar$f+eg1oJKOR    uni--:_(plx';        sr';ve┴ 'df-:ls (z1esega: 0┴ 's gl([ipl1=-:spl2-:sim1=-:sim2] KOR    d  R    /     8z1┴ 's gl-  R    /     r';ve┴ 'dob JaW(ï ew=z1pclee s$ipl2=-:spl1-:sim2=-:sim1pl: JaW(ï ew=z1pclee s$ipl1=-:spl2-:sim1=-:sim2:-: :)E     ul(10c(mult▒pclee s$ipl╦Es *    *s z1-z2[t= l(10c(m+po1;ec++;)euseg1    $>  R    z1-:sz2-:s$egug f->,}+po-:l um    ntfrI²o$)    ï$> 2    *2pl=_ï$> 22pl=_ um    ntfrI²o$)    e_1e.-:s$i#$ïc+bo=co  R    / betpo0; s$i  R    / toiar$f+:-ö->   cbo0-örse.-:s$i=z2wet$>  tl1-:sim1plxd  R    /}t a:ty=$=z2wet    z1-tl2-:sim2pl=_  R    /}t a:ty=$=z2-tiar$tl2-:st2t a:ty=$ïc+y=$;         >y=$$m?$)    sr         -=di,tdi} a:ty=$:l,}+pot    ) ╘-$m?$)    sr         +=di,tdi} a:ty=$    / KOR    uni--:_(plx';        sr$egug f-:ls (z  R    /┴ 's1(e.et    z1-t=-:sim2] KOR    d  R    /      Da=+      +;)ey$_[t    ppl: JaW(ï exd  cbu1(e.et    z1-t$c    $m:    :l.gl=yTty=$=z2wex$>  yl1-:sim1plxd  cz1esar$f+egly.gl->s    *2pl=_$egug =z2wex    z1-yl2-:sim2pl=_  cz2esar$f+eg┴ 's gl-  R    /     (ï ew=z1pcx$rq*l= ylïx=    z1-x$rq=    + ylïxx2( ];e_1ecï    :l.gl=yTh 's gl-  R    /     (ï ew=z1pcx$rqR    z1-ylïxz2( ];e_1ecï/     8z12:-: :)E     m    nvb∙ cz1esar$f+egly.gl->s    2p$iplx'z2esar$f+eg1oJKOR    ¿l=_$iplx'2    *2pl=_ï$>√ew=z1pclee s$ipl2=-:sp╚ε    r$Γ£i--:_₧╓Γ£iï "l';ir:l=_    *2pl=_ï$>√ew=z\n"╦Es *m2pl=_  's1(e.et    sr    [$f+eg┴₧╓Γ£i.ï "(Beca$i=zii2e s$'s1(e:  o_--:-l';ir,2e s$'_    *2ay$"╦Es┴₧╓Γ£i.ï "    sr    [t"(z  R    /┴     sr    [teq '0ay$ily₧╓Γ£i.ï "-:p0)\n"╦Esgly.gl-r$Γ£i--:_@up_-$ial Rr(+po[ $)Γ£i-₧╓Γ£i.ï "=_$y$_t-₧upr    [tl(e.-₧upr2]z\n"╦Es *m2pld_$i₧╓Γ£    *s z1-z2[t= R'_    *'sm+po1;ec++;)euseg1    />  R    z1-:sz2'_    *'sSewet    p_-$ipl1-:sim1plxd  cz1esar$f+eg22pl=_ um    ntfrI²o$)    e_1e.-:s$i#$ïc+bo=co  R    / betpo0; s$i  R    / toiar$f+:-ö->   cbo0-örse.-:s$i=z2wet$>  tl1-:sim1plxd  R    /}t a:ty=$=z2wet    z1-tl2-:sim2pl=_  R    /}t a:ty=$=z2-tiar$tl2-:st2t a:ty=$ïc+y=$;         >y=$$m?$)-:sim2pl=_  gl([ipl1=-:spl2-ipl2=-:sp╚ε":ty/0"l=_  g>  $i  Rïx=    z$)    sr        pl1=-tcbu1    =$:l,}+pot    ) ╘-$m?$)    sr         +=di,tdi}     =$    / KOR    uni--:_(plx';        sr$egug f-:2( ];e_1ecï/     8z12:=z2wex$> /     z1-tl2w=z1pcx$rqR    z1-ylïxz2ipl2=-:sp╚ε":t1/0"l=_  g>2 $i  Rïx=    z$)    sr        lee s,tdi}     =$:l,}+pot    ) ╘-$m?$)    sr         +=di,tdi}     =$    / KOR    uni--:_(plx';        sr$egug f-:2( ];e_1ecï/     8z12:=z2wex$>1 /     z:sim1plxd gly.gl->scz1esar$f+egly.gl->d's g  R    /     -:sim2pl=_  gl([ipl1=-:spl2-gl-  R    /     (ï ew=z=z2wex    z1-yl2-:siz$d    sr    - (ï eltn    $ (ïytdi}     ipl2=-:sp╚ε":ty/0"l=_ $d    s$ïx';        2( ];e_1ecï/     8z12:-: :)gl- 1esar/>d's-(    $ (ïsar/>dw=z1pcx$rqR    z1-ylïxz2.gl->s    *2pl=_$egug =z2wex    z1-yl2-:si    =_  cz2esar$f+eg┴ :l,}+-  R    /     (ï ew=z1pcx$rq*l= ylïx=    zΓ£i-₧d    sr    - (ï eltn    $ (ïytdi}     Γ£i-ipl2=-:sp╚ε":t1/0"l=_ $d    s$ïx';        2>y=$$m?$u    sr1ecï    :lltn    $l-  Rr/>d';        2>y=$$m?$v    sr1e     (ï eee sxl-  Rr/>d';        2>y=$( ];e_1ecï/     8z12:-: :)Eu R    vRïx=    zqR    z1-ylïxz2Γ£i-ipl2=-:sp╚ε":t1/0"l=_ $z2    s$ïx';        2>y=$( ];e_1ecï/     8z12:-: :)E     /    nvb∙ cz/esar$f+e    t    z1-t$cgl->s    2p$iplx'z2e(powspm+po1;ec++;)euseg1    $*    p_-$exp(    p_* logg1    )):s$egug f-owspSewet    p_-$ipl1-:sim1plxd  cz1esar$f+eg22pl=l([ipl1=-:spl2>y=$( ];e_11l=_ $z  $i   || $z2    s$ïcbu1(e.e( ];e_10l=_ $z2    s$ïxug Re-$ip-:>ïx';        scz1esar$f+egly( ];e_11l=_ $z2 $i   || $z1    s$ïcbu1(e.e( ];e_10l=_ $z1    s$ïxug Re-$i2-:>ïx';        syplxd  w    sr    l2=-:spl1- ry]lusexp($z1         ul(10log-$i2-)u1(e.e.e.e.e.e.e.e.e: ry]lusexp($z2         ul(10log-$i    ))';        # I-ö->   argumentsplx';    +eg1,e( ];e_1lx';    +eg1,ez1esaïc+y=.1pclee s$ip_ um    ctfrI²o$)    e_1egu1(e.e.e.(n> s$i#$ïc+bay$  R    / ctfrI²o$)    e_1)1-:si(e.e.e.ipl2-ew=wpcx$rq*l= yll2-  w    *s z1-z2[t= Rspac*lhipm+po1;ec++;)euseg1    uni> >  R    z Saytspoi2e s$$ialaï$rq frIst,2e snpoi2e s$imagin$ryaï$rq. Th>{SR    4iun 3+8i:s$egug fspac*lhipSewet    p_-$ipl1-:sim1plxd  cz1esar$f+eg1oJls ( z2lxd    [t=Rcï/     8zOR    uni-=z2wex    z1-yl2$egug1f-:ls (2esar$f+eg1oJ(:tR    z2,    / KOR    uni--:_(plx';        sr$egug f-:ls (xd  sgn    sr    l2=-:spl1- -zO:ïcbu1lee s$ipsgn    *Jls ( uni> r$f+)l=_ $ ( u!= r$f+bu1lee s$ipsgn    *Jlspcleni> r$> 2    *s z1-z2[t= Rnegatsm+po1;ec++;)euseg-z:s$egug fnegatsSewet    p_-$i1esar$f+eg22pl=_    / ctfrI²o$$f+eg┴ 's glrsim1p(ï ew=z=$ïc+y=$;         z$)    srOR    uni-1)1-;        sregu2-  r        egu';        2( ];e_1ecï/     812:=z2wex$>sim1plxd  s (2esar$feg1oJp(ï ew=z=$x$rq*l= ylïx=    ( ];e_1ecï/     812:z2wex-r$feg-1oJp    *s z1-z2[t= Rconjugatsm+po1;ec++;)eus co;)lex'splonjugats:s$egug flonjugatsSewet    p_-$i1esar$f+eg22pl=_    / ctfrI²o$$f+eg┴ 's glrsim1p(ï ew=z=$ïc+y=$;         z( ];e_1ecï/     812:=z2wex$>si-m1plxd  s (2esar$feg1oJp(ï ew=z=$x$rq*l= ylïx=    ( ];e_1ecï/     812:z2wexr$feg-1oJp    *s z1-z2[t= Rabsm+po1;ec++;)eus ay$ R     co;)lex'spnaym1echo):s$egug fabsSewet    p_-$io$)    ho)esar$f+eglee s$ip_(z  R    /┴cï/     8f+eg22pl's1(e.et    zho)er$f+egly=_    / 'ïc+y='$)     [t    zhoo$)w=z=$ïc+y=$r    [t]bu1(e.e=_    / betpo0; s$ïx';        (e.e=_    / ctfrI²o$)    ïcbu1(e.e( ];e_1    zho';        scz1esar$f+egly( ];e_1)w=z=$ïc+y=$r0];l->s    2p$iple s$ie staε    r$Γ£i--:_₧e staε=-l';ir╦Es *m2pl=_ l,}+₧e staεt    ) ╘-$m?$)    s₧e staε     +=di,tdi}a:ty=$    / KOR₧e staεni--:_(plx';    ₧e staεr$egug f-: z1-z2[t= arg+po1;ec++;)eus ay$ R     co;)lex'spargumentKOe sta):s$egug fargSewet    p_-$io$)e sta)esar$f+eglee s$ip_(z  R    /┴cï/     8f+eg22pl's1(e.et    e sta)er$f+eglyie sta(\    e sta)';        (e.e=_    / 'ïc+y='$)     [t    w=z=$ïc+y=$r0]o$)e stat]bu1(e.e=_    / betpo0; s$ïx';        (e.e=_    / ctfrI²o$)    ïcbu1scz1esar$f+egly₧e staε=-lw=z=$ïc+y=$r    [';        (e.eie sta(\    e sta)';        }+eglee s$ipe sta    *s z1-z2[t= RsqI²m+po1;ec++;)eus sqI²(z):s$egu# It -:pquius us;)td  R  t$i=zwantarray  sle s te _t-ii2l-:     cont╨ïxug╫$feg1oJI=$;         z(s$e╪╚┘s te _t-ii2l-:     con_te ontlu$'_    s. s$eg1,-:-:s1le,te _t-z(s$b snk coay sfegke us;)t    prayoJ"-:pquiu';    ",$e╪╚┘sJp    ,$"Γ£    *ss;)tdTon_te ovaluatse _t-ibp_ rayoyies:simbyes:simw=z:-u$ f ayoyr1lnay ;)tdwh=zw$ipl1,t$i=zwaI=$fus:y .;)tdTone.eo co)ery-ute _t con_te ontlu$'_    se s tt,2e oo┘s pSewet    p_-$╪╚┘+eg22pl=_    / ctfrI²o$$=z=$x$rq*l= ylïxe.et    esr$egug f-:ls (xd  sgn    s    l2=-:sp1esar$f+e2e< s$?= yll20,        # I-öe╪╚┘sz2[t)) ul(10loe╪╚┘sJ[t)u1lee= e_1ecï/     =$ïc+y=$;         z( ];e_1ecï/     812:z2wex$>si-m1plxd  s (2el(10loe╪╚┘sJ[)=$;    /gatsm+po1;ec++;cbrt)lex'splonjugatsbpquiu'(cubice oo┘us us;)tdWhye simwim    / ctfwex$ay  shtfeovaluat? dTon_samn_ans:simas frgum╪╚┘s sSewet    p_-$b╚┘+eg22pl=_    / ctfrI²o$$ï/     8f+eg2< s$?=-l(10log-$i    # I-ö->  -    / /3) sgn    ssr    l ul(10log-$i    # I-ö->   a /3)sg0.e.e: ry2pl's1(e.et    e sta=$ïc+y=$;         z( ];e_1ecï/     812:z2wex$>si-m1plxd  s (2el(10log-$i    # I-ö->   r /3)=$;    /3atsm+po1;ec++;_ oo┘bad1;ec++;Dieï$rqbade oo┘sSewet    p_-_ oo┘bad=-l';ir╦Es *m's1(;    "Roo┘l,}+₧m    / cf+eglyi,e oo┘╦Eu1oJbp_ ositive ayoyger.Γ£    *sl';ir╦Es @up(;    caller(1)    *sl';ir╦*m's1(.;    "Died=ug$upbetplgly$upb2].Γ£    *sl';ir╦dieï*m's1tsm+po1;ec++; oo┘:s$egug fnegatsallm    +eg oo┘╦frguz,ez1esaïay  an -ii2l-whos tsizeR  tn.;)td`n'╦Eu1oJbp_a_ ositive ayoyger.*ss;)tdTon_ oo┘se simgivenmbye(frguktfrI..n-1):*ss;)tdz^(1/nylïxe^(1/nyl++;se((t+2uktpi)/nyl+ atsine((t+2uktpi)/ny)Sewet    p_- oo┘╦)esar$f+egleen ctfrI²o$$_ oo┘bad(en c(plx'ne<$z1rguayo(en cpsgnn(:tR    z2,    / =$;         z(e.et    esr$egug fecï/      sgn    # I-öho)sJp    ,$    ssr=    l ul :tpi):tR    z2,@ oo┘-:spl1- k-:spl1- RsqI²_ayc = arg+p/gnn-:spl1- egl';        gu**s cgln(:tR    z2, RsqI²m+p    z2, -:ls (xd z(e.et    essypu1scz1esar$f+e1ecï/     frgusJktfrI=_    / betp;        tp/gnn-- ke<$nn-- k++=_    / betp+=- RsqI²_ayc    e sta)';    - ry]lus yll-z2[[t]b 'ïc+y='$)     [t# Ye1,- -:ls (xd   tloopuayv:(xd┘sSe)     [tpush,@ oo┘,- -:ls (xd ?= yll2-  w    *s z1-z2[t= Rspac*lh    *s z1-z2[t=@ oo┘-:s+po1;ec++;Re1;ec++;Rez2[t=rgumentReuius us;)    p_-Rf+eg22pl=_    /,- Rf_(z  R    /┴cï/     8f+eg22pl's1(e.et    e sta)er$f+eglyie Rf_(='$)     [t    zhoo$s z1-z2[t$r0]o$)eRe]bu1(e.s z1-z2[t=betpo0; s$ïx';        (ez1esar$f+egI²o$)    ïcbu1sc.e=_    / ctfrly₧e staε=-lw=z=$ïc+$r0];l->s    2p$s z1-z2[t=bie staε    r$Γ£i-s;)td m1;ec++;Rez2[t=rgument muius us;)    p_- m+eg22pl=_    /,- Im_(z  R    /┴cï/     8f+eg22pl's1(e.et    e sta)er$f+eglyie Im_(='$)     [t    zhoo$s z1-z2[t$r0]o$)es    2p$s z1-z2[t=bie,- Impo0; s$ïx';        (ez1esar$f+egI²o$)    ïcbu1sc.e=_    / ctfrly₧e staε=-lw=z=$ïc+$r0];l->s    2p$s z1-z2[t=b1e staε    r$Γ£i-s;)td[[t1;ec++;Rez2[t=rgument[[t(wus us;)    p_-egl'-l';ir╦et    e sta)er$f+eglyie sta(\    e sta)';        (e.e=_    / '2:z2─et    esr$egug pl1- R@__-_ oo┘bad=-l')     [t sta)er$f+eglyie sta(qI²(z)sta)';        (e.estaε     +=di,tdet    esr$egug pl1rgR@__-_ oo┘bad=-l'(++;²o$$f+eg┴ 's glrs++;Dl's1(e.et    e ++;-:ls (xd  sgn    s    l2=-:sp1exctfyabsm+po1;ec++;)eus ay$ R     co;)lex'spnaym1_ oo┘bad1;ec++;Dex)ctfya-_ oo┘bad=-l';badofzere sta)er"Roo┘lbadz1-    emo┘spzerecf+eglyi,e badofzereoJbp_ ositive ayoyge    *sl': Ladz1-    emo┘spzerectsallm    +eg o$s z1-z2[t=bi*s1]- Impoï*m's1tsm+(Bec+$x$ricoay s1-z2[io$$=o┘sp    *sl',oay s R    /┴cï/ allmoï*m's1tsm+i*s1]m+1-z2[t$r(i*s1]meq '0')llmoï*m's1tsm+ll20)tsallmeg o}$upbetplgly$upb2].Γ£    *sl';ir╦dieï*m's1tsm+po1;ec++; oo┘:s$egug fnegatsallm    +eg oo┘╦frguz,ez1esaïay  an(badsle s te _t-ii2lbadel's1(e.et    e bad-:ls (xd  sgn    s    l2=--z2[t$r(x'spnaystat]bu1(badofzere("bad"$>si-mz+=_    / betec++;Rez2[t=e.et    e sta=$ïc ];e_1et=ro1;ec /3)sg0.e.e: r,nn-:spl1} (2el(10log-$i    # I-ö->   r /3)=$;(badofzere("bad"$>si-mr+=_    / bet_(plx';    tεr$egug f-: zt= arg+po1;ec    eus ay$ t)lex'spargumentta):s$egug R     co;)lex'spnaym1 oo┘bad1;ecbade ooog-$iez1esaïay  anlnïay  anAli8f+eg2<bade's1(e.et    e b)l{det    esr$egug plbade@__ esaïay  anlad10le s te _t-ii2lbad10el's1(e.e.et    e bad10stat]     co;)let    esr$egug plbade    *sl'_ * upbad10ez1esaïay  anladnïay  an _t-ii2lbadnel,:tR    zbadel'- rbaden(plx'ne<$zbadnayo(en cpsgnn(:tR    z2,    / =mz+=ro1;ec ul(1x$>si-m1plxd  s (2el($badna=($badn{$ ay$ R$badna=($badn{$ aa=(ad1;ecbade n1x$>si-m11-z2[t=bibadn;    an acherbaden(pl]     co;)lta=$ïc ];e_1et/bibadn;z1esaïay  an(oo┘sle s te _t-ii2loo┘bp_ ra(++;(ip_ +s++;D-ip_)/2l(10log-$i    o┘╦:ls (xd  sgn    s    l2=-:sp1exctfyabsm+po1;ec++;)eus ay$ Rel($eya=(ad1;ec++;Deysar$f+e1eey_1aε    rt/bieyy$ R     co;)lex'spnaym1 oo┘bad1;ecoo┘bex) * ($eya+1eey_1)/2,$ R    tec++ ecï/     81inbex) * ($ey_1a-1eey)o┘us us;)tdWhye (1insle s te _t-ii2l1inbp_ ra(++;(ip_ -s++;D-ip_)/2l(10log-$iI²o$:ls (xd  sgn    s    l2=-:sp1exctfyabsm+po1;ec++;)eus ay$ Rel($eya=(ad1;ec++;Deysar$f+e1eey_1aε    rt/bieyy$ R     co;)lex'spnaym1 oo┘bad1;ec1inbex) * ($eya+1eey_1)/2,$ R    tec++ ecï/     8oo┘bex) * ($eya-1eey_1)/2_-_ oo┘bad=-l')anïay  an _t-ii2l)anbp_ ra1inbp_ /loo┘bp_a)';        (e.esao$:ls (xd  sgn    s    l2=-:sp$cza=(ad1;ecoo┘bezsar$f=b1vbyzereo")anbezs",o"oo┘bezs"o$s zk-:spl1- Rscz)yll-eps)y$ R     co;)lad1;ec1inbe1et/bicz-_ oo┘bad=-l'seco$$f+eg┴ 's glrsay ssecz2[ssecbp_ ra1 /loo┘bp_a)';        (e.esec$:ls (xd  sgn    s    l2=-:sp$cza=(ad1;ecoo┘bezsar$f=b1vbyzereo"secbezs",o"oo┘bezs"o$s z$cza=_    /)y$ R     co;)l1t/bicz-_ oo┘bad=-l'csco$$f+eg┴ 's glrsay soo┘ecz2[scscbp_ ra1 /l1inbp_l(10log-$i    sc$:ls (xd  sgn    s    l2=-:sp$sza=(ad1;ec1inbe1ear$f=b1vbyzereo"cscbezs",o"1inbe1e"o$s z$sza=_    /)y$ R     co;)l1t/bisz-_ oo┘bad=-l'coseco$$f+egAli8f+eg2<cscb_l(10log-$i    osecl{det    esr$egug plcscb@__ esaïay  ancii2l-whos tsizeR  ciibp_ raoo┘bp_ /l1inbp_l(10log-$i    guayo(en cpsgsgn    s    l2=-:sp$sza=(ad1;ec1inbe1ear$f=b1vbyzereo"ciibezs",o"1inbe1e"o$s z$sza=_    /)y$ R     co;)lad1;ecoo┘bezst/bisz-_ oo┘bad=-l'co)anïay  anAli8f+eg2<ciib_l(10log-$i    gua)l{det    esr$egug plciib@__ esaïay  anaoo┘o$$f+eg┴ 's glrsay sarcaoo┘egugaoo┘bp_ ra-izbadela+1sqribp*z-1)_l(10log-$ia    o┘╦:ls (xmz+=r    *sl'y$ R     co;)lad1;ecaua)2bad1;ec1qrib1e: *sqI²_ay$>si-(! x'spnaysnn-k-:spl1- Rsz)ylε    r$Γ£i:sp1exctfyabsm;        tp/g?m+po1;ec++;)eus at=rc ul(1ar$f+e1ec1a=(ad1;ec1qrib1ex+1)*1ex+1)a+1ey*eysar$f+e1eegu=(ad1;ec1qrib1ex-1)*1ex-1)a+1ey*eysar$f+e1ealpha ra(ec1a+1eeg)/2ar$f+e1ebaε      ra(ec1a-1eeg)/2ar$fealpha ra1>si-malpha <    r$Γ£i_(plx';    baε     r$e1gumenbaε     raa1>;ec    eus ay$ baε     <    -1gumenbaε     ra-1>;ec    +e1euu=(ad1;ecaua)2bad1;ec1qrib1e:baε    *:baε    I²_abaε    Iar$f+e1eva=(ad1;ecbade alpha +(ad1;ec1qrib alpha* alpha-1)_ar$feva=(e:v>si-my.et    e||y$ ya=_    /snn-$x <    -1g     [t    zhoo$s packagem1 oo┘beu²_av_-_ oo┘bad=-l'a┘ego$$f+eg┴ 's glrsay sarca┘eguga1inbp_ ra-izbadeila+1sqrib1ep*z)_l(10log-$iaI²o$:ls (xmz+=r    *sl'y$ R     co;)lad1;ecaua)2b ulad1;ec1qrib1e: *sqI$>si-(! x'spnaysnn-k-:spl1- Rsz)ylε    r$Γ£i:sp1exctfyabsm;        tp/g?m+po1;ec++;)eus at=rc ul(1ar$f+e1ec1a=(ad1;ec1qrib1ex+1)*1ex+1)a+1ey*eysar$f+e1eegu=(ad1;ec1qrib1ex-1)*1ex-1)a+1ey*eysar$f+e1ealpha ra(ec1a+1eeg)/2ar$f+e1ebaε      ra(ec1a-1eeg)/2ar$fealpha ra1>si-malpha <    r$Γ£i_(plx';    baε     r$e1gumenbaε     raa1>;ec    eus ay$ baε     <    -1gumenbaε     ra-1>;ec    +e1euu=(lad1;ecaua)2b baε    ulad1;ec1qrib1e:baε    *:baε    IIar$f+e1eva=(-ad1;ecbade alpha +(ad1;ec1qrib alpha* alpha-1)_ar$feva=(e:v>si-my.et    e||y$ ya=_    /snn-$x <    -1g     [t    zhoo$s packagem1 oo┘beu²_av_-_ oo┘bad=-l'a)anïay  an _t-ii2rsay sarca)angcï/ a)anbp_ rai/2zbade(i+zst/b(i-z)_l(10log-$iasao$:ls (xd  sgn    s    l2=-     co;)lad1;ecaua)2b ul11x$>si-m1plxd  s (2=b1vbyzereo"a)anbie"o>si-(-mz+=_    iear$f=b1vbyzereo"a)anb-ie"o$s z-mz+=_    iear$fel($bada=(ad1;ecbadebia+1ezst/b(ia-1ez)_ar$feipgu=(0.5 * ix$>si-m11-z2[t=biipg     [t    zhoo$s ipgu*($bad-_ oo┘bad=-l'a┘eco$$f+eg┴ 's glrsay sarca┘ecz2[sasecbp_ raaoo┘b1t/bp_l(10log-$iasec$:ls (xd  sgn    s    l2=-=b1vbyzereo"asecbezs",omz+ ay$ za=_    /)y$ R     co;)laoo┘b1t/be1ear$esaïay  anaosco$$f+eg┴ 's glrsay sarcaoo┘ecz2[sacscbp_ raa1inb1t/bp_l(10log-$ia    sc$:ls (xd  sgn    s    l2=-=b1vbyzereo"acscbezs",omz+ ay$ za=_    /)y$ R     co;)la1inb1t/be1ear$esaïay  anaooseco$$f+egAli8f+eg2<acscb_l(10log-$ia    osecl{det    esr$egug placscb@__ esaïay  anacii2l-whos tsizeR  ay sarcaoo)angcï/ aciibp_ raa)anb1t/bp_(10log-$ia    ouayo(en cpsgsgn    s    l2=-=b1vbyzereo"aciib0e"o>si-(k-:spl1- Rsz)yplx'll-eps)y$ R     co;)l$ za>_    /)g?mad1;ecaua)2b1²_ay$>:mad1;ecaua)2b-1²_-ay$>$>si-m1plxd  s (2=b1vbyzereo"aciibie"o>si-(k-:spl1- Rsza-1i)yll-eps)y$ R_badofzereo"aciib-ie"o$s zk-:spl1- Rsza+1i)yll-eps)y$ R     co;)la)anb1t/be1ear$esaïay  anaoo)anïay  anAli8f+eg2<aciib_l(10log-$ia    gua)l{det    esr$egug placiib@__ esaïay  an    osh2l-whos tsizeR  ay shyperbolicaoo┘egug    oshbp_ ra(++;(p_ +s++;D-p_)/2l(10log-$i    o┘hayo(en cpsgsgn    s    l2=-:sp$++l2=-$>si-m1ex'spnayayo(eplx'$++a=(ad1;ec++;De1ear$fplx'     co;)l$ ++a+s1/ ++)/2ar$f}2=-:sp1exctfyabsm+po1;ec++;)eus ay$ R$++a=(ad1;ec++;Dexsar$f+e1eex_1aε    rt/biexy$ R     co;)lex'spnaym1 oo┘bad1;ecoo┘bey) * ($exa+1eex_1)/2,$ R    tec++ ecï/     81inbey) * ($exa-1eex_1)/2ear$esaïay  an1inh2l-whos tsizeR  ay shyperbolica┘egug1inhbp_ ra(++;(p_ -s++;D-p_)/2l(10log-$i1inhayo(en cpsgsgn    s    l2=-:sp$++l2=-$>si-m1ex'spnayayo(eplx'$++a=(ad1;ec++;De1ear$fplx'     co;)l$ ++a-s1/ ++)/2ar$f}2=-:sp1exctfyabsm+po1;ec++;)eus ay$ R$++a=(ad1;ec++;Dexsar$f+e1eex_1aε    rt/biexy$ R     co;)lex'spnaym1 oo┘bad1;ecoo┘bey) * ($exa-1eex_1)/2,$ R    tec++ ecï/     81inbey) * ($exa+1eex_1)/2ear$esaïay  anua)h2l-whos tsizeR  ay shyperbolica)angcï/ ua)hbp_ ra1inhbp_ /g    oshbp_l(10log-$iua)hayo(en cpsgsgn    s    l2=-:sp$cza=g    oshbe1ear$f=b1vbyzereo"ua)hbezs",o"    oshbe1e"o$s z$cza=_    /)y$ R     co;)l1inhbezst/bicz-_ oo┘bad=-l'sech2l-whos tsizeR  ay shyperbolica┘ecz2[ssechbp_ ra1 /g    oshbp_l(10log-$isechayo(en cpsgsgn    s    l2=-:sp$cza=g    oshbe1ear$f=b1vbyzereo"sechbezs",o"    oshbe1e"o$s z$cza=_    /)y$ R     co;)l1t/bicz-_ oo┘bad=-l'csch2l-whos tsizeR  ay shyperbolicaoo┘ecz2[scschbp_ ra1 /g1inhbp_l(10log-$i    schayo(en cpsgsgn    s    l2=-:sp$sza=(1inhbezsar$f=b1vbyzereo"cschbezs",o"1inhbezs"o$s z$sza=_    /)y$ R     co;)l1t/bisz-_ oo┘bad=-l'cosech2l-whosAli8f+eg2<cschb_l(10log-$i    gsechaydet    esr$egug plcschb@__ esaïay  an    oth2l-whos tsizeR  ay shyperbolicaoo)angcï/     othbp_ ra    oshbp_ /g1inhbp_l(10log-$i    othayo(en cpsgsgn    s    l2=-:sp$sza=(1inhbezsar$f=b1vbyzereo"cothbezs",o"1inhbezs"o$s z$sza=_    /)y$ R     co;)l    oshbe1et/bisz-_ oo┘bad=-l'coua)h2l-whosAli8f+eg2<cothb_l(10log-$i    ota)haydet    esr$egug plcothb@__ esaïay  anacish2l-whos tsizeR  ay sarcahyperbolicaoo┘eguga    oshbp_ rabadela+1sqribp*z-1)_l(10log-$ia    oshayo(en cpsgsgn    s    l2=-$>si-m1ex'spnayayo(eplx'     co;)lad1;ecbade z +(ad1;ec1qrib  *sq-1)_>si-mza>_    1ar$fplx'mz+=rcugxc ul(1ar$f}2=-:sp1e     ctfimabsm+po1;ec++;)eus ay$ R$s z$ima=_    /)ayo(eplx'     co;)lcugxcad1;ecbade       +(ad1;ec1qrib      *       -s1)_ul(1>si-m      >_    1ar$fplx'     co;)lcugxc0ulad1;ecaua)2bad1;ec1qrib1e:     *      _ul      _1>si-k-:spl1- Rs     _ylε    r$Γ£i}2=-     co;)lad1;ecbade z +(ad1;ec1qrib  *sq -s1)_-_ oo┘bad=-l'a┘inh2l-whos tsizeR  ay sarcahyperbolica┘eguga1inhbp_ rabadela+1sqribp*z-1)_(10log-$iasinhayo(en cpsgsgn    s    l2=-     co;)lad1;ecbade z +(ad1;ec1qrib  *sq +s1)_-_ oo┘bad=-l'aua)h2l-whos tsizeR  ay sarcahyperbolica)angcï/ a)anhbp_ ra1/2zbade(1+zst/b(1-z)_l(10log-$iasaohayo(en cpsgsgn    s    l2=-$>si-m1ex'spnayayo(eplx'     co;)lad1;ecbadeb1t+1ezs/b1t-1ez)_/2zsi-k-:spl1- Rsaya<    1ar$fplx'mz+=rcugxc ul(1ar$f}2=-=b1vbyzereo'a)anhb1)'ul "1t-1ez"+ ay$ za=_     1)y$ R_badofzereo'a)anhb-1)'ec++ e e e  ay$ za=_    -1g     [t    zhoo$s0.5 * ad1;ecbadeb1t+1ezst/b(1a-1ez)_ar$oo┘bad=-l'a┘ech2l-whos tsizeR  ay shyperbolicaarca┘ecz2[sasechbp_ raaoo┘hb1t/bp_l(10log-$iasechayo(en cpsgsgn    s    l2=-=b1vbyzereo'asechb0)'ulmz+ ay$ za=_    /)y$ R     co;)laoo┘hb1t/be1ear$esaïay  anaosch2l-whos tsizeR  ay shyperbolicaarcaoo┘ecz2[sacschbp_ raa1inhb1t/bp_l(10log-$ia    schayo(en cpsgsgn    s    l2=-=b1vbyzereo'acschb0)'ulmz+ ay$ za=_    /)y$ R     co;)la1inhb1t/be1ear$esaïay  anaoosech2l-whosAli8f+eg2<aoo┘hb_l(10log-$ia    osechaydet    esr$egug placschb@__ esaïay  ana    oth2l-whos tsizeR  ay sarcahyperbolicaoo)angcï/ aciihbp_ ra1/2zbade(1+zst/b(z-1)_l(10log-$ia    othayo(en cpsgsgn    s    l2=-=b1vbyzereo'aciihb0)'ec++ e e e >si-(k-:spl1- Rsz)yplx'll-eps)y$ R$>si-m1ex'spnayayo(eplx'     co;)lad1;ecbadebsq +s1)/(sq -s1)_/2zsi-k-:spl1- Rsaya>    1ar$fplx'mz+=rcugxc ul(1ar$f}2=-=b1vbyzereo'aciihb1)'ul "sq -s1"o$s zk-:spl1- Rsza-s1)yll-eps)y$ R_badofzereo'aciihb-1)'ul"1t/be1"o$s zk-:spl1- Rsza+11)yll-eps)y$ R     co;)lad1;ecbadeb1t+1ezst/b(sq -s1)_t/b2ar$esaïay  anaoo)anh2l-whosAli8f+eg2<aooib_l(10log-$ia    gua)haydet    esr$egug placothb@__ esaïay  an(aua)2)2l-whos tsizeRla)anbz1/z2_l(10log-$iasao2ayo(en cpsg1ulmz2ctfinve+;)dsgn    s    l2=-:spRs     1ulmim1ulm     2ctfim2ear$R$s z$inve+;)dsgyo(eplx'Rs     1ulmim1sgn    x'spna2a?m+po12;ec++;)eus a :cpsg2ul(1ar$fplx'Rs     2ctfim2ebsm+po11;ec++;)eus ay$ Ra elsegyo(eplx'Rs     1ulmim1sgn    +po11;ec++;)eus ay$ Rplx'Rs     2ctfim2ebsmx'spna2a?m+po12;ec++;)eus a :cpsg2ul(1ar$f}$ R$s z$im2a=_    /)ayo(eplx'     co;)lcugxcad1;ecaua)2bs     1ulm     2_ul(1>si-mim1a=_    /ar$fplx'     co;)lcugxcz$im1<=>(1>* pip2ul(1>si-m     2a=_    /ar$f}2=-:sp$w raa)anbo11/sg2sar$f+e1bouulmvebsmx'spnwa?m+pow;ec++;)eus a :cpswul(1ar$fou +smpie >si-m     2a<    /ar$fou -smpit2zsi-ou >mpiy$ R     co;)l    ugxc uulmvear$esaïay  andisugay_eg2ma)  an;edisugay_eg2ma)  a  anS ccpf cchasi-nosargumcï/)ndisugay eg2ma)+eg2<allaoogug -number  aya)  andon')+yappcï aosyave ove+riddcï it vusn;edisugay_eg2ma)  a  anWhcï calledla1la mcayod, ayisia    coallya┘et  ay sdisugay eg2ma)+eg2  anuy scu+rcï/ obje    c.  a  anValid obje    c eg2ma)sia      'c'iand 'p'+eg2<c++;)eus iand pogar. Ty sfir )  anlet;)2<isiusedla    coally, sonuy stype<c+ ib sfullya┘pelledlou)+eg2<cgarityl(10log-$idisugay_eg2ma)ayo(en c$selfa=(1hiftl2=-:sp$eg2ma)a=(undefl2=$ R$s zx'spnself)ay            os alledla1la mcayod$ R    $eg2ma)a=(1hiftl2=-a elsegy                osRegugar procedure call$ R    $eg2ma)a=(nselfl2=-    undef(nselfl2=-}2=$ R$s zdefegudpnself)ay2=-         co;)ldefegudpnself->{disugay}a?mnself->{disugay}a:mndisugay2=-    R$>si-m1defegudpneg2ma);2=-         co;)lnself->{disugay}a=pneg2ma);2=-}2=$ R     co;)lndisugay $>si-m1defegudpneg2ma);2=-     co;)lndisugay =pneg2ma);2=esaïay  an(stregg$sy)2l-whosShow Ä$ R$>si-mR╢vßcpsgsgnndi     cα╫▄(nselfl2w▀+eg2ezst/bc);2=-     co)co2w▀+eg2e(10log-$╕egg$sy)2l-whosShow Ä$ R$>si-mR╢vßcps2=-    sup_ /g1si-mR╢v. Ifa)aaric Rbp_  anuy scu+rcï/h2mastyodmRflrl-dg-$id ay s 'c'ia,nuy -     .mR╢v. O R$rwy e,nuy - R$>2zb$rbp_ i-mR╢vßcefaulnumber  aya)  andon')+yap$sy)2  wayndisma)aîa  anWhcsy)2╒╒½└[█ ay s ┬w+yoo┘hb1t/be1ear$esaïay  anaosch2lòXz-1)_'OúR$s zx'spnself)ay        dla1la2=-}2=$ R$s/h2mast;1la2=-}2=$ R$sz co;)lndisugefeay =pneg2z co;)lndisu;gudpneg2ma);2z cïay  anao_2l-whoear$=-}2=$ R~ /^p/y  andisugay2z cïay  anao_log-$╕egghow Ä$ R$>si- cïay  anao_log-$╕eggnndi     cαay  anaos=-a elog-$╕egg$dipdiser =$ißcp'a+bi'be1ear$esaïay  anao_log-$╕eggma)a=(undz 'OúR$s zx'spnse($x  ay=_    /)ayo(eplx'     co;)lcugy$ R$s z$ima=dla1la2x_    /  l-wx_+e($xR     c-    R-1eg21-:spzst/bg2maear  l-o;)lad1;ecbxsAl!=r  l-o;)lad1;ecbxs anast/b(sq $y_    /  l-wy_+e($yR     c-    R-1eg21-:spzst/bg2maear  l-o;)lad1;ecbysAl!=r  l-o;)lad1;ecbys anast/b(sqsq $nde=r"bx"=rcugxc ul(1arxs >=nast/(sq0.5 * ad1;ecby2sar1)x'll-eps)y$ $ $ $ $ $ $ $ ${$imae=r'i'la)a $ $ $ $ll$1;ecby2sar-1)x'll-eps)y$ $ $ $ $ $ ${$imae=r'-i'la)a $ $ $ $ll$1;eco;)lad1;ecbys >=nast/)x'll-eps)y$ $ $ {$imae=rby2.r"i"la)anb=(undetre=r''(sq $etre=r$ndeefeay =pneg2nd(sq $etre.=r"+ima"eefeay =pneg2ma(sq $etre=~ s/\+-/-/(sq $etre=~ s/^\+//(sq $etre=~ s/([-+])1i/$1i/; # Not$didw▀+og-$wieo'ihbp_ba) ia    -1e'     ts.sq $etre=r'0')lndisug$etr;gudpneg2ma);2etr;gua)anbi     cHel2zbndon'ïay  anao_2l-wh,a eGega'     tao2amßcpDivison'wieo' elsmßrc$sear$esa_gcdma)a$ $ y$ R$az$ibfim2ear$R)a$ $  R$rwg-egerr$R)a$ $  cLoopet    esevehoearanvecpneg=$iv$rwgyo(s.$R)a$ $ ear2;ec+bisius$asaïibfi{(1>si-m    gcdR$a %ïibz$ibfia)a $ $ll$1;ecbaisius$bsaïiafi{(1>si-m    gcdR$b %ïiaz$iafia)a $ $ll$e-eps)y$ $ $ $ $ $ ${$eg2ma);2a-    R$aeg2mb$ $ $}gua)anby$ %gcd;sear$esagcdma)a$ $ y$ R$az$ibfim2ear$R)a$ $ (und'+e=r"baeib"r$R)a$ $  1;ecbadexi tseigcd{d'+}sugay}igcd{d'+}e=r_gcdR$az$ibf;ay}igcd{"bsa$a"ugay gcd{d'+}(sq0.5 }$R)a$ $ eg2ma);2gcd{d'+}(sq Ä$ R$>si- cïay  anao_2l-whnndi     cαay  anaos=-a e2l-whodipdiser =$ißcp'[r,t]'be1ear$esaïay  anao_2l-whoa)a=(undz 'OúR$s zx'spnse($h,a$t=_    /)ayo(e2l-wh)lcugy$ $thg2a;gudpneg2ma);'[0,0]' >mpiy <=nast/(sqcugy$ $n$ R$s$ / uulm;ay}in$ R$(in$ -/  l-w --:sp$wlm;ay}in$ +c uulmvear$n$      coeg2ma)an ay[0, 2uu]o;)ldefego;)lad1;ecb -n<=nast/)g2{ $thg2a R$0 }$R    ll$1;eco;)lad1;ecuu-b -n<=nast/)g{ $thg2a R$'pi'la)a)ldefegudpnself-thg2asugay}a$r_    /  l-wr_+e($rR     c-    R-1eg21-:spzst/bg2maaear  l-o;)lad1;ecbrsAl!=r  l-o;)lad1;ecbrs anast/b(sq     $thg2a R$  l-wthg2a +e($thg2a      c-    R-1eg21-:spzst/bg2maaear($thg2a ne$'pi'lsiug2maa$ $ e l-o;)lad1;ecbthg2asAl!=r  l-o;)lad1;ecbthg2asuanast/b)eg2ma);2=-}2"\[$h,bthg2a\]"1defegudpn#dpn# Okaled co)co2sy)not$aodialcoaryugayianWtnaospi/<isiusfrisi-s...dpn#dpay}in$ xc uulmvear$n$ aïay  a)ldefego;)lad1;ecb -n>=nang12bs     1ulm    nse($n,a$k,a$kayb(sqsq ulm    don'($k R$1,a$kay R$ay a$k      10 a$k++,a$kay +c uusugay}a$n R$  l-wkay /r$n$ +$(in$ > c-    R1eg2-1-:sp0.5)eg2maefego;)lad1;ecbkay/$n - b -n<=nast/)ugay}aulm    $n R$o;)lad1;ecb )eg2ma$ $ (undgcdm=    gcdR$k,a$ )eg2ma$ $ ear($gcdm> 12bs     1}a$k /ay gcdeg2maa$n /ay gcdeg2ma0.5 }$Rma0.5 nextvear$nm> 360eg2ma0.5 $thg2a R$($n$      c-    R'-':'').g2maa$ $ '($k RR$1-    R'pi':"${k}pi")eg2ma$ $ $thg2a .=r'/'.$nmear$nm> 1eg2ma$ $ lasneg2ma}sq ulm    }defegudpn$thg2a R$$n$ lndisugay =pneg2thg2a;gudpn$r_    /  l-wr_+e($rR     c-    R-1eg21-:spzst/bg2maear  l-o;)lad1;ecbrsAl!=r  l-o;)lad1;ecbrs anast/b(sq $thg2a R$  l-wthg2a +e($thg2a      c-    R-1eg21-:spzst/bg2maear($thg2a !~ m(^-?\d*ay/\d+$)lsiug2ma$ $ e l-o;)lad1;ecbthg2asAl!=r  l-o;)lad1;ecbthg2asuanast/b)eg2dpneg2ma);"\[$h,bthg2a\]"1deegudp1eg2__END__gudp=hgad1eNAMEgudpMathadC$sy)2  -ap$sy)2  wayndisisiusassociazst/2=$hg2=$if(n func$ißcsgudp=hgad1eSYNOPSISg2dpn R$rMathadC$sy)2 ;gudpn$z R$MathadC$sy)2 ->2=ke(5, 6b(sq $t R$4 -a3*iuanaz(sq $j R$cy)xe(1,a2*ay/3)eg2dp=hgad1eDESCRIPTIONg2dpT -     ╒½└[█ ay)2tseyou$cega'    isius2=nipula'    ip$sy)2  wayndis. By aya)  ama)I<Pdil>y)ime(10e(1 R    ugaydial wayndism but$an extra C< R$>ys =$emer  by  asgufu+yap$sy)2  suppor. OaloR╢vwieo' efu+yaR$  of/2=$hg2=$if(n func$ißcsgutypif(nlysassociazst/wieo' iu/on'extsi-st/gayp$sy)2  wayndis.g2dp  ayou$wo▀+eg2wh=$ p$sy)2  wayndisiss z$$hgyswendeenvectst/gaybbp_b)2/gaysolveguthbpfollow  a'equ=$ißc:gudpnx*x_    /-1gudpsiusbygay =pi$ißcz$$hgysolu$ißcpsy)notst/I<i>ade annedisi R$rI<j>annstsat/snnceguI<i>a Ru(nlysanWotssisirwg-ensi$ym but$$hgynamgydoey)not$2=$-er)coahgynayndiguI<i>ai-a e2ur$rI<i2=annary>ynayndi.g2dpT bp_rieomg$ifs/wieo'2ur$ri2=annary wayndisiworksiju talikeayou$would'expectdpi-$wieo'dial wayndis...ayou$ju tahaveugaydilsm)co2eoat a)lde*i_    /-1gudpsoayou$have:gudpn5iuan7i_    /i_* (5uan7=_    /12idpn4i -a3i_    /i_* (4 -a3=_    /idpn4i * 2i_    /-8dpn6y /r2i_    /3dpn1 /ri_    /-idpdpC$sy)2  wayndisiss  wayndisieoatahaveuboeo' edial plx'isiusanri2=annarydpplx',isiusas   Ru(nlysnotst:gudpna +ebidpdpwhendeC<a>ai-a$hgyI<dial> plx'isiusC<b>ai-a$hgyI<i2=annary>yplx'coahgdpsrieomg$if$wieo'p$sy)2  wayndisii-aïayaightdonwsrdcoYou$haveugadpöorksiju talikeayou$would'expectdpi-$wieo'dial wayndis...ayou$ju tahaveugaydilsm)co2eoat a)lde*i_    /-1gudpsoayou$have:gudpn5iuan7i_    /i_* (5uan7=_    /12idpn4i -a3i_    /i_-ai_ck)2/ghavesy)2 ..ayhave=_    /12idpneoaty)2  waieoiuoa'2ueoii_rueg2eo'2d$o;)l_    /3dpn1 /ridpC$syapvey talikdpn+ysnPSISplx-diaebiddpn+y5PSISi(3x-diebid9SISilikd2SISi):gudpna aebid2*pn+yu(nlial-atahav8n+yial+y1bid9SIS2$woulA gi_phuthbp / uulm;ay}in$ 2/g$have:gudpn5iuan7i_possig-enineoatlanii_(hb' eißc:edahaveug$have:gutlani>)2  wait'sl_    /3:gudS2Dutlani+e($tahaveugaydiliks. Beayou$woul tahavepoigcdmhosg2=$ord12iyou$wxpe(h)2 ju Actadpöo)2n6y i * ulb2ueoi v/-8;)l;)i/12itoey)frhae(-    R0)wayn(h)2 ju Itynamgydpsrieomeoi add$rI<iul2/ghw$$hgysolu$ißcpsy)co2eoav/-8;)i)2 .dd$rI<i$haveSayndmeoian7=2eoau$jelow  isihweeneoatoigcdineeoi 2DutlanioYou$h$hgysoluven'($k R(i.e.eeoi mapvoey)=2euniquioYou$anciprhißc),$h$hgysoluaveugaydiißneob' eb2uuniqui:gu a$k++,i/-1gudpsy}in$ =$ord12iyou talik[rho2=annta]would'expectrhoju tahaved1$woyndmeoahave;)i/12,...ayouannta>meoi aey-ensihweent$$hgyv/-8;)l..ayhaveI<x>ma-wh a)ldan7=2eoaksiy}in$ o;)lt2  susoey)eoii_i_    n$$k++hbpf;)m,.whuth7=2 talikrho:gui_    (endeeSYNOPwould'expelsm)co2e$hgynamous7=_    /12idpn4i -a3uld'roduc/-1above.eCn$versI<iulsihweenet2  sf;)ml..ayhavecoatesIansf;)mlctdayou$)co2e=_m/-x_    / talikea= rho:gucos(eSYNOPwo    ba= rho:gusoe(eSYNOPwould'uth7=2eob' ei_    uul'2d$i-at2  sf;)m2=$:diliks. Brho:gui_    (endeeSYNOP. Brho:gu(cos hg2a\]"1i:gusoeeeSYNOPwoulInaieoiu_    /ids,ait'slhaveprojelow  i2/ghavev/-8;)l;neoahaveI<x>man bp_y>e*ixeh aMysolvegutIanseißc:'diahojuhaveI<n;)mju;)lI<modulus>man bp_annta>t$$hgyp_argueg2w>i2/ghavehgysoluaveugayu tahaI<n;)mju;/gC<zjuwic:'gavendpT bctdgadz)>$have:gudy}in$ ksiy}in$ (hb' ekkswneoslhavet)i/n$gyet)ici_r/ uulm;ay}in$)7=2emuth7moxpehan y o;)lpayf;)moey)m2=}isouthow  ayndisidivisw  ay2/g$have:gudpn5iua,.whulstyhavecoatesIansksiy}in$ =2esihtaydisuit2d$o;)l.dd$rI<i3)eg2dsubai_crI<i3. R    /3dpn1 /ridwxpeonahaveI<x>e*ix=2,l..ayhavxpo;)ebp_annta> =2ezvxou;)lI<pi>$haveAc:'havehgym  i2payhow  ayrieomißneb2upayf;)m2d$  ial_    /3dpn1 /rpn4i ulsiene:spzst/beoa    /i_$  i$rI<j>annstsat/sni_    ec:coYou$havem2avlydilsy =pisw  a>i2/ghave2payhow  ay:spzst/b  i_    /3dpn1 /ri_ )2  sm2a a'eqI<i>    /i_-aI<i$ khouyhlsm2a oey)d'enmeoian7=2enoe=_    /12idpneoat,eprov a$dt$$hgy4i -a3ul    /i_* oeeeSYi$  e2ur$rI<ibp_b$haveFor2=annoynd2=annaC<sqat>iroynaniod'uth7$rI<uyou$annarot$an7roob)2/dpn6idwxgueg2wul    /<ilyy:spzst/bo;)lnon-stghowvel_    /3dpn1 /ridYou$yieldidYvendn-stghowvel_    /3dpn1 /rR(iwul    /ßneopsouthow  )frhaeB<R+>beoaB<R+>+e($/I<wi amgyd2n6yayndidC$syh$hgysoluaveugay2=annn2n6yißneb2uy =pi$ißcz$ventghowvel_    /3dpn1 /ridssisihgye/ßneopsouthow  )frhaeB<R>beoaB<Cieoeoii_p_b)2/g$rI<j>annstsat/):diliksqat(xP. Ban> B0 ? sqat(xP.: sqat(-xP*$woulI6yißneob' eb2uy =pi$ißcz$$be/ßneopsouthow  )frhaeB<C>beoaB<Ci,uld'ulstyn6iduult)icow  )eoaB<R>bben4i /sni_:spzst/babove$i-ausoeyt$$hgynamgydoey) e2ur$rI<i:diliksqat(s. B[r,t]P. Bsqat(r):gui_    (endee/2PwoulIn et/,$h$stghowvel_    /3dpn1 /rRißneb2undpT bct[x,pi]ieoeoi7modulusdilsx)co2eolwayslnon-stghowve,$' ect[x,pi]ieisl_    /3:guct-x),$h$stghowveven'($k )l..ayhaveabove$ e2ur$rI<ibptayou$anndisieosqat([x,pi]P. Bsqat(x):gui_    (e*pi/iebid[sqat(x),pi/i]. Bsqat(x)*iwould'uth7=2ei__cr:guisi Rwpehady:spzst/bo;)lntghowvel_    /3dpn1 /ridYbove.ve:gudC<sqat>iridC$s    /<ilyyn$$i2/ghavery>ynayns:7=I<i>adeantyhavewieo,ulu'2ueoiectroob>i╢y)frhae(╣eopc:'my>e*ixeh i_i_iectroove2payhow  ay:spzst/b  i_rI<ibptyou$ßneob' eb2uyeoa    /i_$  i$rI<jshyou$2payhsdpi-2ida>itys    /<:spzabovenntsrdcoYo>yhlsm2a oeoian7=2enoe=_    )ebp_annt(eoaty)2  ju Actadpö1 /ro)2n6anii_(h/3dem2avlydi,ctadpö1 A?)b>i╢y)veugew>  a>i2/ghaudpn5iuan7on6yayndidC$syh$hgy$2payhi_ )2  b2uuniqty_rueg2eo'2d$o;)l_    islanii_(hb' eißc:njuzsthaveevend'enmtoat, a$k+/3dhyndzhavo'2bhav )l..aeprov a$dt,ta> C<~n;) oeyb>i╢y     veugaydiliks    ~veugay-iliks. SididC... N($/look2  sf;)m* ~veug(aydiliSilikay-iliui_    a*aydil*b  sfWyynaw ItynamgydgayutahaI<n;)mas1 /rRißneavendpTeevenwR>bben4i /snslt2  shoju tahaved1$woyndmeoahaksiy}in$ (hbm,.whuth7=_    avendpat(x),pia*aydil*bi_    (esi  sf;)m* ~veugavendpa** 2_    (enf ve-wh apurndn-stghowvel_    /ven'ayneuat(>)soluave'($k )l..an1 /ri2e=_m/-x* aeugavenapa** 2_    (eat(x)*iwotroey(neave;) hb' ekkn-gu$havi$ khouyrueg2eo'2d$o;)lju ven'ju tri(eoaksiy$k )n$$i2lowo'oe)    /3dpn1ulddidC Bsq$h_b$yhlyamgydgayutahaI<n;)i_ ) /rRißneavendpT:u Acßneob'sewieo,uave;)_iectroob2uyeoa    /i_$  i$rI<juyet. Beayou$n-gu$hav,uave;)_cr}in$yhlsm2a oeyndidC$syh$hgy$ape(h)2 ) hb'in. Bian7=2enoe=_    ... 3dpn1jusiqui:sanntudpn}iniynd>  uy$have    /<ilyy,uave; ) /ran7=2eoaksiyydgayub>i╢y=yyad1 OPERATIONS>i╢yG/bom2a oeusoeyt$$hg /ran7=2i2e=_m/z1eugaydili(end1P. Bsqat(r):1gucoz2(encydidi(end2P. Bsqat(r):2)sf;)m2=uanyeyndidC$sueg2eo'2d$o;)l>e=_ma oeusoeyt$$hg(l..reya' e)  a>i2/ghaveyou$suppuetow  ayeoa    /i_$  i$rI<2e=_m/z1ediz2(en(aydic)u(co(bydid)_m/z1e-iz2(en(ay-ic)u(co(by-id)_m/z1e*iz2(en(d1P. r2]P. Bsqat(r)(t1edi:2))_m/z1e/iz2(en(d1P/ r2]P. Bsqat(r)(t1e-i:2))_m/z1e**iz2(enBsqaz2(*ieyhgz1guco~veugay-iliks    avendpat(d1Pt(x),pia*aydil*bi_    r$rI<i:t(s. B[r,t1]P. Bsqat(r):gui_        Bsqaz)(enBsqaa]P. Bsqat(r)bi_    reyhaz)(eneyhat1]P(co*t_    r$ba=z)(en1gut((Bsqat(r)z1gy-iBsqa-t(r)z))_m/kea=z)(en1gu((Bsqat(r)z1gy+iBsqa-t(r)z))_m/au t2=z1,iz2ui_    au t=z1/zui_    (eT oeusoeyt$$hgßnera  a>i2/ghaveyou$suppuetow  ayadeag2eo'2eveneoa    /i_$h$stgho<2e=_m/Re=z)(enYou    Im=z)(enb_m/arhaz)(entks    avendpat(de=_m/cbI<i:t(s.ze**i(1/3i_    reyh10az)(eneyhaz)(/neyha10i_    reyht=z,in)(eneyhaz)(/neyhani_    (e    u t=zt(s. ba=z)(/nkea=z)e=_m/csc=z)(en1(/n ba=z)_    r$ec=z)(en1(/nkea=z)e=/ket=z)(en1(/nu t=zte=_m/-$ba=z)(en-t(r)eyhai*zy+i B[r,1-z*z))_m/akea=z)(en-t(r)eyhazy+ii* B[r,1-z*z))_m/au t=zt(s.d[s(r)eyhaai+z)(/nai-z))_m_m/aksc=z)(en-$ba=1e/iz)_m/a$ec=z)(enakea=1e/iz)_m/aket=z)(enau t=1e/iz)(en-t[s(r)eyhaai+z)(/naz-t))_m_m/$bah=z)(en1gu((Bsqazgy-iBsqa-z))_m/keah=z)(en1gu((Bsqazgy+iBsqa-z))_m/u th=zt(s. bah=z)(/nkeah=zt(s.(Bsqazgy-iBsqa-z))(/naBsqazgy+iBsqa-z))_m_m/csch=z)(en1(/n bah=z)_    r$ech=z)(en1(/nkeah=zte=/keth=z)(en1(/nu th=zte=_m/-$bahaz)(eneyhazy+i B[r,z*z+1))_m/akeahaz)(eneyhazy+i B[r,z*z-1))_m/au th=z)(en1gu(r)eyhaa1+z)(/na1-z))_m_m/aksch=z)(en-$bah=1e/iz)_m/a$ech=z)(en-keaha1e/iz)_m/aketh=z)(en-u th=1e/iz)(en1gu(r)eyhaa1+z)(/naz-1))_mvenntrgaveIuave;veIueyh;veIuksc;veIuk'2uveIuaksc;veIuak'2uveIukschB<C>Iuk'2h;veIuak'$ech;veIuak'2 th;ve)eoahakia$esannth7;veIua o2 ;veIuenB<C>Iuk'$ec;veIuk'2 t;veIuak'$ec;veIuak'2 t;veIuk'$ech;veIuk'2 th;vvenntk'$ech;veIuak'2 th;ved'upect/boly. y,uRhave,uImave,utrgave,uave;vveCnth7;veevenCua o2 ;_    /3dpn1havdhaksiyaksiymuranors. yridYbocbI<>e=gudC<sqat>iridC$s    /<ilyyn$$i2/ghavery>ynayns:7=afrhaegu juhavewieveCntu'2ueoiectroob>i╢yridYIntu'2ueoiectrooe-wh vailauan72uyeoa    i2loafrhaedYInn>e=gu'2ss    /<s /rieoa    /i_,yhlsrdYInn>e-wh aulstyniridpnit/bo;i:7egsr1 /ridrdYyou$ßnd'uth7Inn>esux)*gu'2s,:gudC<s /snsl aloju. Gudt$$hgwieveyh$hgy$my>e*ixeh ianslaniiYboj>esux)*Ityn2e=_m/1edijedij*jeat(;e=_m-wh auididC$my>}ins    /<:rit$$h2e=_m/$jeat((gu'2(1,i3))[1];>i╢yridYInk>t)*gu'2eoaksI<ndiliksqa>e-whg/bom2by2e=_m/(gu'2(z,in))[kqat(r**(1/n]P. Bsqat(r)(tedi2*k(x))/ni_    (eT oeInspaceship>ieoa    arisooe a>i2/ak,iE<lt>=E<g2uve-wh ksiyben4i /.eIn(eakdgy$2iyavlurndi2ssd'ulstynroob2uy2eo'2d$o;)l_    islaoofayut2uy=2ei_yna(eaadpö1Bsqect,2a oeyndiarisooeislrun  ayyou$n-o'2e=_    )    /<ilyyeoa    /i_$h$stgho n4l_tveevendian7=2enoe=_    veyou$yndiarow  ath7hlsm2a oen-o'$he=_    vemy>chb>i╢y=yyad1 CREATION_    (eTuyen-o2loayeoa    /i_$  i$rIjuhaveeioaty2e=_m/$ndilMy>e::Coa    /i_->myke(3ju4);_m/$ndilc    /x(3ju4);_m_m-y>ynay}in$yilyye=_    esian fayutahaeprov a$dt,ta>e=_m/$ndil3edi4*i;_m_m-y>ynaylike. 3uyen-o2loay$stgho us$$hgwieidp$havfayujuhaveeioaty2e=_m/$ndilMy>e::Coa    /i_->emyke(5jupi/3i;_m/$xdilc    /xe(5jupi/3i;_m_m-nn}iad.yridYn4l_teyogstuni Beayou$æ a>i2/ak,y$stgho/aery>yn·╔$æ aa$k+/3o'oe)aypiYn(4l ryoesuxy>yn·╔f/ali;Becrit+/32eInse=g(Mn;_aaic:-whee=_m/ymurans_m/ayydgayub>i╢y=<2e=_m/z1ediz2(rdYujuhaveeioaty2e)EATIOI2/ak,sr1sioafrhaejeatee::Coa    i/3i;_m_m--3n}iad}in$yilbuttahaI<wialiksisiafngu'2 aai2/o'2edYyaewh[3n-3iad}]4i vface,y$stgho/aerilmpn}iksiyyn-n;ga/ridr(o,urepy2efng/3o'oewoyndmeoahaksiy}in$ (hrdYujuhao n4l_tvedgan;)EATIOI2/ak,In(easr1sioafrhaenth7;vy$ape(h)2 ) hb'insndilMy>ou$æ a>i2/ofIOdilMy>oran7=2_m/$> >e-wh;_m/$wieo'oe)ppyopyis$$h$apei2/i2/ofIOo'oe)$æ a>i2/wialiksiymur.::Coa    /1_m_m-y>y-2,  1(3ju4);2_m_m-y>y    /1ay}in$yilN_    (eTuSTRINGIFIC-o2loayeoWe=_    pyiYyod,;vy$ape(h)2 ) hb'i_m/ymBian7=show_    uni2ssob2utahaeproveoa$dt,upe+bi4i buttahh7Inn>es(hgat(ms$$h$ua o2 aulstjuhaveeioaty2es$Iuakm2by2e=_m/moroe)ppyopyis$$.::CoBy)*Ityfayujuhayoynsnn7=2>emyke(5jupi/kewoydgay_ty2es$>oe=_    deagn72/ghailMy>troo"veeio"> >e-wh"tahaeprov">,en-o2>i2/yidstjuhakdgault woydgayaty2es$nCu aiedi_m/wh"tahaeprov">. Nksqdeagn72/ghg2eo)$æ a>i2/C$s    /<iljuhao    /C$i2Cus$hgy$m2ueoiec_m/kdgault siyaksi>i2/yidkde=_    )a =E<- ) hb'ib/a$m/by)*Ityfayujuhtroowoydgay_ty2es$>oa>juo2edY_teyogsAm/bdgoro(1/ksqdeagn72/ghg2eo)$æ a>i2idC$s    /<iljuhao    /C$i2 woydgayaty2es$>i╢y=tc_m/ ) hb'gsOlMy>w_mepö1Bsei2/qect,2uRhaify/wialiksie=_m/ew woydgayaty2es$>i╢y=B<C>oy>iarowio    eioa ) hb'gueoiF╢y=dY_tdmeoe::Coam/$n>emyke(5jupi/n$yil    >emyke(5jupi/kewoydgay_ty2es$('veeio'(3ju4)3))[1];>i╢yridYInk>t)*g    pyiYy "3))[)3\n";        # PyiYys "3))[k>,2iad.]ju4)3->woydgay_ty2es$('tahaeprov'(3ju4pyiYy "3))[)3\n";        # PyiYys "3))[-0.5+0.866025403784439i"eship>ieveeioaty2es$ $h2ejug/3o'uljuh/a$zoe)$æ a>i2s2loayaksIeIn/ /ri( aulstyniridpnitsr1 /ridrdYyou$ßoe=_    ksI<oe=rdYyou$ßowilMdYu[-9,+9])EATION_    (eTuUSAGEeship>e=k/3o'u>i2/loyoengy>yn·╔>e=dyfayuta> ayyna>jicsowilM=<2e=_m/z1ediz2(my>}i    /<:rite=_    almon}itrsuxm2a YyEATIOHh7Inn>eshlsrdux)<:rise::Coam/$n>emyke(5jupi/n$yil    )3))[;_m_m-rid2eInd.yr    # )3)**y>y=+z)ju4pyiYy "3))[)3idj**>y= ", )3)**y>, "\n";ju4pyiYy "(;e=_m-wh *2y= ", (;e=)3)e=)3 *2, "\n";juCoa    /i_--16)e=0lik            # F╢ycroob3o'ub7;vy$ape(h)ju4pyiYy "/au t$aa1+z", /au t$aa, "\n";juCoa    k1+z*k(x))/n2eInd.yrju4pyiYy ")3)-     k1+z", )3)-     k, "\n";juCoa    /->Rilc)k            # Rid'ue=_)$æ=_)bs,ju4)3->)$æ(2)k            # (yn·╔lan}itws. kvyo2 y>yn·tan-u                 # siyaksiymuranors. sdYbocbI<>eATION_    (eTuERRORS DUE TO DIVIS2lo BY ZERO OR LOGARITHM OF ZEROeship>iedivisyub>(/)te=_    yn·╔followfayuailauan7sjuCoaIukaInaIuk10aIukveo    tdm    $æ     ;ve    ;ot1gu(r)eeaha1bah=1 th=1eo    tdmh    $æ h    ;veh    ;h;v1gu(r)eheaha1ebah=1e th=1ejuCosiy/ksqbeedYInn>ed>i╢y=Ityn)$æ a>i2s2besi2ueoieaI<w oeyna>iyadivioengilby zero >e-r)kfayuIuk ayynauta>zerogstunueo1 /ugayub2uta2ueof(r)b>i'2et(mrdurro2(rIuokfayuIoayaC>oyjuCoah=1(0): Divisyub>by zero.)[kqBesi2ueodYujuhakdgy$iayub>ta>h=1(0),3o'oewovis>e-vfa(0)idpn0n-u DiuranI<..eATIOdi4*i;_(r)eh(-1): Luk ayynauta>zerog-u DiuranI..eATIOFo>oran7=2h=1th7;vh=1th7;vaha1th7;vah=1th7;vah=1th7;vh=1eth7;vh=1ethtrooaha1eth7;vah=1eth7o'oe)$æ a>i2/siy/ksqbee;v0> (zerose=gFo>oran7juhtrIuk ayynaicuailauan7ste=_    yn·╔;var)ehth7;vah=1eth7o'oe)$æ a>i2/siy/ksilb·╔;v1> (on;)E=gFo>oran7;var)ehth7;vah=1eth7o'oe)$æ a>i2/siy/ksqbetroo-1> (ainus on;)E=gFo>oran7;var)eth7;vah=1th7o'oe)$æ a>i2/siy/ksqbetrooi> (yn·╔veyou$yndiu$ia)E=gFo>oran7;var)eth7;vah=1eth7o'oe)$æ a>i2Cosiy/ksqbeeoo-i> (yn·╔n;ga/ridrveyou$yndiu$ia)E=gFo>oran7;vr)ethtrooha1th7;vr)ehth7o'oe)$æ a>i2/siy/ksqbeeI<Ind2)e=k)/npi4i  aulstynk>my>}ig2eodYyou$ßeATIONkseoieaI<besi2ueowInn>es>=E<g2fayutne)ppyox(ms$an7stta>slaoofayut2u,IOo'o/$ndrro2(rsiyaeappde=he=_    mulsn7=`togholo/$'ahaksiy}vfay    eioiayo/trIoynuranb>i2E=gFo>oux)<:ri7;vr)e(2*ar)e2-ri1)+1e-15)>/wialidyo/ofIOdivisyub>by zero.)[ION_    (eTuERRORS DUE TO INDIGESTIBLE ARGUMENTSeship>ie=2_m/$> e=_    wh;_m/$w eccepI<b=1e>slaooe=_    <2e=_m/z)$æ a>i2s.eoWe=_    siyy/siy/ksqsl<2gn$zoeo'oe)$æ a>i2s    siyy/wialidyo/wilM=drro2ilmessagesuIoayaC>·╔followfayeshi   n>emyke(5jupi/ke_m/$:-wiy/ksqr)ke>slaooarowtta>..eAT   n>emyke(5jupi/ke_m/$:-wiy/ksqr)ke>slaooarowtta>..eAT   n>emyke(5jupi/kee_m/$:-wiy/ksqr)ke>shotta>..eAT   n>emyke(5jupi/kee_m/$:-wiy/ksqr)ke>yn·tatta>..eATION_    (eTuBUGSeshiSa72/ghC<m/$n>emyke(5jupi/n>z*k(or2s    mg2eoms$_    ms$a*Itayoynsnn(rdYujuhCosilpi>ounviyona>i2/e=_    ei2n2>i2/yidssshlsrd(oohau th7;vIuk>)EATec_m/_m/ aastruuranpnitf    (s    /e>by C>·╔Aynho2(=_)ctBian7..e ;-)eshiAltayoynsnn(r*k(ecb3o'ub7;gii2n2slaooo>o<2e=_m/z1ediz2(e Daa'$ $h2ejug3o'him/$nBigFloyt,}vfacroP2/laeasao    /C$i2n7=n'uruafrhaewoyadiigus$$hit'+'IOd=E<g2fub>(f╢y=dY_tdmeo)ub7twe=_    sw'u>i2/loyoura$i2iayo/eATIOI_    C<g7=UNICOStahh7Inisshlsrdstrsugez1edh7a*ItadY_tdiiliayoieaI<7Isult(my>n2s>i╢y),3<2sy),3vfa(),3<2shy),3vfahy),3lo/2/ghgco    /gcyatan}E=gBewn>e.hip>iebughmg7=beodYuUNICOStms$_uIobs,odYuUNICOStCo<2e=ipi>,odYu>emyke(5jupi/.eoWeBsei2/qob3is,od2 won(r/ksqmg2ifn(b3it(elfig2e aulstelmepö1ulstP2/la'2e>eATION_    (eTu}i    /<:rite=_    almon}itrsuxm2a YyEATIOHh7Inn>es"COStCsux"woyadii╪siy/<:swiy/[2ayo/eATIO<F<:swiy/[_ayo/eATI@gdmeobst.hp.mg2>e=_    s/<J=i    s/<J=i    Æ┌
  443. k@gTu}i    /<_(r)eh(-;vr>slaooarowtta>..eAT   n>emyke(5jupi/ke_m/$:-wiy/ksqr)ke>slaooarowtta>..eAT   n>emyke(5jupi/kee_m/$:-wiy/ksqr)ke>shotta>..eAT  Üte=_    a.fi$:n>emyEx.m  Oo'opp.cTSe_tdmDta>.r)S. L YyEtAT  d-l YyEt@uiuc.>eu$:n>emy=cut>emy1syub>#sldrro