nfTlWNl rn Ѻq$³*%yNk9Sؒ=ŕgG:QtcWIq,'<o:uIAF?\SGn$ JGմc]X RL~ B7cr#i>Oz?1U2˴7 #FvO.256;9hMÇvxC<ΎAC}D8o)N!St4a7 9g/L 7\5ɑ'cOy"͍qs5 tm^x[7?yZ#UŅ? M 쫈؏p[4*`(ox$@AK6JCvC%%$g&<!Y-!D (~҆KflMI B)L*ڡ+*/,'"AF1!۳_8 ߘ&3 I]C63 ĢQ$3F'@^3YΆ|kS~DTJ0Uo-D!{.Y/ ~%.s?,zt ĢQ$3X=iO!*rh `g{+ٗ?aiMlr6X1f\5M&wU|ٛ2ָ X$o(U}E q2+,Lo:mъe)h3jܮ '[zsB7t c(/,eMN#<ΊT:_ pjOkHiN>ލsX]–4XT ON"A~ )DqQ#nvBgAyҰ; 7Ȑ?+tPQ8F̨dh򀱫9>f&3 I]C63f v[k|yhHONHÖ.O`SՆr 6?_6YyuReURj; sѷ/XT~)N9y%YTG/0 ORg碀ۜNpn/d`7Υ].[r\uKWE4#ΤkR!whK};ا[45R.H4=aNV(LbEԫU6756 x((d׊? nͷݜ,~_Ji#v !,Fi'x[/P.:,mcghty*X_EL 锗}6$ 1j]V&9c\dܼ쟤'G^!{=P8<]J ִT6Ti6NSxc\x ^+,R6ckbΣNc9Я<DΆi7aiZ9AȖAyF97b(g VȺ90ogzDƘAKjБJaa%hֹp6x4k_ӉJPƬ4Xsqq=άFuX4 SU}$HaM3xWrY8 HNv6wfߓf-dĔWȽfitvy8^'!Y~BUT5B,6=L%a'"nyꖵƇ+޳HjYwKw}!3!1+Ok3Yϡjd|O~uW-Rp#]%I+#Z5f%#p#~C@ek'*2ί n]P7QbDQVv|…/^uܲګ˜O$APn F4`Av+䑖fv =i8r7&Aqb5 dʞB\6iy FcO$MX#"[pVc-Xڢ~RD˘LA_F1W5ɣBC$=BHrp6Km4cٓmhy%uzi4E w>|(JLz!t\>L!3 ,!2W2 {Ej?(,dJ45-!B8D0o|)dMiD#JCfY1 >pp C NYd2Q|!]pkv&)W|;u0EJICnX&g9(X<ވn-s#Ym=F@oiˆ^ټSGoW%6Ѽ ĢQ$3< NR%j$JT-LW'89d[RWA5[LwPNzm5G>NҞi>4(c 6+`u)7?#.}-]8<Cěs*w MxrGLʎڦ&_"Ea|L0= 9. ,h)&fKH@*X I1 _KEcM;,0ւMrti#kT\hˆ漵iUI;Ty?sYkQjud t y]Hʳ&3}.^7WnէED%PiUZ1tIiC RIv@ 9΀M7wNd3mUčcc!3ٿ5bJ^5s1:unG mSykD.cPUMo]d2s94y9BBb#z,E*8.d?L~)reC%VX' >fyefxRSCV.K-Jf^+1V|yC@Fq%X Nh wp 8\{F^WG"{<OaٳeΏVɺaFJ w^7q񣈃 J 𖂨vum,:z `tH+ι``OSq26hyHMa&8}FU㡪%XVWHy eNû{P }?Y{#o{|)>͛ndu|-tHiG>EO[恌,s98JtI|,=Hk )~o0<t*]Er%'ؤLX uJTbԶ7Hy{ѐ$ajN*RĴ8V]vZ{0Ma:قCJd5h~GrZgWr>ǪO jA4VHP jF_#inbagy^N0Q&ɗf1;ĝJ(L8K%Xd()%bo "J/ Cԇda1߀7\KdQL.04687499995 + $y * (-0.2002690873e-3 + $y * (0.8449199096e-5 + $y * (-0.88228987e-6 + $y * 0.105787412e-6))); $ans = sqrt(0.636619772 / $ax) * (cos($xx) * $ans1 - $z * sin($xx) * $ans2); return ($x < 0.0) ? -$ans : $ans; } private static function besselJ2(float $x, int $ord): float { $ax = abs($x); if ($ax === 0.0) { return 0.0; } if ($ax > $ord) { return self::besselj2a($ax, $ord, $x); } return self::besselj2b($ax, $ord, $x); } private static function besselj2a(float $ax, int $ord, float $x): float { $tox = 2.0 / $ax; $bjm = self::besselJ0($ax); $bj = self::besselJ1($ax); for ($j = 1; $j < $ord; ++$j) { $bjp = $j * $tox * $bj - $bjm; $bjm = $bj; $bj = $bjp; } $ans = $bj; return ($x < 0.0 && ($ord % 2) == 1) ? -$ans : $ans; } private static function besselj2b(float $ax, int $ord, float $x): float { $tox = 2.0 / $ax; $jsum = false; $bjp = $ans = $sum = 0.0; $bj = 1.0; for ($j = 2 * ($ord + (int) sqrt(40.0 * $ord)); $j > 0; --$j) { $bjm = $j * $tox * $bj - $bjp; $bjp = $bj; $bj = $bjm; if (abs($bj) > 1.0e+10) { $bj *= 1.0e-10; $bjp *= 1.0e-10; $ans *= 1.0e-10; $sum *= 1.0e-10; } if ($jsum === true) { $sum += $bj; } $jsum = $jsum === false; if ($j === $ord) { $ans = $bjp; } } $sum = 2.0 * $sum - $bj; $ans /= $sum; return ($x < 0.0 && ($ord % 2) === 1) ? -$ans : $ans; } }