polynom/0000755000176200001440000000000013445127716011761 5ustar liggesuserspolynom/inst/0000755000176200001440000000000013444541330012725 5ustar liggesuserspolynom/inst/CITATION0000644000176200001440000000242413444536352014074 0ustar liggesuserscitHeader("To cite in publications use:") ## R >= 2.8.0 passes package metadata to citation(). if(!exists("meta") || is.null(meta)) meta <- packageDescription("polynom") year <- sub("-.*", "", meta$Date) note <- sprintf("R package version %s.", meta$Version) citEntry(entry = "Manual", title = { paste("polynom: A Collection of Functions to Implement", "a Class for Univariate Polynomial Manipulations") }, author = c( person("Bill", "Venables", email = "Bill.Venables@gmail.com"), person("Kurt", "Hornik", email = "Kurt.Hornik@R-project.org"), person("Martin", "Maechler", email = "maechler@stat.math.ethz.ch")), year = year, note = { paste(note, "S original by Bill Venables, packages for R", "by Kurt Hornik and Martin Maechler.") }, url = "https://CRAN.R-project.org/package=polynom", textVersion = { paste("Bill Venables and Kurt Hornik and Martin Maechler", sprintf("(%s).", year), "polynom: A Collection of Functions to Implement", "a Class for Univariate Polynomial Manipulations.", note) }) polynom/inst/doc/0000755000176200001440000000000013444541330013472 5ustar liggesuserspolynom/inst/doc/polynomials.Rmd0000644000176200001440000001545013444540430016511 0ustar liggesusers--- title: "Univariate Polynomials in R" author: "Bill Venables" date: "`r Sys.Date()`" output: pdf_document: includes: in_header: header.tex html_document: null vignette: > %\VignetteIndexEntry{Vignette Title} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r setup, include = FALSE} knitr::opts_chunk$set(collapse = TRUE, comment = "", fig.height = 7, fig.width = 9, fig.align = "center", out.height = "0.25\\textheight") library(polynom) setHook("plot.new", list(las = function() par(las = 1), pch = function() par(pch = 20)), "append") ``` ## Preamble The `polynom` package is an R collection of functions to implement a class for univariate polynomial manipulations. It is based on the corresponding S package by Bill Venables ``, and was adapted to R by Kurt Hornik `` and Martin Maechler ``. This document is based on the original 'NOTES', with minor updates. # A Univariate Polynomial Class for R ## Introduction and summary The following started as a straightforward programming exercise in operator overloading, but seems to be more generally useful. The goal is to write a polynomial class, that is a suite of facilities that allow operations on polynomials: addition, subtraction, multiplication, "division", remaindering, printing, plotting, and so forth, to be conducted using the same operators and functions, and hence with the same ease, as ordinary arithmetic, plotting, printing, and so on. The class is limited to univariate polynomials, and so they may therefore be uniquely defined by their numeric coefficient vector. Coercing a polynomial to numeric yields this coefficient vector as a numeric vector. For reasons of simplicity it is limited to REAL polynomials; handling polynomials with complex coefficients would be a simple extension. Dealing with polynomials with polynomial coefficients, and hence multivariate polynomials, would be feasible, though a major undertaking and the result would be very slow and of rather limited usefulness and efficiency. ## General orientation The function `polynomial()` creates an object of class `polynomial` from a numeric coefficient vector. Coefficient vectors are assumed to apply to the powers of the carrier variable in increasing order, that is, in the *truncated power series* form, and in the same form as required by `polyroot()`, the system function for computing zeros of polynomials. (As a matter or terminology, the *zeros* of the polynomial $P(x)$ are the same as the *roots* of equation $P(x) = 0$.) Polynomials may also be created by specifying a set of (x, y) pairs and constructing the Lagrange interpolation polynomial that passes through them (`poly.calc(x, y)`). If `y` is a matrix, an interpolation polynomial is calculated for each column and the result is a list of polynomials (of class `polylist`). The third way polynomials are commonly generated is via its zeros using `poly.calc(z)`, which creates the monic polynomial of lowest degree with the values in `z` as its zeros. The core facility provided is the group method function `Ops.polynomial()`, which allows arithmetic operations to be performed on polynomial arguments using ordinary arithmetic operators. ## Notes 1. `+`, `-` and `*` have their obvious meanings for polynomials. 2. `^` is limited to non-negative integer powers. 3. `/` returns the polynomial quotient. If division is not exact the remainder is discarded, (but see 4.) 4. `%%` returns the polynomial remainder, so that if all arguments are polynomials, `p1 * (p2 / p1) + p2 %% p1` is the same polynomial as `p2`, provided `p1` is not the zero polynomial. 5. If numeric vectors are used in polynomial arithmetic they are coerced to polynomial, which could be a source of surprise. In the case of scalars, though, the result is natural. 6. Some logical operations are allowed, but not always very satisfactorily. `==` and `!=` mean exact equality or not, respectively, however `<`, `<=`, `>`, `>=`, `!`, `|` and `&` are not allowed at all and cause stops in the calculation. 7. Most Math group functions are disallowed with polynomial arguments. The only exceptions are `ceiling`, `floor`, `round`, `trunc`, and `signif`. 8. Summary group functions are not implemented, apart from `sum` and `prod`. 9. Polynomials may be evaluated at specific x values either directly using `predict(p, x)`, or indirectly using `as.function(p)`, which creates a function to evaluate the polynomial, and then using the result. 10. The print method for polynomials can be slow and is a bit pretentious. The plotting methods (`plot(p)`, `lines(p)`, `points(p)`) are fairly nominal, but may prove useful. ## Examples 1. Find the Hermite polynomials up to degree 5 and plot them. Also plot their derivatives and integrals on separate plots. The polynomials in question satisfy $$ \begin{aligned} He_0(x) &= 1,\\ He_1(x) &= x,\\ He_n(x) &= x He_{n-1}(x) - (n - 1) He_{n-2}(x), \qquad n = 2, 3, \ldots \end{aligned} $$ ```{r} He <- list(polynomial(1), polynomial(0:1)) x <- polynomial() for (n in 3:6) { He[[n]] <- x * He[[n-1]] - (n-2) * He[[n-2]] ## R indices start from 1, not 0 } He <- as.polylist(He) plot(He) plot(deriv(He)) plot(integral(He)) ``` 2. Find the orthogonal polynomials on $x = (0, 1, 2, 4)$ and construct R functions to evaluate them at arbitrary $x$ values. ```{r} x <- c(0,1,2,4) (op <- poly.orth(x)) (fop <- lapply(op, as.function)) (P <- sapply(fop, function(f) f(x))) zapsmall(crossprod(P)) ### Verify orthonormality ``` 3. Miscellaneous computations using polynomial arithmetic. ```{r} (p1 <- poly.calc(1:6)) (p2 <- change.origin(p1, 3)) predict(p1, 0:7) predict(p2, 0:7) predict(p2, 0:7 - 3) (p3 <- (p1 - 2 * p2)^2) # moderate arithmetic expression. fp3 <- as.function(p3) # should have 1, 2, 3 as zeros fp3(0:4) ``` 4. Polynomials can be numerically fragile. This can easily lead to surprising numerical problems. ```{r} x <- 80:89 y <- c(487, 370, 361, 313, 246, 234, 173, 128, 88, 83) p <- poly.calc(x, y) ## leads to catastropic numerical failure! predict(p, x) - y p1 <- poly.calc(x - 84, y) ## changing origin fixes the problem predict(p1, x - 84) - y plot(p1, xlim = c(80, 89) - 84, xlab = "x - 84") points(x - 84, y, col = "red", cex = 2) #### Can we now write the polynomial in "raw" form? p0 <- as.function(p1)(polynomial() - 84) ## attempt to change the origin back to zero ## leads to problems again plot(p0, xlim = c(80, 89)) points(x, y, col = "red", cex = 2) ## major numerical errors due to finite precision ``` polynom/inst/doc/polynomials.pdf0000644000176200001440000074040713444541330016547 0ustar liggesusers%PDF-1.5 % 29 0 obj << /Length 2898 /Filter /FlateDecode >> stream xڕZY~[d+q|v6񱵞%NU8$!j}>hfSA~W|OuDΤHVwHstrtWw7Cѕ`ַ2͢kFmunں,&ˆ'&+!ds29LeUюiLo7b~uL%-WRx1SLQ e q X%^%\2pZwIؔ'tw@7I/$fF{V<*{zk54|GM[Uf3΢vGSfơ@>V6HW_k;"w~8u,ς*9SҔSU+2. fEo4p%9D:f[6{#=jrT^(z3S)gI2gSK7b{Nď`Z0dT4^ǵȢ4nŶ8YPݾIS7mה Jg|j 0ٻcwbmEN* wE7f΢Ce I^~(VÁm!sZ.CDQp?ŰF~j'r_6ǯ}VpCSpQ]66t"1G("#OacacgoqM}I1m.5p7еۓLA;~[V ~BB3nGin~r?MW]Q#t7ٹfۣ銁Q`-@74{<#=͹ԽW! q8OHĽipXUdtTYK -YGWacW~QA3Ǚ=1#WPM{61؏bSVPpߎm$~ N FJ̒Me--џad>Uo(U)&?KCc c;nN fNAkU; U}FKp?Bްb*޲ RiaA `-Lޗ;*jWb/Yj4?` _s\fKn:rEa X21NY?1ER5B,m&`[{<ƺI!nC(gu(G")~)]g.|ELiQrٷ1}7絘^3R;J=X嬏m,R.]Œ?Ō-3!;>dGQ{o(@P?ϥ3|R7:1v(05–tsE!5 찄G$vqzԻQ`L.Kvȏ&P!ϝ|<D7%i- \LP,`K]Gun{|. ;OR %zFaV?{hD<'[2uUeS]W4әNegK=,b)CuvQqr%~0"4I4%kcLtsWalM.5|ۃï?ۡ6EKܰәkgu *)˕eG5C]wmsۘ=5hތ^)0> stream xo E:.&946i:[t P‡cw=HNdY0Oǻ&я8xk) Q)htRHF $^Eb.?\s5MF&7E 9R `&(r8ШorA4n]l7E^ߟ+Tա[rp}h!o]-16?-D{"AeBsfHSqNEhgm9`qy;a;8pPmqI#ΖM}WiX#9&4Vh#7ART*S`z)1(I$%E$VRW`!M?H|]ݴ5X-0mVEey6Gv: kn|!VrŜ-@I[zYQ 7A= R]if$iů^͸ŔM#Bju,<1TW9BkrgC O}^BӠ@5=X-$3f*ڕt ad.'"O@8‚z ? DaI$3KߜB"D'H L;>Wz 4 0Ck*4~[7˼o]jz]g:u/M` Ӝ#S9T%31U;=sv6 wvsW1PtN V˦Ђ0IӚ rNDזMU`W~#2j֣. _, TWW٦ȠFĜ_uUn1 8@>sCOt (`l8 TZ[TP\Cdt慄'2f,ѥā*Ypt]>K7 NGg[4 C&,ٷoWNgPw#ej8N09"o H9J tMQuv muݸSKSn⣃B +9%\+!d T>_F8R]0 iH$TF:$<&(q)- J9{tB֠]L.j^4дoj4q4ƜaXTt"rI Z0B(!4ss`˜rgbfx3瘈Cx^kzEQͦЭX.0kM3ք癙5+zuy+wZ{jsP# 189]a*Hc(ǘYTa~ޏ6|cvlg+4a3[P 4o.gMDP/xP_9Aq6Y@=od);37߃fh؞^й :( !THS<琘$=*'i$oSAU|ZA-8;dL^J%%cr2cW¥Ťf{`4avT3@HDsO_qYv*Iy̠fP>Ы?yOC=JBs?2)tܠFE_%r!+*1~ڹ 'D" #3)D!ء o筮,IL,Q+/?G 0vgc# Vy"qec'0e{ 0iϙK ȿN Q? ryVw4Y$,q!})Ǒ) JhAQ= <gԠu9ok5=ͼQU>mz Gp!" զXVi&{":C_Yyt^eO/?L>]tF`>ڇ.Dh;@/w"nlNE2 ikv=yt:8Uyz^:HSg̮<*SO%4%iA} di^ ˟6$G /k#D 5d2,c ;`;ɚhRҔk#ϪGHfzWc h8NݥBW'6vj`[ endstream endobj 40 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./polynomials_files/figure-latex/unnamed-chunk-1-1.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 56 0 R /BBox [0 0 615 428] /Resources << /XObject << /Im1 57 0 R >>/ProcSet [ /PDF ] >> /Length 36 /Filter /FlateDecode >> stream x+2T0BC]]C \.}\C|@.Zv endstream endobj 57 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./polynomials_files/figure-latex/unnamed-chunk-1-1.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 58 0 R /BBox [ 0 0 648 504] /Resources << /ProcSet [/PDF/Text] /Font << /F2 59 0 R >> /ExtGState << >> /ColorSpace << /sRGB 60 0 R >> >> /Length 28976 /Filter /FlateDecode >> stream xA-1}ZJ ]%d2`` l/gس~(t3b;=a&OF?~O?ݿu]?ݿw/s)?a?2?y ??=ϟۿZ; _k}+v?副+~gӏ?+o??mϿ7_?[zs/|{rv?] ݾ ~*j?n}O?w۵>H~}y#Zsg>5߰oGXr66R#L8_KK?p/KMsԸ5՞<~NOu/q/<)|ϗZƛyԺ/= Ӯg8pNz+)K~z7f -3K?=_ Ǿa?~S>;N{Լ'xYlUXt;<ݬiѭ\tn ǟݘ)<ݺnVx.Es͙ EWE\uˮعʵnWʺ@^W'?{zV#ޛ֠ozV|?ͲG)s%u?#^M7^K^YʓVOzd|?LWZ+%-MϵY;-Nz5-OgzhU)q?J8ߏu>Woz7SgzVjWZkX->WkwZQN<ߏ]{մ^Wk}z]qZ+#H2zo^u^ە늟h6)~ceu8Vz];^Wky8^Wky~?ߏI?RqZ+Lky8׵Muiz%)s+Iui}mZ+Nulz|?z]#׵Mumoz]qZk[X[z8׵MuimnZkz];ݴ^W^n7׵ݽJ~ o9Numyz]qZkӛymoZvps^7NY3ٱx[z]^W^&8i}pZ+Nu3)k/|>X^W6i8׵%NuiMqZiLyPY;39ߵ7NuiqZ+Nuz]^?>z\3)̊,>Ӣ{[?֫=ޓ֫Oz֫oz7WgzmI=gt#Y|&IG^vxkik|9~=iZ<덴^-~)_xc|^sZ|{j^?=3^M[Zz=WGz'Kҽgd^?>דsk|Wzpzqsgd/k|Ki8׵?Nuz]qZkz]^W3_љ/k|hX^8i8W/z]2s|KV8%{z]qZk^8i8׵?Nu|3_̗,>7?NuiqZ+Nu^8i8׵?Nugt/Y|K^7i8׵?NuzzV&9>{||?<߰8׵?Nuz]qZc^8i8׵?>{|3_8ּ^W^~9׵?NuiqZ+Nu|3_̗?NuiqZ+Nuz]qZkz]^gui/Y|KiqZ+NuZ\뵮^->k]Zs׫iֵ?>%|ya^j^ojLZ֫z%,>k]3_̗F-\WKY;Gz\MvznW\9>gdyQ\\;kGzgHkxr3_*/յ?>%zRz5,>kg^kZsE^kY|K qKRWk.Ykͥ=zgqZ-,N_mg/յ?>%|\8ז|r\8ז}r^̗,>gT{Yk>zgqZ=j>zgqZk|KR]:r}>z}r^\8',Ngd/յ?>7,N>z}r\8ב}:r^̗,>gTGY>zgqZ#,Nuz_}s^̗,>gdyQ\87}zigqZoյ?J|/Y|oԙ}:s^gՙ}:s^gY|Ku|3_3>jM`zUSzzmW+,r3_jk|KRrs+ڕ}zg^[>JY|fMgd/}뵕\M}zJY>̗,>g\\]jzg^/,rZ>'ޛ%|\zzm5Z>zgqZ5,Nzk|/}Zs^kYkr^[Ygdg;uz_kgqZ-,Nzi\8מ}m|3_jk|Kzi\k=,Nzi\8מ}R[3_jk|K>z}r^\8'ړ}zg̗,>zi>FY>zgqZ#>|/Y|Kmzi\8ב}mzigqZoYg̗ڛ}zigqZo7,N>z]3_=ߏ?>7,Nuz_gqZ3,Nuzi\8׵?>gd/}_g^}_ׯ\I}z=KR_3_WY|~z#^Y|^rs}j^|3_ꥥ||ι^I}zOz\x>\k|KR_3_gz\wY>Gz\̗י3_5z>kYk>zgqZ5z>|/Y|Kzi\-,Nzi\8ז}g̗,>r^[Yk>zm{Yk>z]3_̗z|\8מ}s^{Yks3_z|?gqZO_:y뿀^%/ uSzw|;ߏ',Nuz_e/i_^{^7s|KyG}^e/_~|ߛ3_f>z/I_|8g ^gY/_}l_,>n/=WY|W{¹^____,>|_/=WY|{~{~{~{~|ߕ3_z%},}\_忟YJ$PuCۖD,'yPu2'yݹn(somen'~; e^ B[2_V] en enD~)С̭!~ݸC[}m}ʼ+yk/yG}ʼ2pSn en]GpeMӡ̭'2| e^wO(󺏃C{6ʼo(BʼJ_(soe^[ʼnU;-C[8~B[I5Y2@ʼi(s O(so>e^5yݥPu<2 -?*en܌ߋ,A"눿~B[IYʼ6_R?k2x(b{Ak2ܟd eʼn engς enܱ߅|B[ػNx enkՍ2ݗ7ʼd1'y݇PGke^a'yQu>-?Jx>PlGG^/vy}| K]'2ؿ_:fO(G}X e^_(s; {IP憛#e^727̱)suy)~ŏ2x*]cQuG׽2ï(s?2ï(:"2;y2/(s)Pu_?-{׉S)s+en-U7uVN>끔]뾆}B[)]c݇gPvXTz en~-}E[(z~=2+~z e^_ڢ̽ e^_]'y}u=2U-x(2̢}ʼN]-߯yHש끔yBש끔yJ)yH;*2O(sx׉/_ooPGʼ]H[)vz e.[ۥ끔yt=2ooP e.`ۥ끔n׽]B[)vz+enyW)s_-~zmP@ʼm[@ʼ]oʼ][-ʼ] ];2H.yS2oJPMʼ)B7R(d eޔM̛)yS>2oJPMʼ)B7T( e!PMiʼ)B7%V( eޔZ̛r+ySr2oʮPMʼ)B7%X( eޔb̛r,yS2oʲPMiʼ)B7%Z(L eޔj̛r-yS2oʶPMʼ)B7%\( eޔr̛r.yS҅2oʺPMiʼ)B7%^( eޔz̛r/yS2oʾPMʼ)B7%`( eޔ̛r0yS2oPMiʼ)C7%b(L eޔ̛r1yS22oPMʼ)C7c(| eޔ̛1yS>2oPMʼ)C7c(| eޔ̛1yS>2oPMG/yS>2oPMʼ)C7c(| eޔ̛1yS>2oPMʼ)C7c(| eޔ̛1yS>2oPMʼ)C7c(so2oPMʼ)C7c(| eޔ̛1yS>2oPMʼ)C7c(| eޔ̛1yS>2oPMʼ)C7c(| eޔ̛1yS>2oPMʼ)C7c(| eޔ̛1yS>f{*C7c(| eޔ̛1yS>2oPMʼ)C7c(| eޔ̛1yS>2oPMʼ)C7c(| eޔ̛1yS>2oPMʼ)C7c(| eޔ̛1yS>2oPMʼ)C7c(| eޔ̛1yS>2oPMʼ)C[BUl+Cwc(| eޕ̻1yW>2P]ʼ+Cwc(| eޕ̻1yW>2P]ʼ+Cwc(| eޕ̻1yW>2P]ʼ+Cwc(| eޕ̻1yW>2P]ʼ+Cwc(| eޕ̻1yW>2P]ʼ+Cwc(| eޕ̻1yW>2P]ʼ+Cwc(| eޕ̻1yW>2P]ʼ+Cwc(| eޕ̻1yW>2P]ʼ+Cwc(| eޕ̻1yW>2P]ʼ+Cwc(| eޕ̻1yW>2P]ʼ+Cwc(| eޕ̻1yW>2P]ʼ+Cwc(| eޕ̻1yW>2P]ʼ7ޢ̻1yW>2P]ʼ+Cwc(| eޕ̻1yW>2P]ʼ+Cwc(| eޕ̻1yW>2P]ʼ+Cwc(| eޕ̻1yW>2P]ʼ+Cwc(| eޕ̻1yW>2P]ʼ+Cwc(| eޕ̻1yW>2P]ʼ+Cwc(| eޕ̻1yW>2P]ʼ+Cwc(| eޕ̻1yW>2P]ʼ+Cwc(| eޕ̻1yW>2P]ʼ+Cwc(| eޕ̻1yW>2P]ʼ+Cwc(| eޕ̻1yW>2P]ʼ+Cwc(| eޕ̻1yW>2P]ʼ+Cwc(| eޕ뭔yW>2P]ʼ+Cwc(| eޕ̻1yW>2P]ʼ+Cwc(| eޕ̻1yW>2P]ʼ+Cwc(|,PB+ e|,PB+ e|,PB+ e|,PB+ e|,PB+ e|,C_2buu^2/M:P{u(}=8y2CPzp((VW|_e|_e>b:*WT7S>\X(sc̕2W>\X(sc̕2W>\X(sc̕2W>\X(sc̕2W>\X(sc̕2W>\X(sc̕2W>\X(sc̕2W>\X(sc5H,PB+ e|,PB+ e|,PB+ e|,PB+ e|,PB+ e|,PB+ e|,PB+ e|,PB+ e|,PB+ e|,PB+ e|,PB+ e|,PB+ e|,PB+ e|,PB+ e|,PB+ e|,PB+ e|,PB+ e|,PB+ e|,PB+ e|,PB+ e|,PB+ e|,PB+ e|,PB+ e|,PB+ e|,m(sc̕2W>\X(sc̕2W>\X(sc̕2W>\X(sc̕2W>\X(sc̕2W>\X(sc̕2W>\X(sc̕2W>\X(sc̕2W>\X(sc̕2W>\X(sc̕2W>\X(sc̕2W>\X(sc(| e>̇1P>2PC|(Cc(| e>̇1P>2PC|(Cc(| e>̇1P>2PC|(Cc(| e>̇1P>2ů(| e>̇1P>2PC|(Cc(| e>̇1P>2PC|(Cc(| e>̇1P>2PCb~7̇1P>2PC|(Cc(| e>̇1P>2PC|(Cc(| e>̇1P>2PC|(C3e>̇1P>2PC|(Cc(| e>̇1P>2PC|(Cc(| e>̇1P>2PC|(Cc(| e>̇1P>2PC|(Cc(| e>̇1P>2PC|(Cc(| e>̇1P>2PC|(Cc(| e>̇1 c(| e>̇1P>2PC|(Cc(| e>̇1P>2PC|(Cc(| e>̇1P>2P-|(Cc(| e>̇1P>2PC|(Cc(| e>̇1P>`(]޳wWF en7yB}M{cao>;+(s ]ۘ6w1 ?a?ג;570 2p_\[ݭbM2Y{s~ pen7{)½B- o[ֽ_]oZ\hUen^a-+sk3ڟoW۫L,ܟ.W7USLw* oṰ=j6B'&{oN;jȻ2p\ᆳ2p_/\[@;Y.~s}3{Sdda:_ߎXm/~&V^7ǕnV4|7X/2V-+=9# oGۡߍnf{_" oEC̫0P}'6r[tץ]'g>0),oN)b)9Q~B~BOBr]nvW݅搢]hŮ Z2(d)]|>(xWK.͚PծD.d8U߅f]hŮ2u w!k&uE]'!e> Dwen]eyS/o>̭xܻN-E)e>½d:]5 yd'JRVveNg)s;uE]' \ۮEJoV\{JqK(f)sŶk\$WkR>QlFkvvܮoUey/_)j2}_RQj*]'vXw]WܓO(skN)mM)WYm>H&-e*C۝v6Q.(JK7jۻN~BG)Ķ^[ᅯ2O(z_ԫ[x=Wyɋ27:]{!e^ZRE-e>?)1y27ljۻNƔ2(w)sPL;{̭(Yޫ\H[*YO|)s5QQd (s9Y ܲ", eNֆ2' DUG2וwX*~=+oӳr}u©ʜS 9"(A|Th)s;BTƯR$enZ2S3u©܋Pv**~uw*e>Hϛ?̇6(ݕ*weO(sNQ6}BK߿ڻV YJ̧>2~,,WGfz _ge)%2g,s,smc@넧0|u2t?d9Ycy ̟}|fTfw험eD!fweY%r,s,&%,,&,&,&u,&,&,*%,*e,P:R2R2RV2RZ2Wo)&fRP2~2f(muR2W fp2wge;\jĤۻN2Ew(>QuҧyRbRṱȿ?:e_c)sQV|Q}*sQ-hwK}{ ](swʜry~#eN;ʼTwt(sQA{I>̻27Up+R {׉mU(HJؕcO(Quһ/)sܚ<޵̻ZP-z{[pǮMʯC{z2GQH(sʼ+A6w*z~2{Eq{Iz y eޕϠm=O=H7'(sOe޴?@[ UB2oT7B7/Pz2RS2\I[|*s2o/jܻN+(eny:cO( e2o*̽ʜ-O+d)yRRmHJ7_yJ bԹWʼ I)s‚2ջw!&eJۻNڐz2o:OE[Ov*6Pᕧ2o:ByI7(sZ2oO̽S{IRnRM(6PuSvPmHIc:iCAܰT3veS}PػN{猽䌟zurzRg<ד2WORy2ϣy|^,ew)XR^c=Iz2(eU<ֳyw)HB<'Rq2둔y\z&e;)JR\V(sc̕2PRB+ ebF+ e|3PWC+ e^P߮ɇQ(si96ʜ|eN2'G9@s^2<eyʜ9(s3Pw9As^2<ey ʜ95(ssP9Bs^2< eyʜ(9U(sγPw9Cs^2< eyʜ89u(sP9Ds^2<ey#ʜH9(s3Qw9Es^2<ey+ʜX9(ssQ9Fs^2<ey3ʜh9(sγQw9Gs^2<ey;ʜx9(sQ̩̩̩'̩7̩G̩W̩g̩w̩̩̩̩̩Ǡ̩נ̩"RԃPԋBou? eS;Pg22~2We>\c*WwyOʜߞe9O@ꑡoԼꙡU ezh(sKC\Pdž2W69O5@\P\oQ'2ov)sգC^\Pw\^(s{R檧2{|(sC(sP~~_o_e.ܟJ2WB(sT6\o(sC2GIO\W(sO_2W~E]K_$P7 e~P<e~PB{~P9(sIQGEӯ2eN+ʜ~X9(siQۢEӯ2eN/ʜ~`9(sQGFӯ2eN3ʜ~h9(sQ[Fӯ2eN7ʜ~p9(sQGGӯ2eN;ʜ~x9(sQۣGӯ2eN?2 (s2+ (s2K(s2k(s2Nj$(s 2ǫ,(s 2ˠ4(s 2<(s2 D(s2+L(s2KTRCcuÒ]}==I=93>)4)@jRaؤ̃I2 'e~:O8)`>ɿS||\+2u(e(Q<̢yF)է}Kv\O Td0fjvl:ORAÉJ#2e*eU57/nKѩ[s!ޛpyzGs) [ss>{߿E'}ܿ{zyeqoeQ_Un}~2||l`ͷFNn|x`KUĭQ}wknp߂ep Oja ߯oWRXsC>|߬훉߫oU&ϭ>u0gךp/wx>|nY<ѻ&\;}Evu}{25}ߝ6||_ n͋0`ͷP{ ]_k^ n7w=_kt^~W2ܶ?~S*ɚ߼?l^k~3]noև=X ,5UE`9hXL4XDsl?͛-D5͵WkD.Dhek/ߏ&s=e9޿5;-4Xsvkh^ 7&$4ќ L4ZL4_{{Ļhފh^hu=cݟhγ)h(&&kz=c97&arhcdByWL+WɥyY 5EYszLÚw7LÚw"kGb{RȚ[NW_y5g357Ysq+ּwv\']^֜ PXskA{Nk޹{3'yW4ּ{֜>Xsz?v5ly^9X>ޓ]&{2X>He"?kk~z5,9"eya"ya"&L$]`Ú߿-ۅ5rco&˚w`mךkzXs05 Uk^5k,1U nJL8N8xkۨǚw&5Wfּkk H.k>yDVz!š?5z k΄j#5˚}9XG' Xsx\y6Oؕ53Xy6č=VW֜'ceXgd0]'ǚ[ OS빍5'\'}aac->uv\}Ö,jkXŶkYY==U߲p`IV 6Qy('iy"=Lׄ),k揎ްVʚ"[ G<˚;Xx}Y~dͿ&˚+kNo<YxdÄ4<&DŽp^&b=g[ bM8Ewk5 k%OXXO#Zam܉'ó+dnZ~5뇬9, ֜^13x֜Xs'=3t?5&˚3kk΄y\e͙X5t5_&\vYgiȚ3kn+&k΄9itb~*ק5xֆӱ B5t^5>1{Ob?!k| kW k$y_d͟DNem?D<+[1aݭӰnc%k(ǚ?`!k΄.-KԳܢ{݆_Lr(k5g?5*o{&W>TGqg5t5kܚ-kȶ`.bbLÚ?cҋqe͙@5,959 kp5@W빭5TS??u~ͧ&2|2]ͱiL4W}L4ybL43&chc9L`e96/v[u? hjL4C?/þkysM4͈ /}3Mf9hDGO1Lf͙XDs&^3ќL4g6͙h>Okÿr~'kbyL4h~<&'d9ߙhx&3qLg9h^hh$1d&DsMT}7V]o>h^dh. 5Ѽ`5Ѽ`5ѼȲ3Ѽ0!\ջ͹>1D ۭ暀/&=&h\-au|GjbaSּ1]ּXƄxYv1\>,yddͫzUwyebyU ּbWe+em5 ^﫲X:e3eͿ*M5yحz_IJʚ'k?yky˚G'y~e/kޮlͽmּknx?Y>Y.W_/M$<֛ŧ5z+~pk*k.gM)MDX'֜z>ּ&{Ϯwʚtz_SߖOXVּ&{&{<Ѽ Ys{=z_S,ּ Y9 XƳ1dr!kްԲ 2}M=X 9 y2}gYȚfa[LDwkn[C 涿tֱ^k]WYDoY0f?VWּ=X~?OgAȚ29š`֜gQayvּ~5YMXs5oǚ#-˚7 k޸Ț/5ݚobńƳj}ɚwMŚguȚwֳyz4ϲ57_ϖYs vYpkּ"c/lYxvy\kg5W^X.5Xs=k>L4WUL4WAL4eĞ˚sY aͻm5w5Y Xs,֜g%`y֜g`ͻl ˚?`ɰl5Bcͥ''knlfLzT?|Ț-5ƚOzv=͔5bʚĂ5e='knezXs+]=2&~@Y7vxieݚVl|<~šճCu~ knm>ך7vkjB<ϻ5זzY%XWuXY~5:s?Śӭ[g`'egos2|1K'cw}mknx-,;6B>&ǖűk1o/d;澯v~y[|}}g͝7N$؎8/]vrفe|xk}ݲcuUq+zc;Tgٱ.ٱٱ>\Gj5rj~]Y~bJIW]F\]zF\?dq=im#i)Ԉkx.P0r}Ob5O6ũk3k ֥Me25I9PMόrvos~7;ۤF<\:#rvnn헥z%vl0_ض)b~YoFne.bQ<c 1ψTgǶMHSmdWߖ:e 뗥-t@ض̸#p4Z##q1#Ř5HOF\ƈWmʌ~aBqv"q#5-bqƈIioCbCewmv< S؎%7[Ɏi;? fm,P3;~OÞ m^>Xv܃;;zĎi 1ɎZ^m/Q`ȏ)v:Xm0m/ yzݙq#faǔy` %v\}W qedqU5v\Ŏ ކPכj6츪;Wq})1#ŎoXc ;yŎS6Ð 'ކp\Ŏ`ކp/v| v|ذ!![* ʺ2aކPD`e!kŽ #|Ŏ;.jˇMuv\!ΈioCIGrK!{`cĎaǶÚc`bEOŁEŽ ;.z>|r`EOÁcĎl`ǥ p;.1JaoC(*bŽ gR(KELŎ`DžbE8qQvl1̸c7Ďwv}=g6/v~ \0boC(gbE(s;h"f ;.z$*hd}>Ď'v_R츨;.\_Ď5`DZ;.7LtaDžbE# v\nŎ˝qхTY>"Pض}΀ Îz,hqQ"츨v#`&#v\`bE,`< v\F:;;Xv\F;.Cq0doC(me0r Lh;;./L,pFmEmȰTv|_fgǷ`moCabǷ`cf}jCsÎoaǷ㛑bǷcUH` 0foCv|17㛑bǷ[Ɏe!~Ď!z-v|&Ŏo=)m9s>Yꑤ2'z;v\H\qy;bcĎZq}ۏqUv\UWXq#c6n+,^>eoCĎ!q}3;x ;;*KÎi& ;nOƈac`Ǵ}ۭbǴiiÂf;nfŎ㦲 uMňŎic;n\Ŏ; vHɉ3"vbDZĎcz;&vQ8֫qgXbq=;q\OĎz#v#^L8wbq=;q\OŎz+vc^\8bq?;qOĎ~#v#_L8wbq?;qOŎ~+vc_\8bDZ;q'Ďc!vد߁_߂_߃_߄_߅_߆?|~v~v~vL>;&_O7`#1Ǧ00ZNV>#_FZ%3ZVV>#ňkF02Z^V>#u'cĵq|4F\òqq]q auшk#oF\3r;Z#cu?1~-3Z1:dر~'#+κ`:v`ǰ-رS?;f0v;|ag%3#taǺ?Ž9Os;'vlP8ء1]`b*Ŏ9Os;<vˎŠwرFf;~-v`: vwcg;:;f;#y+X1絰csaǜŽ9s^ ;<vy3h1հcγaǜwÎ9s^;<vy;x1caǜÎ'7GWgw`^;;^;;;;^;;;;^;;;;^;;; ;^ ; ; ; ;^ ; ; ; ;^ ; ; ; ;^ ; ; ; ;^ ; ; ;;^;;;;^;;;vL~1}+g;vL~ 1c1`k;vL~7z{z^v~G? ~14cm`ׁ;vvvL?~#1Hc`3w;_ vL?~+1Xc`s;_ vL?~31hc`w;_vL?~;1xc`%?/;vL!~D1ca_aCŽ闄O ;vL?&~M1c=aŽG)~T1cYaŽ釅/ ;vL-~\1cyaŽ/ ;vL1~d1ʰca;Î釆/ ;vL5~l1ڰca{Î/;vL9~t1ca3~xF\/ψkqM=#g5<3k#0k# ;01"]#c0#9bĵ1&#;X#IbĵIvvWY`x1vi`%زc<;>abw0agx#1)F\g:ر_?aP`x*1 v v<`bǓΎ^c$(;Ƒafc;ư9SS`:1v ΃e&;Žqb ŎCJ;(vQ8ģqHb)ŎC[;)vS8q@Pc9Qckݞ}S25? LSC}#~m襄Y3}03}/;LߪJP3}L߮hh/\3}FCJ}uʣ&_^齡Fp]4W> ~s*vOԓ}i>- m6sqqh0/]xpQ[ _vǻ _+_v{rwVpFګ˼: Zfk UczZµUJʹk.\[|p 4Vp* \Cژ9'\e]Cpky G= \kx3 s׎7ڗlµq9)(\GکgҀk'31zvZ3}d*_ ` U2CxVukw.[M˱ZiifƵV@<xV\k5)]q՜|=Zp9?9^s\k5&kbXk$93: ݛKKQZ^hf.ͣ} SǵkFz3ե6%eZ9fs\7U=Szؾ{"b8p\h&.؞9Fv v[}S )ݓWZyVݸ7>q% l3x3-k~\kɈf>L~_kwO2N#\[$|;y"+3k-z\kw_kwyZWǵ5µ#oϺ3vf;툾]l?ZK6}9dԯk'Q3_kwk+<ZֶV­{RfD +dj[wkw~ZqϓL2ǭ’Vxv0vi#丶Zϳ~~ڞz;<3H[|ZA︶~q~&߭x3v?.[Ͻ0gۧ/ދSv2\v1׋S,NOɸ׾zf5[/`0WX2x7^ۇCϼZjWSv\;J;T<`8f!ˌYf>YL_ e~1ӷ1W3}2׋߇pmg&p-3vf vOkµmjpm^1>x3%\_ 2\ L~1+\[µµµ3+3kkgƱ ךmRV5 k9pkcpAp/\{k ykŶ78%wow\V1|^kZ!:^u\[µߪخ}pm#\[L[Tl[5sWvfr kKϪ~3cq5ciwsLzf *_*뙈r1c׋zR>T|^̐3v~̈́k!'\{i?ǵWWǵW/\{k/f ^ Lvy ip OKڋ=ךY? l*\{ kk/puZ7sWW/_<^fjk/k/f \{3k\/Fp2 \=ϟ;fb^lt~n \{k/gµZ{{aµfPkm^+/pz ^Y~U=C%\K xXp~I;U+:׋W+\{ڋpZpJҌ/µ wo`Wu\[Uµv9>֍'p-3npmcpm|?^kj H+\tג?k 63~wI[+1L_5gLL_3}o@e/3t3} `Ú cf>0W3db/j̄µOH3>7qSkտh>j>j>t} >m_DŽĵkfvk/p!kk~k/\ ZZfk >UaZ# ׾|µ}/pW~p)-Xǵ)oz'pki};3w׾̰}~ Zĵﯙ/OJS~iw2qkvj |>kΛvkS͎3wN0p팙kŶOvgkѿǵVq{։[RCV?Lkob\޷2k ZWǵqmˎko*0m_їbXs?Vµqm Vµ;~[@bǎkw7g ǵ;vژyqюV?k+!µ;?Kµ;.f{LqzZbʹzpwX Z\]?xGvnŽ0]z.s zX >`ZژQTH\IGvϗ#YNu‘&î{8#$k4~Rԧ)$9F-4 $1:HBnnвН^v]#;3wu~Qw Z{Ů7ׁdwpXdmٺng G8vsRJ ھǯn>Qپ}rtY;f]]+B־ٻ`T.x<{_쳩ھf_ߗ;2+{>C"Lf zy>!YjZ#$2m naYAc#c] JG5O= m8ȋ # lAmaPɠ P\PܛX?Yԩitj9dy'~d%7W}26^=o6`}+r6D2blEȪټl=ټa60l^k5[6wV˴ټj wt"ؼٮ~& endstream endobj 62 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 66 0 obj << /Length 1096 /Filter /FlateDecode >> stream xYs6~#gEKN_-Mg|L%ޕepl_ o]I;Հ}|2[2YPD1ʎ_ ?F 6UK=@S$(QiNeJ͔cG+(wҳI͵?8qixF 'Jx 8$7"GvJ/.爋{%?ba Кb|O6n JQ?%NmOT(CRFyگ]ФZεr+q R&i+oNS~_?n04_0䟲l/q-b:׃t$< >W acMAyA;MT;u+`e.^3b  0Sd0-ahZeQ cZ 38I"; &@N6Ojq(Lʳ=']ܧt70<ߤ#a L}ˣ(öwq5]> (5 <GS̏j4*Q#?&K|Qk$9shh) 3%!cW+3A8ŕ S4$-^;&[(k1;%>kDd>ԷYXAձiϷy0,KK}ssTSAꤜP qs)noOg?GD,Xhf5ېKdE h J]i. LlQ;;=׶ѢԒ =рI+stxgnB q5bW2;Pe[P ^`@P|(;s!5}{.=p" $# cu4o(POoXbH1?7CV -^WՖ:-nlQ`]9-o1ToF>w`W'иBvOh긝.N\fR&Pder/ XҨ$aЇ w endstream endobj 41 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./polynomials_files/figure-latex/unnamed-chunk-1-2.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 69 0 R /BBox [0 0 615 428] /Resources << /XObject << /Im1 70 0 R >>/ProcSet [ /PDF ] >> /Length 36 /Filter /FlateDecode >> stream x+2T0BC]]C \.}\C|@.Zv endstream endobj 70 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./polynomials_files/figure-latex/unnamed-chunk-1-2.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 71 0 R /BBox [ 0 0 648 504] /Resources << /ProcSet [/PDF/Text] /Font << /F2 72 0 R >> /ExtGState << >> /ColorSpace << /sRGB 73 0 R >> >> /Length 27578 /Filter /FlateDecode >> stream xKL޷?E-J$̭ـ/$dk18#@Œq7PHq~{ԟrϟƇ8on?9~?ΟO{|~I7ON{wKS^{ק|=ݐgOy/Ͻ?YſϟueoRѷ>m-Mruij^]>gW?S~gr;7]C)߻͵;&w|#ٹgk!?]y\y]Ib->vݰ:hɊᇿ>6TvѸv?;?ӿzۧu?~nӎMgWyO>7yW? ~u͂뻅>W ~a-|!gOY<ѯRv9&o;7Y;^6~ϙ_3ɱ_%ɹ_jR<ۥ*I۟JIϿ^Ybe/UϚ_"/:k^qF7^} 4?<;dOq>:km^lN8^<ꊜhGxI'{}d|{"dd{}tV>:o'{}tx1-?:&{}dN8ޟ#d^77&{}tMd^o7gm%d˛^7룓>noMd^7X|= =1l^8룓>NpG'{}d^Ox|B{ޟ '{}tN8^q>:k$l>nqGa8{t>}|dNx^񏓽>zw{xл^k=(xBaǵ%{ z=]NzdgLzEeHGc{t=zd#랮דdGHR虞Lǻz^CiҲz%Gɺdt{t=/z^#%xw{xл^&:'{}=^ KRd^8'{}t?Nd^8xz=^xhN^񏓽>:'{}tWԂ6=>:3=^xB񏓽>:/'{}dN^񏓽>:'{mwB{zo\mf{}t?Nd񏓽>:'{}t?N=^xB{~zdN^񏓽>:'{}dQWٯ^K{K^8'{}t?Nd^8룓>/]KxzdN^񏓽>:/'{}dNu?{t=/]^8룓>qG'{}dN^gdKxz=^ 񏓽>:Zxл?5n帒z%ky=^ KF^ѓzw3]o${-LzrB]^R=^*\f{~\W\ r.kvG^څznW<{zo+BZ\+W߅nzN5#]/WBRy=^*KFr)/nb^^bл z^d%BRTx)/z^d%B'{-:k^k.+|x</Rs/tך|\+5B'{:k^xBRy=^*-B'{m:k^[}\ x)/?.w^{}\ z_d=B'{WxBRwoNs/tמ}^\ ^?Z{Txʝ}޹:}޹:}ez_dKx</ez_d#^GN:r/tב}3=^*KF:^g}\ uz_=^=^ Kez_zzz_^}w{G#Bt\ Kx)/#BZ\Gnzzzz_^}w{Kx)/3BZ\ =r/Lzz_螮}w{Kx>/+BZ\ r/H3]/}{HR=^|w{%BZKՒ}\ z_dZ{TKNZr/tג}\5B'{:R=^=^ZWkNZs/tך}\ z_}=^ Kx)ߨz_mW[Nr/tז}\ Kx>/z_d=B'{:ks/tמ}x>/s/tמ}^\ ^\w{z}޹:}^GN:r/t?{Tx^GN:r/tב}uz_d#B'{}=^ KFd3^gN:s/tי}??{Tgzvz_^ۑ}=]/Bz-Kx=/#Bڎ\ }z_^ۙ}w{mg3Bt{4&7ڙ}g^3Bt\ }z_^ە}x)/?{~]zz_虮}=]/Bzz/}z_^[^8kVr/tג}z_=^jKx\ z_:k^kN^k?{zZ^kNZs/tך}z_d-B'{ BzZ+)ZNroz:k^[}xײs/tמ}k_x^׾/F}Az-(+=^jϣz_dw/V}zk_^s/t/b}!{-/Fsݹ׾Ƚ/v}{k_^ׂYR zo}~q| k_$_B׾`E///D_:^/}}k_h_bzZ}G{ԏ\ k?r}_|_׿///J{ԏ\ k?r}_|_׿/wdK=Dnz_^%w{?˖Zy)^$eQ7I.$[(${_oWRWy/nIRۥD|^9?_-I^K{;T^9K?s)sIR۟W+׋c{zMrnKJ=)ؑ{)WR|;Iʶz5oOR/WRz-rne.ymFR%(sI^9?_oWFw䝌No"ɑNLF'ʜҔw3enͷЦ{5Bmϔg^Kg|-]Nhz$4en=2[ȚoMh|w^Ihܺ&s4enݒA2tO׻M2fɦSֹg\Zxɔu2>Sֹg:Lo:k>S#K̭gLK\3ed=L[z)s\3en}7K7z)s\3edw2>S%K̭kLo:}̭sϔu2>SN*|{d|{~Ô\3ed#L[z)s\3e=^2e=a|^g2>SN:sϔu2Sd:LozWSՔw{5en}̭sϔuK)s\3en}7rϔ}̭sϔ%S%SՔG^2>Szg\Zxɔu2>Sֹg:L[z)Mt%S37LK\3en}7z)s\3enRdܺxɔ\3en}̥k2tך}̭KL[/2>SNZsϔu2>S-LozLozo2tז}7z)s\3en}̭gLoϷz)s\3en}̭sϔ\3en}xɔu2>SNzz)s\3en}7K7K7>Sֹg|^G2>SWL[/2tב}̭sϔu2tב}̥EozLo:>SN:sϔu2>SwLozLozWSՔw{5en}̭sϔuK)s%SՔt\3e.}z)s\3e鞮WRdܺxɔu2>Szg:LK_g|{d|{~ÔG^2>Szg:L[/2.g|ӻ2tג}̭sϔu2/2/2tג}7z)s\3en}̭kLozLo:k>Sֹg:Lo:k>SWL[0ed-L[z)s\3en}z)siQ%SNs}y k_|^׾/Hϔxɔu2s}z k_^׾E/dϔxɔ)s\k_)M'{׾/ϔxɔ)M'{׾H/}|k_8)s3K7uz)s\k_X_׾Ⱦ/}}̭gLS2ṋs}_|_׿2Sd:L[z_׿/}_|)M)s\3en}{'5(UދAS,?ɇ|ϺZMT~Lו0eC~uR/NehnZCwuCO<(:Eׁ.ʼ描):E2XRhwRoa2띔y\#^Kʼ`c<`uz'e^WcʼNwRu?C5F2o;)ސSz'e]'hN2EIyPl8Nʼǔy;I5F3ܺ_Rz'e?|]'z'eNwRm)O+Cw_K<{m';)vc2o;)h\KϏ)~I띔y[>ǔyI ~(vq2fD/N؊EIA%|]'z'e.wRmO>ZKʼx̣r/)VI|LN<(/_R#aytNʼwRm%_?Nɵ)Нzkz'ezR/{\[O*ʼUwRQ^KCe]yXze&WQmb2EI4׫_PQ,_t/HMy~I^'ֻ(~`25Qzez/)x-%epEpσ2ֻ(~`25QLE %Sq:kcʼD띔y?Ὴ2';)h^jaZ)sd> A띔y?I(D(L(T(\(~eޙMeޙNeޙOeޙPezPvDwDw&DwfD (μ(Ě(#eޙZe/;k;kʼ3&ʼ3&ʼ3&ʼ3&ʼ;l;l;l;l{*ʼ3&ʼ3&ʼ3&ʼ3&<4>ʼ3&ʼ3&ʼWk;3n;Sn;sn;n{*ʼ3&ʼ3&ʼ3&ʼ3&Nyg>Ny蛺zX;q;q;qC;q'Nʼwk;q;q;q;q}^eޙeޙeޙeǔyg>Nyg>Nyg>Nyg>NyῊ2lj2lj2lj2lj2(|(|(>2lj2lj2lj2lj2+)|(|(|(|(Ny_EwDwDG}Q\3'ʼ3'ʼ3gjʜ8SǙ2g>Δ9q̙3e|)sL3gjʜ8SǙ2?2g>Δ9q̙3e|))sL3gʜ8SǙ2?Ὶ2g>Δ9q̙3e|))sL3gʜ8SǙ2࿚2g>Δ9q/k̙3e|)sL3gjʜ8SǙ2g>Δ9q/,sw9;|k,sm9>6Ԝm2 YX,sw9;|Ԝm2ze|)sLW̙3e|)sL3gʼ5e|)sL3gʜ8S)sL3gʼ"^3e|)sL3gʜ8S )sL3gʜ8SǙ2o_M3gʜ8SǙ2g>Δyjʜ8SǙ2g>Δ9q;WSǙ2g>ΔyGfʜ8SǙ2g>Δ9q;WSǙ2g>Δ9q̙3e~5e|)sL3gʜ8S7WSǙ2g>Δx͔9q̙3e|)sL_M3gʜ8SǙ2g>Δjʜ8SǙ2g>Δ9qWSǙ2g>Δ9q̙3e>࿚2g>Δ9qe~3eRX/eRX/e׍2z)s2_N(s|ޔ9Kc6띔y|'uK8Q8Q@&|0'|_IDDGu-z`>N`>N`>N`>Ny4 DDDD(|(|(|(|(qe>e>ez}qqqq U`>N`>N`>N`>N࿊2lj2lj2lj2lj2SqEDDD (|(|(GxM`>N`>N`>N`>Nylk<}8Q8Q8Q8Qe>e>e>e>e^|(|(Q2lj2lj2lj2lj2(|(|(|(|(Ha2lj2lj2lj2 (|(|(|(|(࿊2lj2lj2t}qqqqG*|0'|0'|0'|0'|tqqqq5}Q7\띔`>NDDG%>z`>N`>N9hS8Q8Q8Q8Q٨N|0'|0'|0'|_EDDDDU`>N`>Ny2lj2lj2lj2lj2(|(|(|(|(1Ὴ2lj2lj2lj2lj26||(|(|(|(1Ὴ2lj2lj2F`>N`>Nd>Nd>Ny:u2'|2'|2'|2'|_EODODODOD(|(|(y"^e>e>e>e>e>Ok'q'q'q'q d>Nd>Nd>Nd>Ny<4}8Q8Q8Q8Q*|2'|2'Nd>Nd>Nd>NyI}zzd>Nd>Nd>N,_EODODODODG؅σ2lj2lj2(|(Qlj2lj2GYc|2'|2'|2'|2'<;uK8Q8Q8Q8Qe>e>e>e>e>+WQ8Q8Q'uK8Q8Q8Q8Qe>e>e>e>ec|2'|2'|2'|2'e>e>;5Q8Q8Q8Q8QyP8Q8Q8Q8Q*|2'|2'|2'|2'|_EODODGI}zX'q'q'q@&|2'|2'|2'|2'<y&q'q'qȔyyR8Q8Q8Q8Qse>e>ezP/{e>Nd>Nd>Nd>NyyyP8Q8Q8Q8Qse>e>#e'0^BX_r0G|u Bx~A1X̗ԏ2GyhwPKߕ8 voy{Q&z_$Bx*4>(XCc2_zP}iwPI=p=wp|]U2_X`|)hzz̗\j+X |雺ͥ+>}A/T_2_z/w;Ⱦqk5RoA}ץaȡA/ZP`>,VZ}z'e67|iV̗f.ǔy2_z/F~L^띔y9#ezkC2_$Cc|my|2G|i {e>y_e͋07_m5o/QM7u8GQ|}TO`|U.]m"yhC7omJ7Ka}y9oڞ}exi桋tXbayh;ysśOA͕ouͧޯͧyxgFɤk)|(Q/țO+ěGP&~?x󨿁Go>ߓ7-śGqPw37:/<77ț#śqY'M8yoQ=Wy3D뉼0?yŸgIϳx%|xQɇ7W?xX&;o>Xo>ěěyX;om;o>xxv|ɛ|&ys7|_7Wxq"o>R6|:5}IjOSͫspO54\7y,M5Ϧ7oM5S;y{M59候O5glhxGM5o5՜AO5g}SGM59zr ~USſjyqAɼ]ȷiy!=ռi9MO5ɂjc =՜eO5g~SOϚj~'TsGxISSzyyN98}k9[T<|M5?׋7gk|oys75śO>O2oݼNޜy7ɛ< 7ś|7io7!zoɃ7?+ޜys7\鯚7O,޼oyě7!޼''oN~g9/o޿xś/ěo.{oyB{o.o^ć7/ɛ/cO)Bcoě3Em\xO7qPwoA~γo~o~7g<`~*Z93u^xs>mҞɛI{#oaW`} yyc[ycxzxLr7oC</y܏ț77o7oysD޼i$ox>xvț|"h7oɛGV&]ěG^yzxv>'J3ͱ}̛GQ< oPGy7oě7o*޼[yҺu4ěNy?H<ھϊ7ogoP{xs$޼5ux|xoě7{+oyț7ֳś*^yhuޟx;'b75x]zw=]77uKσys?O~}7E'ysͽț{7z"oF둼+ysg^mm/mOon{$on{%on{&on{'o Oț{!o+ț{#oKOɛ{%okɛ{'oys/ț}B~7g#o!ys/ɛ}J[~7'on'ț ongěo.H%ěo.L5ěo.PE'śo.TUgśo.Xy3>u/rhț_o.^}|:ϗB͛yt/xCWě+oxG!抗ě+oxK1ě+oxOAś+oxSQWś+oxWa抗ś+ox[qś+ox_͕/o|xsě+!\ g7WC!͕/o|xs[ě+#\7WGA͕/o|xsě+%\*g7WKa͕/o|xsě+'\:7WO͕/o|xsś+)\Jg7WS͕/o|xs[ś++\Z7WS͙Ts=՜dO5?ħs9ўj$4՜lO5gS j9jAS/j4՜zO5g>S͙Ts<ռwU? ~~@^SeϚjzM5j._Sx9)jz7]S͛ǩ5՜O5g=SY/TsSjzxyN5wy9ajn>SYOT!SYTs붩{Sw\B'7?ăwě<xt:?E9Y/5ozyK6yK<:ysk͛k޼'ozys֋͛l\g7ɛ^m޼g:xs/!ޜr欧7gݼ9 ]<6ys͛oϓ7@9 ̛@ě_AěA!ě_B)67o~Q77gys7gys7gysg#ޜ*O7//_~ƼyOc޼?'o~Z_cޜ>ş7g3,3L3>K3MMܰ5ys_TKr77M8>kě7_D/e^?yv#웑s`W24zm'~cCa;s'gyGy=c):'kJ]:]/t]waק{`~C0Y]/B6)ľ+m k^#9/[,cvPG*HĕRv`a!gx /v'lAu@}f bׁwh3 ?®lO :eVf[ul] T6ߋ90bקyaw^ku~C [K|j4 v+_uU'9 W^ʠ E?^uM㽶堙8f{mA+K¶tlA^ɏ렋0rB+堃p+ ڧA v]CL|a׋ϺX |1O>4ca}p |8kHcmlcO.>i}j+||]cцqz80Ω1h@7c/Y}]X(^1߷6ʲ|Ww71ma15}kw[c1Wc1^1߷bjKløY._t|w94 {^4fmr#57ahϓc~VYWcXg&haܧma9coa}WahøeO2|]uI1+6 И[>|:cƶ7_'Nİy=ʋa7K1߃eK]cy쿰^Fc-cӘ1qw8 ц4jyl.40ƺst=aKcцe 0tl|1߳c/ɱXS>t%0^aga_$z s&v=Uص#v,1pĮױloE: ?P6ǂ^vqcR]#^i|`'b["}-vJHۏ <5v:4ƚ~MvHc=]7zu\iw_mu]Նv°o 땦HOai{`ס|]mĮ-PLc8]Bc ]G=v]v)N J>q bס0ka4>0&`+?LtbRC .'Į#͏] v]}]L@:41cMU20!`׋ذи>|]2CQv0f}pR Mya,_]XՆ¬/\ol7o%v].aC^mK~VFa׋e^muaKOv4Ks1D–]DŽ^(]]/(iL3k-aKoҕ:uwjx>'/.8h^Pw<`m7XWzރzz]X ۽}]/zڰ7zz^zkN{\a[zi&{Ҵ׺aׯ}^w^u^ߨ;¬O7Ĵ'XbkiQ&X6#vA=q=<`aGucîafvcޯ]w/ 3'vYv+'NH5⏱kar®;]MDu?5vu?]+/a] vͶ cgmƮ5Yͱ®o&v6ocNŮ^طS16_uzv]5vuc[!6-hl9k]s̙k>Q>m>46RĮ+ ?]mLu°Q†]Wzs"v]?]׮ϳާ1Į6'$v]X]W ļ]Wv]pWZVoz Fv]/FªQlve;#cוc ]WbQ®1v]8QupԶ)hl929W.N'v].[O0v]$v]:vb-~Q% .M4}J.n]~-0_.캰EEuaĮKv]r.W]&vv|a֫>q$k% .B]3®# xR5.–]aĮ/ p쓰zkj,8}P&1Ebח0[bz5w %GzߥĮ/®Ív Ҙ[b-Į[cQ4ƗEC님K' v}qlKNJm`ח0?bAv} ;'v}>$j'4U56% %̌1®/v}U%v}^&q`חǒ<U5u 1>bh 91v}i,;-®";Y#1v%v}a"% U4fuh|ű®}?'º]{=4fص8]_/v}q,Kc]_r]_ ؖ-xb;]_,]_]_D]_-cW6dxĮ :#\uWc*]_v} &v}i,:l`-صgbחvbO":y`?Ʈ/]Sxv},mbE1r1߅^aE<.?v]4&u!&(캰+0_.#&v]tL R=. .:fu1 Į[bQ&aEb׈]~uĮއĮ9 .v]8fUuXTaE2}.:uO{6=aו.jl.z߁]סv]Ƭ]WadĮ1nGƮ14&c-qw1 'hwF1ߍ|7c8fYi̷YӘok11ߍF1\ݦ0p||cNc; 5 ;}2jrwr,LcD[1]c9k2|w5oaANY֘[bWiq1ch4.+cuL|UX5YssMDcV[c9@=~9{Lcǥ8fy775;nU?1Qq}r9{L-ogMc/a}i6|a||ci7AQcu  cu]׫wXybׇƬ>!ص® >®Uv}a̧]3O$#2Ҏ]G٨Q7%Z$v-!v-SĮ/懄]+7v}3vM51eb ´]w>a.9cv]ObĮEcƛ4b?&v]v]~]W+Ail6vrn:Ɓuc|"Zǔ n?V>^u){5&Uc5'U JmI]cƁ]#M1vyl[c]{&v}Wa& a7C®'v=~Jzvv=tAU`=Q=Wv=lDŽ]O$:jXEZ2>®#M iG#`H+c#Hx"-Xa?R 4n/G"vi9 _6p86u<תNbב/^cîWZ XJE оHCqLEZ oiaב򕸌>*O:2kxc4hVB76Sl6:1jZ ZV˓_2{<rf/J; 3X3tNQΘ\h8_.,ys e% 9:<՘/وuJnIsY;?6 @ͼ r9llIV=H p|u $Aw'), ҮD7 [;bG{ >sēiv p$ _ǖq kcX@#x/G{"  Fsq xވ O&OxAxs`A'B,C LLF? ]y@.0 po۩A] 76* nOLkWc@|w8ɯ @/@#O嗛@59xyw|(OJ͟/@a&O|z0]8Oy5v8.__k7(S@3+ǂ@c_oxp5q<78o0/ p,;xײ"Dz8*</xM԰pP;!)f J, cHNf+¿S#Γ(*_ ; <"ߩ૗ ~{N!s@~cQ\ա9?%;4Uwh0`ߡ`}[[WJpW|JB=gM;D ;=/rBwҽcmqH-Bj ?{=\*z^w;yR.^E($zo@"g&uΫh4tUj;PUs<$8ixgוWg2$;ӓlI!;i3/ yUmϵMቀ]XҼǶ6~T5ƖcO{ɧ?&uW1dhlMrqQϿ#&c56Y \x&hlry>\4fczWˀE=_vM 96{w1y\?X/>ϣ֋azG=#мK]ﮪa{Ej#~w4Nnh2EIN4.,P:k*.Jи;EKwU'qy}~ ~{/y}y}7~_wu}ߕǨk=T~]Ow~]Ǩk6x{1겇c7^6{juw]o$z$]+ﺞI~N򻮇uw]o%z,]kﺞK~^uw]o&z4]׫ﺞM~n򻮇uw]o'z<]ﺞO~~ ~' ~G ~g ~ ~ ~ ~ ~!~'!~G!~g!~!~!~!~!~"~!'"~#G"~%g"~'"~)j"f+һj"F-j"&/j#1rj#2Rj=#42j[#6x!몙a j#6=j#?j$@bj$BBj<$D"jZ$Fjx$vHj$VJ¹j$6Lj$N○:PRcptc)\US*\UC+y\U3,i\U#-Y\U.I\U/9\U/)\U0\U1 \vjX&vfjv&}kX ު譚Iުݪ}حݺحÉݺ{حˉݺحӉݺ{حۉݺحݺ{حݺحݺ{حݺحbݚ. vkحbݚn vkحb'ݚ vkح b7ݚ vkحbGݚ.!vkحbWݚn!vkحbgݚ!vkحbwݚ!vkح bݚ."vkح$bn"vkح(b&"vkح,b"vkح0b&ƈ(#vkތحq4bՈf#vk֍حQ8b&#vkΎح1> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 63 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./polynomials_files/figure-latex/unnamed-chunk-1-3.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 76 0 R /BBox [0 0 615 428] /Resources << /XObject << /Im1 77 0 R >>/ProcSet [ /PDF ] >> /Length 36 /Filter /FlateDecode >> stream x+2T0BC]]C \.}\C|@.Zv endstream endobj 77 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./polynomials_files/figure-latex/unnamed-chunk-1-3.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 78 0 R /BBox [ 0 0 648 504] /Resources << /ProcSet [/PDF/Text] /Font << /F2 79 0 R >> /ExtGState << >> /ColorSpace << /sRGB 80 0 R >> >> /Length 30132 /Filter /FlateDecode >> stream xML)j)-tJa{BJj,oF\?yF ZhfBdI2~_߿W߿5־z_fϯ?qÿ_ٿ?u}_-_}_8p_?_W?/絮_:?wW?~˯t?Osy"?P|_ׯѾڌʟE_??x_oǥ_}oǵ_o[K;OZd=Z-n ~ޟ޳r;|^[5uo7ۯkK=u3jkߓzlw8q+ת\?{[ak->o>!? ky8f>??/s1Xe~}GWUW}a?|?7/?|~;~K;G!O8.+֔WY ¸=]#,G0.(W3|>'lq Q3|O;~+:T_UMҡfwƗ'ápP+CzLO: GjzTS\3j0 0ȰƇ|p+:T^lqzpP=>>ҡz爏0épP+R𹲩p)|+ [ sPyѡzWuz> C}E]ԡf2  gFY3f)׻onQ1݋P|8am {`qޝS{U8t5>ԡzwf#}tC\yޙ.­0]?+0]yޝ u;]-ޘ6M[+;];Wc8#Y2[d{j9xߎuïV]}O|_c#V]|1#6q펗t0x׌{òG~s]p#{'ގw`j4>qwplSd뿇Fd;9 xjL6_^O}=x}[˥qfCb)^:T =7 s=(o:Aq睱yb(~@#}i?Fj=X[<ܤt<]to8ވ52(ʸ?\U_sS?oU77u:'naxly1}OZ bqoUuqxOߺs-^OozzxTfxFGAy>+?~Ŭ$8?9^?/W%?^4^W+:^O߻Kij;wƺ>ƚ~ߥ4Q8\a8?s۪t5|~f]?K?rz?{e<=Z9k8ִ~&9^1^a3xq.M]#F9^ۥk1^#?sݪgN2ϜDxyNq`#~.<<3}Nc>qNbg]'^: ]Ο7 s]́ts.{?3qxX9^c:wvk>{?xyb]>~Whg39xxg \tFX<W9kSx]4^_=4"ttO m_[[?8ޗ?x_zb]Fy~kn_oȌ̗o/Oߛ5-kn_̏cK̏})8ޗX̏}_|7Ǘ?KE݈X:_:̏o/OȌ݈}_73#7#78xxSǫ:נ9^:D8fND#n]?[nayg~Kz-SK?XE݈cFBDĺ9}(7戋?s>EnK: ׿s>A9-+'ĺhq^4-8kގcS8xUra&c?F"ΟuO'v׿5^>KnCnn׮8k׫hvw#u]_qGtw#5߭87zG54^/oS#:4^rsE翕{9ߍ8|ޙXd9߭weF,o鱣xx]W.xxCrvOOׯ|_Kn/m)_2P\)*#S&6S5*KcmPWo]|_tE>):^w{Q/vq/E'dx .w{Uo]|_xx9UWF1^׭n=*߷n_ #nW!tZQK(X_-ӔyUWoݚ|_'ozjE_ear<*Y3t"V*"IυJ)mFSݥ#ɱUY<UTMOeAU/7="ySYMPSPIy| o$e^/WKG(잉(糔yUʯ)갏 [GSTmcew=2YN_(z ,ea#),msX| e]2%/eOe'J[O=Qz m @o.O!/O!2Qele=Eo̷(,<|je]2 }TNvU*8|{e]e2VY(2̷(*FYov=25, |e@%}TU(-,PY47*|{e/yJPK`e6j]U' jeʆ2_2_(]+9N:aV2__U' le?+PRQU(uNPrU,W-|2_VT(UzB/gP{W +,|Y̗\P e\U2_`e\Ń2gUeQ*>|Y!̗P欒|9 2W2(*/9F(2_2gU ePV櫠Uuª|n̗PY`/(uȥ̗Qr|ݜOU'|:ae.e+uq}:YYFj2-e>PU(XuV (sVQoe>|r2JFOWɊɢɺBKOvi2V~(9^ULW̧!|2rGOWţ̧PU(92BO+(q)ie2]u9N:wIx2V(ɮ,V]\̧W Qӫ(s(s(Ft$|Zɠ̧5|ˎ~eeNe>]2VC(yTNu|V>W e>QQV泠ƥg̽iQU(NՉU[u"}N>:qeNU |VVӻ(mule>]2e>oԷN\52Ee>/ԹNPV%9UQ(󉒴2κ̧Qӫ:(sPie>ED~:j e>2 e>U9Uu(󁲵2Je>PVṪw}AcD.2(sQë(sQë(P:^uESgQë(31|%^|xe>PU(1Qު:^@WU@dXa̩EbWɰBS%22 X?PU,(Qܪ:r`e>PR'Q:`e>\Ņ2 ŮPRû̇(|ˈyW`+j2W+.(V5ke>PVC@ZԮ@Z2e>K |}e> |xA(7|e>\%2D(?8 [|xWpe>>2 EGQ:Ee>2Z@WQ:^9Don2@PUoe>XWṁKPFqdxe>\%2G +9 e>n(PQ:APBd02^AUJO[U']̇cQ(?"2 e>\U2̗̇PD`>ee>ص|\vUhe>.N2j\U'ûhSﺁ2~Eҁ2GvzE(s rFO̭2ߨ{+seQVre]L2wQ^;2wQ%(sT-|̽Q^?G{(swwu9|ޭ]%xw<ܻeQV^8Y̝82(u+sW5eQ(s2wV(sT4|̽rG{ţ?Im[{~*m+[([ ([*\jGQ'?*syWxUU)sGxyQVx0^2=^}2?+}2?7+}2?W+}2?w+3x2?7+3x2?w+s?2? +s?2?+s?2?++s?2?;+s?2?K+s?2?[+s?2?k+s?2?{+<2? +<2?ϛqz"yde~WVyfe~wVyhe~Vy2y2y2~SF[{}G(]!eQ7+>(sOeߔW2Q2g ߧ2Q7 kGQ~;GTzaW2G)Q(se٣ JG}(sOeZDQ~_?G}(se^Q7BXm a]X߰ZoX׳㵳{}C e^QV^O9-GWԺk2zQne^ͮVV me̽u׫2G-Q(se̽vyC[{=(se̽w2zQ۬GPD+2(zza=RgK2zQURRעYEދ2g=e~v2g=ez3"aez5ʜl9(sQ欗YOGގ2g=e~v2g=ez?ʜ|ʜ|ʜ|ʜ|ʜ|ʜ|ʜ|`eN>e~vq2'2'߂2'2?4XA]. VPg+sQ(˂9,9.9̝/;ʜ]Pηe~O;'<~2w>( }}x7xj2w(s/2QV·eQ7*ʜ]Pe|Q7e|Qee^PV7e|QWe^}Q(ce|Q<Q2_e2wQ殇92GCk|uy>B[me^uT_$e2wQG:JG(s;ezFQ^?8G}(JW(d+󣎭̩CS/2 e~9h(sPԳ̏2eNʜz:9v(sP̏2eN= (X+s Q̏b2^eN=#ʜzG9(J̩<ʼĭ]yyC}[Gw]2w=Q殗=|]o{q2wQ=ã]|D[Q7>G^(J3k 9 gG(seή(se9}{̩GS/2eN9ʜzt9(sQԻ̩GS/2eN=ʜz|9(sQ(sO2(sπ2;(sO2[(sρ2{ (sO2Ǜ((s ς2ǻ0(s O2۠8(sσ2@(sO2H(sde~PVKYOee~XwMl:vԫ~{^=vu_yU^fe~ !nVGY ge~\5gǮ H?oe~_Gu9ݠaVGZhe~̢!VGTZ'je~QVZje~VZke~ѵVZke~讕V/2]ˆ_U,c$dY}/x{=|˥^M-ebk)bKP}H\{|=߿s'>Oee(s!yjtn:D(gBH@>ls,9P~S)'ZzC3,h>|ݤd`v/hH߬Ky;R扤C4W,Y P] \G R8|nIJLggX0ofRW9y8<:2'4="GfwfQyYa( 1ӌc1sӃ(BuX1m2PN.Ԛ{_"u/sfA2ie~y/U9彦PWEro~27^A({5/2&j^ʜ8Z{)kUur(pUUur_ie~{oM/y+5yV78:W^F(^VGFYƶ2=B|VD{ko}2A_P޺VBK:)Q+8~?U£̋(Yʼ{ʼʼ'ʼxVye^~e^wʼ8 2/F+󂊴2/J+Bok+B/j+Bh+ʼlzE/u28{fe*˜2w2/>U yA9je^-^~^~9̛?_z7+Ezwzyw/˜^2>e]?z?̥nexz{y{[u^SWO/stz yke޼7:ʼ](o)2o7\U'ʼ?{SJ_Fx>NNb+VQ:i^:70ʼ}2oW+^l(XTE7OP{ݡ̛C7?Q ޽'޽'ܽzzesO/szܽKO/s2yH/sWŞ^%^rA/s2b2|߬饉2_̻P^Uf(D(szM~ѻQʼkyaeNF9Q^D[eNDykeNCygW+Q{Y{2-2 ʼ3_2,yG["WIfeQV]u齇2ދeN/=y(vUA/tUtƋy~keNo;yg+QCwz[wM2{eJ\ʜq(szš;;ʼoz2j̩GS2jekeݫe=~Q׺*,|[$+2|x=WQYVB}W:Oe>nx|*sz>ʜ^gG~VuqmՉ2^GP%~QyP枯e^P݅NFWQJeQ^䝪NB{eN/Z9(̫{Q(J}:(CW+MX2TuJ:;|ZWŏ2v+2(s/ʜ޴(JoIUCӫeQ(d9kQmqy(sz٢^~2ooo͟/Y۫ʋ YЭ=>ϧ]t9sQ~PUne>㿢k(s+~Q Une*2UeUUneV w+(sbGgle~b+x8^7߉5zCʜCyOle2E7U*fWyaʜʜ^(s9ʜ3ʜ;ʜ2g%eP*2g9eF3Qoy7V?ʜ^(sG(sW(svi@ӫePzTʜ^(svu@ߔyMߔ2^GQ9GߔyMߔye2W;ʜ'G(sv@;|{Me+J^(s:ʜ^(B®RP(s:ʜު(b2/" 1PB|2~B|zK3C@޵V槷p|+>+s-s|e>Ede~Tpʜ.|ܨVUd>,je>\2Uy?QhVvS+/F.gW]!. 5vҴ2?|\oos ]!}V({|\(ͮ~XV*s?ܽŏ2yzS.2?ͭVo\U~Ue̫c+s_Q̥XQNG[eNu9QnGeNw9QG/z[{eNoz9QVV2\QMne>KNoFOz[OTD[7Qne^fGQVMGj(s=EG(|2wUQ%ne>~Sne>%ne*ݣ̭Ǝ2ẇ(]P7w{eNeyMwye|(Nh+ޭ#n]{7yg=껳de;\酮|_WyJ+]Ն2޶2geޝOBw-e22w}ʕ u|_ot(>ʼ7`e=Gw+SyoVV*e=GwQ^Ve۫Η9(<ʼʼ{e%oeޭP欷̻(yB*Wʼ{2(c+²22(e+,ywʼe+ \$y#t<)s(sP(^;ʼW}K+=keݛ e2c"Xʼ;ߏ2c>>c>x}{cO7V>Nle~>+Y|Vce+ϕ;_+2XwYwz [wT>[ﻕVgXOCG3^3^(Nz}wyU ʜʜʼJeIAדB?)Ew̹;Jʼ ʼ7z;| Xwgy̻P(s(^y(222.Cwz#[wv!2g2-eeޭP >;c|ʜʼ+n+n27@yg+Noc+s(N/c+sy|e]leΧ<ʼ뀕9(>}2i2O>wP*;><ޟ̻{ɡW}oQ/`eEʼx>YNO+sֿQ欷ɧO.-*^gWiRϮu]\Ϯқ8@[QRQzȯ5P (z'@Z >_wp}$<|TwcxoG|x׶̏2Pw:/9 ^v9e~j )Uz{2/2?j+guoQz{wz6eyCv*N/Nr2,˜^22V2V2>uJ/so2_(oW}ӽ?QӻF' |n˼PGߨw+J eeNmyGԸ9*eNoiyM}@{}(Ft+r2U27e:e2V(st9sQ_P^?P%~5KUoʼu2"ae/ze[{Wo(Q2?Jen_pyxB;zyM;9Q~~eQVFOz[3P?9~Q(2~-ei8*IRvoǩV.eiK}ߥ3)]V SWX|y u>&T^}`/zA5(Lkގ2o-eJ[ʼʼ zKAs)uy}(f2o^R^>yweo{AK2gez<փcUsy2˟9d9Peή(a2gWy_WSO2^ e.2yW9]zޱڸ쾟e>\T3Uszlzn>1czzǪuIĢw5t4/pXѯ/# 2tE|lD#zjD #.ޑgۉoR6w;m2N|{}ۏx˷oߦϊK~R, Xz~ṊۉO/i'>s;0ȻpEcþÏя쎧~8 Ovl~4m'Cr;nvMN{/ﮊr;~Ny)?p`σFr=y{aP] gAX~u;N ī_ i'^ioA񋫡w> (AngA;&*zGFC( J zWƶwN>wN.KA/wL'qN܊ۍnFi~0\v~\@]?.vz8M7h+| O/*>ۉ %F;xW;距v{;/x n'N;]Cu >#@o^āދU}r 轜z/7 @BHwxAl~\xk}zO6"0 5cv ?NVCe/Qgx7f;ap;w 6 zv{lO ^NqVvځW+z]:ЛBl?7)z60 z}sM;~ޑOAAh~x{lw@o }5&1&D)Ժ nW~ ? Sjk'o;?@<.ww"  v^H:Л7{ 0u 3*(@o'JGzg zszw@wwnz4wsaлy n@fCt6>лUړ z761TwAnz7o_ n;ƫͅ@"ͅ@f >!z7+z.ݼл[oz;z761nUрByr n z7ƛXл]VGs;л]@q~ حF10]٨лn ? @iǭi.]6nzWz1UQ^ \؟W{~~ ?:`wu{*w@g~T'VGu{*77/7Ow ллNЛл]@s~4R7&zn!wz7ڋzn0^ U л /ލލv onO q@F{ZC€޼л9n5nN8hl݀ͅ@F{cCo'@7/@F;fCBKws!$л  @oMsn.z7डwbz5'nXCڀWGs лyFwsb*h ?лu ?7@6h/;~ml~ajݼxnX6^؝u\;c>B7w|L*h*hMߏhϭ}0nnnN8Zл^*h]@9 ?3*`~fc!wya/ߏIޝɆ> z X-q/q6@~.\ݰ !pE@oO{rAv@^|7l$bݽ=/лs4 zzл{;xwzw60Ma9Лp)zE7+)zgޝ7PM3л7 <zBS@o ޝw~zq}w7Z7@o ݅;@0wz%;bO}N|N8H; \w;qK;'vޘn?J;I{BhiRN|s}Åg]ۉOC$ډ]i'8Pv]i'i'>2N;q`+ĝ9>cJGr;Vډwi'N|N|NK;eE;q0ĝ<<<]Hzډ_nL{ۉ|ۉ_nCo^m} g_譿 ^mx}6*xX;qm'7>uo;q}o;v|Hp TzӁ@tsź-BozObCk[;л·? /bQϾHޞ]i^@J ]݆m]hm]} s߇.7gXoQ@oMQ7 o`}~_<zߴwz}@ xn} >|7`~>z}:Лy7@oެYOzf=zЛ 7@oCެYOzf=z Л7=@oփެYOzf= zЛ,7]@oÀެYOzf=zЛ<7}@oެYOzf=z%ЛL7@oCެYOzz,ЛZ7@o{ެY/z fz4Лj7@oֻެY/zfz<Лz7@o #+3;CKS[cks{䃀䋀䓀䛀䣀䫀䳀什ÀˀӀۀ #+3;CKS[cޟo>\7V=}gM>MM>MM>M}e}Лz7@o+gzSM_Co-cЛz7@oAԋ'zSoM Лz_zS>CoiybM=Лz7<@o}zSOM=Лz%7L@oꝀCzSO M=Лz-7\@o꽀ԃzSO M=Лz57l@o݀ρzSoMЛ7~@otmGzSM#ЛzH7@o[zS M'Л;7@oIԛGzS M+ЛzX7@oizS M/Лz`7@oꉁGzS M3Лzh7@oꩁ[zS M7Лzp7@oɁԛGzS}7@ozS^}`7@o<fzߴ67h'N;5i'v^<vŁzk lzWw{E>ᵡ>7wzax7@ q^gC @@oOH@o;P@oO[X@o} -Лy7 3zЀ 57 qz#97~ z<7v z#@7n +zޠD7f iz#ހH7^,C[@o& Fz@o(F Fzj}!Gzk}|᳆Gz|k}lGzWu/~U|ߋ^,eW4Y_չnrj^٬wz7dhyC,n ۛ!ꖰ:̝//ȹs;7_~}wۼsdwnf \[ssyչ:ss*ͱHGV6MչλssA :7w ܹyMGܹyx6ûspչy͓st!;7/7sǸ;7/o˓T:7{ҹ{QйyV8ubsw;+՝V xcB}:A+@ݹ9qL;7;7Gp72ܹ@ݹF] :7qJJwnn)͍w(t"ܜss$.[ 2,_un ۇ} >A/!;zԠw8e@@p;Ý cw{;{ިϕ3)AtVa ~ zrX@WʠwWU~vn^\]Nz;z餬tZVM:1+0k wwU z;zЀ}Zf]= zwnAӶAv'9@v0@Jo'Z>wܠwәנwΧ/BAln~z7Ԡw{-@^~n:{nOQ z7~ zQ/:/+nNk7V3>xA^mлO>7;:;-+Ӡw)٠Wun:+nAdn60dvAw{B ݀xVκ;z  zw*|mл)лUARpwswwW z~ z;qz r/Ѐ͆ ]@鄬f@ή޵ z牀K@Eg%]+~л/kro6kлנwAw12]`a%WӴN˝ c zV.zw. 蝀V靶 X@/;z41~M`t$wwvI'NIG x1e^@N:N @? ^{ȋW^b%|tvf@3etntn^t^ ם }:7:Q;W sw>^Of'Nfw::tn3)Ifw8+d wrwӹ{'wo9;Iܽs|p; 6} zKA?;3;A _ @otvA/o ;`W 7t5^v:9djK@/`l۫^ Κ z{7WuWvLz U_u[ 0(x4~^܀-/;p@۟ zMz^W@w< z' z'^w< z MUAol!M@@oY%6m/9 m9Z 6 m Z `%r9^:ƻAoe6|?1mGg<|1=As0=A< zm{eۼ^ mp{5 zЫz/ W gKM zc|*ƏAob%φmzC[@o[\͝2mto^O6A/@/^ fuۀFX^޶vnnt5mt5mt^ߠ z/AeP30^tf.lX&P|ޛR l{`z8z z]x@oq'I@oqB@  tv@/v@/&.?Θ^ϧa^@z;٠ z;w V'@u^:zoAp3A盧Az^#w~ z^:z 襳 z _Ы~ڠwx>= z}CV8@/'ިcF3= zHi|ƛAoUKV^wxzÝvt25tN5 0|w3wЩ֠w֠wt;g'njx3N~;cdwpzϠwL:%+7\~zǤ}?Agm1 z|NЋ zՠwйܠwנw z73wlot qW @cfϝy^:mz*7/ͿA"w^\yz HA'蝷NjA|6U'u6x2.`w; T^}m蝷Az-w;oxF @g^_[ϛˆű7 2~<_Iؠw ~_l zUw}@/߀wt:!+7\p j)@p~;>t*7\eJK;\.2A`_zc~+|qҹӹyS*+ Ktn>:7tnvtn~< 0;7 ti0C ֝tnBf:ӹtnߝ}:7>tn.||ݹҹ3ٰ~9z;z!wl zzO'd 5e@4m6͝>z0@o3AotVXC绁 zg?@/G@Al;9AߠwpUot 6譝NU6X0 +[X@ z{t^V2譀V֠7[sn߀b)W~t6 Gx@@op-7(S$|_`>L}ev+K/{|-0,[:i}A/^-0[|Ao18Fjw5ܦ|_)R0fӪO[x~= zmh[!ՠ\_ e[ .i[$k[ -zoϗfX8) zoo@=ޛ_zo@Ag@o/wK }v<z@SL;fgy\u+˔:T}dNHOFݝ~_14'zb_(| zN} zIdwnӹٝtn68-wz#'*ek[=_< m^U[;ܘޱ|0e=;?Q .л~W7<@Ʋƫ@o,f/-9}X_.e:fXF[/ezcYss,2Kՙ72%Uۚ?*ma4|fz-xy-j!S~nz={rVurD7-iETo>lVB6KdVrU#kXbIқ*>ZF6*>\.#]C)F b/}&YGV"?Wy7 }٘xuVF6J{wVdU:|ldws\Y2]^?t"Fvz'xXCȲm#;hJ'#th9~AԤPF6)Ӈ %$#{h#KMedo6m fӚ9d5͜yе2>2Ad0edb}ާ陌i7F6Mi&CM17X=ѓLdz&!XMdd:ʀF\ìW lI/C2m2Fid#VS>ٌ[vc"#ǿwO7 +S5+ټdda&XTϜy|fLl69Yo0oomdR>}M+#{&j#{駍l|u~~}F>ZFF6ƏƣlxmǸ׋ ׂ/~R8k+#tRFNfrٛMmd~⦰OF6h̚lܟڇM8x4ݔ۝ lPD٠uX̙ߘٸڸfuRxVgF`mdY6mȞ&6e&6hTF#[VϺ0̤0svl&Wh meN`Viʧ؛`;x޺4ߧ魍FV~c~vƧlyl#K)F&YFIЯ7g.yΙwYgASd&+Yj06CFvf#;8Fv}|FvF#[hjk#|##˞Y>?,Qsb1~nycdyFvFӍݍv##FM03a#1z6Yq< Lle|cdcIHF68ր.&][وO{˧ jѓM2'#{d,(#k^2|2lP}2=~ld#צin&6#kab;ad>\23Mg3ʤf؊eX/z-O/czkͶ,K5sl13˅>ɼfV~cd38s_ıaed#VSX6﫜F7vɍADs1v`*3yG(kzWCg~^ zF)ghd/,^AًF"ӡ>1ד)F4_98N#{a4QIR#{<0'OPgٓ Fd(F|;vzۡ3?K1/F=r=hdOz{g~j1C1w ~ *`3B#{h1C1z{~ك346雯pg`dzك34[<=á;j`$cdc= jd6zpFPbdA=R#{pHF c=j;=s3L FF>N|.2uߏcLζ'#4zc0ˡٵ43_Ț)Ȯ7#;򟌬3~3ٿ̋F63]/Ő lF#4cdﲍ&5g`\g19#4-Ь] aȮ"#5s]5̓Fvi0#. Fv}1pc[ jCoﱇގCoގCo_,ކގCo,ϓϡ;Fy={=ﻇ޾5 {6v^{=55~4_'7GWgw׃FE#zz=jd^5^Yw l#F#H#z?~oy?zz?zz?zz?z<F6/adF<F63adN<F6/SadV4F6rad^$F6(͑adcfF6Ͱad#nF6 aduF6ad}ٽB 1Al#:Ȇ1El l#%1qJlҡbLj5z+tӡ Չ:VF[)CoC ͨ26ۄ+Co :V>[tCoŷ:Ō?߃ endstream endobj 82 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 85 0 obj << /Length 1477 /Filter /FlateDecode >> stream xZ[o6~gX{Qa@;`0eKbWhL@h Ǡ;nJ@[)hiT&4=8O:eP۟Z7&Ө 0nW6hvM뗵7l4V iapM"+Ô+o3CSǸqoLedy>he̛O[KΤAi>ZuͣȾj%}* Aj&U"$T_ƌxzqsvQcE7;&i>RDbM-@W]0I\!;ܗPj un~Ǚr u pY KG(y(K9+1?fv_JY!E v҃]SxvcVSļa2$3^U.'tHQ:/Hꛐ_$EN(Zqg@[)Ƙmub\Ȫg,Y fJk%#-%X4G9Bs39i ʴsBBmQBsA8Zis1kf (GK)Mͅ>{MM{MbmLWG_WnZ3f+Dqq* ;qߴui޼v'f`Vfh`EK kIW(Z}]d[[ےP"1UA1lZiJ T.۵+i@ȌqA&%l 0Rts+PR B tX4F-ٻvr<Ŧ}%ꨤXZYY%l rc籲v͵>})"Brtϩb]GԊ+'rMt>F4.omwYn=Mnq̈́3u^Jpw$҆a) VËK^*#)˞utŅ($N$;lf:/yomV|1jw4 @Jp fT'vFbGzAmSWY_y C0&hQyRQX_~V{ 䫌Fiꋥg̡Pcd/F1힇eg?h> stream xr6`틜3tmiOMƷ$ef+ %7rKZV$,}0H\%"?͈Ecy=G_Gމ#aB"p$GfӼo$/F(ta1 1Ds܁s,Xt,?;rw:C0%h;H·p  X {(;\Rtr!p 2ҜM Sz_%w;+7#fCPs"L(c w&y0֗]pکp_JD=J嘆K-( or0'KxP!w;s[3;Kȓ9vZ)pgt]')lpléR^T|n8Nͨ?͋JnuѦfV Q*Zuq306M^nW:1YYLKs٬?=J]7K8VLj!gҷ HX EHs;KO%;QDŔ U|Z {2+bDtyf0+~:8%,ӫ|C1wvd$oYza'7'v\l89?b۳VDo? o%$A YW;O7vtҲ3W>5vkV91qH`p *|-`. 4qP`X˻(q3+9Ÿwb}NY2TOdZ7cRUi>)x8֋v_ף],ƭ!ĝ[RJ#ގi$|:.`9v&Mp_e1Esۨ@+q tYG]wK%V{Qe誎4*|5f*l dE{5\4_TYV!cNfzrHγPOC~0 X捤wa2[HBH)l8,N l,RR#5}RBDHx+0 ?/"%֓:~1=wp͖ӱ~ݺ(O4۳yFh#(W՟0=~Ӽ~=l%_  hw,^ز]r䤉~Mm9⛝(#h^2Mt\ߎmTßkxT\`ZM-\EE ;tIӋjhX2NxJVz RuԌh<Э+4YJ8)~H<0GIkbG٩xpr\ZRʲ(`^d^棹Y?̵6)(Qv_ 6FK~ endstream endobj 88 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./polynomials_files/figure-latex/unnamed-chunk-4-1.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 96 0 R /BBox [0 0 615 431] /Resources << /XObject << /Im1 97 0 R >>/ProcSet [ /PDF ] >> /Length 36 /Filter /FlateDecode >> stream x+2T0BC]]CS\.}\C|@.ZI endstream endobj 97 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./polynomials_files/figure-latex/unnamed-chunk-4-1.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 98 0 R /BBox [ 0 0 648 504] /Resources << /ProcSet [/PDF/Text] /Font << /F2 99 0 R >> /ExtGState << >> /ColorSpace << /sRGB 100 0 R >> >> /Length 7337 /Filter /FlateDecode >> stream x;-u+vi^/$q$ EJI Cǀ"YǑ)nRLٜpHoǟ>G={D笏63?Ϗ?~w~O_/<~S4sGYu=kdYpXpU? ו:ٲlk?h;۳lKV~۟m?UQX.x͸>۳V^yϸ3u=]znbu\+smύYgYȚ{ G1/=# YpUo׳Ta20 ؟Wz+ϋYe &YKMYNd'AxW2^Ww v\I:eޓ|-ry+˜mkW h vpB+͖Rq8zY&Oj32x~{}&^A^~Tu,l[F7Ч+Q  5p>P@]=_NyQ1/Y-fASamINl;eiNlEAc7w?+YQqQScm}DgnΥ.va+}Cl-H\Tl{}Ɇ~}Й?eGHt1ڴY(qmf)Yh_CGÜ/Ʃmd9uGCk#SymdHJNQэk#A1ZX}BІ9;NoEH-: gqs8Ĵ(wkqyݾgws)\ZZnkkS6q4b lǶ8GSt?_m0|Ef-5[2cɂ`|Ry,8&{ %Bدd͢uUɊ[f]I[53nR=lKC5l@,K,{ AV/;"W=F%i #;:^ %0du`VǠ%C()4/y63C KV}G~7 c_2pf-p Y߃C.f;J^WIAa|H^o*_M<]sn_@>o+&륷w 3G*[. Wp^оW +7kDemרt22W`Lٻ z_9@%_vå9jfZvkB.oS)Y_\Ju;+Lb>0@'_ UNMc0(ߵ>9djkʞWi8˫[}TvuӐWPަ ]?wy ]>0,\fÆQue(1'6gE?_%N!}!5ys!tN*ئyMAuB~0hɧwU9ȿiW,+n ,p;(mr;k0v8WONUa_\d?l/ X+9W: <uߵ>^ ٿH^6Ύ0@yǻEbzYur[.{99Pa>P??m U]~KN1,ofѱcX,X'8bj[\_|Sqx6klo'.Fo6 [\hEa>Pɲ): 􇝑ah";"Xʟ,/37s" @#< _# A&10KYm3L c1ȜO 7=~a?mN6fH)v|@U}a>r= ]K?Z&9*opM2CzLRyUXWyNJ=0PE[_^+=_T^1y(xʟI`/ܞHLA37BaB6Np'/?z!ltW/r>ЕlVyeWo//gpj/W|@J_^DM _ѥry-a^_qK7zYm*]Vﲾ&'bUXL}vr q4YaRy^F6׽~6i@Yd3חek\dŊ][ x2}Dk՞ -\ zK_Q/\P?=m1C_ ˟LhqaB7mf1C͉Xz 2f XF3J|5^n:`f  [ZCmm\fMf Xksl*?/ t M,n:yC8 52[>(׺LCg5_+_-qV䯁vɞ pkweVRpTƿ` ;S̿_ZsC]/r߆@%z>jpFVy _92x 3wUПnt ?Ăm ޟ/| }ˍn3W[e lKp<Cej|CW s4C/oVy+ʫ@ l˨~+_u_| O11ȭ*d0Fdӈ0b6>dWc XkK_ ݔ+ LSߍ 6avo|vcfvDž9lC7&꿝 IƬfrBOC]Cw6$Xӹr ʁlVh}='`916OpaLöR vƿpZ̅4lSs=_U>Y.X_/`` XzU_ls=_c9>` y 'V p(?nt[5A_/EV{_V0ͫot,$YG$ӟ"lAg0i0lρw'_/`g0(FL-"?/`?/!fKQ8oA˜k|,X`K9}r&7Ty9I.uɉX;iX,d <B_TB^fœ{]@<ƿd@@pyB(߿C>0o1U/aj?٣r7֞/lfjzoJB;S3/7n^*o( a^6'Gw z`oƿy+u3<֟Ʒ>t:`ҷo3\"P6_hy^?ߌ!OPW Gr;..3޹h{^U5_*_\M^z5~W 7Vq {kJ_kI['p ϖlrI^~ٳ(C\/Ïex/W{u.3GgKѶ3-8?n<3_f  !Jgu(N\Y?}Fg'0N ƿ3̿.?e|F['r,:z/(~8~t_Qf/͊c: 63 0W/=3痟Y-Τ|'Mx0Pi.` >Ó}g{Wb0}1+A_qp%}Ieˎs/׈̖\Rv{^fQv1>KN/0Et֑d1):0i|=&])5mdtCJ{.kZ:.@eH5m'#ש4؍9BF,O)uld_9w9_1taL!߲~A.Đ[Y-BCR7CZitU?-,% Iˡ`J˟JDG/)S ӣtbHn1_>%LrV836C[`Iwvi+v=CuC<k^V.-xkK_2[-0-̥h+ίY_9i<'=dFQEl|#4&}n|c6}֓n|Qҽ_~\o# G U·lWooa\oft~b=Ug</ 0M5{Na|KG| _IS{ҍo^Gn|'?M0N#fhhps-{qw7FJ2Suq?eVX *K<j'yblDa*m]_eV::yr}7F bnѩ5om~?l/df ~h5/SF[[[[[[[-}v}v>>>|rrrrrnnnnnn1ggggg|wrrrrrrBnnnnnn>>>>>>>|r}v}v}v[>3(?xߝ?!*X9>{1}*[\ʸʵsRȡsJ~R]^o?:/F> 0`; Ya,EI|=ļuaǽ>&lr/w|~Q|)\g> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 105 0 obj << /Length 128 /Filter /FlateDecode >> stream x3PHW0Pp2AICC S=s# SS#=SKs\B.=cKCCc $&X *kFE2)KTRH!$MXD@(a75 &( endstream endobj 89 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./polynomials_files/figure-latex/unnamed-chunk-4-2.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 107 0 R /BBox [0 0 615 428] /Resources << /XObject << /Im1 108 0 R >>/ProcSet [ /PDF ] >> /Length 36 /Filter /FlateDecode >> stream x+2T0BC]]C \.}\C|@.Zv endstream endobj 108 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./polynomials_files/figure-latex/unnamed-chunk-4-2.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 109 0 R /BBox [ 0 0 648 504] /Resources << /ProcSet [/PDF/Text] /Font << /F2 110 0 R >> /ExtGState << >> /ColorSpace << /sRGB 111 0 R >> >> /Length 7295 /Filter /FlateDecode >> stream x\IeU-9۶-X,/DɡLWHwQC7g<77߾ʫw)ZǻW]/߼~Gx^^_ ؟>"xG_ #S5Xޡ>mK4_8:S޹wF»fQ w+Sp k3_T3JcѠ=+ޟgz)8뫄NK7à w ûEn]6wb&Ej-9J'*qgnr·;6ݲ`NPJ A[咣8 滄EVqN,hF8s Nw.lMA3dĺ&sN>|qK4)'VA㻌3rw&O8Xʅ8c0g+zk3H)qwyCE'%gwL5&nxgX6Q`֞.`P&Upk<0e"H!1N_z?: %e4# bF 9f6s(+Ȧ/zgP^Ѳirqɾ&F6@*f*oUoߤ&~.`c\6m_^LpWI`]nMF_ƻ\xMru@l =vq{;ȗ c:^ Abo F>~#jA]<1l?'/׼O\]Ŝ\߰/Wͱ/C>a)V?+:nv5?{,i<-Ll3?m _>D6 |̚8Fφ]c/[kaľ0? f1wp'`'cA1 oL_ 䟩a֣p+V kj8V$?zPÈY$o|#!;Rqy0b18;??cg. Z|" p"v {>M1`_8__1g䟙_%Ljlk b ɿ~ɿ oow3?3cos;["YO_D* g} Oh 1/fp\73c+>aLZpܴ~]oOMxq m} O?\ٿ 4Nߞ?ֿå'ΧC?D_&k8B?_dQ_>[_9^_rf/"t?ɿ^,K _i[ߙ%_Y_sTӼ@`%e _ ~E2?g`H`G2B[|LY߄x Lс˾H?sbw -{ci;_0ſ MgR$qUq )>K&w#7_?;x Uood/`?G뉂p[  m A퇟߲ @x>P2_ohx'?0C G5k!x >g&*_m71} Y7h5L_u@1Q>J&Kc/tao˔xc=:l4~G}M5my2 -8!&^$a]ߊiB<)?LL ˃a?G'yC<ʋz/RsLWzx 0 >%+~H^\W}n%sJ {$_d-og_6%s$?}4r OҮOᕰ׳/\37ߞF:Ѹ)Mx7װ/a1F~pw]Kp˄.(g7>O6G1is0p@b{OK=0׃>d4Og/@-a ډM|k W:7h|`V;T#x&8nI? vs :%/2/{`/2l_Ŀ5ژC{5߈ W^#ҷQ;Qnk>`?'iLÌ~4lC|C<kߖMi3 [Cg~^ſ棺~7L%&S^?SkMkaȿ7>hOZUZ?2-y"$j*_aR\Hj)qHIjeGEco<ge̾i$ᨁ֟>EA{:||%KJ>̱nLC . ax ]c[W3Nsƃx ^x _9p4OxH8_!Moɯ9_g@~edt#pF۸Ƈx pp #__߲Bk@+Ƌ#<8t$ my0[0WÈ"!G5^`_ & W{#(-I[I[3038J_Xo` >Ѿ?iS`qoh?xK?)7y~o;e<]'_=6Tu 3ypVߖYd>eC9;m+g2x%;[{8eoOs-A5?s-y\ A SZ0-ܬ;gnHΎ?@Ē-O%"׻h9>B:ZHG?Nblyͪϔs]8^Y+2iv0ˑD3I?T J! öt !yHQ}`[85'2ca/ 헗^b#pSr On۳lS?KZ_}&FX9n=A:/C%1%mw _ϊfV$J!J+_j.HJf )cy/(f濜J8529tqL<`_/ߙ IٟBEc|&v9.lAIߒBG a>A)$4߆[)Ay?=ܝ`~#6J[-/h_,.?e(K{ _kcԯTg|7ZſSK$B<^8ӱ"TXT2%LaUt؛__Ke yt$U/GT 2_p6_WſOg5*Ok_|(`i@|/NCW_|b~yq95\3g)kß̏U/{6|~&_ٙQSK^g$>ߚYĿ?d1_3d ?]K7{R e/?/w/5Dٿ"_$<?>Ԑſޗſ/XyDH3ipI]o I6!m?hR[>, xn?.5Ek=S/51ex w#/觚l öMZ_.pw{<_JAhjxk[T%jyO ,{Z3Y_β/og$LV*4kU=UH_=&j/-k%$o/HO_E<`gn֣0ikA ȵ/HsLFưz ZV ȃ䯐Qn*0_֭/|O1:6! y3\%&=,^e 瞯3~}l&xLBPiUք۸}|"$>Xg OHkߖacibOE?*7񙏏-LEYr֫1/yk$.>#~\`30ߘEs``>sqcI~5T3 '/Mqh ?Qu' |VgDoyϸ|g >b>03N\H|BZ3%*W33({ҙ8?:Fv ݪ/*Pzњ.0 1:wj0z T0ǚ)5LWVă/XnM0藓`  ~3MUoA\jOd0zLWlQEHܜ&^_՞?}N zo;6׍~zVW.~zeDT@7?؂nrY97^gл\𔻴%\ݻϾw<׷$ܔv/\V5ls7I⢓x*fqP7]qONA`ϯT2-]ڝ/]~ϸQ?ZOkAlS ң6ATAt zṶ“gTOjQ2ߖ$E4 fZzW_"_W?um:_UHKfF)[[[sssssssnnnnnO2222222222222eeeeeee?wޭ/>ml/,n&yWB||]Ir^בZnҗ>޶ֻWXxwBި_7oum#GBkKh֚zu͏{nHOU_ҹO$dl}`l'Hw٤i. ~ʇGEͫn-Zm i*WX>]w[E1BKz}~[tK^>!Ữ ? Zu wVBzZ^S{2FO|2G0 \n짜I:#:naj[HO^_c)f endstream endobj 113 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 123 0 obj << /Length1 803 /Length2 1190 /Length3 0 /Length 1748 /Filter /FlateDecode >> stream xڍRyTSwSVYayPV% a1(dQc'=ȂAp(AEb*MBbYjɔB4 :R Zy@{ztc;w{Ct,GP8Hq'Gebi2.63$$cggHa H!,ǏDÓOxL#( H^ yR ak-H?sX5h`("k7*yFC2Ű0Y֚7BXzUL$Id؜TXRQp y%GR^2 $Cb@Ѩ^)VZ*. D72 кUH(qį  LÈSʇ!@ SX4Ed `L/Ob%@Lzb㵵>. ^0"C*4.3 I]bLfl.R n,:}UL{JMZgrkHqMK_BF=ȺoAWx+tZs̹qDC!iLYpqZa2zU/t2:U5NnO}Q <}Ip*Wl-&7^DiI|A霼\zhM%)h2r{EUܹ Ʌ_t+.ϢeZD_ŃfgRZm='5xHO~bX#kVt"ɝ}~󊙳MKx>b&:đN-Af%xWjh?|ʭ%izES#STa<`e;TY59v˰2"G8^Bhnq4뷕Ng'3;h2v~1.c+q+Ϸ[//b.b~|` MH?Ts٢M->Ѥ1\8jD}Wm5O;j/L*?bBm./G/"kF4v"zSSo/ N6gϚf~˦F8!U%QڑFnJ&Ø> ; 95bt3>nh󕖴* |8> stream xڴeT۲[pw  Ҹ ݃\#so0cΪUG79!PƉ -#ckc+H'hke `gdd#'r88Ľp1 Cl 0t LJhcjnpsw075s|`鏷 =@``c ں~6C  T((*T䕨?+9:!%e1ZJ SQRWhct0*0.#,!/h'}`ڇ_ fNNv\ ΎNvVS63w:X>@+_q1:̀ 4F@G'Q(?Z!w_bp?G 13pWZ^^`m`n110t2prv%S  'Um?*Ӷ6p8;z7l#[GsG'DḼ;93sd2"Jt#gC'cz'7s)bc,dkmO?duMmMَA(!?"e@'#h1I׬34`b`67~<< \'g?1͍>]g(T` 4cunٿr:[YX)X[_6j?d)?E݀NFf5?b '1~_"?Wcf?cbcc,mT&G0(+) k{`15610a881~L/Oq65&z[7Qr X?Yȝ掖s}@VW`0d0?bL}(M;9}@vff~p;?[QE21}#_Jvgg@@֏ 쬜?3}#dG>n"?G5.Cz;E6_%P&2NnZwCtO?mN szW,ٰ h8gkdR#7QIIRɫ.:ъ-E8OM:yگcmClqʦ LߗNv£Q= 2OQPN RlvUĦ5T=iG|*ʭzTӑ%'u>%<ipT=>-s~q߇Q$-='`1ѪSwm-! fTRwԒ덼{!pOޚFnT]f,iCkz.OKGԮbO?0rs (JH BUw׀ hlUʠa(t ??DZɳi7y 7?- lW %_JrEσRH=p)hX{2R6ذ~N+>NJ1F06XHN'- q23lphJǘY 1, 8,Mx\nEp)vs > ZB)W8>Tg %a Z(X2*eϳ=踥( @X@GUxd0K(hV#<_r+yq(=` 0 sɋ.=ɊLKI @O aLgWS^5bRw LT$4XHpë-[O=|P-92nnC㑽:-;KIc٬Rh}e]_yŲk#u l)4tD TBQQ{\j,S0eS?_IL(=n2 eVyrzTC>A8ϔHe [tcOIrD!SQ5wTyBNolVadJCkі8W7POABu_^Q_G~J-竷RM `f;Bc?7_4_E`DUft| `ɶU Ҭͫ~BIjZQsy( QN~_{ j?TX@%/c;zȬ˗Y®E(.H}-EM[r,H$v.t)Kh 7ۖ = Jfn8W/ⲺG =Z7 d/t{d39+ Fm`-ޞ'aSlRog)GoZ\7S />PWsm9zhyb9aQN,%nJ℃ķRvETs΀,e]u/ |0>BTLD;5H=K{ڗzE2x3P(k_ɢuwTxG_,`֜JEˠx-LFer x7Lj-xfkAm7p[ůC]x=1c^\W/ݏ1l +` x4Q^2aέI0mF(ǘƣJ(`V4Б%?KLZvgҺGGđdڊ3yui)yOxP[y`C-܅rƴճ%$57\ \MaSZcgo~ Lt^.=!Sb*Ѡfư2gkam{XlMɱJk&mkv֎퀍%$ =sVk_6LU@587Me~niJ*+McR!.lDhZV*e( [[aԄ`T~ثB^~Bp7:*^Z1fO)RN"HeJ{ ]AIbwY}ƞ*LYꡑ}D-VC 7R{R) 2g\Ffע5E~|'/U2. z~`$^9<2;&]ر YH }4 U&9gcvP)|)6FsģV{G-t8SUa@H~)OY|GG.zoSqk]3G.W _rҺDMay}5, Xi5fwHɰׁNd $sJkB*WlJIr8♠ 5ym%V@ۊhq޵.%\- -$oǦc- ^Q$ 4n'e%V2sۈ07v|끧v <+v?sm֊O[PUx=}D[GyAE6 6՘+Y{iJ=8+c|19ܡ$b>@&D&6*rBI&98 ѝt r-VmZjɎ_[^ <=WiDa*\؀c=4~h.LRy;ѹ oU">Y@s,׏O>"0+[u0va37F&8cO+oԞoPWc/DG|`bU*@#Q~flO*pUN~W8Ob5s,YWQhz&b!V~) FD?}nOR]:x U-9UZC=o:U^nI ʧ'[c= sLqܧ%@u闁lxz% x%Dz'w(]bgpOX,s3A6mb;̒C7rAHg0O PVe4{X8T?k?'ZNE a"I-nMn:ynUW+ ,k tl Wypb 6tڊ.8"~tKG*ey'UA@t=սQҶnjNBmp Yʅ=̧z5=jVG}x>{rb4kM68{[CDEreGǪL3tyބf{VvN ꨹=,.Nߟ@/UkN| щ\WW 2,ˎBHrv-@4ST#@\ֱRF+$UrXyv٫Wڔ%4U1'$(,iSo(/_^d MQQ VڨAfpJfGK탣G~v{%oV<<5-/|6yz@|C).&-1v|Q08Ը-hǭ2k8ċ˧i%}XgJ:ǢQb*%5H!6oULs *8ω0,#mfu'5vITx &%D}c}i;-e"b(bnOQ7i4/wtwV>+ԻSg4M]V6_ D)AM᭕$BH%_{唕ՉWu&:(h "RV'G-(l3F-h <9T|8R)dގ$pF{EBe޼x1il"o؅'d49 x:47r}&ˏem2M$%GZoNU UҿMD;ǬR s'xPO䠨spܿtHomDW)lЧ|H0A )e=5ȱxO$ 0JW8hNF-iN@P *\rÆ]oQhGbW#u\0# ʍ 9.Tg{}3O̡J7g.ڵZdE y H8^ ʑ-6 [.Kd\}5rMﻶ14Dj\W,B|;l 0 ( ME\t$0+9&K[Uk9y.EPH02\%-T<{%0d}>M>ݟdJ[\_ŷriܒ/<~7W2w cFb#%Eణo4}Abc3V-j܀Զ^oȋ<5צVm^ȪM ԧLVdmNW1hpRIy!d5]5VX(`&~t~g6rL3lkeF:7?F>l?#nN1 jyS1|pte(L)U C%fp8lL=zv4e rȭԲ)$om+ND^  4+?5Ǹ0"W(sSA"N&-k Ϣrױ2N*eJQȌiM- hc&r/)^wMXCrxhw'@_%2A0Ȗb{sdE: j=*jcɬӪ}eNwa7$\B[z%==TZL:z,f'?zژL+x=}7qb[n}bj 9Kϩ.VZ5yE8,v=&*xzި^G=b\)B'HlOP8_,Gqȉd+c9 \8Y$߭ b:rjF ;h-TBvC㒰x NXv=s{\P@K+fOS4<8ޞ*#`|> u~&Q, sIo_qpŲ)<; ʥ<;d0^|>g^f;Y 2[pȽ0Gq KP?->B ҨN(7ʇbMJkzNVcaƉ0U!.#aIpn.>Q~tVbmђi{;Po慻4/I=]#aDkL߰ejY<ϔ/1p4 !B 3ć7˼: ye,/+ϡya-XGZlt6Yb~%b 7\i {^ gN烣>#94H-cNЭ):MlHgH@Kl*ͥݏ&/Ɯ+*zZRD摨8:>p ]eŸX%й[ =Qv͆AJAnnh&))cGIej4Aϝcvܺ eGayw]~'H&K#|' ˶DɄyϰm$hz{]M]*x֤ЉFtg+Xxd`4vȥ?DN5ّP~vEpu&. }8!!c"~׀gԂtǝ cy|v~jX/K9 Wj\mۋ~p,r/m8%ƾVƬOzel\kb Sk:pOP0}J'㚗I_,O,V Q'欢qu33dVlܵ~o> }ssW^!uvi*L֤qLMqm -5]uC s%3z5pkф@nQ)RzI%R ~k(ݙI!> }9k]Xx}K!xf Z\x.@K yʽ.'=`@)Yg`t_pR `ְ$gfIf}Lߋˈy k3g 34K./s o80&w9u!N2r]ioc͜]/{zAA+ &Lyk䩨-]JUsDu]~=訪KE[>> ;:z9HE(V:oZ%-2㿛($/} #bA6PY7"Aȯ(c[7Y ޠ;6]{l‹Z+/~)m1%ÓKi}.]TGt} *aIt\vL5-u~tӖY˩qbW,S^2^}KI9A}4yY!*Wt/f@u8?5d{n m ?3G(75sƝe82j@$Ɗkޒ=.hd !WKx,\u; m:R vu9n]&L'wE$l^as,f`$6Ft|ID]Uj/|F, 4C]pjPE^0b@:e(̃+K,ڷK^@{I уkL'/.nHBve#VQ,dsԩė8>1t`rxP1#p[6:LudB̘x@cƖ @ԓE`HAxԁCVc.1%\`^dPV%+MOFpUzIGM:6\紎i.)8eeAk陦{gc}+?r NƮ}>ڊtJo;UxCQ@8>_= ϐFؚoz޲s~x$pE18˼)QWhm~eLx٪6F6XjHqU0hH t-"yذP>ӓJ戉`աwVίH<ժgUfreGm`˽P4p_4B7(O8WoH߫޲T!S E:fD6d9:H>WFcЬq|*Bܐ^h#|9e33^W(6ۘ읅Pm[+hMj̠)_뻤Yz AshٳjæZ;9lEe˳}LTRЦI 0uN77ԧYmTvumzKNuu1Xѥ?,\'/x-v:3ƒwy-0N//ҽx^l4԰[̰J=slT~QXB 1VO[?ۥ>->`\Eq^'x#vL0e <Zg;LrCگXM|YEGQ43őLY9w"{̧O"t6Բ N#Nǟ 7aQ3.ȾV`wNJ1Yq{1$ed~ao`:Pb -*.:eA>NNzW.N5aNX›I--_m-+UJ-gc[}*3uc]ߔH4lֲ\:i~|3V~&UG AW"eO<&MRxZʻEE8m&~V,U^`80[C'(6hQ.~vVC%MbFNρ(_@(v6!FnAl,L|ji^%dY|Ë,>v64^U$F"f-p*'"0ͯxm2Et+ 4* A67%6)4 !ȵq.O92`H/Pac $/Y)rU%4PvJ1CgXe4c;c2{=$2>wDh\5!8HJtxmoDwx̕Ue 2঵K9lxb :g*~3"L oQ'$ H'2ldG J ] w՟.\Wğ֒;FkAYcM ;5/$\O'qtb-1YBeLUߦ&u3 bȶe%I)@/,m r!f|,`oH]nEcӝDDOK#n 9\l6iٲ(smPf_dn6Y#pcwIk-o* L,e<Z*p QSƣh]klTGrF%`exX9`}* QviCR!,{>t/U>e\T_+. 2KqK Q4Wg˭]3WjKㄟ8N&0\sE2>NTpLB]:Ai? ڑO΍(If9."@dK/JJCXt#:=%5Z+ ;̎iV*ڈdD_OBXٌyw oMle z0mCr% *I%WtJ[KG{Õa;g:Tv$} vj !V3w)^q!j>d068 F3}o2J(e2ng)COΌb5!Fs4y_A{XZkߴvgkɘg#5]f.Bu cG缮7z ɂ#cH#¿?z$>Fi-BB-¢U=S햊4c̽w"#'w? mbk'Y'0(@JJRFiOXXj;Fy2gdτOݪv\#tQ۝jqp9衤TK@)yA̮q7Y N; =x(d}ye:Oi+˒@25寨oP̻rC& m\qn4,V r_Xf1l/E ^ӿlqjp .ϛOS.2q;XMn4q-ujP/eQQz@sc 6 xɾ8qzQ0n66 b[2jo9]<ײ}zA/5.cOTۙkxk_Xz%z \9$ۡ>Yp[M,T~>SfvIjt3SouZ,\3x`*JG)/k#-V/W=zzɋPR}EY\( ߔAN6AT)x܃x ZR%鋃5nz5;_틣:N/?#Y8TvW;7j cbOATB:9̗lU:w*YbhGeqV@ %0A03ӗN9?s׍9Y-~$5~<)~oaGcq? d -g_ Qm,_ IzOԻ #;b˾:\GJ-eךLfD|> S)A/=lTGAUl:Y$2oaA<۶4/.'q%5UM`~7Ce\l"@#,n"z("Ӭ±0$2{n:+2. ꋂqT@x^WC_\L q<.N67!l21yf]?Kwh/miy0ZK i}uy 恪j]YR4xcD,CÉzLK"muW}x_ח%Ypݔ'kvO;VTS% U1XXe6٧HiUqz7|">q[lJz$:`Pc. 1Z}c3 BiMw-01h5fFU-$@0 l$(@D9MV#WL%f;1 x (lCvŗryƥhѶg" {9-TPHԤ y *VXPPCzf$ڢT1SE G ȳIekqS%h\=r)2o]Xݝ^@> _AoG ]ߨ ҏޭW^~y->)b |[\* ʃ(ˋ;pAI%"C.TQ_]HvH l6*c#eV_;<s>Xu=8QΊ𽕄YBa9a$$Din]LNzDN/\*=%jǯ:9iъt)ii&b &>Nv^s, kDjK=K uU+Z}|3WPE_&w(k13-hP:l]Œy3e/_"HYh=l8ǑiH L-lJ_~H밅+Ĉ|dqlB5yʁ3ԷgXpp-T-N0)\^7{bJ~ꀪc6v1b31*zrHd5/lp\ONۻٓ˃<;-_E6L 5~w_u?FX7P˪)B4YO'ս?SQ^P9tKv:hAFM8?'jzaǃ̝=P[oԋęhtBɯR*_ {a\h]4-Dx Lj}7ͨ!ٕR˩0Z'.H!+oFn|Ơ%VW xd`~n{|\K<P-n~կ)8H 򱂗[mUXd4 2cP4`^Ln,rG÷ʢ<$jcaC/J:lOANߗQ ;8|s~8;~PeX&Kydэ=OwOv6,i)U- fJ-aG Daa;IxԿ( [M$e (cFOWw2Q[1k 420/=]4NS%'S>;X5?\ԟCjI4q|*rmZG1os"Nn#V4^ ٧S$3޵U1>%MM{/Ln)s Llؘ&P^~b~ xwG^02=DL\ֻkk86k+#Ec"Z{^y&}]*,asFO" QUy-]=˿=d.JjNl>F bh^{ Wy2fF7@$Bv5<5WWjn N]O*CZkcϴD&l3)sBXnFI=R]a .㦎(OsAЭ'ݗTkԳ/^~.ĩ6rዺPS]qrԄp2dV??D? /9L=t&Do|[3tHiPw/;c^TF_{ԾFӴkdHD~{xy+5C7dU<1O~1^s *pX'ٛ=挂PqcAILFᚿH>Do\(h`U}a !>~$ͮ<\|۱MOcdKVĝQTqLcΤ+2Qs껳{mM*ې'EJ;x.Lx8?Ț0إ = NXPpho@.{L hvTޓ=;k:OqCjo;ުG8Ӗ^zihBQP7'GWI$5ry3` =TJu$Oɇf_t ;+$y D*8b{3ĎOG1gTj}ބSFYΩ%lc;q.]zhNjD )˭2N{ǞԲvZ1-bvTMn-Q"q]Y79O.Jh^2y~iA*0+|&͸~_P/e"ߺ\Yk`#14j`REy-}ᬇybd@YTvEҭ7- [npi {̾Yvi"_DKtGyn4ܾʳ4v\I{1!L+/gxݷol1]"y6!*8[x[/ầELs7;ȊTKt>9n7 B=Ϯ,k|R)7V&q};D괻J`=R{i6ԾG ޢUAvtL荂]S|zYI6\#6,;u* @(&W&Wki%"\s'Y_Qf+d.TWlBFN{"&φb@ml5h?$&O-_5w :+ 'Ic7i(@ҀME3w︎g-dL(|8<IBMZ֒WVfk6=s 'K];ֹ:E2On\g]CP5I1#~AFmgeC9!v4Pa"*GTF$wS qOڅ#`{hwOPD S$(d`8_u]J춦_^+(,5I0Nx 1rzvGԬG T+ٝX`sL\ĒlePiCi8A e ㉻ UoUgF{E1zdV<%`bHu -{?EInW~K`ARVpzBDW*)}ӄUG>72˧}/}[Z VLԻlܹoz:8oUW0-OqZی T3p5;{H= o0H%cZ-t[M)}Xc*#DlCl¹m4m+ c^GSm+]m/z'vǸ; RH%g:?i. ¶ͫ>.x~穋˯ɽvb;'_Ox]D5ew`E*>1׾yt\/rLF*hG>֝/8䎅'7ǎ;|#`P@i e_~@'B.\p*uͳop=pe!oּqYq]]ɞplbp TCUg6@v%ZrbP{*Dl^C1rۺ'[XTWDt3H-_Oŗ濑qXI~zaJ>MDu ה|kQAyu%ss!<"!|vxAϐ԰3fDa/868zxx'P^Wo#?,8Rnנ"suY}GHMB1}ʀ]^] zAѥF p!t"axzC5,ߟB|&dDso5'<̜)X.}VDsaEb))Tc#lp8g,vvin[ZClF@GC7+sہ[BHIݗIh`v\se3|Hڧ&f4ƺԈ]aZJ^K+WCf%_@>M+Pd--ڦ|%|HXW}k^_|`QrBKZy<9A3GcS!g(tK;[ܥ1u#YB2=˦ 07 =>wY3#7\2p^-*_,Ex MϟamNE!/WUg#lȴEUC`B|kxp6eE=$+;&a*H 酮gŃ.in(a~3Ja_Bdj|}=]>Z}PwPEH՚\Eqp5jp!jS؆+e0d^dgna-0+aSd%HND{MeduBa\^)FG'l2` ^ݮz*;W`)Aڙ>7jo+"~Mh`)!L˜ X@T{:txgݒv8;)2>*DՎ1\l Wa'TQ D(nj+@Li};P& KɿSm_#*, = ~hh{͎cД;1^Z}.ĴEr9|HGiNql?EpQ-&}SCÂ4PP^ՒFp跗~ƎxxhvqS!Wբ%j-(v: BthV8وfva;.1- -$[:,[z=@2&4wV0۰# %''?VyFcF&ǀl.s3\㢅j$=.)bo~f/ZLAGxHE2ӫtw1zT0PύOr_̼6Y"#ZcJ#S6Y絓@Mw҆nJ%q._`Z_5,ߓL,`ȽGZX6V+#04 MgmِȃEl'5즽AY\KUѶT_d::_hЩGHv?N@9Ǡڃb XqMFLJ xTb6}HfSp]kki-Bj"b3!$K$Cz9ed\?lك; u &alYXso(97'TJ ш05*(Er) !-_$ ,bsja"M8O7XapSsaWyg_° q핽"\Zk#ߩENiۨ3P̆|{,xaب/?pMW1ꜘ(% &zu3ԝ ks餹-Hw aD-PHϻ.9_uGe 1USf-ӯ%C3B7u`1) ˗6ĐYXf[ғ~I*Hj38l\DvL(BUL|AryM1tf2K<7i[-Ig,wJxBІf]p(SBY;:%"%s6j b%fFa׫2H+ɸb.(; NDy9n>&~FXĘ|x}!@!($ R8Dž5Ec1"1FL槩eDZC;iҨ`O k³F@ }gs} X?o*Do    _СH/AYlԸ RP7 gZbс"hk{Ѯ(/ؤE{Xz,6v͉T+H! $ ӻI ^>6 ^8k-W}FpŦ TyU cemBYQs@\^zݖP%;ܜ3G`Ah=:4Se0u#S`Fވ;@,,ptoJY{;>=3(5kafسvVUJ+?s+ _y:6]59^^xj[-9J|2|oG@E*RzrE;.'S8d6^jU:ԀOT+Y?Wb,nHuCyt/e"f$* DvZ>TYΕVi@b5-‘Z9bth)+͈%\s>BuO*EW;2+=`Kyг!:xA ꚼ.Фz#P7,!Pճ񈱡ůtyD.;N%*vJݧ[=dQ)e":Ys$OG-G"+NY0ts2X`|Y4UVF5a\\KE^E<+IQz L)2#ڻ$-tEmϭAѪ_Ei¯rYs㛺_m5kVBÃx-K͟j멢)^N62wK]0 i^;ZpXf}ۏE4iJ!(`la{=Y>8:֜"k_YXf|,(G+ع9}?!hxulccuvpVv|f[c49`qiTMBA!DsqhD 9W@%>{" C "di`"q9]K$ycg5j12`S@.Dž4KDU`>V-O;~?ͭ^wdxƷ1^\D `z>fY'!RjWW'.n%B51C. Fݍ#p؃d1RftYu9졀5l9j/@\~nbi<1u>gW1|j|gJcnzLi^NqFlГ3>S=l ,ԝr}S1հϝHrjUEDzO<)' [)/așKq.ET;#Ŝ4jc]2ISHY݋cU2*5/{7o.QdzWjluM3[M᷃'D[|Ş:qÇ;\ ZJN3lO{d\"H5Mh?JY|_zBº;E.vb껔/k_\b b3'6.ΉTni}=2b7'Ix|zč~n,[  žFxH(LT\<;ŝc49CC(ܮZEB}4/z+wPZ`kQfTvA@[젺HjLKLqW*g&$̒AlGTI:z {S6M5V`^Inڭ!_l#83q{4cΔb.ܰ}ƐBGBUttsU+)ȊBbRN[ؚ&f(-ULq|WPF/M N5D )g994{`20;ځ&u<& 6!^/kfK꭫17-l8\G G훞qGi|ȟ(t<̽nt(_1-Cp&YU_Nf]]%㰨}R_S)<̚#o2,ụ`Oǯ*ۧ{S z'ׁ!)ֹCP-^=F2ʌ$[ѯA _|5]xJG6]&Y E+h0rb endstream endobj 127 0 obj << /Length1 2753 /Length2 28448 /Length3 0 /Length 30005 /Filter /FlateDecode >> stream xڴuTܺ=LwJlJMæK@SAD۾ޣ߿`>zZ1"SRe1%Av ,̼9yyAhbc`edffGs9[č.g 38̃DNS@ladc(n=8E dhinJE2F& 7'kK)@QrhadcԀZuU U{FpaU{{pSUS(I)uUՀv`5wpty 55m% k\Nw`f?f h,y]A6St@?¸ؙtMY휀$Arڂ'q ͿN@0r'WNII`kdi 33:98 "8:!._ tm|{nj\,HT3xF柃|JMAv6S<4%bc`d oI;?"+B+|N@S%KgT,l};s xO&؂7|4:98yq*_d&ag23rpށ? hdl)W`W%LrLx9P0?]!Hor]U0ˏ֤+Sem#_y_"4  F %.29%sm mo?x:cX^1/RuV`݊Xm޸/av-tB:cE,vc}Wr^1v!b])F8[儨8cTvS~uꌡR4ӨW9jRF;շh:b~MABǺVdeV?tg90hjT GsB{*8^ sjDX>E3PM}LӭP/%RFjDH촓eoP_` g;uBv4oڷ猓dЋH傺ɤݎvx_*~њm~½o=]cp{XpW!6gN##6x }}|}d3?+WJ1OefKiްƁcamKHu+>ϝ]?U5?R)YoF%>"nfs%-V[.'xUHb:OwouwSE9u2hC7/PK"t 1r%"՚WV['y>\i!$٢g^7v9x }T\g+^ ^КW6)'Ϗc>tAv`A[Y"6٪;qpX~I+>-2ۜSC{iR܅`B><#zT|FDnۺ\(IA;my5VCdpV-Hi~Vc4Ry'Dd[szЛ$29 Kޟ:[xP?Q!>ON2;Tr!v+byqktD8XYƎ4{͓3#'PdѾ+fA1(>[|eߺ1ٍwOs"l{LB,lq,wx˜E!ĴhángPST/C6/E1ߠI٢uXX/bw,ᙝ^K^9ylf@44o TUy-o1ԍߊ&‘;+#eƨk:Eg:%Eڃ^gUY"[2rt"ꉓ./2k kNpBj!rd?~Ll!2F.*Ϫ',<4Mg/hJhbu 4;yB]55ͪexU\PíeQ84Hÿ Ss"'DP$dם_m?D@H;ќfN .Q̨@{/:%tL*gf, )24+LȒ|[Γ}pqaJ+ %Suim#,rRAɍ#"FX,SU;@rW4mN;"K2(iR{ PO(sW*ݦcgT2ۦbZ[mA#.~.֬n5~lRKĨ.f4GЀ{dhF xe%Q^a6ߍimZ Md#ڦ HgZr q&e bc$? {6OslG-wIÙz°ocn1YIVjG7'pc*(ERl lMGɻ=QQSBfQ9ˠ3^6dv>d1^lM[ [o/@dwL ņŨ%~z <))/%]X"x|+zE18lred}0{/uäֽd֋ܨ]pT=4-r1AI"bC >=w*?o7+j8ڨ/ԂOyƾV\<'1Xx w._RӬ<`@W.f궋^]VT_~}򙡠{#9r]+)ﲥ}|e3 zWQ Rhoz80o [FJ{KqYi mEo%!={5٤_ҷdbDŽ!~&N451p&ޗ| h)ٴvۇf;a~o=K.IrQCޅq&龽&HS3Vs N4vIq#+/+I1V;/G*4aKϡRH)Z^gz*~ܡVf{oH3L5ƞ0ߌ'eT"GͶ^Q˿ ^<Ƒco^g7e뇎#!Bw[pW #lJFsٞFS |JAw3=FJ w AlI"Ա.+qgԡ}(_1j1cʖC!luΥid^Q_NHQy;s`_+Av'y86Pw;]5'DV.Pԋ.]}ѫwpLw ɭ)32&Ρ shtof#QNX!L1\G`rn&ƉaV8|4E{_ݎ[UB6HȊE4DhŪWWM|c{z#>aDM܌qެ|yaDy)h B"9YPq[9{*2pe, ;VMh 0ʟ+_~2^<d#vDӧ J|)„` qy4 :Y`̕o+WD7z'+E|Xw;u&@SaANL1⮶nt~X%J/}j7s%^! ˾u7|mE*mzGMT;K;:[NR77}\EptNvT/'1{;ji$kGTi?UIGl%})B٢Ē t& >!SO|P ,KkHqh-y=| ѯfdh),}g.Ҭ9[-9&GEqlUuTe+p&v(s=1: \;3k!ĶM에oh떈 BDYU,7'aF/GKRjìugq{! ;~mRM<ыZ#aIDDe-w('U,obFSuz[Ľq.^ y~A{H~fLρ[1c ťGEGkȯb^$D+kv*Tڮ̪YU/m%1 r& v7ew75*U$M4thBOhkkr 2/Dު0:~!TLxi1"H{D e(S+g8š鄚͉pŁM}Y)hزRQ[c@(yس|"հ~ %P>Sxt˰5 r@(: Nǿt"Zt/uț>Qq9ȵ$x.~qIuꡦXy_-iȞJkƐh^7~:͜Rnwh=rf&\ǘ(~ /KjRR"?<.n` Z1 kf'q^..\A/fZƫ@'J6 c)E=7f:lA$" EeE2IL6"47kzkk~B%^x!>CoÄ !R0|'fLQ1Ȟlg8RK=fGٕEvQ_R'xl!fۊLݛ7(Uk8 ,%cgՎŻ<&sa/䏕1En(~dhʓcg:yuk/̢][L!'/Xru>o2SW6EuMMXkx(SeY :|T/mqҫ&?` WgxI'EjLB˼܈VzYY#I9 zT['ȵf|޹\LnXBB廫-kʯ6xcoWyS41\s;-cN4=-"A9dYԎu4x^0kM pL:7A5ms |CgtDVV}jJ40N7$TX%t5+` Q>fl3:iû :$Ȧ)|wljqk=f_ݬY|j|JzxZA\R}&=Ċ(J|K/u>E8;-go{JKp8!܀m|Q6"U%AЅ2/s\id'~9D%rJÁ?(^#bB^wnӟg$BS S"HbQNߐAsbhx Je2_!+D]P!&U(!Ʈ(Hύ;m?-]x22^gIԃM 79;Ut.]RM,/v3aO1@fs V9 <`Zm}f4S!@K oMϹc"*ukx=VqԺUXap;lKRy0 {2Jl|MIz":tLkm!@g΂ lWlkP: ?//xƬf{>TDCV㴏 e0G}jӼqa/EpĘ"G0ɔ+ߨ7oɳ iyv©y@pxh2p7eˈ!"w3*I50nacuI$$4$ɒfd;%u,[0[~QKlW3nN-S/vNڭhذ]58zxػ AN Q i).S`]\-" 8=>mc=P`@hh<I lqyAyDۑrC}qfU땱"KYZݙg)1rGJmݶ7IJDo{D H&y"0p1Lߥ5JLdF=GMQlOܟt eT*,rJ7OaRה{Sfk3n~pҿYT}V@PƓAʝ.tVF&4t?^z[:rh3 Ku:ߩ ҄4edӅ>iר U{,HOB$2x.hm@G/s҈m-ˈI'(ѵmCYmjhߗڌFqe`L V9}4(>PCRZ4֩Wlp쏪U 3꜍^U_YLvYѩ< N(%TAu -:ǁ<=jώm9EC\bt6 FjAPW/mؚ%?Ii,T" @ {nՉc2|e3:g$ۤ|K<UJ&7tG۴Ggq}gA0." }:KN@5mW||Yڗli9c)38=bd˳0G_ >){f@*9(3ei޼W?UɅpzl_u;zZ1LbGM` |lh{oLsUs:TR eƔ%s./Pzm֨'b9Dzo+bl(;K=+}GE߄Vn^ /*@mZ7)N l Dt`oh̅E \$>P9a =hԉ"۰9TRdZQ<HݑNI, z꼠lKVm?gD=B8jgPe KIXc_O,ȴ:x& Ӭ^#X s&Z^{[45ج!@wO~}hP^sg]3Nyo9`'"@,I48=o4÷^' v8 M*=K'/4栥β=8CAGs2^/"[ްE.d&xivhb@_Qà53WAJOv51沪|' Iă\-Ir)uC [}~qgwLk ͮB]S7-3hVGIm ܴrw7,ڼjv+"a>|,l4{'?Tjٽc`roH[y?jP|]DVД |&IIDjA>t[e3î:g.!=HMEЖC'҈~-诼Ut6ҩfR$7P'Н'(Y\T`y?b:mu%\wè3N^Q4chX/w-.; #lV&+7.gڐ3aʐ0hJ$j@m`Qs:7;GX G[7V+'a7! L❂8fz$C iyot aQFd*%a* IcÁ(f6:ڲȥp"4IXs.Vfn*߹9 ,N~L}) 3}Բr3tq_tV+QM3s#@h&H^jCc !=T.Dx(6=EҩKK)Oc<;Ba6H~_6i:A 3@ &[^=fٮOTV|R\ dlgſ ;i,w'#5{u=fQJbQ>MR9B&ZgO2&lK']Tw9k߯1`Es%fFYmVRUՋoyxe){sa ?vx,Wq.R;Da' EIvdsU{t[E[)픝+nť[[V/ryn;A\ߪib[svb2l,EHGaacM鄸Oc]2{tek]ocbk+j*~UۉZ|NN7:uЍ~ؓavqY , iqo <,}o:T%9')k^]ƶ-x19j}h&CAA5ti@סmn8 9|ba)07 .>np#Xi wkqm#觪oXUcx2ǼG!69VxLa%dtqVQ X.ݽI^:xQX@c7C89)l+CG8%ᦃ:<ƀA)aOGޭK? eQ;lxD\}v%,cg4Gn0X,5Mr76~ %Pia'fަ85QǏdU>SF L/YQį[Ȯ$h[ui͓ȯ=#Dj&Rs6!X .~i+)d-\lfpȶԌ_enN\Pxd/╬fYr:k ]#aY })n?"HtZ($-ٳ,˃ZѠ5\!PҜ}fpGqW4%("|vh ApklTTv,")d-,Z=$\lʉx,^!2vD3j!^>KӼ>߻{Ș7J`0_Ai\>NB{9JHc^a.ˈ۷;Y##jc aDlOSKDۥyY[&J!-E \wb pRAo-  [s-Rhx46[?m-|t]%W񖭱o;IMyj0\<}%kxg~R;ص2 Wn,S wc}A"QĐNa0MnҼN [!'NkAKL3-6uG&..Al/kSu-}9oa`~0ٺU"\N< YI$Ctf`9[<|tpN.\?q m їjF&tT'$Qxs!=t'}gKʒ=XJj $ KLAǑ ד .4V|\ohkzľ%,fC>en̠w/ǫ]Cެl>}K=pQDgn.3k0QVI~vMv#:evR]D޺[[ʎ\޾ (dk;%^E/z!$۵oK :^P>uxSJJaEsk#8y{}S&Aទȝ"dF]J^Bqw%G }o" ߽q t&H@ەVǩrLwd4=e+X7@C'^™ c,3: =mT7s7axr'l5sfL!|x.sNPfR|K}K㌍e[6*Ys;\ߊ"q)6YE.5|汿`/;iYT_WL A.&*]\_ωЊ I Q8 m>4V5}^Mp zjlrk"Qw=i©r'BCI "Y9QK3#4.fi JoɡF*S̰{[muڃi/Y]fb{yv|g0?^Ɉsn #@G 7XwRQMin1nR@`< +v9\G)ӆė,) "۝e6#fH}r6AqEBk C;W O z]6zUMTPv˗FxݯjX [8~9,HH9W`VI?\}Tmb0)),A.j8&C}O& BBo\j8u^ewmBV4_oGB.{Dh\YkC`-'%XHreJ;EςڞVP F_*ѨT\cXsy]Nɯ3Ɲ|// .ijAT))1o8xP%H(8I$âÏ68 nZTBfeY'{;A3[p.ƼVyps: .ߎzݒhX ѩ5OY_?5v!er@)dJ!G9# i 2ILm(M)j[\;-M$`3&WYyP-ir;Kfq/Y@ٝ t$a-oY'c`>r?.QdJpqꦍ{脱 7"sظ 9DX9dC`}*I ۆwVksq/æDh;G]D+фzNrpF PPIjtZ{x߫S+`,X=njPu3F1C׈r0K ͇%yDaZ8mʙfjGjT OGx֥UKCVeu(Pgt9ܱ):Rj) EV=M '~Իi|mQ&Hžx BS<Gs)YRҫA"+T/T31p $X_gxt^V0Rg$7{Nn}\S/NO=`Ґ5s- /|W wGj*N5lcѷCZN%$49Vxh8qu'dtf/#B(ۗ3ZszR6vz.AyBoX("ƭ 3(`ԫ_6Z_REk2Km}]u&Z`٢yι{^yz+ UW ̸+v UxZN o3ʙV_K%z&yM:GF(Ec祇õou'Mw? 3%TW{)j-= NrvY{}XڕɆm?#AGYYP%*OYEi"#kQبx s4-K%r[$> /GV2HJn!8e! 2? ,^]t-lf¢R ү?uhO7ggq~@-b ])zx E)pP,v2Gr QI,X.SW"^2`v~u˼yHĮKV ^h-b-K;n,mڮ}+ c 7ͳ4,F$t}9hdypV:C< m̝nwl4me@}?JR6K ~G絋lGjc{9)GL5i-8jɊcRZD> T*:{UI 7qMce5pԖM0b,[)oVY>4)!0D pQ&~j9ߚ1e8Wq(FZ[߱1Vgl^18, ;8c2xw=U>"xt y*|Q²C#,; & fpR?]ԅio~+Ӈ:4?\ "84;&Sz_/ʻ?%W2W"{23IOfm`kET`o`0Ɲ Pfm%%jHD^M9l},$v.xw&2v|4 \;#r2w9OT1))_&޺lXQacmy}UAMuoZǒ93ZR!A6Żb4NJ4nj(E ׳a@(HrYyMêTR-,B)V _ji}9 J2>_9z#\TzҪiZ"_e +a蒷ϙ ,) ؤv@o%=l? 5a$l o23ffqXZذeUYT /eJ_x=HB{ٗ4%ojvJHNZf*g2c6됍E=˥}\;>'!񒩭pa\ꂒzrG"-?| K&jcQgQʯx yqL1$u%G!Ԥ|nvu?hl~,-*N 1ϧ~J3`xMM#q=GU M5Gnբ(StIsknT)įT 1>6馂D[yr78X<  9ۮb,}J% nө .޹e1JL>yޘԤhV7&9G Do=0lH]REiQDFx$Y7Xe7--ȂV7l.t|]$%.g/56N-D^1bZ6J^'v(뙗R'G%ʛwZ&{yU4܈'VHpM Łifw[%[IPfO@سzz{Ctv:A<($fBd+*mY
3sf%p11 , zɶiA,xbAMP,lFt0n*jFVbXFblk/t5 " ;qr3raz)o }/e#mx6("4XӵЫG2dᠨy.⶛a΃=x@W)o'g ߗ ] mR'*L#Aa{R`°~1e8Fr-&&@X`Zd MBi֘sOq kh$KB}0-;‹ c\f*&;qʉoX3 Od`=1E&I _KI;g\TJLxw'jr&0pB<{:GZ):q._ib;U. 7m`:fM$*+w%$ltSe}'2~CG]>8\;TND{1ΗҜD*p,%LЛĐ #3!0xF45)Y("Jkl } ϾlldJjpNj E!Om-$В^E.fcνlQ>z-tdFA_PΠ3П .#\n[ VF#VvL6] \ )«3{yk285<6:ҡ`;Ṍz+͍g_x~-u zaﯫ}ஆ\i /0iJm#caۄ'%@ic{%ie:_X 3EB/agR4[3/{{^BRFAOcaY9h^/VVMe}zȇ6}7z5@"E٭ 9By:inp#hjMk>Y'_uB-ݱ/a$Ebbkan7UN`IĴ ]%"{ Kh0ʚ"#|t\ %<{#s2J!|HQrɠVCjqQsӳZDf}<y'yIBk72IރcǪ!2hֆҁWW,hSy @ [(6Tnz}av*<H?'b3p+]Y ]`Jr g^)'6_JNMbv(qݍ kHqmvS& @HXJ!\5S+ 0yULs5ʼ:O _P?_C=ޟ0Z(,,x} Ub{1P#Bg31&ҰQv{'+:र-eERmEVG<60)ZקnVy; &{~H,qСlP#Mp'3ΓN9zoadڒdn QC3QZ*W& gwmIڱ22|j6A%N0->ԉ6(Ovѯ)_ŶV][i} 1x@_8ޗ41.2.6ˡ3Xjb"Zå>"[lhr;l(oʵ)^œ@P8:#t$OSd g> h^҂z\}ь#8xFn= "60?e9 ͤ=ֆ9XWگs3z. ~n $EhP<,qe8)Sx mG6YI.壷c9i8Q *џ^#T=#?tF2y`bOk.mE@vg\i=y,.8vqGPN0+n?Y^@@Vـ=ԹLh6"}qryL9$|,Ax$^V ﴙf*\+LH&3ξ7aV1(džU\R&l18hT=WʬŖ ۓE*e1[DZ ^ϔV~6mei'%_VZJ{)4&Em̓lSqo |H[  ȝ Bc0<:!6VY/uGZ]|J5 |"Ӆ;>W԰%B&}(:IlE|I)!{D%W3 &:%a5eh(G1{#󎮷 Gn# ۮ~^v nWzubeW9/rAk5B.ZhRЍ# =d8:\JߕBcO8`c6)ݱC#$N'x~F>|2Z鼺~ WR9Ügvu?u.뚎m=>݄9 gTJHҖ4z%`0i8q:)bDB\\1w9ũݿ(}vKƦdBب{9H@|5cs29ML"~ddXI}l7KTw*RB7FZ#'[/יD̮Mpf{dZc-7_>dAٽ #X,#<-@@ȧU͐k%/-84F)y~8Bm.d/0N0?qFM3IT|@̩$P1[,r+"\H7ډ94[I4[}=;梽$QEoqj3 #s`E^z _[{ $B^s.૏D4c2froG~O\oV+FbO+aR0ioX"y ᚡ:;ۨ%`Fɕ pɃ~h%X"S|1}ljM4tGj0!N)huJ^dV_LzȅJME?:{x ſQ;WWqtu^ "W[ ~4NtTKGpqt?\| ݄[η>DaCc`pO5@ B.6}r;2 w{O+@y)|M e橰׎XA %Y~y ,CLf4ەxyH qqvl!Jo]n%~5#Pr#eR'U=JmC"?u \{XX-]8X*PtR-*VWJ0בQ~Q$ Iw =yI%KE5E\pAO;<e ;2f7NTCB!:oSܶG${|Tywg}f+7djLPvp[%Y?L'w ͊xUts) u_8 ~a-*zR6ָkZ}INLmBG{YjIpyP8T![(9ļodÐ E:"E5@3/g%;'@kN?LE3N`_%{$sեHkI8ے?7?;ԊYc"J093FfSxeirĉ\eyŁO ǦnLgdABt0л$0&1B&.;r-(a59^C6++X 1lMԹ]TmR&|_Mu!Il6/&n&܀L:Ɩ? j [x[ tƇ 9PKl^K2ZʞT75HTS|r$gÒ`_ٹWbCthi\/SzoӀ&ܺT(;w@:WLI6<9pwbNj.ImwM7n|׳a’כu ,mƢA>D2@-.er2糵00nG@+yZjxmf܂&e)߻);ͩg6foyI54l2-iPK۲1EIDJR-f#"y HU-<]X7d!G~x'T<{4ϓkIoXckU`d:(׿8sk(Dx_\Q w|R4&jچԱ6N"٩ƣVU@ ZF}=2ު&T'ōQ%aQp?e"$٫]WB3B|¡ M Zb \nܐX})µ?x/yWHXagCW@Fpks9DrҊm3BDfL ":^$e.)qgw4ng^@P|뭦 7:Uzx<n":ʦǵ؝m_gn/wA>vĭɈDmHVQ\~4 _*S\n$0^oa?^d;/‰jPBd*f|Z5m4[S< n%~'T}HlҬOc2,yA#@xގ1JԽ4/>4tu0SGD?Gc$U*Cߓu3lDGS8kDIzqx) 1BL 2B>(q>n@;fV Bd}D2>4!%SЙ )z:Gy.2Fa~ aY,ୢeY [Zҗ|WmBEڞE5Msl8;76)r csvQ ǀtGP4Uo9V,68]uI`!4E-^Zݕ5w^mzEB<i酝㡄 ΥfV DOc%ܪr |N}CP .buh~Ѹټ(NXV󜎠"Aa8ZtN`ؤhĚR6=|#/^yo;HBLͪv%*Zkw`ɦxJ{[_刏IfZJ&#[m)QGO٥5ݟA6OlrJN^bmrA9614Ω5An.C흄]-dwMW0.Z0Kl>;(BׁNk7EBȽ.w|+o+p3&;!/L^]2L$ýNf_Rߎђv8+?5.KBYΦHVT" 17|^b0?y X[Y 6{E>vմLibAXgt<ر@QKJk3%q3ȵXWXvw,5sC*k=9MM-]["mحբ* KR2Vbv!M?r<jݹ2K^ދKʕ}}qs&7d6laLy`/f}4+ 0Z@]Q9S_ֹϹUTȅ &w!TA0W7PtiM'/8? "D =C+]%a*8L-Y9^IXgE`ش[ϙKʲkJ I"ݩւxL>88gIe "8sqI>%iRl C:sV.`ӡ J MB4s< &>2#@u )Ey k`]rϙ#C2u0?fƟO< !XDVFQ<0 96$-EH =@Rre92,xUeAZ`եT`Ҫ'ځq>0X$m X endstream endobj 129 0 obj << /Length1 1999 /Length2 13778 /Length3 0 /Length 15048 /Filter /FlateDecode >> stream xڵeT\۶5S!$8]`{kժV}\Td*LB@q{;3+@VNΞI ddci`gfeDq,D@@>`zt"P$v@w) z8FE{ghgni{Owp4ҟlaf% , w{7Zh@ #3@ PSSVH(+)1Vqqpw."*jQ!yU1P Whߜ =O˟5@'g?mō?S͜mjXXܘ]AN6St;YޟN@_q3}'w?{49$}{һSp3_m,ʕUTYځvFv& #3/hJ7A @Ou9_.l2]/o#?f6st9]0ag, K2ɾ ώI}:v w_ ʾK.R1;S{[w'j>'˿emmgf1Yڙ PJMAVt7`/11`fd 4?\ 럎Fl<SKлߏ _եߙ@1{?v6S=]w7k3EhPw5Yhh 2k$dgn0q2rpQslޥ~X< |ſho5i-i!(1;{SK;s;7] \\/wUR ppy(/o `1?ޕ?++ |OX~d{l=?K;?nwtcwN}3@ޛ,iNf/?=_7Z]AfK/rjX"grta}?lT@-,l`x_?_&_] _.@y{VI %>byŢ84cR'DɁ_Ҩe%|jRbۼ7'TLܘ*}1!DRgVO[+ ;*Nkm!u>F_}'-mÝv+ekrp_D#h'\l=bEG-H8twi3$jRnG24:^ čolwehCc 6F's.tG/My u})R]bv/bk< [E^J3"-z"Hcb~E{j3rIr^IFDKd.I -K.e mkǛ*JChys`% Մ=WMYҚN^H&,Iq؆܃ ZWTyiQ7D${,TDԙD:NbKݡ)FJiLֺqm-e~m^"$W2k;I E›!MW*/?`~OlrnV@4SpfToq͜sޥ%;EHmǰ%uY锰,Z4CRrKƈ`B!::q:>N'5,;H rd 3͸;QwϨ JyRC]<=#H,V~EHc`NjҶ,w =֛s(a帷x9&խIE}=ĮL(VHKniJ#PVw3!@B&(lɣ #'zIMȼ%vc!le+C: cx ?)rب簨us@4% N(]AaUҀ:ZS*<hjȾfz 2^)b?X8tάtPm AfR!\UҀ [#ܔckuڨ{յukBmF(S vߩ)P 8ghTa䯛q 0۔¦pX5}8!ο0a3xkg*:il~/Pt.O`J O'&o |bWb5{Fzw% H>)V>^6L diWP[J~`VQӔnҠ8yRPh+žQߗ9g' LzT\-O Sm'4x>3HCB_gjF|Wބqo=6eCւS@N:0\t "sݸO1hN,_MLS Z*K%UI,ODpXQ~{BFDf8 gﲝKIҙ.۸d鱤/PΙ.x,Fi:Jl=0zJpQyTqd76Ar^B[+LBuuŜQOf29^#['t #Y/߿RYAp=ؓmXboCN4I\I=h w MCM F~P5 lURg[zq㥟3~_A wnf6:Pq[4hh ~@ukRr ~ #{gfD^ |vfEq 3ļof<l.Bu4=j. '[A p.rY`=Cj7@҃.)զzƣ\%Un8vMݵqx[}cݮ7qA6}dV$ߑow(Mh[ERkݺ!!'_7\$Dztxq|o{UIe: /%giVI&.y`V>amluTMt6m}ɍ`On#2ZO? ˎPO :.U=begdxCŶ/": "R\Zc>?ﯣE4 53L6H~I|ث PٍY;#۝e- )&Ma}v)c** (h۠̄ RI0s/KQdte ^K%A1rk4iՑlfc[v oͅT ʵYeKekߍF#)Sm|Lgt;u8su\w. &lZriSs4@G uT8E?r.o$8t\ǟ(ң6TBfMc`5$$Q%ɘb.۾5nFQ'(CU`>`̰PFfke)e>4G+iW\sǙҤF}%Z1dd3qg18ot % oU'4 4p 6VooҐ,!>ġٽ9͋T Z<JW9Bg94J/|"(ܙŦؙ6 _”ݯqKXM?&1&.3cLAHvw԰LL7KyV4X^ԙ$-0G|#]3NвB[)(Bϫ{rN }v})v  a_z8s`xT]wuEʹ2(9۶;Z6jYQAZ73X.[ S`@xW_f[զi1IMßY4w"lql#/~8!1#Hj:c}+a3r|@<]*rDGzj~n̚*]W_;G!s:`ڋzR)4AZHѶ3*Kq@DE /'q G*uԟ+,@n@$p(]Gv3E!ucBc)D=lg ~i@ !pMCH<"s Tb(5@Q`"9KŢ2%̨KՒ(lQ'B.hSuB^skץOtY!Dz9d{pwb1xe2XHvTtu *_"U(aC\GOT3lc02 +o[yz"P^.$F-w9&!mm:LQb#[8<R 9V,q'xJ{*͹*I0cV,J{8| i̭:oБZ<J;Iч7].ltfs.<a\SCxJܹ/~]Ԍxv-"ߋjL*ʠëL@FbS[;HJ^nB~ìrH9k(u އ%ʪ*_TkQ^b.~Cꨂ޿V(>Lr֥8 ,có|&Aw}r벿,tOU4sR`;o?j.}.W^G<؅Y nTBI1r+P$V߈'WomH.(XE#Tv)F@ $~Zz`* Z˪BPzdM ѵU Yu|^mrxs(C~wS|An.Rڂ)Աo2SB:yC~uYY㗄fZo -vٟMRfc|p1f2J('%)$𥚚"f'?!աnvbC=Tv-X桊G$+3 DV>471DBRhjCSun_[}Df$iqc5C hB6=9l\$$c|  d֩e*y:5'r 6E`Y$eǦ1u9 <Ƶ`zBHa#Xiw^C؄Ǚ;k鳻Id+ujw;4'~|A|@_>! fm^w>(/θ;bx=w?_ KBtSh1>H# $^HwKe Ʈ4t$FB52yޥ(:P)68Ŭk0"J[)fֽ (M],g2xn}M'2 k[Bq*iFZobOCC"Ql#dMϨu% b\qLO<֟-0obmVpdqeȜ~ ]0ek2`ψad8dJAO)nIlq,IlW"1~M!olu1¹O>:σc}w.Pұ~jo87eEg/Dqt݊dE漽f_JQË"&`UŠG轄~›P{K#V%BYK/V>>=gܝ{bM-D,JDP͆['pC}`p"VrbyfPիf)ytAeՖ#(Fs3Unqv#SW3}E衄j9 L Q ;&2SnakVJ;L^YNt(n6jƕ3@ʰ:~FyBY4ybW+zXl,gڊ׊  nTOF:W 9 )s|f#781G4璳V|h,V&ᅢQTd5q |𖻥D:[ y/$g,).RJL*$n/!ITٓ8OC>>&&:dnQbXӗܽ I o1&1k*Ϋ< y<)dWdP)r[|u rQ @YmϬιCvWsq,;b ?Kq#kج}%``ܣʱ<όyq.|U3Bѵ!e Oh|"~@K 0YW:~(>J6R$K&Ղg;v6!/ԑoYL:Y--pKx &9A_"lr c?%A_{?r "e\i)t.r+EciؘUEс110jn*$%JKz.MI}5O&ÎTܩA,^ATS-bhlTbE3WJh^X{@1_w{Մ~5coKOn%}&edl4 `$6ɫM!PM{WLc`@LgI* 뗾k!M]Ɨ5Z$S8ͻrJi`|bfTXn $}L~HG♓7};Am6pKԱ>DIGt2YMZ<-ZjmjW1dK'1O!&ۙ:^9 *qYedAW$Fjx\3caij!lܭڨ𮝴9zeaR5T[(!m6^֞]Ě$?Em1UݷV ZbEtKmY %MQs#K3:GPNb$AuR45v'V7.N7h}N(4RlSh!XWS~\=Ybw\ˀ=6 VW!Tyű§Cfh!g3[IiW hB> 4/N7\bqBFXw8pެtjŝ؅?ɰRWb +"Sy3,hT"֯*8&;8 h:{ w5?(`|^59$&_BJ逇[1]ǰM++ [18R+D6G#~XŰ}kH,tw$%%oUO^up>Nu#:D1p Qܞ:uGz~HjڋZݐ <5&h.G[j> b &S XN/˕6G Gw+V8Hg'Gyb=o>~,;V^qe0'꾍 uUeBZrCA}"q3 A8.xFuTVzAj#TDL8t^%6r),6yTcCAvCNn/kZY`l nbDCaXC <;Kzj z>)Dhǀ5wb.D=.L]kI*r=F{m}i@Z8p'.w,"CKok/D7ⷉ#KM nrMB[5n1/9T v.,͖̩Cї;LgRyoOɠ `A*{xf^!u!S/@:=!( [(@sPDx jR M)iU]:CtHPR=(?![=v1Fqsw}wf͔rLr7 Eo|yNp_!?"4+'HaR#~m ɻ;UǕUӫ?oFGصtf4aV|iծWgjO/HIA Nvd3r~yx !c% woXNIG~!K$Zύ˒#݃d=w(uJujG9ƈ=pZ'MCi+v5"*tY \u\SjeO_P)p蝐zX䰗j™;tJ"CpѰjf+̡i KkVH9RYb?9sPCA[^*i:I44 +"\tN{RnMXjsp'0Pl!=YbQa9A1E <&Ϗ.2.Y8נcp;3G^]̢`G"l@{b[F3nCMr p5u;AҚxLYea,Y XBFn?Vvr"Aof/QQ=|T:uECbq~wC<:N2I/$0ʅLDI{K螆aJz?&H/}sQPٯmtPI$ŘW[ҲuLt5;K#1r0& n?Ş?\ʑxR"ԮM'1L0o>fz]dbDՕڤI|@^nm1A{hXIaP4t«ĥ 8P#OK~YojfTs&+%vjr^ O-LPs#hbf5>L3P|O6 EId K|T O?ʩw)L<guϲMr I<͆E "-jţa{( ʖG/Ezj ӫrcz, -A*S+k6 ü&jmXyIì8SŰXgjD+Qa1V{ +dMҬqADB_$f@uUj Ur-ȸOKwۉp nv6m&1]Yj#v ]'0>5CΜI}zʍzl~*qRCd i.cf#\ ]P[8 j(aŐc - jI0d9gQ>&ơ.X{]x]N> qwp*4$>0nD}π14nBl/nٷp^YE]_3W@M P6k˙r|k;ن#]IJBPirNPwx"if@\H Ѵ HS[[JOQTش~U \Z;0Qqs\BOz -S]]1^#,ohr +3έ~f`67oMuf3տpGnnl! 1qGD:4x.R(ƲP[;3v171+^R1wtM"MoD[ 263H' iL &? l h4D3˲VO7Y}\se07E Ml`Mˠ)-&$c}9^>cqpT΍M <s] <]_VHhOLmDSEhuX8v=ud 0_ 6O7t=|fq~ssO#Vܱ$fNMՌ6|["ǒȗ_@55ϑS RcNo/q3E]2GDU h kN#A(A_9xK }#pA/}_isv%x$m9͹!0.Ѐ (˺vEj*J+d@!BWP LOkY8.,YVD*O7tY"W; Fu:cIxU tx}H ?uvL it`\C-/į̶#YYQ#(;Au,%G:_,emU lݾP"䄨\l.1|qm ph:6ir Z-Ψ.x='A44T; LjE=.ԣ)z48V!(^P)"_Oݍ?R{zGH:'J}!H1yyi/E;halY;y5 pͪDmYѪ'ռզ,郠Ҝ+ϕҠ +h!nÅᐚ@#fI S&pշ^{~gs 7/0sV)8JVPyFO < Խ˲,ǀxB}UhV6>ONw"sU7&4*+2ȝZE2Ff[Ie:FvNaX72^AAܙAG|":Wý1Yj1u)L(bx>\Vo 6^kׅmo#.aڸdUm6'u`3WRFٴu$ O/IcpNj3 '㵖$7'ʦpq'wk햞֖Rة{g/<1*`/SinV;e~P!@;#gj爘@_k1&6[C;S?~Sᤅ(SH{y?Iox eLeޤHHsF򞵢a@Chn3Ee%d9YcObAN f_i" [#ɓ}`vNcel.w}bls|_-=FIʜ؇@?ʖ (K~ߪlߞZy8u{hf17d_]eo~,sVJyq? NcWU8胣\ِj$ƌT`z93 (=V[tQ*St56vĭ7|*)6kg|0G/:~}#dHc<-1)Y\k؝a\Tz3{Eȭ]K61ְ+)G`n+1Jlf㙓,cy5Ms {I&;nl,y1a5uECmY _ 7D }\~(89+K.ו s͟\f\3[\u{jCWLլ2\&v~VNLͰ$bZJ'u"tV3Sx> stream xڭueX]v-۸]݂%$X}s폵NS|&W`3,l "8.FpZ$M\A  2pp`G/gkK+W:韒L^yttм1!ǎ  $TTuet2ʚfjgmP69`g?3_cL. 3w7/lo vX:8 v0s3+ww0U+=?t2q+x4Uߺww W,S=;iX;X3&3WwY'?Uoh7odg=_"`Cn:w kfߓ01;yAH`,w$PB ;rt_M6 }ŀv`-@ת/.&v^%j1wbX!vZY,L;\lgzg8E/ r0;}V1] 9\6S}O^[!J`8".09yw._/n&H<+:[{fc{y2)3_sj`>j!Km^߷?= ' iyl1&3k~и@;Pcy㧒po@f//ϵa,M^G/; #}xv頳Bb?J"uN^`VrX9M]6jep$E8Twhf ]MXuG4)wG{/aw?z;4>:g-%J3]&uQ+ ( $ %p1x 5ŋZծ<5^GV4,dvs5.;a.}~f:@[lکe# ept۹J[YI0p::)仠G>\g|0D;o32{X :<4bBxSF&F'+o0'L.hiPWխÑmh9 xtRůGxs O ) ի9uܮ$>[E"ĩH2xvZ b.98 O$s^7 ( ('sA)':}@QMqWq)5,o9u OEk/?1zۉ4ԯdټ8,^e,-ò3L~kЁskxMX*GfD{wj`X|p:eZ3l`UQFnkKWPLU$3Y#/be2?)41v[Uz;8<-%\*d FGʁeW#ǖA+>ru]+m[kǸF~ p [l?P^*Kk(8*݁!$gGfܞEe #gC|ukyc5DvG59fNdt8]vEb'AQf<([)G# *3J#C.eֱۥH~nb 70B_i,2bLk+,RohAG߁'Wbz;"mV'$Σ14GYiY \|\V1G| UaҺ::lYM_Dݫ7=6>02 ==C>VunIggfu=02nA-lG5/uZe thC7+Z!"q`͎֗(}ƀ2;˞$ s!Xلu=K\GifPq>Au׬ z6\r] 6o2ǭPZ4(M^o&xTd. Y&v LpM,xL}5g '/zCO?X[c"e[ҒRoxXHFn;{@{Bkª 32hnյ+L Ћe Og2Cd\I~xU o9+B2#pfp= tEK3 '+f(10. 7TT`Ԛ5Mvj)7!k;k V^ّCs$QGk{r\wݸF5wكɥSExcg.qrDw}ߑt<;7ujO*;xxOn2D}L 0W Z6Kkc*fOŚHĊ>PuLJ~G]o`J EhGj !%3vf/E-D gHBeg ~GV/Qy$"*3U-QuVkWЕN蛄8^U."м]Ed>S'ԟh7/.CW;5d/$(j&FPٱ1w:mP<0ڳ&\P@Z -Ј'ŏdiyGM#];̵I/QtU.LCWϰs%hX٩H"T$anuxHѾ78 |<]5JϯG1mBPA[ E8B*ˁ;R{bAl[Y0'ܽ%K2q#Z5<03@6\%Z4I\TK(kMH?\A&g#ve%L߯sۄmf*K4A5w*'wl6]B TȘX)OA5Vs'$9°1--ҏj(|JԒ)O JeqUV~-)ěZJ ;F?b {<:A΀ j`%5%_DI!id " ݤ -6 jػd3|~/>_W? ' kHVS$+Mj;tJdG~LiΤԝØ5_'[HUԪoRdݽ`D]VwYd) O  P?ʁ}grt4\W}fX7[xpjHɠ #UŵCR\H\QO "]9}U(F9j>Lk;?;ˤ/ tPxRԾ4g]ro93ٝ +|@Lno-M2M py"2U8gj"r(`PY8ì<'DIʕwN9[+iXq9{æEj#Jm&].sFjړ_9JNX Z=uzG2 jS->^D_0zIĔ H ~M|}Ì2 =4gQʕ"<|PgcP :<_IKG2웸6JU0k E/$lNuRE*J 2撇'st nuXhѽ;`fOuO_u %F/gԬlb[{a²#_Dƙ7 WAΣtfc5K2W+zleUh, ^(&҆R1AU%<=& 5+*fxe(++e+})<IS>oEEUɳ C>O,4<)UҧŏVL/s"h_rm{`g~ࡣQ&3z7mKC\ i"20J[ Ln^q.˜E?Qk1egFYHN4$c6TY̔%V#{ -ƁˇlIĕu")hgb㌟& Wcl6qYdn%ȏ 2:ė QX(٢ Z.]a\~4Q8w;$iJZ 2;,Vw( qЏY9׹ 3.JU=?f% !)$8vQ&=KU/o?U:fX썶~H5 P@uL2߯UYS/C9Lo?Q`;cpٜZ8JL:DOiDЊV^니 ȅ.ÃH0*}U@IW$m9 W?"zloh%Z @v|7iKل~ێ ӤW _y)>o/FYt@H^a5f* J2vV$>$ {0%39*FЅJ(-|6_Rm(W2ªup ~8,B*Pu8b")W bmUσ.}sv(cTFT+tr ћ1u|NxguZK_!LgUcYNK f|ǬҐIU hP 2;A\QǘUuToddkc,Ɨ 6IgWCS07뱉`seIFmo'Py $mxxEOJ:jΪ529@6UAŧӀʅ`WEhYac6x?އqN@Ȧ. y4-)˼H$,ކFuLbj*'@ձѦy$V˱!f~E掩:&4J;mšXQ@L|ue6: 4ڬ!-&@ &, Ked[q.Ӌ0x: '"LVCaȜ L{oЗhZuL[37e^s3SgP2 ժHP669F2 x/CE\JG:Pp -[au1G"4ڎp"nnUG_d 挿PRBF]s J&AH^$}< b/JSmC1ŧ$3ؐUR =݆Ko#tdR.CњaRP^0]fӠ=%[M2sGWVgNsl=_=-;p?HE҈/KT?X](XzQW#sdq/x0@cU4p<\㴘(ꎮzR4DL ^?|Ͷ{=BބЧC5gzC'&BMG >x (vGuk\ 1S'\$k\%ԴT}3$FyrnZU+*doK.a9o0]ѕ!^ڨҝQ_/xWH>by~&@ՖQ(Qc"©>打XaKYhv`9i.H rgj(W\m+PgI+O0g!%”9dvq&#K!tWu38) oEGb q , LY@,dhӯER3bVy}3>ި[1LG\Q5U7mpS^zfz)}Ϗ' -<_U٣qe+S N/&+usl`EsY2 -T:0Xz}c_t3LQ 4M7+̽Ҍ9yZ鋼 -#͜ysF8b2VܨxbC, !ܣn_6aBN>n:* z׏:In{κ&:b|+BvA4c\1_JD Sߖ0$ԴJz^.UaR:TiC,!ꓐ}&u35!|EeNCƶuהl^eSXO3 :Xs`'f)|nR6W)CG|,p+>{픑cK5$G}B  7r/r)M݆ ]m;%, A|>ר'/W{JJ'5?U =0H&xY߱gsH"P2ܣ"neJQp`sA _d-uFXȃ` ~y8FǠ2ii&߰ 5pQx&M',TQkGC@yH/iR8pvAU0\oФ(XY.4ߧGd{5q y*BQW5edNԎ̢(r9i6ro?y= {Xq.=ޱLTy^D3)gI+x"mPNR"4ۑÇ& a_t믄ݡNCҹ.1"o!WdVwĭ-PPУ+N wWl:8?s;Zt,K/|VgWT) [̠)R8o@6a@[ŀu!1H_ 89íCbo_ycߩ[1ؕ9MoIZqΝRAF:{m:=E "T8\'k=p iG_]zQ>YtѥxrF~DSU e9!v\Pu-&/ $ߜ=z5uSO_+=s#e9Caf(O蘹6o&/]ؗrAyFg5Hۍ?AaY &0T6yм@6֚~Y{5Uy8Q1wxF_Kb$J%0u|',r`pɻ|7 +匑>twh! "Fʍ1p"LJxD^ShUgmT߱K9Дr_$;AG/Z>x9r0]PeVN*6N4&?| L9H,Z[Ӆȯi?Hb\Ep&\2j[`uU;9:|eprtZV GhJH(ai\ %yN2rRH~njVٹKRLxJ\CxW?G!oֆRr(;o,s&k NaD%3Rg152e\{8HAgeTnBT<\LRZ:6NxU,玣${(N[؏չu^aJ%Es >DxTjo$J =K#MTDy1zóR|Ts_df(֎H "KrOߊ>nG:CD˓ T BeN-W,$: E =ekiA"B8dq/X-є/Ptz4t2,}PR.CxBW!@0,x p۹|#kI#DwV 4\gZ~l%FmWqwabfS:-zDB)D}{FV^K?:t YGdET%c'kG-76}\NRwx9W}b{"ղMJQ/ rq K!?ϖ֒.]ņev?O/f7oZ7Wt$ev@xQ1 H_ӕ{'wߢy˯ES;nWRXD*KHwuEn]@37AHHÃo֖c9Ё:b~ ŗ2HbV3]\>19樮-'#ˆ,QdڝdFm_ h!qY'@VBNcPP,6n`GoiX~Jnk}Byq| 1Kv2&fZ:l{7x"6b ?U #%9S|9ũ&xR<3\6oct0UA^U̟) "X% dɣ;`z\voShCwٔĊ0""C;قfK%j/SHZ|"/RKt/gM.:EId >im3K2pPKi 'tȺ-gY%*r;áQ$>L\B1LKJAD =o"_m=O6?l\o;yq_VR2ΣwU\hM@hG_~V`)>>a[% __`GRR6>-≷O>4!*X,aYa !? Oi^8QstDȮ/?:Ѕ\9:<yIS-, PɴfѪ.T-BTQ"(:ٶk Y @'Xq#Ee_FW$ª?Gy3~E%5"ؿ` =F{A2|9Җ8ken!;83јs guy>HZ@] !yc4c;l^Qh@}ǂpZQ Q %Bmx|ϥ ܥkP[}g=ṲIe%j_h%z ҃|_jlXimLe7W&uȾ}p١bBf\_j*0g=m7Nv&Md &KS1)R9bScg!b\2m<4|}lObIu Ҧ䨩{PE*iF?* !zT_> 6QDho<3hC-&ߔ E~ЮW$*q$#<)<ačei]P`%I^dQ*j颚DӨ:DYڎpa&6'bų[(Ai >R? %:X 609 #jgFgx;%xeK 3A(J.svW$zQ^W#z X,~@&^e;=n~^ŦZ'j0$;.f1NYXHXp Zi*>}x 'xfl e7a͆ Ö\QN@h*u~i4zVѐTEý>xTSM鲫$)v~О aa,{NeB9Ac7Q@jf'.0*YFtx34t`z!gv^/:z9Nڣ##U'sNl5|oS,atf_p6CD`j`/S/P6~ٯ" |:oЎM2rQtGPv>F ^\!&N|]K ~ V\H碭b{])sC2DE7WAͅmڬ ?:/:(]B+Vj̅9~ ;M`U+OChk50J8=;7\ "~O0:r3S=??4}(~MMIËɧ+_{6j E~Mi)uf")FwuU{mT=r׹:, endstream endobj 133 0 obj << /Length1 1626 /Length2 16507 /Length3 0 /Length 17358 /Filter /FlateDecode >> stream xڬctek&۶m۶m8m'Tl;[V snw?x&ε4ŭ3ML pѴUb:r#PSKAv@g)s@L`E&$ cG&؂5tS tq& p8Q Ȭdj*dt*dg#%%@Of t#s%Yb,-.\nNvl̝A{9[:zX_5߄\܀-Anv. Qդd#O9vd@뿖V@KJWdnNxe swq4/ݿix9gLdns7+G_t?$7wqqpfA`73?"l $cgym?3C7 s+Uew$? O#r?]_e<U̝0dW h:)js';Gj ` mwK  eVjv K[2ksǿ=Wlpss߶1q?$8[ ojzrzL|\f*QZ? @o2?fv^2fN[=_ <+ VoϓvZ38 sg?-=[?;7a}h)nj-2>9YkIp?(;z>eVgPh|Ǒ?pUL@I?XExj 9\7޴I; l73}0gI0Փ JeVSvZ FC9MH-!!cA<9n`y:ՓV@Jw(b-kAkF L*5:5Sz5i~Ab YUvF͈s! T2Ie7DK96 49"SJh:W]Kg9'wg ^`Gucj1+$o4f Xka=^,s CE|?n.~̀FKu,zeq-v}o %__ũ8`_h+~(b=9ىѺp F Z lV!p/p\0{9{6j6j Ѥ&iB`F3JY$mv- w.+;ѳQD t gx]^B ղ\[%ǃIщ\f:c^X*^ LwE?ݷÃ:'*׺?MBsfήE,:s/Yi 7bpdzxjܚWxm}I8>hJdyWgZoq@Ez!hmS`WFfN!eCeRM`ݕwiQdRf;&d 6LGO,;d ݖZ'~*~/ n*UYG}*(^ LM%_Hʻ| yMY!FȦN^+;͌/4]Vb c# ֑ 6Iq ӲTD 'vptߙwD*¬̢ xKky_ooBTK5!^ًX(6~k _nYNyBَ}ͦ +/,Wl)C|^#cϺGv]<VbN7}J_opIA۲TɁfn.eGߖr}o5c>֣M+I Pe~cַ&U!Ɲ蛠RS99NϧH\WY4UBo|2'lbIj&hPII3[Hy6&ɷÆt#1~pF у^Ԫ4=WsvNQrLr6 Q]ӌ/ayYRitSx3&8MyBb02mMR-!582ݧ&SL E~CZ <+fG=eQ8߳xi[-W|tY'f=Ll [75N"w PSKɶ 9wҚntퟚ- MuPg9Zzu~S%+fBPoIHZ~Xsc`+vҽuS 7q"|#j@me*B=FבNP[^]v%OaFK p<J%cZm۹qcNKCZ}aFQkӯG8 M&^yKq+tҘSMn7ZZu 'fPZh,@PvWGQ{hfce u #d7,8_g05l.ՃT\>n;6GE`=` $$vi~S]f(pmhk1҆*S5r'r[ЁKjX<p;uėpCn6Q(x\YMy&'#u~D.,e;><X|{̂1vOA7Cm=K> x2v !V+]8x3F]lMIY8# e7Ϟ8)^M|޸S7,+-tB{4<6l+Ogġ_g[r'/w%/|ܝdLH'~Wiw?[c;J䩹]:g~۩rY 2IZ6JfTuU&5XdU#dxO-`c-{E 4 -p$U&U`Ex[J b2Mu1dfѺ(S}ܝ+*@mwkfWQe4@v)FYބ|Ne fu*u0fFoe{:4J"]]cg)L#w7`Qdz}l :v߻"}μ/kN />>yM<5{>`Pp-]C,(SB¾Q|RC =+; ߓC7X/#-2q1Tj:fkvn"CoVD;݊]G*Fk%E!2$sx'uަ40>;k碯v ~U #S|n3,ޒ9oVuX-H@`G(S=Jn]87ZVLґSHDžC|qRŜ` +I75lZnY.]`{5=ȼRFCu&<cM)ƿJ kq9@9s # |(YnbA>W|h#>8 uuV\JeE8p"Z/\9.+ k1zʬŅ# L<~|A(2Ӧ;gmǎji+rj&^Xƪ(އVcwGDۯ`<'㘷1Tj'eےQg;+%WN/ edz`l 'Cl݁H ؝"f]'@ʠٔd+Y:K֠'Dl)s(IPIͰnS-òfbȼ|{AJ1ףRmt \yo?+-Nb\>觰/] ppFo_`E2Nf?Xʐ'Ye Y$/F^O^йlFc?X I]M'5ȫ*]B+D|usU eC{qG`z'X[ =oL2,'!T{xtuv DwH.6&-36d|Idǽ݌TM=s,` YDIܧ(=79? aĝ0r˧ecV_͆n0+:F?SzDI.=Y?~^EP^y>Plrh}(яOdbgY0b0uO2DČ=zy^m2F)QQ͐ޗKWƓ!,.(w :ye^4>s J dez]/@$0:Uܦ0ߦwaG얗*1YnbU%1["=J''F=Y/r2}7 "WmDOʰEEжlLѬַ)\eA%4GMл森ƹ:R߮*`e=AK,kT+r'/o662 ^C\Nj$_ԭ;0nS΢|P[e&CYIλ:싃!D3a%./Ea+ ޺|ٹgW/Vު52ԣU2h4tѩuњǂrGe#}H%|_^ahYpV׾hkB9U Gd nl* #l]hG=aNzov2<"XƴTڶKG_&٠θ E^eqdjIPgoW=7v?Ū$ش= W2v]Afgv4uaf T- "JJ]̅"EAh[} +A] 0?=,`n2'D [nϭOU gާRܠ8_~8]b7AjrR0Ŏ+Amx;$G9`2%'D,>^ck8szZ;pnIdzMtu`824ݑm_h>e층}g3!8AGIY?Zp9nI 7 ]RToli0M:_{ۛb\_bb3GquH1bM?9' ݀_ϫ>}SHu*z,A50?|n>(Jkp4v=0y_@6EPgd]q^wɏ0n9؂|0CΊŗۉс6?tX>_j&0!|=x] -M@ab৳X翚u6Z;NTUU5Q%t楺$'B<u.5E;t"c+{&=Vru~ ps"KߚWzB媵#na~\"܍1O)?vI7$b-k7)[˹݆X j)0HR6m+m6%--/B9-LOd0u'ƛ~*7Fӑ|VxU{%VMzBl lv(e(CSc"iGdƵ;h:"<1y=bDԮN3a'CF7ڨ( _&I':R. {PiO~Sۗ VQ:@Dq_[rl6>:3sFY\2TZǾw-d~eP/)Ez><9GFh#ƤIM9@Xf5R^,+I!!JDPL Ts6'fJ%G \K[R1U.}]OoyW0pC;$WQ&p%_z4M?UbmNյ3 onjQ=HY=3K/B('O7$_em*D u=K#=Z/5yszks,~H JF'r6 "W:A;ɔibb)+-T\Ǣ{sWVw0պㆴQȢ̃(O6ՇGCR'L` TU]U#?^5ڣ1ea[|Hڠғ1˝~L  ׊ -\f7Ù-GK\iCƸd\2hII({-wآx9U4w,N.ƫ@j I({zHӾ||c8$*ܩ4x0e~' ,iR7_ X[Ӗ)r(o\KsGPAz)n2LYyW1Fp^.Pwz{%5.H% .g$Jv-Atr QM5yqφ?tw;{&Z{"415⛠VȞ/At'*[n~-VгδrQfwj`fZF ~BV9fIVwy)qp:p3bRy i|tB]2V2 !/~EφG)"cIA4N_C³^ j> Qw- lAh+nar@@b;@E8nJMX .߱OCn|z[6!A<{sa "o~(*n;°~Z=bLѶق5G~U(b tO/ +Un? llUOoú媶ZPX3e k 3Eg d#łƷ)#OR܄q6dşLJ|nUgԕ/ϑc23.b´C?:=zZ @phJpd^:Th {hwm#\<&n)cMLdo z=jdx`cۊTRw$ [?c*PB k}RIAKXDY?se&ĭޟQYG+仲F/%x*kp"{nq.?Ъ[N6))X)8DV^#K#vR/0 ='_UA/h+Soyۭ>ĬJZN[HC'| *{v:S m2uH-$&lW![غmMմZ\>F',nι Sa"j+zmG nbH]3 LI"=2d _N~"0))+kgtjOzυ}8nW8+'B @`y̩GZ=OKRwN@Rb2BO)obd_X-nzX|{j+Eٱ8bա/(@݈W֬\Ud 122I =(`9%E8-0w$Ut(/V3o0,Ef@ְ^^ƻIv`j){Ns~_rwCM$k.1yz2J-lЮ9Y_%L'Q3ѩ(zR,T~t:ǏRzVwJI[̙L>9+(W6g{&-{{wT+-r')k uWY`165V8)ezF̋qF ⸎ QLh ~\gBvd7#Zds/lQ݀aHVU6ų:+Ph-*jh*KfҨ(ua^)b֭Xfa'KC5SY (DxRwj{#7j}bcBzahշ֝Oo]4N؃Q@H߈ ,D!!xwm[9?kn—)/@+#ups0NlX=ӀtsJ(}G~kҨ#g1vU7r Ĝ !a<tu|6L{B,z|fxx!")yDMa%i :lTo#&nu"ǰOp7^x$c,{ʥx6:<<L_ڏ9.~wT6+X;Mq;SB>7OqѵCqW 4#aROX.ӐL^'Ë$^L`C*bԮeHy_rET, un"a= ⠱5s$ˇAzPNɷ' 8% cQavY@p@. %#ϭ?[X kBՁU;!v{F$||A)  # &\>8cp| Ɍ8׵98Wܜ;!@]OhvŐhCSj}.BV<2oJ ˢ+*[H{*tO9%m;fA3.*wrER~*ԗ$ Gp ~y-$r~`p/8"m4%fѶIG],aBNjLKG']Y381϶ƑQH2t tݚn&v- H ѐޯ9Zc3Ig -羍Bih,\Zx q~f}J&ΔFafגCvaiF3;r4J!.L0{)&B߸AQ5\$쯕T$%^4j؊#zg,6, -ΣF(ÿW:Ϟ}OcE:Z,/?X^3""pdT|I~[8eȕϔQBP)..ןi"+0wOs[?=nھߍӅf '"tҍeLRtZuv?a̴:f.؉30 h$׫Y;\ul4d5BC]p7Gu0׽AK% 2)6bXQW!ʮp237˅q.\zʝ^1g;q'!_՚5tUؑM, E֥)N^PB"P':r:EG[#Eq&nݨrX0ʾD,y** A[7 |WA@Ix4k,$ mbvrWVٯvfutOq4J,RWB`)=BK͎Um6!cۼys-p s^֠B\_3,ukn1E 6DIe]:Y0'洼J:p.Z(Nrgz-fʲ$KXsO-$..yԧvPFm1Y,/֭#PJ9 nS9 Li\L( pP8@;#]Ծ,i裊63dGjDNp@7E J=E:rSX)\]*rW*zm҄1CV.j'U 6(s=)m{aBM m..uPv"kbxkn]ޫ0vhݒ2?[`&cC0swCJfJ/\t ccxY7L5y1Kò8wBo,b&ҫ0rm/ޙbߣSeGJ)!RVj̚uǮ4:j.M~[~_cȾE O_= FLf+Q+ 1 B˭nB{ T:!M jX yK_BWӊ]0|$Z]gr&M7W֯'9\􀹱$ ^Hݣu6BOd?3xPm6&1Va1X%01L՝B<^^iŐŬ&R)"5H5ԧDXXXdZj*m[\XrI 6,! yn3y1tyKh|'utK93M39bƐc[;`'oρa_aw>-< v[bla';^ F!4>'^7k$f=Z$\Tr%$܋V֧Q,RqK)vY|PcN%Me#nP/&tɄȬZ^x'&SJmG&-=n |6RhTfܚzu\{15cҰ_GC^sV̋4 Tdۨ~'k5)ɭ.g?J!Rwb-7 2!ݯ<j^Zmi8x l+;O]^h^ i"׬q=B;TynGgAK=B .gZtc~Ҭ,sCO @VES!b9*8$qN'iu-ݣn+չ$MR2>9<%!K/~m(cjMy-Zwٖm=ԁws5_Tnf|ꄱA z4i<2v:XqO<6Ɣl-I߰%=&UOoЭGj]LZG̟yPv!=_(,)mPِu[$A si0y=Y$;.nKcWRzQj#;-LUnusS" .?O(E &Wp</+vʍǯn貦w5fʧZu|a ~DNo_H[&?&0kU)vꧡU&p-+3sc\/BaЯNJ l ^\EpلO hKqWI| /9'"!eNM/y' 9K|6!13g'h GdH(rrhۑGS6x{ L {woxJhcvRa_(}{83ɽvOb[2ӔWs tĚtNck2Qz4~$+BȤ`dC+IalPA. c~RmPt%  0þLD'$īi5S,PMH8 5 їlXU_v_˂g#zBU>(ȋ-@H.Xc! NωפDx {?b73־ AYgHn?ߕ(oHV2KqP]x~Gq5 )I+XTCٿh hB-!J, : VGC@/Ms:&e:n3ugHI}dy>EKAH%i'[LކOw?MdA^OK[sXi3KkQ%}%]7UZ2{:bMSA>]4Ih Wz Bo-K4>̌ -M'qi 0Nh]DJ2i ~XaAz2&LB #LKl}1T։bz,o{Z-z|n|d-j( -VgXt+ eվn^j*?qm/Y6,6eipɷc4*}TV8%jMO'/֘=h Bx J yX\(4T7ݝý$?xjм]Dv>1A"!22 `)vfC%s cգL ToX4ԶNKi\4Nq=_%*ZF]9Ewal?{wi4$[cj}X\IfVX<8%pWN@e"98N+[<"cx',\T#s8|dB82khME_S]6iRF[rz{9:9VްY{qIUZ>tM}DQ$/8[I]iMbcq3W6x}tfpP,{ŏyم|q&IzBOI[+g{I<1<)}„, {F@71^3& 3> YIY e@?ѾgoXͻr~4Y% ˓$nsPӮ'#`D~Yωxʫ#4C?LkO#[ϕwW'fzNł8}q0iE %GҮKmlC!@lmX[4bh) v幤˚8K{1R% 31VǗCWRE]هȺZ)*$W >xu@-(lToL( bk7OBgж`(25@o`m1 D5'.I'XzAOpj kA 2tuR>abA@l{.Dsq^{UכǶWxڒ$ihɻ~rDoK?|7M*;WDS" uiݠ֗L^(X*+q2Cx endstream endobj 135 0 obj << /Length1 1631 /Length2 9088 /Length3 0 /Length 9924 /Filter /FlateDecode >> stream xڭveT]ے5]Opw'$'HHpkro~=^ߟcWͪYUkZcRkJZ-`GWVN6!4K2ʋLK+pe,\B=5@hp "N^. wM=FffZ,FB@wkWup}؀i5uU9@tymBdPY!@F `vi % X N@+k b8]ރ oupt}W0hfW \_W2u0brrfUNwrC@0li r_++jr\rY kW2'_eA@pvB 4v}[NN^E@ 2'kN+ܶ Gd?hprmvstk k`G/5]S'AyoF_R˺98ZaW ` xr5n. DUVN^6 ,hrzpxݸ:@#U5_0w +{?J W][UYQ-crSWm/' ?S[%z9||>qsbqqpp^x2V`?ӣjh:pe[?> B^^[ }ZC=0&c ;T\]_%XnX0!5ȴ7ԅ@ߙ <%fZkg d7-FK;ыp> gǡ=iZ@6x~OKsk.+fvM ]5}@O]8$Za ߔcdW/sV2B;/1zXMJf_2Sk&7cNtx=񕳻S4ٙChYC~3-(:~0=ufS|eu֖1]5{w.~ cGJFw:{:m+_cяw[ۙ -/m6y_$e H6Vrbni݋1y88YBĔy Vd8@ ;v:5#*2O(D|$z]ɥ/T\l_ofM{wJ38KX/`lOm;nR|R/_i86RC{̇ 0w]I^@/ۧb1!H<ș\-\rin ^6)PDrRC+Qer\Y˺q^](7lLލ^t쭺3Bde?S'\spNC9mx\0b- T L1s/G'=IlI,6D(Ux:-^~q8;ˬ.Fү*=vn8m?a۽x yFL(JFAoWk'#u(O RfneUn0AOn5K`t x" JI 3H4h`F=l}9RQpY&FyvXOV],*#@ #p<|MPxU7$S1j&q/,,5c!:׺gǠO%E<4xs'mE^;紨m#$qmhPof饫~Y>&[yՐezNeQd\O~@J7k ?:n?= Ψ%|iY՟P7v#@՚%)>ZC&ϨB֐u7 qz@.(uAB,P ߔt7&ӧGp-|[EO8 N"J9`@cRq!Vb־nJFO 6KnLݙUdR#SR2O'dm~ħ="zbgTD>^df#_arZ1!(Mw7MZ#v;>A_id62fqmڹU. (i}魩a|A}#W4mXdVp#;x5mmdZǐd(ayCźMj*PzľRDCzg~(A*&b)Ԇ`'4 #ꫳ/걵T["cBiWLFUoSMLڷ+|a+qޮ^Yiv^L` 3 C݈K\*Qɦl!-If5ݢmix͐8֠7_UD/ط:5q6*G]P.ΌdF@%y[kdgdV/ڲAьv0DZC½qshڞ-.e\=iZ `p voęvhJ{KPftBi&ɦMLt,&a1\6לg9{\z[ QǏ&W_\a蟒X@18MP{{`S| ߐ@z}_/72pZdMwpt8 NRԻ2WJ}u #mvs=@7,vX(Z ,V~E9`#Fp`ZѮ~ݐ2/*^0oDk,N}sj9'8fS\+-h&$QPѫOE$e4x8`0Vy@YLHƚxջәfp6XŤb,ʱB^XkL-7,%Ġ9)}iQtu+~h;vhmu-Vfh$rTug F oT7Ncec i B^ݺp^;D˅'GOpƫhiEP/NF*akL%+ cpCCnq82N\QUʠy. ?mC{9IEzAږ-p0 `SxOaIbd[\deX爼|w6۽RSR㢨=~Sr~pK Q${┥R;z-@40T/ |~m#ֲX&@j1/T)0 ϶j8ǥC(a*5ʸ )c^f"9`'1Eڠj)cUcy jtKH=*K@И|Xq`o \k!S(qwT7y[n2v/s}"ۇTPYWo 1 T"I.}ail9Y A#/7`2<5ݧ[xύ07R y%DU|u["j/9q]%2ZxhMpr-m1I,Q:؋1fhB0n싄|yJy淨FFI}0ăX[:č^d–g )^7۬/͚wK%uah9TGɮ H+.y|~l\$2"'-șx|fcw]4!]'=qyɳBv;!OG(Ǔws;L7r ˥QB hqnscpE)~6gF=ز$Eَ\-Tfs;F#G(EiotFZi|yO\v\㩘K=޴&xJ*ou&YB nbdAb8X]KQ@+d5o;< j]"Z>Gj $Чօ]G:u6L'lz55=&XϐH6 `⣤xkURݕ1ܥ5S9`:di4LXv0=^! k9CЭ%fUkz{cI0ͻXta6ӝ ;&퍜_i *Q"f$xY @B7סg?wp(Bja47U,糪a{-&4K%Er|x챏TfnÅ|UZLvVN4[fKզ9`DP7({pK h&=?N_zJVsՋK\[1H )go4rOoFzfX L\Tz\H2ـܱӵ=ׅ5G4%.yRtDx5Pf<Euw kmЌaL/K=Hao/D0zv%a-AY1L(GE؋Β'GaiB9١lkfEugJE#cyMqVgXx< 5)0qUJI/0]\O[/G|GC){>QMg_ {4FmcgK MeOs*E 3oR*5(j\aaBU0`O’HI"IM? B>m4Vm Ȭwlws HwϠOet6cy@?Nܧ_S@ۧd|RU--ߑa~`##3X5[e(*q2k=C YoZ pDQtQwzD>q @5Q:|UbH)%m PZb,;¾wMk38pz7@rOŴ$񗞔fXr{٦%.'|J|/c`/Ows])BhBGOGDQۡ7U^zmq>O#3!?ͦ&]Ĩ GHj{"(nO;9"hmuӅK0Pfj_hCQ)0.U<:c x|,!YG ͇<ֱM`"2=`*0| 䫒-$i>)Uz,vr>G-?#֌O;_/o"/yJ Trx!QTuGfxV+}ǬR*Y<\Afcx!G o̓i% 91w2:hЏMsWH͟,G@(ɧO>Ji7#T/WbFnab/ _ibvdqieMOr-}hS5WxYS̑s}($8H2idD.d>{Q9n@@YVjBټ@7!k:ްI4IHt;kDxT9{a`Z0/R; [&@5!v>ݵ۽ '.ʶkSq̵n͖3}ϋ9  }ER^W/xag扐i M*~Y󺬎mko|mitkk8}1&|ԄHږtٌ;1.8 Wȉ̹DžI-zzU7MJmF2]UV8őv o8vKW4)ôt8;N-xb/]k%sGHK![#M3\˟Gc1v ]]cg P$K(0sU5K")UCg88>">j*=Mw<X29}b}/tb F- VPIVr8c$lHaw!:!\4˔"̘ۓ:hu);X|Kia6~xjK6axɕ ?])ftDF&P,Y􅥘1ebs^|d2K l;!(J4دbjO(yV[2"չ@u]a_L+nStP&* rmb[[bY]Tqȑ:DxhlGcnWڤT?/oXeҴa/[>OMRa.m0'Ye6{z;BRS6G8c3mTK1Z񹚟G8Qҿ{Dgy> E/gNڳ[U 8O޶c?~p}'FL탫~ZW WΖznS[nrZQ☋ lF2-%YRf~oe#}~{Z{u3iUl}kR{$W ɞqAWWpFؼ0лHr_(Sdu Dz^xv=Ml[~rTt-ٶ5KC}>9iH ¥j{!wQZp+lieou\vB "0E"Ov29P1h;J$x bgۆ",5Ͷ[ ߤEN$X$(ٜ$# T |La)Z |gYMg&[ɥiBoˆ)++5J{k{QQ^DvMi~CPF&:S L#$b =̓-HnU?'ZZUsa5!0J4ked:7y֮؎sXDtwHu7E #tB,2&{Y>kWi!zL}BѱMRn<ڽ:9<즇_ XT Z$27J.Phm>|V 8hb/Y Ofzǖ͋pwz'p;oQ\z.5"NFf,V<sJ=mݱ@.@2m;,i-l ~6yyU)1BŨUQk+d1wH?ߵx0b? 4fF8uҿ(u{w 4%̝!_ ea]si/$hsO/bD(~!JNITMy_0?\0gGO5:=3 zql4 | oG8ِ"wp%|JDǣHv̎zfJd(E.oT Ѵ*%]I:/ tyZ{T` \WEJyW6M0'yJqGV}%yGG~Y!Tm:\Jp`5,"`LbynS.EvF=f7rחE#NKbq2g_)z\RjߠM`PbW. oށY%liƢ*co8>'GO4ܔlnp:*vBhK- Ufu /\Ą9?Q{ڂaa=cp/vh,Q٥ C-켣t|RCr!;h/{}F`;{^gc[ݔe[*9m9|PVl4_f_:S5$yk-NhDzmCsxG`շ<9*GODM3*Xi31p^E—R/|n:*fuG&_=vVŔ*M&)(t~ whYZ3)C[j)("mY#J눆45.WpwpMur1F,jqlL*wepEM3|J^ N-ok;\j{ O]Q-m/ov3:!"~ h4O7]Ut Mg}CDQlA\Zr\}ɮ31r4:,#ů溤} ʱ76~9g& Pyԉ#7/GtPSm *V5qjP=hnĦ MEj,X2ga˗@q͋>M5*m?054AY|f]OyLJN t6"b0cӎC!޸+)8v)tM+ӆ8' ď4+if^_[V}$NDsg¥O;ş}\Hf endstream endobj 2 0 obj << /Type /ObjStm /N 100 /First 812 /Length 3186 /Filter /FlateDecode >> stream x[Ys8~ׯěpVj;Nq=x<ms#He5(R,Y15[ h4>РLKW,fRj& Ý6ΠKFRgN)0,R)ǢH21/0V0ֱ6L,o1 .IWMa(H'̫dAEY \1XVfGLV3UZL#ŌH!bg TvaDĠb%-G b*(A%Vm]:vy=E񸂟*JzcƢC't$ƑaC5Y :t#t*  hŠ1 f^$ԳKG$n0 $D$n9b'aw btd08PIPd*(%ΐCF r "8dՊ&$rMr:{R;43{A hnӤ81b" &ʓ ä<`'q.W2'-Ͻ{tpD4SJNc:i:sT79>;a]ӄN>5sLX6#`y#u(oD\ G4-hN5Yfn>EO}SFa4Ӡ͚I{ʤiø9-PENsS' nkaJ[d7ey \1z"/v^V'e<|R`*&?L|6%<fɣ2SDb dsޭ)ߜN7Q;&:2֧ $ΈCV@fuܧL>*-m#Gm *ٗQIpQ?FVPN 2s1 A{,ȝtV4%{ c8*Y3J0f3 {óͶÞoai9z\?" v2evJ#Zc㌻/OBp4L!P7={L&$EV0d'{N Lt_icZVDd٧aʈ獵Y2y>\&E&Ӝ+$ZUMR"+G9dOE6(Yy9+ڠBdK3.<ڕ|ǏfexF/1i34}Jl fs|wvx߷&+vh[6y8)EnvvOȡޢ\l2+P"񏳼LGYba"SʓL fQzl4L8L ?d0 a)I^3>|b69O(H_q v}![ܖI(HEHm$3ȤȬ}mF.Z&5{7aRڪ![b;["[=)Uu|?X1*z5Yչ̏eȬȪ7rh G?\/pa0[a +JuWkZZl~wZ)+fNn2췬G|n_x߷l6]gr;EoODrm86+C k\ޜ.ΥZRgqN?;m Uiow_vA1v+Dk?K!*UěF:uEs9pEKO_ƕqxl3NO#Dcu0cCߜ6܇f=A}w*(}mֺ@gyv m<,}C{G[Ž>_ZjHEQfw;SFd)Z*j* k }=" JoNWġGFyLE(썶a۱ }a:4;(@V=/Q6x89G--*2ƎebE2O?ΒQUCoUe*no6iw|t{$?(~3i 5xYxuV2'j^(gldYULY*!O?t/E:q>1_K ̇r4+4M.vs{ٓ9v@0=:$FM߲IqO5x-x%ks $d2\&S좰 Xu7%CZ6͸: ` -ӫ(Bg;3j[hkMR>OiW}N֌lHo -_giAjK9<#bk]b  W tw!ɳG ;K_!8.BW`]p?'߁\#>"RmQ% 5"#'m|"`'|+;fUѢtRRqACB߯=qh R杣Q0maL JcId?J%G輞S%@a߉'WDs *QuW5VA?*ן8xqǖm,{׶ҵm"5]w)x nsk\2͘'Vb\OYeks7W_=H"U zozAs`v 5vzmf^-N C\0e0w(&MtӾ#reEm6+"wc٬2uT5X1W>_%wՂ^U߬ CG@Of`QXL&ź[CGlDߴR쩋UY"}|m I? QiQR2A[6,/m}Ynl},_+mI濅dkk%XL۵o!e̲xɶ|o}4닦eԲ$ \ /mm,չL "denFZRrhl endstream endobj 147 0 obj << /Author(\376\377\000B\000i\000l\000l\000\040\000V\000e\000n\000a\000b\000l\000e\000s)/Title(\376\377\000U\000n\000i\000v\000a\000r\000i\000a\000t\000e\000\040\000P\000o\000l\000y\000n\000o\000m\000i\000a\000l\000s\000\040\000i\000n\000\040\000R)/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.40.18)/Keywords() /CreationDate (D:20190321084648+10'00') /ModDate (D:20190321084648+10'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/Debian) kpathsea version 6.2.3) >> endobj 137 0 obj << /Type /ObjStm /N 16 /First 120 /Length 554 /Filter /FlateDecode >> stream x}Tj@ }W1.\=! iT`a1%Z'͑3FSIB9 ] /Length 400 /Filter /FlateDecode >> stream x%ҽOTQyY[PDEAEE[!6XB6;BBAPmbaiBooh3sr͘Ff)i9B$|R ^i=p+PGo.b82K3J oa$LC9Tp*r|ᘬh˓p N8 <\Z U~ C5Yˤw>d?lpYe{W᪔kRٚ&pCJg}Rfප7_:9/` C;pAJZS~myz]/#x ?3Ơ`POvwH{OÊUFzz8OOW3\ T`X^h{B7 endstream endobj startxref 245367 %%EOF polynom/inst/doc/polynomials.R0000644000176200001440000000402613444541327016173 0ustar liggesusers## ----setup, include = FALSE---------------------------------------------- knitr::opts_chunk$set(collapse = TRUE, comment = "", fig.height = 7, fig.width = 9, fig.align = "center", out.height = "0.25\\textheight") library(polynom) setHook("plot.new", list(las = function() par(las = 1), pch = function() par(pch = 20)), "append") ## ------------------------------------------------------------------------ He <- list(polynomial(1), polynomial(0:1)) x <- polynomial() for (n in 3:6) { He[[n]] <- x * He[[n-1]] - (n-2) * He[[n-2]] ## R indices start from 1, not 0 } He <- as.polylist(He) plot(He) plot(deriv(He)) plot(integral(He)) ## ------------------------------------------------------------------------ x <- c(0,1,2,4) (op <- poly.orth(x)) (fop <- lapply(op, as.function)) (P <- sapply(fop, function(f) f(x))) zapsmall(crossprod(P)) ### Verify orthonormality ## ------------------------------------------------------------------------ (p1 <- poly.calc(1:6)) (p2 <- change.origin(p1, 3)) predict(p1, 0:7) predict(p2, 0:7) predict(p2, 0:7 - 3) (p3 <- (p1 - 2 * p2)^2) # moderate arithmetic expression. fp3 <- as.function(p3) # should have 1, 2, 3 as zeros fp3(0:4) ## ------------------------------------------------------------------------ x <- 80:89 y <- c(487, 370, 361, 313, 246, 234, 173, 128, 88, 83) p <- poly.calc(x, y) ## leads to catastropic numerical failure! predict(p, x) - y p1 <- poly.calc(x - 84, y) ## changing origin fixes the problem predict(p1, x - 84) - y plot(p1, xlim = c(80, 89) - 84, xlab = "x - 84") points(x - 84, y, col = "red", cex = 2) #### Can we now write the polynomial in "raw" form? p0 <- as.function(p1)(polynomial() - 84) ## attempt to change the origin back to zero ## leads to problems again plot(p0, xlim = c(80, 89)) points(x, y, col = "red", cex = 2) ## major numerical errors due to finite precision polynom/NAMESPACE0000644000176200001440000000253513444365154013204 0ustar liggesusersimportFrom("stats", "coef", "deriv", "poly", "predict") importFrom("graphics", "lines", "par", "plot", "points", "grid") export("GCD", "LCM", "as.polylist", "as.polynomial", "change.origin", "integral", "is.polylist", "is.polynomial", "monic", "poly.calc", "poly.from.roots", "poly.from.values", "poly.from.zeros", "poly.orth", "polylist", "polynomial") S3method("[", "polylist") S3method("GCD", "polylist") S3method("GCD", "polynomial") S3method("LCM", "polylist") S3method("LCM", "polynomial") S3method("Math", "polynomial") S3method("Ops", "polynomial") S3method("Summary", "polylist") S3method("Summary", "polynomial") S3method("as.character", "polynomial") S3method("as.function", "polynomial") S3method("c", "polylist") S3method("coef", "polynomial") S3method("deriv", "polylist") S3method("deriv", "polynomial") S3method("integral", "polylist") S3method("integral", "polynomial") S3method("lines", "polynomial") S3method("plot", "polylist") S3method("plot", "polynomial") S3method("points", "polynomial") S3method("predict", "polynomial") S3method("print", "polylist") S3method("print", "polynomial") S3method("print", "summary.polynomial") S3method("rep", "polylist") S3method("solve", "polynomial") S3method("summary", "polynomial") S3method("unique", "polylist") polynom/R/0000755000176200001440000000000013444306706012157 5ustar liggesuserspolynom/R/utils.R0000644000176200001440000000044613444306712013443 0ustar liggesusers## accumulate a la Abelson and Sussman. accumulate <- function(f, init, x, right = TRUE) { if (length(x) == 0) { return(init) } f <- match.fun(f) if (right) { f(x[[1]], Recall(f, init, x[-1], right = TRUE)) } else { Recall(f, f(init, x[[1]]), x[-1], right = FALSE) } } polynom/R/polyxtra.R0000644000176200001440000001314713444540703014167 0ustar liggesuserschange.origin <- function(p, o) { if (!is.polynomial(p)) stop(paste("\"", deparse(substitute(p)), "\"", " is not a polynomial")) o <- unclass(o[1]) r <- predict(p, o) m <- 1 p <- deriv(p) while (p != 0) { r <- c(r, predict(p, o)) m <- m + 1 p <- polynomial(unclass(deriv(p))/m) } polynomial(r) } coef.polynomial <- function(object, ...) { as.vector(object) } deriv.polynomial <- function(expr, ...) { expr <- unclass(expr) if (length(expr) == 1) return(polynomial(0)) expr <- expr[-1] polynomial(expr * seq(along = expr)) } integral <- function(expr, ...) { UseMethod("integral") } integral.polynomial <- function(expr, limits = NULL, ...) { expr <- unclass(expr) p <- polynomial(c(0, expr/seq(along = expr))) if (is.null(limits)) p else diff(predict(p, limits)) } lines.polynomial <- function(x, len = 1000, xlim = NULL, ylim = NULL, ...) { p <- x # generic/method if (is.null(xlim)) xlim <- par("usr")[1:2] if (is.null(ylim)) ylim <- par("usr")[3:4] x <- seq(xlim[1], xlim[2], len = len) y <- predict(p, x) y[y <= ylim[1] | y >= ylim[2]] <- NA lines(x, y, ...) } monic <- function(p) { p <- unclass(p) if (all(p == 0)) { warning("the zero polynomial has no monic form") return(polynomial(0)) } polynomial(p/p[length(p)]) } plot.polynomial <- function(x, xlim = 0:1, ylim = range(Px), type = "l", len = 1000, ..., xlab = "x", ylab = "P(x)") { p <- x # generic/method if (missing(xlim)) xlim <- range(c(0, Re(unlist(summary(p))))) if (any(is.na(xlim))) { warning("summary of polynomial fails. Using nominal xlim") xlim <- 0:1 } if (diff(xlim) == 0) xlim <- xlim + c(-1, 1)/2 if (length(xlim) > 2) x <- xlim else { eps <- diff(xlim)/100 xlim <- xlim + c(-eps, eps) x <- seq(xlim[1], xlim[2], len = len) } Px <- predict(p, x) if (!missing(ylim)) Px[Px < ylim[1]] <- Px[Px > ylim[2]] <- NA plot(x, Px, type = type, xlim = xlim, ylim = ylim, ..., xlab = xlab, ylab = ylab) grid(lty = "dashed") lines(x, Px, type = type, ...) } points.polynomial <- function(x, length = 100, ...) { p <- x # generic/method pu <- par("usr") x <- seq(pu[1], pu[2], len = length) y <- predict(p, x) out <- y <= pu[3] | y >= pu[4] y[out] <- NA points(x, y, ...) } poly.calc <- function(x, y, tol = sqrt(.Machine$double.eps), lab = dimnames(y)[[2]]) { if (missing(y)) { p <- 1 for (xi in x) { p <- c(0, p) - c(xi * p, 0) } return(polynomial(p)) } if (is.matrix(y)) { if (length(x) != nrow(y)) stop("x and y are inconsistent in size") lis <- list() if (is.null(lab)) lab <- paste("p", 1:(dim(y)[2]), sep = "") for (i in 1:dim(y)[2]) lis[[lab[i]]] <- Recall(x, y[, i], tol) return(structure(lis, class = "polylist")) } if (any(toss <- duplicated(x))) { crit <- max(tapply(y, x, function(x) diff(range(x)))) if (crit > tol) warning("some duplicated x-points have inconsistent y-values") keep <- !toss y <- y[keep] x <- x[keep] } if ((m <- length(x)) != length(y)) stop("x and y(x) do not match in length!") if (m <= 1) return(polynomial(y)) r <- 0 for (i in 1:m) r <- r + (y[i] * unclass(Recall(x[-i])))/prod(x[i] - x[-i]) r[abs(r) < tol] <- 0 polynomial(r) } poly.from.zeros <- function(...) { poly.calc(unlist(list(...))) } poly.from.roots <- poly.from.zeros poly.from.values <- poly.calc predict.polynomial <- function(object, newdata, ...) { p <- object # generic/method v <- 0 p <- rev(unclass(p)) for (pj in p) v <- newdata * v + pj v } print.summary.polynomial <- function(x, ...) { cat("\n Summary information for:\n") print(attr(x, "originalPolynomial")) cat("\n Zeros:\n") print(x$zeros) cat("\n Stationary points:\n") print(x$stationaryPoints) cat("\n Points of inflexion:\n") print(x$inflexionPoints) invisible(x) } solve.polynomial <- function(a, b, ...) { if (!missing(b)) a <- a - b a <- unclass(a) if (a[1] == 0) { z <- rle(a)$lengths[1] a <- a[-(1:z)] r <- rep(0, z) } else { r <- numeric(0) } switch(as.character(length(a)), `0` = , `1` = r, `2` = sort(c(r, -a[1]/a[2])), { a <- rev(unclass(a)) a <- (a/a[1])[-1] M <- rbind(-a, cbind(diag(length(a) - 1), 0)) sort(c(r, eigen(M, symmetric = FALSE, only.values = TRUE)$values)) }) } summary.polynomial <- function(object, ...) { dp <- deriv(object) structure(list(zeros = solve(object), stationaryPoints = solve(dp), inflexionPoints = solve(deriv(dp))), class = "summary.polynomial", originalPolynomial = object) } .is_zero_polynomial <- function(x) { identical(x, as.polynomial(0)) } .degree <- function(x) { length(unclass(x)) - 1 } .GCD2 <- function(x, y) { if (.is_zero_polynomial(y)) { x } else { if (.degree(y) == 0) { as.polynomial(1) } else { Recall(y, x%%y) } } } .LCM2 <- function(x, y) { if (.is_zero_polynomial(x) || .is_zero_polynomial(y)) { return(as.polynomial(0)) } (x/.GCD2(x, y)) * y } GCD <- function(...) { UseMethod("GCD") } GCD.polynomial <- function(...) { args <- c.polylist(...) if (length(args) < 2) stop("Need at least two polynomials.") accumulate(.GCD2, args[[1]], args[-1], FALSE) } GCD.polylist <- GCD.polynomial LCM <- function(...) { UseMethod("LCM") } LCM.polynomial <- function(...) { args <- c.polylist(...) if (length(args) < 2) stop("Need at least two polynomials.") accumulate(.LCM2, args[[1]], args[-1], FALSE) } LCM.polylist <- LCM.polynomial polynom/R/polybase.R0000644000176200001440000001225613444302662014123 0ustar liggesuserspolynomial <- function(coef = c(0, 1)) { a <- as.numeric(coef) while ((la <- length(a)) > 1 && a[la] == 0) a <- a[-la] structure(a, class = "polynomial") } as.polynomial <- function(p) { if (is.polynomial(p)) p else polynomial(p) } is.polynomial <- function(p) { inherits(p, "polynomial") } Ops.polynomial <- function(e1, e2) { if (missing(e2)) return(switch(.Generic, `+` = e1, `-` = polynomial(NextMethod(.Generic)), stop("unsupported unary operation"))) e1 <- unclass(e1) e2 <- unclass(e2) l1 <- length(e1) l2 <- length(e2) e1.op.e2 <- switch(.Generic, `+` = , `-` = { e1 <- c(e1, rep.int(0, max(0, l2 - l1))) e2 <- c(e2, rep.int(0, max(0, l1 - l2))) NextMethod(.Generic) }, `*` = if (l1 == 1 || l2 == 1) { e1 * e2 } else { m <- outer(e1, e2) as.vector(tapply(m, row(m) + col(m), sum)) }, `/` = { if (l2 == 0) stop("unsupported polynomial division") if (l2 == 1) e1/e2 else { p <- rev(e1) q <- rev(e2) r <- rep.int(0, length(p)) i <- 0 while (length(p) >= l2) { i <- i + 1 d <- p[1]/q[1] r[i] <- d p[1:l2] <- p[1:l2] - d * q p <- p[-1] } if (i == 0) 0 else r[i:1] } }, `^` = { if (l2 != 1 || e2 < 0 || e2%%1 != 0) stop("unsupported polynomial power") switch(as.character(e2), `0` = 1, `1` = e1, { p <- q <- polynomial(e1) for (i in 2:e2) p <- p * q as.numeric(p) }) }, `%%` = { if (l2 == 1) 0 else { p <- rev(e1) q <- rev(e2) while (length(p) >= l2) { d <- p[1]/q[1] p[1:l2] <- p[1:l2] - d * q p <- p[-1] } if (length(p) == 0) 0 else rev(p) } }, `==` = return(l1 == l2 && all(e1 == e2)), `!=` = return(l1 != l2 || any(e1 != e2)), stop("unsupported operation on polynomials")) polynomial(e1.op.e2) } Summary.polynomial <- function(..., na.rm = FALSE) { ok <- switch(.Generic, sum = , prod = TRUE, FALSE) if (!ok) stop(gettextf("Generic '%s' not defined for \"%s\" objects.", .Generic, .Class)) switch(.Generic, sum = accumulate("+", as.polynomial(0), polylist(...)), prod = accumulate("*", as.polynomial(1), polylist(...))) } Math.polynomial <- function(x, ...) { switch(.Generic, round = , signif = , floor = , ceiling = , trunc = polynomial(NextMethod(.Generic)), stop(paste(.Generic, "unsupported for polynomials"))) } as.character.polynomial <- function(x, decreasing = FALSE, ...) { p <- unclass(x) lp <- length(p) - 1 names(p) <- 0:lp p <- p[p != 0] if (length(p) == 0) return("0") if (decreasing) p <- rev(p) signs <- ifelse(p < 0, "- ", "+ ") signs[1] <- if (signs[1] == "- ") "-" else "" np <- names(p) p <- as.character(abs(p)) p[p == "1" & np != "0"] <- "" pow <- paste("x^", np, sep = "") pow[np == "0"] <- "" pow[np == "1"] <- "x" stars <- rep.int("*", length(p)) stars[p == "" | pow == ""] <- "" paste(signs, p, stars, pow, sep = "", collapse = " ") } print.polynomial <- function(x, digits = getOption("digits"), decreasing = FALSE, ...) { p <- as.character.polynomial(signif(x, digits = digits), decreasing = decreasing) pc <- nchar(p) ow <- max(35, getOption("width")) m2 <- 0 while (m2 < pc) { m1 <- m2 + 1 m2 <- min(pc, m2 + ow) if (m2 < pc) while (substring(p, m2, m2) != " " && m2 > m1 + 1) m2 <- m2 - 1 cat(substring(p, m1, m2), "\n") } invisible(x) } as.function.polynomial <- function(x, ...) { a <- rev(coef(x)) w <- as.name("w") v <- as.name("x") ex <- call("{", call("<-", w, 0)) for (i in seq_along(a)) { ex[[i + 2]] <- call("<-", w, call("+", a[1], call("*", v, w))) a <- a[-1] } ex[[length(ex) + 1]] <- w f <- function(x) NULL body(f) <- ex f } poly.orth <- function(x, degree = length(unique(x)) - 1, norm = TRUE) { at <- attr(poly(x, degree), "coefs") a <- at$alpha N <- at$norm2 x <- polynomial() p <- list(polynomial(0), polynomial(1)) for (j in 1:degree) p[[j + 2]] <- (x - a[j]) * p[[j + 1]] - N[j + 1]/N[j] * p[[j]] p <- p[-1] if (norm) { sqrtN <- sqrt(N[-1]) for (j in 1 + 0:degree) p[[j]] <- p[[j]]/sqrtN[j] } class(p) <- "polylist" p } polynom/R/polylist.R0000644000176200001440000000461713444364202014164 0ustar liggesuserspolylist <- function(...) { .polylist_from_list(list(...)) } .polylist_from_list <- function(x) { structure(lapply(x, as.polynomial), class = "polylist") } is.polylist <- function(x) { inherits(x, "polylist") } as.polylist <- function(x) { if (is.polylist(x)) x else if (is.list(x)) .polylist_from_list(x) else polylist(x) } deriv.polylist <- function(expr, ...) { structure(lapply(expr, deriv), class = class(expr)) } integral.polylist <- function(expr, ...) { result <- lapply(expr, integral, ...) if (length(result) > 0 && is.polynomial(result[[1]])) class(result) <- class(expr) result } plot.polylist <- function(x, xlim = 0:1, ylim = range(Px), type = "l", len = 1000, ..., xlab = "x", ylab = "P(x)") { p <- x # generic/method if (missing(xlim)) { ## try to cover the 'interesting' region xlim <- range(Re(unlist(lapply(p, summary.polynomial)))) } if (any(is.na(xlim))) { warning("summary of polynomial fails. Using nominal xlim") xlim <- 0:1 } if (diff(xlim) == 0) xlim <- xlim + c(-1, 1)/2 if (length(xlim) > 2) x <- xlim else { eps <- diff(xlim)/100 xlim <- xlim + c(-eps, eps) x <- seq(xlim[1], xlim[2], len = len) } Px <- unlist(lapply(p, predict.polynomial, x)) if (!missing(ylim)) Px[Px < ylim[1]] <- Px[Px > ylim[2]] <- NA plot(cbind(x, Px), xlab = xlab, ylab = ylab, type = "n", xlim = xlim, ylim = ylim, ...) grid(lty = "dashed") for (i in seq(along = p)) lines(p[[i]], lty = i, col = i) invisible() } print.polylist <- function(x, ...) { cat("List of polynomials:\n") y <- x x <- unclass(x) NextMethod() invisible(y) } c.polylist <- function(..., recursive = FALSE) { .polylist_from_list(unlist(lapply(list(...), as.polylist), recursive = FALSE)) } "[.polylist" <- function(x, i) { .polylist_from_list(NextMethod("[")) } rep.polylist <- function(x, times, ...) { .polylist_from_list(NextMethod("rep")) } unique.polylist <- function(x, incomparables = FALSE, ...) { .polylist_from_list(NextMethod("unique")) } Summary.polylist <- function(..., na.rm = FALSE) { ok <- switch(.Generic, sum = , prod = TRUE, FALSE) if (!ok) stop(gettextf("Generic '%s' not defined for \"%s\" objects.", .Generic, .Class)) switch(.Generic, sum = accumulate("+", as.polynomial(0), c(...)), prod = accumulate("*", as.polynomial(1), c(...))) } polynom/vignettes/0000755000176200001440000000000013444541330013760 5ustar liggesuserspolynom/vignettes/polynomials.Rmd0000644000176200001440000001545013444540430016777 0ustar liggesusers--- title: "Univariate Polynomials in R" author: "Bill Venables" date: "`r Sys.Date()`" output: pdf_document: includes: in_header: header.tex html_document: null vignette: > %\VignetteIndexEntry{Vignette Title} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r setup, include = FALSE} knitr::opts_chunk$set(collapse = TRUE, comment = "", fig.height = 7, fig.width = 9, fig.align = "center", out.height = "0.25\\textheight") library(polynom) setHook("plot.new", list(las = function() par(las = 1), pch = function() par(pch = 20)), "append") ``` ## Preamble The `polynom` package is an R collection of functions to implement a class for univariate polynomial manipulations. It is based on the corresponding S package by Bill Venables ``, and was adapted to R by Kurt Hornik `` and Martin Maechler ``. This document is based on the original 'NOTES', with minor updates. # A Univariate Polynomial Class for R ## Introduction and summary The following started as a straightforward programming exercise in operator overloading, but seems to be more generally useful. The goal is to write a polynomial class, that is a suite of facilities that allow operations on polynomials: addition, subtraction, multiplication, "division", remaindering, printing, plotting, and so forth, to be conducted using the same operators and functions, and hence with the same ease, as ordinary arithmetic, plotting, printing, and so on. The class is limited to univariate polynomials, and so they may therefore be uniquely defined by their numeric coefficient vector. Coercing a polynomial to numeric yields this coefficient vector as a numeric vector. For reasons of simplicity it is limited to REAL polynomials; handling polynomials with complex coefficients would be a simple extension. Dealing with polynomials with polynomial coefficients, and hence multivariate polynomials, would be feasible, though a major undertaking and the result would be very slow and of rather limited usefulness and efficiency. ## General orientation The function `polynomial()` creates an object of class `polynomial` from a numeric coefficient vector. Coefficient vectors are assumed to apply to the powers of the carrier variable in increasing order, that is, in the *truncated power series* form, and in the same form as required by `polyroot()`, the system function for computing zeros of polynomials. (As a matter or terminology, the *zeros* of the polynomial $P(x)$ are the same as the *roots* of equation $P(x) = 0$.) Polynomials may also be created by specifying a set of (x, y) pairs and constructing the Lagrange interpolation polynomial that passes through them (`poly.calc(x, y)`). If `y` is a matrix, an interpolation polynomial is calculated for each column and the result is a list of polynomials (of class `polylist`). The third way polynomials are commonly generated is via its zeros using `poly.calc(z)`, which creates the monic polynomial of lowest degree with the values in `z` as its zeros. The core facility provided is the group method function `Ops.polynomial()`, which allows arithmetic operations to be performed on polynomial arguments using ordinary arithmetic operators. ## Notes 1. `+`, `-` and `*` have their obvious meanings for polynomials. 2. `^` is limited to non-negative integer powers. 3. `/` returns the polynomial quotient. If division is not exact the remainder is discarded, (but see 4.) 4. `%%` returns the polynomial remainder, so that if all arguments are polynomials, `p1 * (p2 / p1) + p2 %% p1` is the same polynomial as `p2`, provided `p1` is not the zero polynomial. 5. If numeric vectors are used in polynomial arithmetic they are coerced to polynomial, which could be a source of surprise. In the case of scalars, though, the result is natural. 6. Some logical operations are allowed, but not always very satisfactorily. `==` and `!=` mean exact equality or not, respectively, however `<`, `<=`, `>`, `>=`, `!`, `|` and `&` are not allowed at all and cause stops in the calculation. 7. Most Math group functions are disallowed with polynomial arguments. The only exceptions are `ceiling`, `floor`, `round`, `trunc`, and `signif`. 8. Summary group functions are not implemented, apart from `sum` and `prod`. 9. Polynomials may be evaluated at specific x values either directly using `predict(p, x)`, or indirectly using `as.function(p)`, which creates a function to evaluate the polynomial, and then using the result. 10. The print method for polynomials can be slow and is a bit pretentious. The plotting methods (`plot(p)`, `lines(p)`, `points(p)`) are fairly nominal, but may prove useful. ## Examples 1. Find the Hermite polynomials up to degree 5 and plot them. Also plot their derivatives and integrals on separate plots. The polynomials in question satisfy $$ \begin{aligned} He_0(x) &= 1,\\ He_1(x) &= x,\\ He_n(x) &= x He_{n-1}(x) - (n - 1) He_{n-2}(x), \qquad n = 2, 3, \ldots \end{aligned} $$ ```{r} He <- list(polynomial(1), polynomial(0:1)) x <- polynomial() for (n in 3:6) { He[[n]] <- x * He[[n-1]] - (n-2) * He[[n-2]] ## R indices start from 1, not 0 } He <- as.polylist(He) plot(He) plot(deriv(He)) plot(integral(He)) ``` 2. Find the orthogonal polynomials on $x = (0, 1, 2, 4)$ and construct R functions to evaluate them at arbitrary $x$ values. ```{r} x <- c(0,1,2,4) (op <- poly.orth(x)) (fop <- lapply(op, as.function)) (P <- sapply(fop, function(f) f(x))) zapsmall(crossprod(P)) ### Verify orthonormality ``` 3. Miscellaneous computations using polynomial arithmetic. ```{r} (p1 <- poly.calc(1:6)) (p2 <- change.origin(p1, 3)) predict(p1, 0:7) predict(p2, 0:7) predict(p2, 0:7 - 3) (p3 <- (p1 - 2 * p2)^2) # moderate arithmetic expression. fp3 <- as.function(p3) # should have 1, 2, 3 as zeros fp3(0:4) ``` 4. Polynomials can be numerically fragile. This can easily lead to surprising numerical problems. ```{r} x <- 80:89 y <- c(487, 370, 361, 313, 246, 234, 173, 128, 88, 83) p <- poly.calc(x, y) ## leads to catastropic numerical failure! predict(p, x) - y p1 <- poly.calc(x - 84, y) ## changing origin fixes the problem predict(p1, x - 84) - y plot(p1, xlim = c(80, 89) - 84, xlab = "x - 84") points(x - 84, y, col = "red", cex = 2) #### Can we now write the polynomial in "raw" form? p0 <- as.function(p1)(polynomial() - 84) ## attempt to change the origin back to zero ## leads to problems again plot(p0, xlim = c(80, 89)) points(x, y, col = "red", cex = 2) ## major numerical errors due to finite precision ``` polynom/vignettes/header.tex0000644000176200001440000000021213444532254015732 0ustar liggesusers\usepackage{fullpage} \usepackage{parskip} \usepackage[utf8]{inputenc} \usepackage{fouriernc} \usepackage{hyperref} \usepackage{amsmath} polynom/MD50000644000176200001440000000342313445127716012273 0ustar liggesusers75a5f98fd04a11a2a774315eba571138 *ChangeLog ae25f13ac2cba60201c24dd4432f25ce *DESCRIPTION 17668d43cf1b4165e931f4e3d7399b43 *NAMESPACE 89a4fb421a02956a0f41588527e42d14 *R/polybase.R a9cc0c99e1fef950836adf7985791014 *R/polylist.R d47dc3e02df689b2df9bf9f93d9c11ee *R/polyxtra.R 119bf9f0d1652b468ff37c6f12f1aa21 *R/utils.R 3d745afa5c949f279bd6da4bfc251882 *README b4be183a8d5290ae21c6e3ad1849fd71 *build/vignette.rds cffcb1ed229d98b92d31576c96fb5117 *inst/CITATION 56c30b94ac99ea941455a0411e166c9b *inst/doc/polynomials.R bc99c646680fae1f34bf1ab9914a083a *inst/doc/polynomials.Rmd 79b75406fc82fa802bce10dbd92ed013 *inst/doc/polynomials.pdf b7a2315cf2ad37e3a203b1a9c754515a *man/Math.polynomial.Rd 0b2f80b2fcdd445885ab6bdf150f5f47 *man/Ops.polynomial.Rd 53693e01e80a9693d8128a6e079e4936 *man/as.function.polynomial.Rd be3937d54467f049e5ae75a64f21d8d6 *man/change.origin.Rd 815c39c5b1a62228f84a0bda423c8b16 *man/deriv.polynomial.Rd 7d41fa4c68eb2a7ff5c5beb509166ffc *man/gcd.Rd 48619d64529930aa9231bc16fd39bd93 *man/integral.polynomial.Rd a1626f5633fe6e90359282a8b238ff3f *man/lines.polynomial.Rd be732b8a09c6eeb49ae1ba8253158fd6 *man/monic.Rd 508988094123e377b0968bb6b7356571 *man/plot.polynomial.Rd 6eda63a3c57b6f91ee666df2f3e4ad76 *man/points.polynomial.Rd 867a3cbbace4af3e6810334865b6bf23 *man/poly.calc.Rd 5036c9598ee05052b12c36d1a6bc182a *man/poly.orth.Rd 48963b648ace56635a116ba05640f12a *man/polylist.Rd feec30713ce4153ad5176426c1dd03ec *man/polynomial.Rd 62c07ff44666ec32b3c99543a757e124 *man/predict.polynomial.Rd 5d3fb2675fe606f3b6871f199e319e4a *man/solve.polynomial.Rd 8f5284768b8f41ad4b89eb79f6f5453e *man/summary.polynomial.Rd bbb4951f234eb0793fb0aa05b6060232 *man/zSummary.polynomial.Rd 29b3c1cd5afd54ae3b56054e11c5d446 *vignettes/header.tex bc99c646680fae1f34bf1ab9914a083a *vignettes/polynomials.Rmd polynom/README0000644000176200001440000001504312210542364012631 0ustar liggesusers'polynom' is an R collection of functions to implement a class for univariate polynomial manipulations. It is based on the corresponding S package by Bill Venables , and was adapted to R by Kurt Hornik and Martin Maechler . The original 'NOTES' is appended below: A Univariate Polynomial Class for S =================================== Introduction and Summary: The following started as a straightforward programming exercise in operator overloading, but seems to be more generally useful. The goal is to write a polynomial class, that is a suite of facilities that allow operations on polynomials: addition, subtraction, multiplication, "division", remaindering, printing, plotting, and so forth, to be conducted using the same operators and functions, and hence with the same ease, as ordinary arithmetic, plotting, printing, and so on. The class is limited to univariate polynomials, and so they may therefore be uniquely defined by their numeric coefficient vector. Coercing a polynomial to numeric yields this coefficient vector as a numeric vector. For reasons of simplicity it is limited to REAL polynomials; handling polynomials with complex coefficients would be a simple extension. Dealing with polynomials with polynomial coefficients, and hence multivariate polynomials, would be feasible, though a major undertaking and the result would be very slow and of rather limited usefulness and efficiency. General Orientation: The function polynomial() creates an object of class `polynomial' from a numeric coefficient vector. Coefficient vectors are assumed to apply to the powers of the carrier variable in increasing order, that is, in the `truncated power series' form, and in the same form as required by polyroot(), the system function for computing zeros of polynomials. (As a matter or terminology, the "zeros" of the polynomial P(x) are the same as the "roots" of equation P(x) = 0.) Polynomials may also be created by specifying a set of (x,y) pairs and constructing the Lagrange interpolation polynomial that passes through them (poly.calc(x, y)). If y is a matrix, an interpolation polynomial is calculated for each column and the result is a list of polynomials (of class `polylist'). The third way polynomials are commonly generated is via its zeros using poly.calc(z), which creates the monic polynomial of lowest degree with the values in z as its zeros. The core facility provided is the group method function Ops.polynomial(), which allows arithmetic operations to be performed on polynomial arguments using ordinary arithmetic operators. Notes: 1. `+', `-' and `*' have their obvious meanings for polynomials. 2. `^' is limited to non-negative integer powers. 3. `/' returns the polynomial quotient. If division is not exact the remainder is discarded, (but see 4.) 4. `%%' returns the polynomial remainder, so that if all arguments are polynomials, p1 * (p2 / p1) + p2 %% p1 is the same polynomial as p2, provided p1 is not the zero polynomial. 5. If numeric vectors are used in polynomial arithmetic they are coerced to polynomial, which could be a source of surprise. In the case of scalars, though, the result is natural. 6. Some logical operations are allowed, but not always very satisfactorily. `==' and `!=' mean exact equality or not, respectively, however `<', `<=', `>', `>=', `!', `|' and `&' are not allowed at all and cause stops in the calculation. 7. Most Math group functions are disallowed with polynomial arguments. The only exceptions are `ceiling', `floor', `round', `trunc', and `signif'. 8. Summary group functions are not allowed. 9. Polynomials may be evaluated at specific x values either directly using predict(p, x), or indirectly using as.function(p), which creates a function to evaluate the polynomial, and then using the result. 10. The print method for polynomials can be slow and is a bit pretentious. The plotting methods (plot(p), lines(p), points(p)) are fairly nominal, but may prove useful. Examples: 1. Find the Hermite polynomials up to degree 5 and plot them. Also plot their derivatives and integrals on separate plots. The polynomials in question satisfy He(0) = 1, He(1) = x, He(n) = x * He(n) - (n - 1) * He(n-1), n = 2, 3, ... > He <- list(polynomial(1), polynomial(0:1)) > for (n in 3:6) He[[n]] <- 0:1 * He[[n-1]] - (n-2) * He[[n-2]] > He [[1]]: 1 [[2]]: x [[3]]: -1 + x^2 [[4]]: -3*x + x^3 [[5]]: 3 - 6*x^2 + x^4 [[6]]: 15*x - 10*x^3 + x^5 > plot(He[[6]]) > for(n in 1:5) lines(He[[n]], lty=n) > plot(deriv(He[[6]])) > for(n in 1:5) lines(deriv(He[[n]]), lty=n) > plot(integral(He[[6]])) > for(n in 1:5) lines(integral(He[[n]]), lty=n) _________________________________________________________________ 2. Find the orthogonal polynomials on x = (0, 1, 2, 4) and construct S functions to evaluate them at arbitrary x values. > x <- c(0,1,2,4) > op <- poly.orth(x) > op List of polynomials: [[1]] 0.5 [[2]] -0.591608 + 0.3380617*x [[3]] 0.5640761 - 1.168443*x + 0.282038*x^2 [[4]] -0.2860388 + 3.114644*x - 2.502839*x^2 + 0.4370037*x^3 > p1 <- as.function(op[[2]]) > p2 <- as.function(op[[3]]) > p3 <- as.function(op[[4]]) > cbind(P1 = p1(x), P2 = p2(x), P3 = p3(x)) P1 P2 P3 [1,] -0.59160798 0.5640761 -0.28603878 [2,] -0.25354628 -0.3223292 0.76277007 [3,] 0.08451543 -0.6446584 -0.57207755 [4,] 0.76063883 0.4029115 0.09534626 > poly(x, 3) 1 2 3 [1,] -0.59160798 0.5640761 -0.28603878 [2,] -0.25354628 -0.3223292 0.76277007 [3,] 0.08451543 -0.6446584 -0.57207755 [4,] 0.76063883 0.4029115 0.09534626 [excess output deleted for simplicity] _________________________________________________________________ 3. Miscellaneous computations using polynomial arithmetic. > p1 <- poly.calc(1:6) > p1 720 - 1764*x + 1624*x^2 - 735*x^3 + 175*x^4 - 21*x^5 + x^6 > p2 <- change.origin(p1, 3) > p2 -12x + 4x^2 + 15x^3 - 5x^4 - 3x^5 + x^6 > predict(p1, 0:7) [1] 720 0 0 0 0 0 0 720 > predict(p2, 0:7) [1] 0 0 0 0 720 5040 20160 60480 > predict(p2, 0:7 - 3) [1] 720 0 0 0 0 0 0 720 > p3 <- (p1 - 2 * p2)^2 # moderate arithmetic expression. > p3 518400 - 2505600*x + 5354640*x^2 - 6725280*x^3 + 5540056*x^4 - 3137880*x^5 + 1233905*x^6 - 328050*x^7 + 53943*x^8 - 4020*x^9 - 145*x^10 + 30*x^11 + x^12 > fp3 <- as.function(p3) # should have 1, 2, 3 as zeros > fp3(0:4) [1] 518400 0 0 0 2073600 polynom/build/0000755000176200001440000000000013444541330013047 5ustar liggesuserspolynom/build/vignette.rds0000644000176200001440000000032013444541330015401 0ustar liggesusersb```b`fef`b2 1# '/ϩL) MA LK-)IU,Iŧ % Ml[E@„5/17vԂԼ?iN,/AQU ^ 7(1 棸(\^P7@btr$$ %polynom/DESCRIPTION0000644000176200001440000000207013445127716013466 0ustar liggesusersPackage: polynom Version: 1.4-0 Title: A Collection of Functions to Implement a Class for Univariate Polynomial Manipulations Authors@R: c(person("Bill", "Venables", role = c("aut", "cre"), email = "Bill.Venables@gmail.com", comment = "S original"), person("Kurt", "Hornik", role = "aut", email = "Kurt.Hornik@R-project.org", comment = "R port"), person("Martin", "Maechler", role = "aut", email = "maechler@stat.math.ethz.ch", comment = "R port")) Description: A collection of functions to implement a class for univariate polynomial manipulations. Imports: stats, graphics License: GPL-2 NeedsCompilation: no Author: Bill Venables [aut, cre] (S original), Kurt Hornik [aut] (R port), Martin Maechler [aut] (R port) Maintainer: Bill Venables Suggests: knitr, rmarkdown VignetteBuilder: knitr Packaged: 2019-03-20 22:46:48 UTC; ven037 Repository: CRAN Date/Publication: 2019-03-22 09:50:06 UTC polynom/ChangeLog0000644000176200001440000002125013444536760013535 0ustar liggesusers2019-03-21 Bill Venables * DESCRIPTION New version is 1.4-0. New maintainer Bill Venables. Various adjustments. * NAMESPACE added grid to imports from graphics * inst/CITATION: changes email address for Bill Venables. * R minor changes to code and manual pages * man minor changes to code and manual pages * vignettes Added a vignette based on README 2016-12-08 Kurt Hornik * DESCRIPTION: New version is 1.3-9. * inst/CITATION: Canonicalize CRAN URLs. 2016-01-06 Kurt Hornik * inst/CITATION: Avoid personList(). 2014-03-17 Kurt Hornik * DESCRIPTION (Version): New version is 1.3-8. * NAMESPACE: Improve. 2013-09-01 Kurt Hornik * DESCRIPTION (Version): New version is 1.3-7. * README: Update, and merge in 'NOTES'. * NOTES: Remove. 2009-09-10 Kurt Hornik * DESCRIPTION (Version): New version is 1.3-6. * inst/CITATION: Improve. 2009-02-05 Kurt Hornik * DESCRIPTION (Version): New version is 1.3-5. * inst/CITATION: Improve. 2009-01-05 Kurt Hornik * DESCRIPTION (Version): New version is 1.3-4. * man/change.origin.Rd: Rd fixes. 2007-07-12 Kurt Hornik * DESCRIPTION (Version): New version is 1.3-3. (License): Clarify. 2007-04-22 Kurt Hornik * DESCRIPTION (Version): New version is 1.3-2. * R/polybase.R (as.function.polynomial): New version by BV which avoids parsing and subsequent contextstack overflows for large polynomials (spotted by Robin Hankin ). 2007-02-01 Kurt Hornik * DESCRIPTION (Version): New version is 1.3-1. * inst/CITATION: Get date/year and version from the package metadata. 2006-11-19 Kurt Hornik * DESCRIPTION (Version): New version is 1.3-0. * R/polyxtra.R (lines.polynomial): Add arguments 'xlim' and 'ylim' as suggested by Tamas K Papp . 2006-11-18 Kurt Hornik * R/polyxtra.R: New function GCD() and LCM() for computing the greatest common divisor and least common multiple of a family of polynomials. * R/polybase.R (Summary.polynomial): Add sum and prod summary methods for polynomials. * R/polylist.R: Add coercion and test functions for polylists, as well as Summary, c, rep, unique, and subscript methods. 2006-11-16 Kurt Hornik * R/polyxtra.R (plot.polynomial): Sync code with docs. Spotted by Tamas K Papp . 2006-09-09 Kurt Hornik * DESCRIPTION (Version): New version is 1.2-3. (Imports): Add graphics. * NAMESPACE: More missing imports. 2006-08-12 Kurt Hornik * DESCRIPTION (Version): New version is 1.2-2. * NAMESPACE: Add missing imports. 2006-06-26 Kurt Hornik * DESCRIPTION (Version): New version is 1.2-1. * inst/CITATION: Added. 2005-10-24 Kurt Hornik * DESCRIPTION (Version): New version is 1.2-0. * NAMESPACE: Added. 2004-06-22 Kurt Hornik * DESCRIPTION (Version): New version is 1.1-15. * man/as.function.polynomial.Rd: * man/integral.polynomial.Rd: Fix minor Rd syntax problems. 2004-04-23 Kurt Hornik * DESCRIPTION (Version): New version is 1.1-14. * R/polybase.R (Ops.polynomial): Fix logic in flow control for polynomial division and power, the first spotted by Kjetil Halvorsen . 2004-03-03 Martin Maechler * DESCRIPTION (Version): New version is 1.1-13. * DESCRIPTION (Date): added * R/polybase.R (as.character.polynomial): new argument 'decreasing = FALSE'; faster rep.int() instead of rep(). * R/polybase.R (print.polynomial): new arguments 'digits', 'decreasing' * man/polynomial.Rd: ditto 2004-01-31 Kurt Hornik * DESCRIPTION (Version): New version is 1.1-12. * INDEX: Removed. * TITLE: Removed. 2003-04-23 Kurt Hornik * DESCRIPTION (Version): New version is 1.1-11. (Author, Maintainer): Update KH email address. 2002-05-05 Kurt Hornik * DESCRIPTION (Version): New version is 1.1-10. * man/zSummary.polynomial.Rd: Cannot have 'Summary.polynomial.Rd' and 'summary.polynomial.Rd' under Windows, hence rename the file documenting the group methods. 2002-05-02 Kurt Hornik * DESCRIPTION (Version): New version is 1.1-9. * R/polybase.R (Ops.polynomial): Divide and remainder had 'lq' instead of 'l2'. Problem spotted by Oleg M?ller . 2001-11-27 Kurt Hornik * DESCRIPTION (Version): New version is 1.1-8. * R/polyxtra.R: .Alias() is gone in R 1.4.0, hence remove. 2001-08-20 Kurt Hornik * DESCRIPTION (Version): New version is 1.1-7. * R/polybase.R: * R/polylist.R: * R/polyxtra.R: * man/Math.polynomial.Rd: * man/Summary.polynomial.Rd: * man/as.function.polynomial.Rd: * man/deriv.polynomial.Rd: * man/lines.polynomial.Rd: * man/plot.polynomial.Rd: * man/points.polynomial.Rd: * man/predict.polynomial.Rd: Fix generic/method inconsistencies. 2001-06-02 Kurt Hornik * DESCRIPTION (Version): New version is 1.1-6. * man/*.Rd: Codoc fixes. 2000-12-24 Kurt Hornik * DESCRIPTION (Version): New version is 1.1-5. (Maintainer): New entry. 2000-12-19 Kurt Hornik * DESCRIPTION (Version): New version is 1.1-4. (Title): Added. * TITLE: Removed. * man/polynomial.Rd: Work around Rdconv problem. Tue Dec 28 19:35:22 1999 Kurt Hornik * DESCRIPTION (Version): New version is 1.1-3. * man/polylist.Rd: New file. * man/polynomial.Rd: Add \alias for as.character.polynomial, coef.polynomial and print.polynomial. * R/polybase.R: Move horner() inside as.function.polynomial(). Sun Apr 11 01:29:22 1999 Kurt Hornik * DESCRIPTION (Version): New version is 1.1-2. * man/poly.orth.Rd: Fix syntax error in the example. Sun Mar 7 19:59:51 1999 Kurt Hornik * DESCRIPTION (Version): New version is 1.1-1. Major overhaul. * R/polybase.R: New base file, based on V&R MASS2 ch04 scripts with minimal changes. * R/polylist.R: New file containing all "polylist" stuff. * R/polyxtra.R: New file containing all other extra stuff. Both files based on the most recent versions of BVs package, without support for style and variable attributes etc. * man/*.Rd: Updated, reindented. * man/poly.calc.Rd: New file. * man/predict.polynomial.Rd: New file. * man/solve.polynomial.Rd: New file. * man/summary.polynomial.Rd: New file. * man/make.character.polynomial.Rd: Deleted (function no longer in the package). * man/poly.from.values.Rd: Deleted (now poly.calc()). * man/poly.from.zeros.Rd: Deleted (now poly.calc)). * man/poly.value.Rd: Deleted (now predict.polynomial()). Thu Dec 3 13:43:49 1998 Martin Maechler * DESCRIPTION (Version): New version is 1.0-8. * man/polynomial.Rd: NEW * man/make.character.polynomial.Rd: examples executable * man/*.Rd: Add \keyword{symbolmath}, add \alias{.} Tue Dec 1 12:39:49 1998 Martin Maechler * R/zzz.R: "nam" instead of "nm" Tue Dec 1 12:10:27 1998 Martin Maechler * R/zzz.R: Drop as.expression[.default]; is in R base. * R/polynom.R (and zzz.R): Re-indented; TRUE/FALSE. Sat May 9 10:24:06 1998 Kurt Hornik * DESCRIPTION (Version): New version is 1.0-7. * R/zzz.R: No longer make as.function() and solve() generic (now done in the R distribution). Tue May 5 12:51:17 1998 Kurt Hornik * DESCRIPTION (Version): New version is 1.0-6. * R/zzz.R: Make as.expression() and as.function() generic. Add a version of as.function.polynomial() which works under R. Make solve() generic, and add solve.polynomial() by BV. Tue Feb 24 23:23:21 1998 Kurt Hornik * DESCRIPTION: New version is 1.0-5. Now released under GPL. * README: Copyright now is with KH. Sun Feb 22 10:00:47 1998 Kurt Hornik * DESCRIPTION: New file; new version is 1.0-4. * VERSION: Removed. Wed Sep 17 12:25:18 1997 Kurt Hornik * VERSION: New version is 1.0-3. * man: All man sources converted to new Rd format. * ChangeLog: Finally started. polynom/man/0000755000176200001440000000000013444365322012530 5ustar liggesuserspolynom/man/points.polynomial.Rd0000644000176200001440000000161211304021274016501 0ustar liggesusers\name{points.polynomial} \alias{points.polynomial} \title{Points Method for Polynomials} \description{ Add a polynomial to an existing plot usually as a point plot. } \usage{ \method{points}{polynomial}(x, length = 100, \dots) } \arguments{ \item{x}{an object of class \code{"polynomial"}.} \item{length}{size of x vector at which evaluations are to be made.} \item{\dots}{additional arguments as for the points generic.} } \details{ This is a method for the generic function \code{\link{points}}. Points representing the given polynomial are added to an existing plot. Values outside the current plot region are not shown. } \seealso{ \code{\link{plot}}, \code{\link{lines}}, \code{\link{points}}, \code{\link{plot.polynomial}}, \code{\link{lines.polynomial}}. } \examples{ plot(poly.calc(-1:5)) lines(poly.calc(2:4), lty=2) points(poly.calc(-2:6), pch=4) } \keyword{symbolmath} polynom/man/Ops.polynomial.Rd0000644000176200001440000000134411304021274015730 0ustar liggesusers\name{Ops.polynomial} \alias{Ops.polynomial} \title{Arithmetic Ops Group Methods for Polynomials} \description{ Allows arithmetic operators to be used for polynomial calculations, such as addition, multiplication, division, etc. } \usage{ \method{Ops}{polynomial}(e1, e2) } \arguments{ \item{e1}{an object of class \code{"polynomial"}.} \item{e2}{an object of class \code{"polynomial"}.} } \value{ A polynomial got by performing the operation on the two arguments. } \seealso{ \code{\link{Math.polynomial}}, \code{\link{Summary.polynomial}}. } \examples{ p <- polynomial(c(1, 2, 1)) ## 1 + 2*x + x^2 r <- poly.calc(-1 : 1) ## -1*x + x^3 (r - 2 * p)^2 ## 4 + 20*x + 33*x^2 + 16*x^3 - 6*x^4 - 4*x^5 + x^6 } \keyword{symbolmath} polynom/man/lines.polynomial.Rd0000644000176200001440000000177713444365306016331 0ustar liggesusers\name{lines.polynomial} \alias{lines.polynomial} \title{Lines Method for Polynomials} \description{ Add a polynomial to an existing plot usually as a line plot. } \usage{ \method{lines}{polynomial}(x, len = 1000, xlim = NULL, ylim = NULL, \dots) } \arguments{ \item{x}{an object of class \code{"polynomial"}.} \item{len}{size of vector at which evaluations are to be made.} \item{xlim, ylim}{the range of x and y values with sensible defaults.} \item{\dots}{additional arguments as for the \code{\link{lines}} generic.} } \details{ This is a method for the generic function \code{\link{lines}}. Lines representing the given polynomial are added to an existing plot. Values outside the current plot region are not shown. } \seealso{ \code{\link{lines}}, \code{\link{points}}, \code{\link{points.polynomial}}, \code{\link{plot}}, \code{\link{plot.polynomial}}. } \examples{ plot (poly.calc(-1:5)) lines (poly.calc( 2:4), lty = 2) points(poly.calc(-2:6), pch = 4) } \keyword{symbolmath} polynom/man/plot.polynomial.Rd0000644000176200001440000000226313444541313016156 0ustar liggesusers\name{plot.polynomial} \alias{plot.polynomial} \title{Plot Method for Polynomials} \description{ Plots polynomials, optionally allowing the ``interesting'' region to be automatically determined. } \usage{ \method{plot}{polynomial}(x, xlim = 0:1, ylim = range(Px), type = "l", len = 1000, \dots, xlab = "x", ylab = "P(x)") } \arguments{ \item{x}{an object of class \code{"polynomial"}.} \item{xlim}{the range to be encompassed by the x axis.} \item{ylim}{the range to be encompassed by the y axis.} \item{type}{as for \code{\link{plot}()}.} \item{len}{number of x points drawn.} \item{\dots}{additional arguments as for \code{\link{plot}}.} \item{xlab,ylab}{graphical parameters.} } \details{ This is a method for the generic function \code{\link{plot}}. A plot of the polynomial is produced on the currently active device. Unless otherwise specified, the domain is chosen to enclose the real parts of all zeros, stationary points and zero itself. } \seealso{ \code{\link{plot}}, \code{\link{lines}}, \code{\link{points}}, \code{\link{lines.polynomial}}, \code{\link{points.polynomial}}. } \examples{ plot(p <- poly.calc(-1:5)) } \keyword{symbolmath} polynom/man/poly.orth.Rd0000644000176200001440000000234411304021274014744 0ustar liggesusers\name{poly.orth} \alias{poly.orth} \title{Construct Orthogonal Polynomials} \description{ Construct the orthogonal polynomials on a given vector, up to a specified degree. } \usage{ poly.orth(x, degree = length(unique(x)) - 1, norm = TRUE) } \arguments{ \item{x}{a numeric vector of abscissae. When evaluated at \code{x} the polynomials will generate an orthonormal set.} \item{degree}{maximum degree required. The default is one fewer than the number of distinct values in \code{x}, which is maximum possible.} \item{norm}{a logical indicating whether the polynomials should be normalized.} } \value{ A list of class \code{"polylist"} of objects of class \code{"polynomial"} of degree 1, 2, \dots, \code{degree}. } \examples{ x <- rep(1:4, 1:4) # x with repetitions for weighting x ## [1] 1 2 2 3 3 3 4 4 4 4 polx <- poly.orth(x, 3) # calculate orthogonal polynomials polx ## List of polynomials: ## [[1]] ## 0.3162278 ## ## [[2]] ## -0.9486833 + 0.3162278*x ## ## [[3]] ## 2.139203 - 1.863177*x + 0.3450328*x^2 ## ## [[4]] ## -5.831564 + 8.80369*x - 3.803194*x^2 + 0.4930066*x^3 v <- sapply(polx, predict, x) # orthonormal basis round(crossprod(v), 10) # check orthonormality } \keyword{symbolmath} polynom/man/change.origin.Rd0000644000176200001440000000145611304021274015524 0ustar liggesusers\name{change.origin} \alias{change.origin} \title{Change Origin for a Polynomial} \description{ Calculate the coefficients of a polynomial relative to a new origin on the x axis. } \usage{ change.origin(p, o) } \arguments{ \item{p}{an object of class \code{"polynomial"}.} \item{o}{a numeric scalar representing the new origin on the original scale.} } \details{ Let \eqn{P(x) = \sum_i p_i x^i} be a given polynomial and consider writing \eqn{P(x) = \sum_j q_j (x - o)^j}. This function calculates the coefficients \eqn{q_j} and returns the result as a polynomial. } \value{ A polynomial with coefficients relative to the re-located x axis. } \examples{ pr <- poly.calc(1:5) pr ## -120 + 274*x - 225*x^2 + 85*x^3 - 15*x^4 + x^5 change.origin(pr, 3) ## 4*x - 5*x^3 + x^5 } \keyword{symbolmath} polynom/man/polylist.Rd0000644000176200001440000000255613444363216014706 0ustar liggesusers\name{polylist} \alias{polylist} \alias{as.polylist} \alias{is.polylist} \alias{[.polylist} \alias{c.polylist} \alias{deriv.polylist} \alias{integral.polylist} \alias{plot.polylist} \alias{print.polylist} \alias{rep.polylist} \alias{unique.polylist} \title{Lists of Polynomials} \description{Create and manipulate lists of polynomials.} \usage{ polylist(\dots) as.polylist(x) is.polylist(x) } \arguments{ \item{\dots}{\R objects, polynomials or capable of coercion to polynomials.} \item{x}{an \R object.} } \details{ \code{polylist} takes a list of arguments, tries to convert each into a polynomial (see \code{\link{polynomial}}), and sets the class of the list to \code{"polylist"}. \code{as.polylist} tries to coerce its arguments to a polylist, and will do so for arguments which are polynomials or lists thereof. \code{is.polylist} tests whether its argument is a polylist. This class has several useful methods, such as taking derivatives (\code{\link{deriv}}) and antiderivatives (\code{\link{integral}}), printing and plotting, subscripting, computing sums and products of the elements, and methods for \code{\link{c}}, \code{\link{rep}}, and \code{\link{unique}}. } \examples{ ## Calculate orthogonal polynomials pl <- poly.orth(rep(1:4, 1:4), 3) pl plot(pl) deriv(pl) integral(pl) sum(pl) prod(pl) unique(rep(pl, 3)[c(8, 12)]) } \keyword{symbolmath} polynom/man/deriv.polynomial.Rd0000644000176200001440000000126611304021274016303 0ustar liggesusers\name{deriv.polynomial} \alias{deriv.polynomial} \title{Differentiate a Polynomial} \description{ Calculates the derivative of a univariate polynomial. } \usage{ \method{deriv}{polynomial}(expr, \dots) } \arguments{ \item{expr}{an object of class \code{"polynomial"}.} \item{\dots}{further arguments to be passed to or from methods.} } \details{ This is a method for the generic function \code{\link{deriv}}. } \value{ Derivative of the polynomial. } \seealso{ \code{\link{integral.polynomial}}, \code{\link{deriv}}. } \examples{ pr <- poly.calc(1:5) pr ## -120 + 274*x - 225*x^2 + 85*x^3 - 15*x^4 + x^5 deriv(pr) ## 274 - 450*x + 255*x^2 - 60*x^3 + 5*x^4 } \keyword{symbolmath} polynom/man/Math.polynomial.Rd0000644000176200001440000000166611304021274016067 0ustar liggesusers\name{Math.polynomial} \alias{Math.polynomial} \title{Math Group Methods for Polynomials} \description{ Group method for functions in the Math group. } \usage{ \method{Math}{polynomial}(x, \dots) } \arguments{ \item{x}{an object of class \code{"polynomial"}.} \item{\dots}{further arguments to be passed to or from methods, such as \code{digits}.} } \details{ Most math group functions are disallowed with polynomial arguments. The only exceptions are \code{\link{ceiling}}, \code{\link{floor}}, \code{\link{round}}, \code{\link{trunc}}, and \code{\link{signif}} which may be used to transform the coefficients accordingly. } \value{ A polynomial with transformed coefficients. } \seealso{ \code{\link{Ops.polynomial}}, \code{\link{Summary.polynomial}}. } \examples{ op <- options(digits=18) p <- poly.from.values(1:4, (2:5)^2) ## 1 + 2.00000000000001*x + x^2 p <- round(p) ## 1 + 2*x + x^2 options(op) } \keyword{symbolmath} polynom/man/predict.polynomial.Rd0000644000176200001440000000136511304021274016624 0ustar liggesusers\name{predict.polynomial} \alias{predict.polynomial} \title{Evaluate a Polynomial} \usage{ \method{predict}{polynomial}(object, newdata, \dots) } \arguments{ \item{object}{A polynomial object to be evaluated.} \item{newdata}{Argument at which evaluation is requested. May be numeric or itself a polynomial} \item{\dots}{Not used by this method.} } \description{ Evaluate a polynomial at a given numeric or polynomial argument. } \details{ This is a method for the generic function \code{\link{predict}}. The polynomial is evaluated according to the Horner scheme for speed and numerical accuracy. } \value{ Evaluated object of the same class as \code{newdata}. } \seealso{ \code{\link{as.function.polynomial}} } \keyword{symbolmath} polynom/man/integral.polynomial.Rd0000644000176200001440000000156011304021274016774 0ustar liggesusers\name{integral.polynomial} \alias{integral} \alias{integral.polynomial} \title{Integrate a Polynomial} \description{ Find the integral of a univariate polynomial. } \usage{ \method{integral}{polynomial}(expr, limits = NULL, ...) } \arguments{ \item{expr}{an object of class \code{"polynomial"}.} \item{limits}{numeric vector of length 2 giving the integration limits.} \item{\dots}{further arguments to be passed to or from methods.} } \value{ If \code{limits} is not given, the integral of \code{p} from 0 to \sQuote{x}'. Otherwise, the integral with the given integration limits. } \seealso{ \code{\link{deriv.polynomial}} } \examples{ p <- poly.calc(1:5) p ## -120 + 274*x - 225*x^2 + 85*x^3 - 15*x^4 + x^5 deriv(p) ## 274 - 450*x + 255*x^2 - 60*x^3 + 5*x^4 integral(deriv(p)) - 120 ## -120 + 274*x - 225*x^2 + 85*x^3 - 15*x^4 + x^5 } \keyword{symbolmath} polynom/man/polynomial.Rd0000644000176200001440000000372111304021274015171 0ustar liggesusers\name{polynomial} \alias{polynomial} \alias{as.polynomial} \alias{is.polynomial} \alias{as.character.polynomial} \alias{print.polynomial} \alias{coef.polynomial} \title{Polynomials} \description{ Construct, coerce to, test for, and print polynomial objects. } \usage{ polynomial(coef = c(0, 1)) as.polynomial(p) is.polynomial(p) \method{as.character}{polynomial}(x, decreasing = FALSE, \dots) \method{print}{polynomial}(x, digits = getOption("digits"), decreasing = FALSE, \dots) } \arguments{ \item{coef}{numeric vector, giving the polynomial coefficients in \emph{in}creasing order.} \item{p}{an arbitrary \R object.} \item{x}{a \code{polynomial} object.} \item{decreasing}{a logical specifying the order of the terms; in increasing (default) or decreasing powers.} \item{digits}{the number of significant digits to use for printing.} \item{\dots}{potentially further arguments passed to and from other methods.} } \details{ \code{polynomial} constructs a polynomial from its coefficients, i.e., \code{p[1:k]} specifies the polynomial \deqn{p_1 + p_2 x + p_3 x^2 + \dots + p_k x^{k-1}.}{p[1] + p[2]* x + p[3]* x^2 + ... + p[k]* x^(k-1).} Internally, polynomials are simply numeric coefficient vectors of class \code{"polynomial"}. Several useful methods are available for this class, such as coercion to character (\code{as.character()}) and function (\code{\link{as.function.polynomial}}), extraction of the coefficients (\code{coef()}), printing (using \code{as.character}), plotting (\code{\link{plot.polynomial}}), and computing sums and products of arbitrarily many polynomials. \code{as.polynomial} tries to coerce its arguments to a polynomial. \code{is.polynomial} tests whether its argument is a polynomial (in the sense that it has class \code{"polynomial"}. } \examples{ polynomial(1:4) p <- as.polynomial(c(1,0,3,0)) p print(p, decreasing = TRUE) stopifnot(coef(p) == c(1,0,3)) polynomial(c(2,rep(0,10),1)) } \keyword{symbolmath} polynom/man/solve.polynomial.Rd0000644000176200001440000000220211304021274016311 0ustar liggesusers\name{solve.polynomial} \alias{solve.polynomial} \title{Zeros of a Polynomial} \description{ Find the zeros, if any, of a given polynomial. } \usage{ \method{solve}{polynomial}(a, b, \dots) } \arguments{ \item{a}{A polynomial object for which the zeros are required.} \item{b}{a numeric value specifying an additional intercept. If given, the zeros of \code{a - b} are found.} \item{\dots}{Not used by this method.} } \value{ A numeric vector, generally complex, of zeros. } \details{ This is a method for the generic function \code{\link{solve}}. The zeros are found as the eigenvalues of the companion matrix, sorted according to their real parts. } \seealso{ \code{\link{polyroot}}, \code{\link{poly.calc}}, \code{\link{summary.polynomial}} } \examples{ p <- polynomial(6:1) p ## 6 + 5*x + 4*x^2 + 3*x^3 + 2*x^4 + x^5 pz <- solve(p) pz ## [1] -1.49180+0.0000i -0.80579-1.2229i -0.80579+1.2229i ## [4] 0.55169-1.2533i 0.55169+1.2533i ## To retrieve the original polynomial from the zeros: poly.calc(pz) ## Warning: imaginary parts discarded in coercion ## 6 + 5*x + 4*x^2 + 3*x^3 + 2*x^4 + x^5 } \keyword{symbolmath} polynom/man/gcd.Rd0000644000176200001440000000134711304021274013545 0ustar liggesusers\name{gcd} \alias{GCD} \alias{GCD.polylist} \alias{GCD.polynomial} \alias{LCM} \alias{LCM.polylist} \alias{LCM.polynomial} \title{GCD and LCM for Polynomials} \description{ Compute the greatest common divisor (GCD) and least common multiple (LCM) of a collection of polynomials and polylists. } \usage{ \method{GCD}{polylist}(\dots) \method{GCD}{polynomial}(\dots) \method{LCM}{polylist}(\dots) \method{LCM}{polynomial}(\dots) } \arguments{ \item{\dots}{a list of objects of class \code{\link{polynomial}} or \code{\link{polylist}}.} } \examples{ pl <- polylist(poly.from.roots(-1), poly.from.roots(c(-1, -1)), poly.from.roots(1)) GCD(pl) GCD(pl[-3]) LCM(pl) LCM(pl, pl, pl[[2]]) } \keyword{symbolmath} polynom/man/summary.polynomial.Rd0000644000176200001440000000172611304021274016670 0ustar liggesusers\name{summary.polynomial} \alias{summary.polynomial} \alias{print.summary.polynomial} \title{Summary of a Polynomial} \description{ Summarize a polynomial by describing its ``key'' points. } \usage{ \method{summary}{polynomial}(object, \dots) } \arguments{ \item{object}{an object of class \code{"polynomial"}.} \item{\dots}{Not used by this method.} } \value{ A list of class \code{"summary.polynomial"} (which has its own \code{print} method) containing information on zeros, stationary and inflexion points. } \details{ This is a method for the generic function \code{\link{summary}}. } \examples{ p <- polynomial(6:1) p ## 6 + 5*x + 4*x^2 + 3*x^3 + 2*x^4 + x^5 pz <- summary(p) pz ## [1] -1.49180+0.0000i -0.80579-1.2229i -0.80579+1.2229i ## [4] 0.55169-1.2533i 0.55169+1.2533i ## To retrieve the original polynomial from the zeros: poly.calc(pz) ## Warning: imaginary parts discarded in coercion ## 6 + 5*x + 4*x^2 + 3*x^3 + 2*x^4 + x^5 } \keyword{symbolmath} polynom/man/zSummary.polynomial.Rd0000644000176200001440000000202011304021274017006 0ustar liggesusers\name{zSummary.polynomial} \alias{Summary.polynomial} \title{Summary Group Methods for Polynomials} \description{ Allows summary group generics to be used on polynomial arguments. } \usage{ \method{Summary}{polynomial}(\dots, na.rm = FALSE) } \arguments{ \item{\dots}{\R objects, the first supplied of class \code{"polynomial"}.} \item{na.rm}{logical: should missing values be removed?} } \details{ For the \code{sum} and \code{prod} functions, the sum and product of the given polynomials, respectively. For the other members of the Summary group, an error is returned. Note that one could \emph{order} polynomials by divisibility, and define \code{min} and \code{max} as the corresponding lattice meet and join, i.e., the greatest common divisor and the least common multiple, respectively. This is currently not provided: instead, functions \code{\link{GCD}} and \code{\link{LCM}} should be called directly. } \seealso{ \code{\link{Math.polynomial}}, \code{\link{Ops.polynomial}} } \keyword{symbolmath} polynom/man/poly.calc.Rd0000644000176200001440000000344411304021274014674 0ustar liggesusers\name{poly.calc} \alias{poly.calc} \alias{poly.from.zeros} \alias{poly.from.roots} \alias{poly.from.values} \title{ Calculate Polynomials from Zeros or Values } \description{ Calculate either the monic polynomial with specified zeros, or the Lagrange interpolation polynomial through the (x,y) points. } \usage{ poly.calc(x, y, tol=sqrt(.Machine$double.eps), lab=dimnames(y)[[2]]) } \arguments{ \item{x}{numeric vector specifying either the zeros of the desired polynomial if this is the only non-missing argument, or the x-values for Lagrange interpolation.} \item{y}{numeric vector or matrix specifying the y-values for the Lagrange interpolation polynomial. If \code{y} is a matrix, \code{nrow(y)} must equal \code{length(x)}, and each column of \code{y} is used separately with \code{x}.} \item{tol}{An absolute value tolerance, below which coefficients are treated as zero.} \item{lab}{If \code{y} is a matrix, lab is used as the names vector for the list result.} } \details{ If \code{y} is a matrix, the result is a list of polynomials using each column separately. If \code{x} only is given, repeated zeros are allowed. If \code{x} and \code{y} are given, repeated values in the \code{x} vector must have identical \code{y} values associated with them (up to \code{tol}), otherwise the first y-value only is used and a warning is issued. } \value{ Either a polynomial object, or a list of polynomials, as appropriate. In the latter case the object is of class \code{"polylist"}. } \seealso{ \code{\link{polynomial}} } \examples{ poly.calc(rep(1,3)) ## -1 + 3*x - 3*x^2 + x^3 poly.calc(0:4, (0:4)^2 + 1) ## 1 + x^2 poly.calc(0:4, cbind(0:4, (0:4)^2 + 1), lab = letters[1:2]) ## List of polynomials: ## $a: ## x ## ## $b: ## 1 + x^2 } \keyword{symbolmath} polynom/man/monic.Rd0000644000176200001440000000103711304021274014111 0ustar liggesusers\name{monic} \alias{monic} \title{Monic Polynomials} \description{ Convert a polynomial to monic form by dividing by the leading coefficient. } \usage{ monic(p) } \arguments{ \item{p}{A polynomial. A warning is issued if the polynomial is identically zero.} } \details{ Similar in effect to \code{p/as.numeric(p[length(p)])} but with some safeguards against leading zero coefficients. } \value{ A polynomial proportional to \code{p} with leading coefficient 1. } \seealso{ \code{\link{change.origin}} } \keyword{symbolmath} polynom/man/as.function.polynomial.Rd0000644000176200001440000000233711304021274017421 0ustar liggesusers\name{as.function.polynomial} \alias{as.function.polynomial} \title{Coerce a Polynomial to a Function} \description{ Takes a polynomial argument and constructs an \R function to evaluate it at arbitrary points. } \usage{ \method{as.function}{polynomial}(x, \dots) } \arguments{ \item{x}{An object of class \code{"polynomial"}.} \item{\dots}{further arguments to be passed to or from methods.} } \details{ This is a method for the generic function \code{\link{as.function}}. The polynomial is evaluated within the function using the Horner scheme. Note that you can use the model-oriented \code{predict} method for polynomials for purpose of evaluation (without explicit coercion to a function), see the example below. } \value{ A function to evaluate the polynomial \code{p}. } \seealso{ \code{\link{as.function}}, \code{\link{predict.polynomial}} } \examples{ pr <- (poly.calc(-1:1) - 2 * polynomial(c(1, 2, 1)))^2 pr ## 4 + 20*x + 33*x^2 + 16*x^3 - 6*x^4 - 4*x^5 + x^6 prf <- as.function(pr) prf ## function (x) ## 4 + x * (20 + x * (33 + x * (16 + x * (-6 + x * (-4 + x * (1)))))) ## prf(-3:3) ## 1024 64 0 4 64 144 64 predict(pr, -3:3) ## 1024 64 0 4 64 144 64 } \keyword{symbolmath}