%PDF-1.4 % 1 0 obj<> endobj 2 0 obj<> endobj 3 0 obj<>/XObject<>/ExtGState<>>>/LastModified(D:20070419114042-07')>> endobj 4 0 obj<>/XObject<>/ExtGState<>>>/LastModified(D:20070419114042-07')>> endobj 5 0 obj<>/XObject<>/ExtGState<>>>/LastModified(D:20070419114042-07')>> endobj 6 0 obj<>/XObject<>/ExtGState<>>>/LastModified(D:20070419114042-07')>> endobj 7 0 obj<>/XObject<>/ExtGState<>>>/LastModified(D:20070419114042-07')>> endobj 8 0 obj<>/XObject<>/ExtGState<>>>/LastModified(D:20070419114043-07')>> endobj 9 0 obj<>/XObject<>/ExtGState<>>>/LastModified(D:20070419114043-07')>> endobj 10 0 obj<>/XObject<>/ExtGState<>>>/LastModified(D:20070419114043-07')>> endobj 11 0 obj<><><>]/Order[]/ON[69 0 R]>>/OCGs[69 0 R]>>/FICL:Enfocus 70 0 R>> endobj 12 0 obj<>stream x+|endstream endobj 13 0 obj<>stream HlSn0+x!).- 4k6 Yt)9.H#qfq_'H*˄bt(F+od]~\&lw(jnpf@79D9d Jդ!DBf=泂ܺ -)oy"-hlvYgoc߻Nrqz7mKXJq-Dғ0U5s$+ű{1m`*%*)\ 5+=̯xp1)DHY&BLkW4?3ZaI*pUU}9:3vM"fL`U#%{XIqfz}9KC^Ot9$ +^T{ge溻H(ȵ[g7c_z~~-cަJgX27g9O\V)WTIN4/q40:lb`kdQ RcRIfk8!^[P9 +8l[k׎[]7?DѺ5S|fd(D/+6q{l S|U.s7)gl ?uAIb>9H$D?lN/>stream H|TK0Wp4BmX'^3vU9 $M}g٭Ud|NeóBU~|eW̙\Hv%C9磊ֻ@0mq^iG0pݹu1}>CD}۱M^Tm@֞sYz:3Sh?[M;3z)BiΟ%Qc*o4ybD:APZְp˥d%Dvs13ᰢC>]gXhSi-eBbs@~"X S4:\C֥;-aQc5s)Z9Rdgv=9&%å ͢!#6EրfBT.>-5gBIBVp!+]+ _yi%ҴL<3z7rރj Uw`FtFYYZXaN-i&}kM[%A=$gHRBuC\Zޏ#KԄs lw=m()}z[b'vYE^9"_zǗyGVendstream endobj 15 0 obj<>stream HdTr0 +t+թ]ڢk[nIHT8 ,xFtæuh2mmt:AVԂe!  8L'kI9=P)T@6׬moNdӏot!jLy.^X)fW\*g@+q(9-87j(]6Dެrfj&((/#MPjoe?beݦQ˲aZ^.Je~mUU%!ѮlGsj+xA[2۶(J7u{%^azJ^^&;+^ɓBkjxe:O炭Ҡ|nB- :RW U⣞[\@'{u8`_|U 0?endstream endobj 16 0 obj<>stream HlSMs0W(:!|L77YH3 14vqf?z&6(/Ptl.n eY __`5#ӏsPꉃHE8s>3yMR;yB_$r19qRcoP93Sյ`.DN%dN6& (ʻ)cWfMDҕt^}ǚ9l!xaxU)u DֈC⓹W íɠ#c+>g2Y7.對=:Yuyi*f)xVx+cVhjgLgNȥRbgG [p[-p YPM~>i/⭅%KxZQDrZFΝ0a@[b3QES*頻VE+ݸQU3$$@T>۽gsVI&qɏvW6D@Zf l?`B\Y>endstream endobj 17 0 obj<>stream HlS=s0 +<ʧO[Κ-KmJ%^$RN/<|Xm^(=j4[{eL:Ƴ{J.;Y Uc7`wMN YçL+7m!.OU5!6x߽( 7+KxҨqv`jg!25s*2j`,Gz4ˆ4jD#c X``0ęS4YMj'f=*'+t xR6Y"af ,W=rX9'iT^tnɠ(6q(RIz͓ލiAEnizJR"%>z6$uVpUNwVZ)Ӫ+ l}2FܓUܵ.J,jxXtj|Y0=fX3|K;}emTi;'V!\G];7D2jvgAn >NMV@ Ǥ<úUk!|*3pm؞1/ehOendstream endobj 18 0 obj<>stream HlTM0Wp4Bmpު^mpK`#l63NHUc@k~ۼiuE:\А&gpv66C~sA>b2ѳ%ގ*Qy|t^d45\T^T[AfjezF(;;NsHh E&f&O]FT,(9P.g'C^.Y ۋN&9=&u9ۓs,Sd]}ꂶY;L)>+SN %2*SOnkG;`|Q>U*~&J++M1Yh^tОhl/+[pّm{a I;0wr-9o`:['u.>Ay<-C3 ce#(zvEv6,mㅭ|,|<3lޔMwR+ޔ[cohkO2Nޚ0;zDs8N%r%g)c 8-PbP<0%}҆dz=.*u,h7#'Bendstream endobj 19 0 obj<>stream HTM0WpY-^ I6CU6QE!nlx iR{H<<_ofLs'ER_KsMbS0yR򜊜.HYi4+ y|xƛ7:ۻBʜO`CXc 2Y:cmU:!89OʞiH6A9kSԩ`'ԺO)dˎvV@@aQRyOQ`5-.7@eq.ba R" wWMFmM3ܜGV{K,3k :϶z6yܲz;985>)U[T[*Rta\FkreL‡X?c$P ,;2jnLXkϟƈ(k6 ]}q$v jM-I+]܂ha04;㳠^2nsF%5>&I?5#D$u;^u'ub/i{m\n"`wтcb6AٲQ|}8BBP"j:2Z|5#phL?5Z4pMVEendstream endobj 20 0 obj<>stream HdRmo0_O3$Mb0T ij yf2ؿ[)=sI/Ɇu=_ʄ?[p0XiO{dĴCnܔEww]G7.m#-$rH_'t=xtn@^fՏ7ZO(zgmn0cr'66E=9+Ce"{mk;[4Goγ. cI> .oi_M)B"BkAיqvk lT JX>)y$ @%T**0 oE7[98p*QW5#S\Ne\'*Pa[6SLaִYSnbl7|aOak_R>stream x 0E<$vS[5)jV g9.ܚI%c)HC [!8N'э>UA 8MCxJD6 endstream endobj 22 0 obj<> endobj 23 0 obj<> endobj 24 0 obj<> endobj 25 0 obj<> endobj 26 0 obj<> endobj 27 0 obj<>>>/FormType 1/Resources<>/ProcSet[/PDF/Text]>>/Matrix[1 0 0 1 0 0]/Subtype/Form/LastModified(D:20070518103955-07'00')/OC 81 0 R/Length 183/BBox[0 -37.6 206.032 -19.024]>>stream 0 g 0 i BT /T1_0 1 Tf 0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 8 0 0 8 0 -26.4 Tm (18th IEEE Symposium on Computer Arithmetic\(ARITH'07\))Tj 0 -1.15 TD (0-7695-2854-6/07 $20.00 \251 2007)Tj ET endstream endobj 28 0 obj<>>>/Group 82 0 R/FormType 1/Resources<>>>/Matrix[1 0 0 1 0 0]/Subtype/Form/LastModified(D:20070518103956-07'00')/OC 81 0 R/Length 62/Type/XObject/BBox[0 0 72 72]>>stream q 25.1999969 0 0 8.3999939 23.3999939 31.8000031 cm /Im0 Do Q endstream endobj 29 0 obj<>>>/Group 84 0 R/FormType 1/Resources<>>>/Matrix[1 0 0 1 0 0]/Subtype/Form/LastModified(D:20070518103957-07'00')/OC 81 0 R/Length 62/Type/XObject/BBox[0 0 72 72]>>stream q 61.9199982 0 0 37.9199982 5.0399933 17.0399933 cm /Im0 Do Q endstream endobj 30 0 obj<> endobj 31 0 obj<> endobj 32 0 obj<>stream x+|endstream endobj 33 0 obj<>stream q 40 67 m 572 67 l 572 720 l 40 720 l W n 0 g 1 i /GS0 gs BT /T1_0 1 Tf 0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 9.9626 0 0 9.9626 70.7071 710.0373 Tm [(@)-600(ensures)]TJ 0 -1.2 TD [(@)-1800(0)-600(<=)-600(\\result)-600(<)-600(y)-600(&&)]TJ T* [(@)-1800(\\exists)-600(int)-600(d;)-600(x)-600(==)-600(d)]TJ 15.6 -0.175 Td (*)Tj 1.2 0.175 Td [(y)-600(+)-600(\\result)]TJ -16.8 -1.2 Td (@)Tj 0.6 -0.175 Td (*)Tj 0.6 0.175 Td (/)Tj -2.4 -1.2 Td [(int)-600(math_mod\(int)-600(x,)-600(int)-600(y\))-600({)-600(...)-600(})]TJ /T1_1 1 Tf 0 -2.051 TD [(The)-242(k)10(e)15(yw)10(ord)]TJ /T1_0 1 Tf 5.503 0 Td (requires)Tj /T1_1 1 Tf 5.042 0 Td [(introduces)-242(the)-242(function')55(s)-242(precon-)]TJ -10.545 -1.2 Td [(dition,)-305(that)-294(is)-294(a)-294(property)-294(to)-294(be)-294(satis\002ed)-295(whene)25(v)15(er)-294(the)-294(func-)]TJ 0 -1.2 TD [(tion)-258(is)-257(called.)-333(The)-257(k)10(e)15(yw)10(ord)]TJ /T1_0 1 Tf 11.243 0 Td (ensures)Tj /T1_1 1 Tf 4.458 0 Td [(introduces)-258(the)-257(func-)]TJ -15.701 -1.2 Td [(tion')55(s)-363(postcondition,)-392(that)-363(is)-363(a)-364(property)-363(which)-363(must)-363(be)-364(es-)]TJ T* [(tablished)-247(whene)25(v)15(er)-247(the)-246(function)-247(returns.)-309(As)-247(one)-247(can)-247(notice,)]TJ T* [(the)-200(speci\002cation)-200(language)-200(augments)-200(the)-200(usual)-200(C)-200(syntax)-200(\()]TJ /T1_0 1 Tf (&&)Tj /T1_1 1 Tf (,)Tj /T1_0 1 Tf T* (==)Tj /T1_1 1 Tf [(,)-325(etc.\))-490(with)-310(ne)25(w)-310(constructs)-310(such)-310(as)]TJ /T1_0 1 Tf 15.704 0 Td (\\result)Tj /T1_1 1 Tf 4.51 0 Td (denoting)Tj -20.214 -1.2 Td [(the)-258(v)25(alue)-257(returned)-258(by)-257(the)-258(function,)-260(the)-257(e)15(xistential)-258(quanti\002er)]TJ /T1_0 1 Tf T* (\\exists)Tj /T1_1 1 Tf [(,)-297(etc.)-422(Contrary)-287(to)-288(JML,)-287(program)-287(annotations)-288(are)]TJ T* [(not)-250(intended)-250(to)-250(be)-250(e)15(x)15(ecutable.)]TJ 1.2 -1.217 Td [(Once)-330(a)-330(C)-331(source)-330(code)-330(is)-330(adequately)-330(annotated,)-351(t)1(he)-331(Ca-)]TJ -1.2 -1.2 Td [(duceus)-216(tool)-216(produces)-216(v)15(eri\002cation)-215(conditions.)-299(These)-216(are)-216(log-)]TJ T* [(ical)-359(statements)-360(e)15(xpressing)-359(that)-359(code)-359(is)-360(free)-359(of)-359(threats)-360(and)]TJ T* [(ful\002lls)-321(the)-322(gi)25(v)15(en)-321(speci\002cation.)-524(The)-321(v)15(eri\002cation)-322(conditions)]TJ T* [(are)-211(then)-210(dischar)18(ged)-211(using)-210(a)-211(general)-211(purpose)-210(theorem)-211(pro)15(v)15(er)55(.)]TJ T* [(A)-241(k)10(e)15(y)-241(feature)-241(of)-241(the)-241(Caduceus)-241(tool)-241(is)-241(its)-241(independence)-241(with)]TJ T* [(respect)-374(to)-375(the)-374(pro)15(v)15(er)55(.)-684(It)-374(indeed)-375(supports)-374(a)-375(wide)-374(panel)-375(of)]TJ T* [(e)15(xisting)-365(pro)15(v)15(ers,)-394(ranging)-365(from)-365(interacti)25(v)15(e)-365(proof)-365(assistants)]TJ T* [(such)-265(as)-264(Coq,)-269(PVS)-264(or)-265(Isabelle)-265(to)-264(automatic)-265(theorem)-265(pro)15(v)15(ers)]TJ T* [(such)-250(as)-250(Simplify)65(,)-250(Y)55(ices)-250(or)-250(CVC)-250(Lite.)]TJ 1.2 -1.217 Td [(Before)-275(presenting)-275(our)-275(e)15(xtens)1(ion)-275(of)-275(the)-275(Caduceus)-275(tool)-275(to)]TJ -1.2 -1.2 Td [(handle)-287(\003oating-point)-286(arithmetic,)-296(we)-287(need)-286(to)-287(gi)25(v)15(e)-286(a)-287(fe)25(w)-287(de-)]TJ 0 -1.2 TD [(tails)-381(about)-382(its)-381(architecture.)-705(Caduceus)-381(is)-382(actually)-381(b)20(uilt)-382(on)]TJ T* [(top)-297(of)-298(another)-297(tool,)-309(called)-298(Wh)5(y)65(.)-452(The)-297(combination)-297(of)-298(these)]TJ T* [(tw)10(o)-243(tools)-243(is)-243(illustrated)-243(in)-243(Figure)-243(1.)-308(Caduceus)-243(\002rst)-243(translates)]TJ T* [(the)-311(C)-310(source)-311(code)-311(into)-310(an)-311(intermediate)-311(code)-310(written)-311(in)-311(the)]TJ T* [(syntax)-366(of)-366(the)-366(Wh)5(y)-366(language.)-658(This)-366(in)-366(an)-366(alias-free)-366(Hoare)]TJ T* [(logic-lik)10(e)-311(language)-311(suitable)-311(for)-311(program)-311(v)15(eri\002cation.)-493(This)]TJ T* [(intermediate)-395(program)-395(uses)-396(a)-395(\002rst-order)-395(logic)-395(model)-395(of)-396(C)]TJ T* [(programs)-345(\(pointer)-345(arithmetic,)-369(layout)-345(of)-345(the)-346(memory)-345(heap,)]TJ T* [(etc.\))-495(which)-311(is)-312(itself)-311(written)-312(in)-311(the)-312(syntax)-311(of)-312(the)-311(Wh)5(y)-312(tool.)]TJ T* [(This)-398(model)-399(is)-398(made)-399(of)-398(declarations)-399(of)-398(function)-399(symbols,)]TJ T* [(predicates)-304(and)-304(axioms.)-471(Then)-304(the)-304(Wh)5(y)-304(tool)-304(computes)-304(v)15(eri-)]TJ T* [(\002cation)-289(conditions)-289(and)-289(transl)1(ates)-289(them)-289(to)-289(the)-289(nati)25(v)15(e)-289(syntax)]TJ T* [(of)-258(the)-258(v)25(arious)-258(pro)15(v)15(ers.)-333(Depending)-258(on)-258(the)-258(pro)15(v)15(er)40(,)-260(the)-258(model)]TJ T* [(can)-250(be)-250(simply)-250(axiomatized)-250(or)-250(fully)-250(implemented.)]TJ 1.2 -1.217 Td [(T)80(o)-207(add)-207(\003oating-point)-207(arithmetic)-206(support)-207(to)-207(Caduceus,)-216(we)]TJ -1.2 -1.2 Td [(are)-250(going)-250(to)-250(operate)-250(at)-250(se)25(v)15(eral)-250(le)25(v)15(els:)]TJ /T1_2 1 Tf 1 -2.051 Td (\017)Tj /T1_1 1 Tf 1 0 Td [(the)-267(speci\002cation)-267(language)-267(is)-267(e)15(xtended)-267(with)-267(ne)25(w)-267(anno-)]TJ T* [(tations)-250(speci\002c)-250(to)-250(\003oating-point)-250(arithmetic;)]TJ /T1_2 1 Tf -1 -2.068 Td (\017)Tj /T1_1 1 Tf 1 0 Td [(the)-250(Wh)5(y)-250(model)-250(is)-250(e)15(xtended)-250(accordingly;)]TJ /T1_2 1 Tf -1 -2.068 Td (\017)Tj /T1_1 1 Tf 1 0 Td [(the)-383(Wh)5(y)-382(model)-383(is)-383(realized)-382(within)-383(the)-382(Coq)-383(proof)-383(as-)]TJ T* [(sistant)-368(to)-367(allo)25(w)-368(the)-367(user)-368(to)-368(dischar)18(ge)-367(the)-368(v)15(eri\002cation)]TJ T* (conditions.)Tj -2 -2.051 Td [(The)-250(ne)15(xt)-250(section)-250(describes)-250(this)-250(e)15(xtension.)]TJ ET q 1 0 0 1 317.5019073 719.6015015 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 236.25 0.199 l S Q q 0.3445435 0 0 0.3445435 361.3762207 551.9586945 cm /Fm0 Do Q q 1 0 0 1 317.5019073 549.966095 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 236.25 0.199 l S Q BT /T1_3 1 Tf 9.9626 0 0 9.9626 333.8647 528.0483 Tm [(Figure)-278(1.)-278(The)-278(Caduceus)-278(/)-278(Wh)20(y)-278(combination)]TJ /T1_4 1 Tf 11.9552 0 0 11.9552 317.5019 485.8953 Tm [(3)-1000(Adding)-250(\003oating-point)-250(arithmetic)]TJ /T1_5 1 Tf 10.9589 0 0 10.9589 317.5019 459.7816 Tm [(3.1)-1150(A)-384(m)-1(o)-31(del)-384(of)-384(\roating-)-1(p)-32(oin)32(t)-383(ari)-1(thmeti)-1(c)]TJ /T1_1 1 Tf 9.9626 0 0 9.9626 329.4571 434.6641 Tm [(The)-221(main)-221(idea)-222(i)1(s)-222(the)-221(follo)25(wing:)-295(each)-222(\003oating-point)-221(v)25(alue)]TJ -1.2 -1.2 Td [(is)-250(modelled)-250(as)-250(a)-250(triple)-250(consisting)-250(of)]TJ /T1_2 1 Tf 1 -2.021 Td (\017)Tj /T1_1 1 Tf 1 0 Td [(the)-314(\003oating-point)-314(number)-315(of)-314(the)-314(gi)25(v)15(en)-314(type)-315(\(typically)]TJ 0 -1.2 TD [(single)-250(or)-250(double\),)-250(as)-250(computed)-250(by)-250(the)-250(program;)]TJ /T1_2 1 Tf -1 -2.028 Td (\017)Tj /T1_1 1 Tf 1 0 Td [(a)-327(real)-327(number)40(,)-347(which)-327(w)10(ould)-327(be)-327(the)-327(v)25(alue)-327(if)-328(all)-327(pre)25(vi-)]TJ T* [(ous)-206(computations)-206(were)-205(performed)-206(on)-206(real)-206(numbers)-206(and)]TJ T* [(thus)-250(e)15(xact;)]TJ /T1_2 1 Tf -1 -2.028 Td (\017)Tj /T1_1 1 Tf 1 0 Td [(and)-443(another)-442(real)-443(number)40(,)-490(which)-443(is)-443(the)-442(v)25(alue)-443(which)]TJ 0 -1.2 TD [(should)-250(be)]TJ /T1_6 1 Tf 4.111 0 Td (ideally)Tj /T1_1 1 Tf 2.972 0 Td (computed.)Tj -9.083 -2.021 Td (If)Tj /T1_7 1 Tf 1 0 Td (x)Tj /T1_1 1 Tf 0.906 0 Td [(is)-334(a)-335(\003oating-point)-334(v)25(alue,)-356(we)-334(refer)-334(to)-335(its)-334(three)-334(compo-)]TJ -1.906 -1.2 Td [(nents)-261(respecti)25(v)15(ely)-261(as)-261(the)]TJ /T1_6 1 Tf 10.002 0 Td (\003oating-point)Tj /T1_1 1 Tf 5.724 0 Td [(part,)-264(written)]TJ /T1_7 1 Tf 5.163 0 Td (x)Tj /T1_8 1 Tf 6.9738 0 0 6.9738 531.2955 280.7533 Tm (f)Tj /T1_1 1 Tf 9.9626 0 0 9.9626 536.4603 282.2477 Tm [(,)-264(the)]TJ /T1_6 1 Tf -21.978 -1.2 Td [(e)20(xact)]TJ /T1_1 1 Tf 2.358 0 Td [(part,)-250(written)]TJ /T1_7 1 Tf 5.138 0 Td (x)Tj /T1_8 1 Tf 6.9738 0 0 6.9738 397.8748 268.7982 Tm (e)Tj /T1_1 1 Tf 9.9626 0 0 9.9626 404.6435 270.2926 Tm [(and)-250(the)]TJ /T1_6 1 Tf 3.166 0 Td (model)Tj /T1_1 1 Tf 2.695 0 Td [(part,)-250(written)]TJ /T1_7 1 Tf 5.138 0 Td (x)Tj /T1_8 1 Tf 6.9738 0 0 6.9738 519.9153 268.7982 Tm (m)Tj /T1_1 1 Tf 9.9626 0 0 9.9626 527.4831 270.2926 Tm (.)Tj -19.877 -1.207 Td [(F)15(or)-295(e)15(xample,)-307(let)-295(us)-295(assume)-295(that)-295(we)-295(ha)20(v)15(e)-295(a)-295(C)-296(v)25(ariable)]TJ /T1_0 1 Tf 21.914 0 Td (x)Tj /T1_1 1 Tf -23.114 -1.2 Td [(of)-216(type)]TJ /T1_0 1 Tf 2.987 0 Td (double)Tj /T1_1 1 Tf 3.816 0 Td [(and)-216(the)-216(follo)25(wing)-216(de\002nition)-216(of)-216(the)-216(v)25(ariable)]TJ /T1_0 1 Tf -6.803 -1.2 Td (y)Tj 1.2 -2.028 Td [(double)-600(y=1+x)]TJ 7.2 -0.175 Td (*)Tj 0.6 0.175 Td (\(1+x/2\);)Tj /T1_1 1 Tf -9 -2.021 Td [(Then)-386(the)-387(\003oating-point)-386(part)-386(of)]TJ /T1_7 1 Tf 13.042 0 Td (y)Tj /T1_1 1 Tf 0.913 0 Td (is)Tj /T1_2 1 Tf 1.053 0 Td (\016)Tj /T1_9 1 Tf [(\(1)-323(+)]TJ /T1_2 1 Tf 2.813 0 Td (\016)Tj /T1_9 1 Tf (\()Tj /T1_7 1 Tf (x)Tj /T1_8 1 Tf 6.9738 0 0 6.9738 509.5923 192.5197 Tm (f)Tj /T1_2 1 Tf 9.9626 0 0 9.9626 517.9771 194.0141 Tm [(\002)-323(\016)]TJ /T1_9 1 Tf [(\(1)-323(+)]TJ /T1_2 1 Tf -20.123 -1.2 Td (\016)Tj /T1_9 1 Tf (\()Tj /T1_7 1 Tf (x)Tj /T1_8 1 Tf 6.9738 0 0 6.9738 332.0516 180.5645 Tm (f)Tj /T1_7 1 Tf 9.9626 0 0 9.9626 337.2163 182.0589 Tm (=)Tj /T1_9 1 Tf (2\)\)\)\))Tj /T1_1 1 Tf 2.801 0 Td (where)Tj /T1_2 1 Tf 2.688 0 Td (\016)Tj /T1_1 1 Tf 0.745 0 Td [(denotes)-245(the)-245(current)-245(rounding)-246(mode)-245(\(by)]TJ -8.213 -1.2 Td [(def)10(ault,)-253(rounding)-252(to)-253(nearest,)-253(ties)-252(to)-252(e)25(v)15(en\).)-318(The)-252(e)15(xact)-252(part)-253(of)]TJ /T1_7 1 Tf 0 -1.35 TD (y)Tj /T1_1 1 Tf 0.776 0 Td (is)Tj /T1_9 1 Tf 0.917 0 Td [(1)-222(+)]TJ /T1_7 1 Tf 1.722 0 Td (x)Tj /T1_8 1 Tf 6.9738 0 0 6.9738 357.2218 155.1549 Tm (e)Tj /T1_9 1 Tf 9.9626 0 0 9.9626 363.7137 156.6493 Tm (+)Tj /T1_8 1 Tf 6.9738 0 0 6.9738 374.8719 160.734 Tm (x)Tj /T1_10 1 Tf 4.9813 0 0 4.9813 379.3896 159.7377 Tm (e)Tj /T1_11 1 Tf 0.777 0.804 Td (2)Tj ET q 1 0 0 1 374.8719177 158.9407043 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 12.277 0.199 l S Q BT /T1_12 1 Tf 6.9738 0 0 6.9738 379.0245 153.2138 Tm (2)Tj /T1_1 1 Tf 9.9626 0 0 9.9626 388.344 156.6493 Tm (.)Tj -5.911 -1.207 Td [(Contrary)-241(to)-241(the)-241(\003oating-point)-241(part)-241(and)-241(the)-241(e)15(xact)-241(part,)-243(the)]TJ -1.2 -1.2 Td [(model)-210(part)-211(can)-210(be)-211(assigned)-210(an)-211(arbitrary)-210(real)-210(number)55(.)-297(Thus)-211(it)]TJ 0 -1.2 TD [(must)-245(be)-245(seen)-245(as)-245(a)]TJ /T1_6 1 Tf 7.168 0 Td [(ghost)-245(variable)]TJ /T1_1 1 Tf 6.9738 0 0 6.9738 446.1473 124.3288 Tm (1)Tj 9.9626 0 0 9.9626 452.573 120.7135 Tm [(automatically)-245(assigned)-245(to)]TJ -13.558 -1.2 Td [(each)-274(\003oating-point)-273(e)15(xpression.)-381(In)-273(this)-274(e)15(xample,)-280(it)-273(could)-274(be)]TJ ET q 1 0 0 1 317.5019073 99.9441986 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 94.499 0.199 l S Q BT /T1_1 1 Tf 5.9776 0 0 5.9776 328.3612 93.2773 Tm (1)Tj 7.9701 0 0 7.9701 331.8482 90.4645 Tm [(A)-304(ghost)-304(v)25(ariable)-303(is)-304(a)-304(program)-304(v)25(ariable)-304(which)-304(does)-303(not)-304(interfere)-304(with)]TJ -1.8 -1.187 Td [(the)-250(program)-250(computations)-250(b)20(ut)-250(is)-250(only)-250(used)-250(in)-250(the)-250(speci\002cation.)]TJ ET Q q 1 0 0 1 20 57.5999908 cm /GS1 gs /Fm1 Do Q q 1 0 0 1 120 -11 cm /GS1 gs /Fm2 Do Q q 1 0 0 1 525 3 cm /GS1 gs /Fm3 Do Q endstream endobj 34 0 obj<>stream x 0E<$vS[5)jV g9.ܚI%c)HC [!8N'э>UA 8MCxJD6 endstream endobj 35 0 obj<> endobj 36 0 obj<> endobj 37 0 obj<> endobj 38 0 obj<> endobj 39 0 obj<> endobj 40 0 obj<> endobj 41 0 obj<> endobj 42 0 obj<> endobj 43 0 obj<> endobj 44 0 obj<>stream HWɎ%IW$y,_0H#TTucfKVU_V{⋹ǯ/j~^_~%^^^~ӟ˿^R-*{)z&;jjwʐ܅r̷u8]=OwWZ)cgð2NJRV;,~/8IRRs-aA-5ƻ#[wڱ45}pbֆiv'^1mܦŔcV(rk:){R WX[0b'ri҄΅3=f*=0 GWr"ޑ2>8-1wɏ92(Gcߪ]DAwB䝟w(>AsGλiմ6J?f1e%g#$'Z 2*7i޵={c:}l {jg tiS@2!ж\`혚RՎuB0>hͱƖ(&\++UVçVe #-7fڽNuCܪic 4m+w?fڂӃ$:v< G4t8L׸%|X!:sΎ ;X#4cV||zt+qbJwtr^:V^}r+8t0#رr+i d|rS`xSͬ7h@~"nzjA0g5#NB6b+d< /x#mbͰ #:9fsCݚnkXreq5 #͜ήN@4W<0ÙFĉrwt1]XE͈q;hM]rwka!)ҟMbgK4睚p1В| 09+i[AA5Qiʘ#38:'ҵ=VCx}2('P„T #3 8/Cq EGWGHhv>b04o+fuinw 0<sGրa,I!Hl~a CuHYĿ}F%:f+'DmM荚8'tPTWLꄑrWSffyRqu-]-Mԁr!u g&p9|[6s;*\@, 8XD:8-\RV:_q'LˊR'3\nJé,PgޅL"+5q+1NQzE:dCё&g!7GӃȘnBSgVg(jP#Kv}ќ#HsvU3͹}3#Sa*j40` 2jIC(9!ʳL \~QS@C!KUl퓗GÑ<}UA!ꊃ/to^ͱll"`I34-j6rR`Y=q3{cQf,8g,oTX93aFb38̨fF\E1aɸɌ0rDۼ7;qqw3+G^mfY18f-ofܚɌq iq4KC7~ڣN$@\|̈<ΝΌcNQdOFiW&7VuF>lny>čNx~Ɓ!?q0ҹP縿qFV}qgǟT%Q_1\翄Α ZNګfG)B@\c fy}W7sc/ؒ>,E@+d(,NmЪ4ŅO_LֽxO_/& MLB"f`jLt~(ӯʚW*pS(m| LA@y'4hXtVQ5*v9;UZ ,F4u†dT@G٩><_Pq>Ax'܇s=l8|9(Z*DYm^ R} = n%{}>'Sw@]<땚J~*oT bIDt GZ;fs*^i~,"z&S GlFD,:Dg^gBSvcnS&='lu"4A Exk,O}~,3NZҨ ZFCFRrHklY4aFԼ|Ig:E]9A!LEܢ02k{L@LhՃa7JP~DċJx~Y"BPْj?ye׼*ʕֲ:{=ޒ<v&$Aʰr9ت5% Cf׿Ymcq>P(lD>\.N7 X\5(sř13IJbTnz"4znDQ죯:2O>Sv\-|?I`@ tU=nC"Q_Դ QĒjq D,H <ݞD/sT f9'*ӂnν!KN/0T$둎\9/!1 ~,1+X9"E>ep؇->)9wFpzr Ø%Y DYБy2۲3sP>Ghݘb7"MDѧxu6kC֎g[/8Ow"%ggԫ@IɎǁR_+SSMMdR6*ަHĠ9>QMF/d~Ik. oMpRO3VAn] Bv7!i\g)5m=,\r(B>դ|t*inXcHD5@mn}MM-oE3P3fŜet%*JC XS;|]_be6=usja|FvkAlwubsU=K%QF+\tZ$Q4%…~)%ICFݖRćҹ,n5 Ue%ϊ"#@sJPR01Zwp^ $ZIYN9-X5OTA=_ dvW8[PJ~e5MKP>HZYQ'*DZF0&ߚ &4,'бf;35ց8(Dѻ32gܐ}]ThJwFcy hH"kdX{ζ &-Uuz(\(p/v$ 'Pm!pB8R{[MY!JSHVwk T`|lpb%,Op{(L㭵sZyC׹ k\ V%$ȃJU/BMq'Z.83Z n]wX-WF7LwVaUC05ݩA>QTzk6%gY$ko_\?W&alv wBЍRnmeʒ~hjPQU&N\.⨚@xFԠBWAk$pGg5yPwp΃F}jq4RY;7fNvq&RFQa>qT( }[r@jE]> " a l.!Ggu >n 40à ë5~ZbbD((' tκCAl^ʌwK&a;/堹O*s"Bl9*ACpk4eVy&hv'3 f0"eLZe;p No_'uكgN9.'i36#Mnڈ\uE@m*^WlsqXWHɉ3^"CCHױlySy_6M^6 hЄhtUY& ęE V>!M/|v2q@`X3P4@\Р6TR[!polY/Z ^b:d.tTV=u, b@)ނuoL۰Vm|g/00K8pGO*VQ;"ktz3_y:IXnR$|{r`z _LshEףhm'(2-?!ԝkС(fNi)p$46VT߸w0MtdJ`J0 $˖Rky|[Oj6f(K'j~hv^-lw ;ɻ3)R4z9}}~Q۩z ||<,l-, 'u iCMZ2ܺ¹ iյK@SOEwjGE3ۭ;MUtϩ,;&9y \;3C>ěIF3 N%ݚ d{GBܜCA .z ܲH< 8J(AGPf]9ZZ6CfvDjCpDU#t{CxP1/dʿ^敃L;: hKd6Hp4 Tخ P/`V9&`X(wdp6ɞ~{ԇ,:1qF]. B(˂F hYy4'Ԣl,Ie=Pme(WoloW˾{n<|Z<81@6뢁f*ңTԽ-V&rj [vGoe9U]~ =z?^[8.Y["@I~v8%I2'cXX"T'E~'I#E!"spR,wQ^TP7)b>Ջbx͌a1Ɗ%q<٬Xifm٬OaE+p"܊,gE 9W,Vˣ(iHX]rV,/xX+H1)N  ugEJ9DUG)=h{4E묈HfaED7O-DӨzӢ,u"VY⬈T@'OI"FnfDv ߑ3Q]ofTS;3"ΌQbƟ nQTfR.' γ^[؍>,UXQ'EG-LT$_]}oKp:s`4Mt?S,QUY-˾0ҊuRbjRe{WƮ V* 5-8e%CE6a*=C4}0 mʠY3G]"HveIeٯLP~tEw sFa2\O H) T4%$% Z:/ƬSmڥtk(qMćmF""* ^φJ&>V/XfAA'jEȫn/ &EU:˘U;z]+.䈱 ߗ!gB;,a~Y Bx!:4e@aEگʔ@pQL܂GQ^=H.oRj8;p\<{}g&ןY0?In`A ^46P!.B)cND|Ŋ Z~? BDt!ԝYݽwp[\]]v=g͊4K\BaA9z۠-:^;kEeظ仢fwZ 4 鶦LodҬ؇t=/4|hH ZokPgE#5j&5/k9yݖo[hلX/m*tPQ[~ UQ hb5/62ݮbmzݐVҼVX+ *.R-i-N/͞Xf{Ԭ^Z5 +);%S kgg}WQ)mKUZ6}-GGX86U¼&pu li._5O#V#}?:uvYww2+^Z2@SV'J?X3 j['jBx#sD۲jFVhɡe7jCڵ>');v$;]&,h y!NlM7^x-#g?g⧥&ax>nm bN{E6Y~qbj DA+lLݰ"C Vc+ۏ)+@. zd_z(״G7vXۏf$+VÊ{yNNyR:"'SC =9J׶ISXdj冪MO9C(xa ˕'DW6ɘ/@F6{leP8ړP]uEMɌƒ% e_x֌Ikd4AT&ލs;R\_0wDd9q2LۭC f;4Tdt߱#{ydRۂ9H zh" Ӈ) 8X~@hloz˃3 ۮX #rȜ0ֈydgFG]u26uIuK21QBbN,]C_X/sp!d 9sQ!G~"^vo˞v3E[0Íl%oËArLdt<ߕ #жyN"WqkS;X=fDlX|"H08rli-(εef88.6j)z5` 4(ffqn6ʣWlb%9TPubMQo'FR~Ѯm?ow?__[fadFG3[ຫ0a4pj4y6[Vo,}:%PU4&֨ފUUz n⋣/[E ͘ޭ/vsF\=+A(" {H;m& RtMKDMJ7ѩ]3|+6k!tӭپ6ҟ3 ,|ߧ5QtˆP#o 냱ʆMLaʽD`TQbRpuGl!m24и![ 3!u68w9`\ xW@g2 }؃bsom hUMYDҼ1!fm ]Paxg!yETu`.E3PTZ/1zylJӬl,p1Û3췆N89߂o| EKj#K烆r"/ u[42F-wYkL]k3x^htJˁC5]UT[8ۯq"FL叭ÔYJX E45V_},5Lz@Z@R̸>|,2V @1G2;H_p) )͞Ɯ!lWf q6n _vF :@|/]∾c9U{ ThSxQ}g57̉$;`37U4cb%t%g Xg(C׫c.7WQ(HK`ic^ "S b/@{#/r'nD w?1L ZJhȄh>LDs7zT{:wx7iGɦh!AnNfX %uMܬ/ 9TBVT~n%qTDa 3^$Vt*#ڃ6yexkQ+@tj^ratKR/E HEYP,Ei!6AIՉ`/Yʂzk65R%w5SO43A`Զ/y$+k#A@հF Aj\`r%v(UJs98nPK[^q@;yYlsOES}88;H%;X:=X;=l=uKSs)֡٩.*BD9k!9yYqIn8P,e\>!DoR…`žxgX`(Hj6A "#]EԢ{C#jAN)^\)"E _#N;B/-D:qw] oal`vλoyfPPXVFn}c]c;xd"a6jJ/} 2bV;XC_S[jLC'K8ǐP &߅5: |Ti'Qb@EfĢXPn|V`)WNrry[~,^PDHQ3{4=O^Q^Uf܁P=Sey( sQB)<0ۅ nh?+AE3 cž` W ޽9FW}I R ! (CrF:kZtV`$Q=IUKƧc!{-o^~Y7(R fç-w%鴟t-I}׻ @[v*$gCi/(3[$9uvNZI{c@uZ,V,E?]nrZ/'?|_-JqU7ZvU!☽F n+75إ~I=B}`I k4/%!2/]xm*pfʸl T)5z>n2 ZWv4ܞ^O0c\dais*&\Cs  &GI}op?OWĉQT3ȯipҜޅb+3Åh&짅tfy[66Ue@nD}|/!#D[&!|)> c=9ϐ@!c!£n>scXIuXwnP A,Ji(so&6xs3{("x搫\BJ3J X[ :)lQ Qth;,NRRXXHRMr/y] w:"_%JrGD,] ;/M%watҗa!v@JW-:IG%C@ZD(/zCc)Fo Tg_ZЕM MdU/5ֆ,^`Qk@w5%wŸ-MEڐ " h*j y3aCP8pK/n)(9Eb-eIv( %;Q2e9vHF}fa+V&.D)*unUE㞋^ҫJ:mCl ] %ٕk+qQfU= b|qӫʩ^UΝ:^UfU n1z+^FŌk&`{E*gלYMc978@>Ζp8}p>F+Ʈ[G#]'ugX颯ng ና4#?2auDU/dXa1V,e'X00`' Z_o(lkv˙Ц[(^P,X6Rڎ6QXrжr$TKP,҄01LXxoCABDͳwQHiA[C.)RXbE)GY|XcDR; l- ~\]") XLr4p&a~rAÀ\q`x0@"֭lz/|d>ƖĺN|y _O;pr٠zaè{U+Cb(t">Y9!dxYL0b YiiڡXIς=>{@$cY*mTRvZ^8 zwGT@=u-? 0f\6@OT + BA+s=/9ߏ궐a_n K储8/y|p>uLFh #D"}t䯸H*:srBLwz: cun\3'\\|6Zq cK! //ba1!O(F&LnJC"ؑXpK 1E5ng@6*Vv)XsRN%Qwb %_+1x[J -L؅; C<:UPVK p? QbMfXe -T!ϟea5Q V:9f¾Zgĥ> _F? )s 1CUyWu!"ZVDB "G"ۄ,uQr?^)@J] TNN nt)DD{}4FDadzN_n(NV0J$/4Z{i]#6KR Έc#L+Ji6<(4ݒ b𙖂\JX`+m[̚"͡(z[[T+pn'yG#g+kى~<)A Wom=ehl=jb @v>v t,uk םpHy6C~A֩MU'ymȺ!?DY9=.^@ k-G2׭<. IºhBYfS)t, P.gC-bGN7T ?nCXN 6\#vcO⺧tkҨg^rr0:#YcLxPj:53ԖeM˽[r"yp: 1S+: @cW=ZJ>~qM||0} 0endstream endobj 45 0 obj<>stream x+|endstream endobj 46 0 obj<>stream q 40 67 m 572 67 l 572 720 l 40 720 l W n 0 g 1 i /GS0 gs BT /T1_0 1 Tf 0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 9.9626 0 0 9.9626 58.7519 710.0373 Tm [(assigned)-198(the)-199(v)25(alue)]TJ /T1_1 1 Tf 7.402 0 Td (exp\()Tj /T1_2 1 Tf (x)Tj /T1_3 1 Tf 6.9738 0 0 6.9738 157.2873 708.5429 Tm (m)Tj /T1_1 1 Tf 9.9626 0 0 9.9626 164.8551 710.0373 Tm (\))Tj /T1_0 1 Tf 0.587 0 Td [(to)-198(e)15(xpress)-199(the)-198(intent)-199(to)-198(compute)]TJ -11.237 -1.2 Td [(\(an)-317(approximation)-317(of\))-317(the)-317(e)15(xponential)-317(of)]TJ /T1_4 1 Tf 16.884 0 Td (x)Tj /T1_0 1 Tf [(.)-511(This)-317(e)15(xample)]TJ -16.884 -1.2 Td [(is)-250(de)25(v)15(eloped)-250(in)-250(more)-250(details)-250(in)-250(Section)-250(4.3.)]TJ 1.2 -1.272 Td [(When)-214(conditional)-214(instructions)-215(are)-214(in)40(v)20(olv)15(ed,)-221(the)-215(te)1(st)-215(must)]TJ -1.2 -1.2 Td [(be)-381(performed)-381(on)-381(the)-381(\003oat)1(ing-point)-381(part,)-414(in)-381(accordance)-381(to)]TJ 0 -1.2 TD [(the)-423(program)-423(e)15(x)15(ecution.)-829(Thus)-423(the)-423(e)14(xac)1(t)-424(and)-423(model)-423(parts)]TJ T* [(are)-398(computed)-399(follo)25(wing)-398(the)-398(program)-399(path)-398(de\002ned)-398(by)-399(the)]TJ 0 -1.2 TD [(\003oating-point)-272(part)1(.)-375(This)-272(is)-271(mandatory)65(,)-277(as)-272(programs)-271(such)-272(as)]TJ T* [(e)15(xample)-370(4.2)-371(w)10(ould)-370(not)-370(e)25(v)15(en)-371(ha)20(v)15(e)-370(a)-371(resulting)-370(v)25(alue)-370(if)-371(the)]TJ T* [(tests)-250(were)-250(performed)-250(on)-250(the)-250(e)15(xact)-250(part.)]TJ 1.2 -1.272 Td [(Rounding)-311(modes)-310(are)-311(correctly)-310(handled:)-432(if)-310(the)-311(rounding)]TJ -1.2 -1.2 Td [(mode)-246(is)-247(not)-246(modi\002ed)-246(by)-246(the)-247(program,)-247(it)-246(has)-246(a)-246(kno)25(wn)-247(v)25(alue,)]TJ T* [(which)-367(can)-368(be)-367(speci\002ed)-368(on)-367(Caduceus')55(s)-368(command)-367(line)-368(and)]TJ T* [(which)-318(def)10(aults)-318(to)-318(rounding)-318(to)-318(nearest,)-335(ties)-318(to)-318(e)25(v)15(en.)-514(If)-318(it)-318(is)]TJ T* [(modi\002ed)-276(by)-276(the)-276(program,)-283(then)-276(it)-276(becomes)-276(a)-277(dynamic)-276(v)25(alue)]TJ T* [(and)-317(\003oating-point)-316(e)15(xpressions)-317(are)-316(interpreted)-317(according)-317(to)]TJ T* [(its)-250(current)-250(v)25(alue.)]TJ /T1_5 1 Tf 10.9589 0 0 10.9589 58.752 490.2431 Tm [(3.2)-1150(Syn)32(tax)-384(of)-383(annotat)-1(ions)]TJ /T1_0 1 Tf 9.9626 0 0 9.9626 70.7071 463.1735 Tm [(Our)-217(abstract)-216(model)-217(of)-217(\003oating-point)-216(arithmetic)-217(being)-217(de-)]TJ -1.2 -1.2 Td [(\002ned,)-323(we)-309(no)25(w)-308(e)15(xtend)-309(the)-309(Caduceus)-308(speci\002cation)-309(language)]TJ 0 -1.2 TD [(to)-242(gi)25(v)15(e)-242(acce)1(ss)-242(to)-242(this)-242(model.)-307(W)80(e)-242(only)-241(describe)-242(here)-242(the)-242(ne)25(w)]TJ 0 -1.2 TD [(constructs)-230(introduced)-231(to)-230(deal)-230(with)-230(\003oating-point)-231(arithmetic;)]TJ 0 -1.2 TD [(a)-302(comprehensi)25(v)15(e)-303(description)-302(of)-302(the)-302(Caduceus)-303(speci\002cation)]TJ T* [(language)-250(can)-250(be)-250(found)-250(in)-250(its)-250(reference)-250(manual)-250([15].)]TJ 1.2 -1.272 Td [(First,)-291(all)-283(operations)-283(appearing)-283(inside)-283(annotations)-283(are)-283(in-)]TJ -1.2 -1.2 Td [(terpreted)-306(as)-306(e)15(xact)-307(opera)1(tions)-307(on)-306(real)-306(numbers.)-479(Thus)]TJ /T1_1 1 Tf 21.463 0 Td (0)Tj /T1_2 1 Tf (:)Tj /T1_1 1 Tf (1)Tj /T1_0 1 Tf 1.584 0 Td (is)Tj -23.047 -1.2 Td [(e)15(xactly)]TJ /T1_6 1 Tf 6.9738 0 0 6.9738 92.9393 370.7338 Tm (1)Tj ET q 1 0 0 1 90.9536133 369.1026001 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 7.943 0.199 l S Q BT /T1_6 1 Tf 6.9738 0 0 6.9738 90.9536 363.3757 Tm (10)Tj /T1_0 1 Tf 9.9626 0 0 9.9626 102.4754 366.8112 Tm (and)Tj /T1_1 1 Tf 1.683 0 Td [(1)-183(+)-182(0)]TJ /T1_2 1 Tf (:)Tj /T1_1 1 Tf (1)Tj /T1_0 1 Tf 3.16 0 Td [(is)-239(a)-240(real)-239(addition)-239(which)-239(v)25(alue)-240(is)-239(thus)]TJ /T1_1 1 Tf -9.232 -1.352 Td (1)Tj /T1_2 1 Tf (:)Tj /T1_1 1 Tf (1)Tj /T1_0 1 Tf [(.)-391(Similarly)65(,)-283(one)-277(can)-277(use)]TJ /T1_2 1 Tf 11.106 0 Td (\031)Tj /T1_0 1 Tf 0.606 0 Td (,)Tj /T1_7 1 Tf 0.534 0.827 Td (p)Tj ET q 1 0 0 1 189.0486145 361.5825043 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 4.981 0.199 l S Q BT /T1_1 1 Tf 9.9626 0 0 9.9626 189.0486 353.3411 Tm (2)Tj /T1_0 1 Tf 0.777 0 Td (or)Tj /T1_1 1 Tf 1.11 0 Td (exp\(1\))Tj /T1_0 1 Tf 3.082 0 Td [(in)-277(annotations)]TJ -18.048 -1.2 Td [(with)-250(their)-250(usual)-250(mathematical)-250(meaning.)]TJ 1.2 -1.272 Td [(A)-426(\003oating-point)-427(program)-427(v)25(ari)1(able)-427(is)-427(interpreted)-426(as)-427(its)]TJ -1.2 -1.2 Td [(\003oating-point)-190(part)-190(and)-190(implicitly)-190(con)40(v)15(erted)-190(to)-191(a)-190(real)-190(number)55(.)]TJ T* [(T)80(w)10(o)-264(constructs)-264(are)-264(introduced)-263(to)-264(access)-264(the)-264(other)-264(tw)10(o)-264(parts)]TJ T* [(of)-295(the)-295(model:)]TJ /T1_4 1 Tf 5.823 0 Td (\\exact)Tj /T1_1 1 Tf (\()Tj /T1_2 1 Tf (e)Tj /T1_1 1 Tf (\))Tj /T1_0 1 Tf 5.138 0 Td [(is)-295(the)-295(e)15(xact)-295(part)-295(of)-295(the)-295(\003oating-)]TJ -10.961 -1.2 Td [(point)-250(e)15(xpression)]TJ /T1_2 1 Tf 6.818 0 Td (e)Tj /T1_0 1 Tf 0.716 0 Td (and)Tj /T1_4 1 Tf 1.694 0 Td (\\model)Tj /T1_1 1 Tf (\()Tj /T1_2 1 Tf (e)Tj /T1_1 1 Tf (\))Tj /T1_0 1 Tf 5.093 0 Td [(its)-250(model)-250(part.)]TJ -13.121 -1.272 Td [(In)-294(addition,)-306(se)25(v)15(eral)-294(deri)25(v)15(ed)-294(constructs)-294(are)-294(introduced)-295(to)]TJ -1.2 -1.2 Td [(ease)-250(the)-250(writing)-250(of)-250(annotations:)]TJ /T1_7 1 Tf 1 -2.217 Td (\017)Tj /T1_4 1 Tf 1 0 Td (\\abs\()Tj /T1_2 1 Tf (e)Tj /T1_4 1 Tf (\))Tj /T1_0 1 Tf 4.421 0 Td (or)Tj /T1_4 1 Tf 1.188 0 Td (|)Tj /T1_2 1 Tf (e)Tj /T1_4 1 Tf (|)Tj /T1_0 1 Tf [(:)-520(the)-355(absolute)-355(v)25(alue)-355(of)-355(the)-355(real)-355(e)15(x-)]TJ -5.609 -1.2 Td (pression)Tj /T1_2 1 Tf 3.583 0 Td (e)Tj /T1_0 1 Tf (;)Tj /T1_7 1 Tf -4.583 -2.289 Td (\017)Tj /T1_4 1 Tf 1 0 Td (\\round_error\()Tj /T1_2 1 Tf (e)Tj /T1_4 1 Tf (\))Tj /T1_0 1 Tf [(:)-3774(a)-1982(shortcut)-1982(for)]TJ /T1_7 1 Tf 0 -1.2 TD (j)Tj /T1_2 1 Tf (e)Tj /T1_7 1 Tf 1.227 0 Td (\000)Tj /T1_4 1 Tf 1.262 0 Td (\\exact)Tj /T1_1 1 Tf (\()Tj /T1_2 1 Tf (e)Tj /T1_1 1 Tf (\))Tj /T1_7 1 Tf (j)Tj /T1_0 1 Tf [(,)-692(that)-603(is)-603(the)-603(dif)25(ference)-604(between)]TJ -2.489 -1.2 Td [(the)-250(\003oating-point)-250(part)-250(of)]TJ /T1_2 1 Tf 10.055 0 Td (e)Tj /T1_0 1 Tf 0.716 0 Td [(and)-250(its)-250(e)15(xact)-250(part;)]TJ /T1_7 1 Tf -11.771 -2.29 Td (\017)Tj /T1_4 1 Tf 1 0 Td (\\total_error\()Tj /T1_2 1 Tf (e)Tj /T1_4 1 Tf (\))Tj /T1_0 1 Tf [(:)-3774(a)-1982(shortcut)-1982(for)]TJ /T1_7 1 Tf T* (j)Tj /T1_2 1 Tf (e)Tj /T1_7 1 Tf 1.227 0 Td (\000)Tj /T1_4 1 Tf 1.262 0 Td (\\model)Tj /T1_1 1 Tf (\()Tj /T1_2 1 Tf (e)Tj /T1_1 1 Tf (\))Tj /T1_7 1 Tf (j)Tj /T1_0 1 Tf [(,)-692(that)-603(is)-603(the)-603(dif)25(ference)-604(between)]TJ -2.489 -1.2 Td [(the)-250(\003oating-point)-250(part)-250(of)]TJ /T1_2 1 Tf 10.055 0 Td (e)Tj /T1_0 1 Tf 0.716 0 Td [(and)-250(its)-250(model)-250(part;)]TJ /T1_7 1 Tf -11.771 -2.289 Td (\017)Tj /T1_2 1 Tf 1 0 Td (e)Tj /T1_6 1 Tf 6.9738 0 0 6.9738 83.3161 104.4717 Tm (1)Tj /T1_4 1 Tf 9.9626 0 0 9.9626 87.7855 105.9661 Tm (\210\210)Tj /T1_2 1 Tf (e)Tj /T1_6 1 Tf 6.9738 0 0 6.9738 104.3795 104.4717 Tm (2)Tj /T1_0 1 Tf 9.9626 0 0 9.9626 108.8489 105.9661 Tm [(:)-310(the)-250(e)15(xponentiation)-250(of)-250(real)-250(numbers;)]TJ /T1_7 1 Tf -4.028 -2.289 Td (\017)Tj /T1_4 1 Tf 1 0 Td (\\sqrt\()Tj /T1_2 1 Tf (e)Tj /T1_4 1 Tf (\))Tj /T1_0 1 Tf [(:)-310(the)-250(square)-250(root)-250(of)-250(the)-250(real)-250(e)15(xpression)]TJ /T1_2 1 Tf 20.263 0 Td (e)Tj /T1_0 1 Tf (.)Tj /T1_5 1 Tf 10.9589 0 0 10.9589 317.5019 710.0374 Tm [(3.3)-1150(Wh)32(y)-384(s)1(p)-32(eci)-1(\f)1(c)-1(ation)-383(of)-384(the)-384(mo)-32(del)]TJ /T1_0 1 Tf 9.9626 0 0 9.9626 329.4571 683.8653 Tm [(W)80(e)-217(no)25(w)-216(specify)-217(the)-216(model)-217(of)-217(\003oating-point)-216(arithmetic)-217(as)]TJ -1.2 -1.2 Td [(a)-287(Wh)5(y)-287(theory)65(,)-296(that)-287(is)-287(a)-287(set)-287(of)-287(types,)-297(constants)-287(and)-287(function)]TJ 0 -1.2 TD [(declarations.)-377(It)-273(must)-272(be)-272(seen)-273(as)-272(the)]TJ /T1_8 1 Tf 14.426 0 Td (interface)Tj /T1_0 1 Tf 3.827 0 Td [(of)-272(our)-273(model.)]TJ -18.253 -1.2 Td [(In)-310(order)-310(to)-310(use)-310(a)-310(gi)25(v)15(en)-310(pro)15(v)15(er)-310(to)-310(dischar)18(ge)-310(the)-310(v)15(eri\002cation)]TJ 0 -1.2 TD [(conditions,)-268(this)-265(model)-264(has)-265(to)-264(be)-265(realized)-264(\002rst)-265(\(see)-264(ne)15(xt)-265(sec-)]TJ T* [(tion\).)-536(An)-326(e)15(xcerpt)-325(of)-326(this)-325(theory)-326(is)-325(gi)25(v)15(en)-326(in)-325(Appendix)-326(\(the)]TJ T* [(full)-257(theory)-257(can)-257(be)-256(found)-257(in)-257(the)-257(Caduceus)-257(distrib)20(ution)-257(in)-257(\002le)]TJ /T1_4 1 Tf T* (lib/why/floats.why)Tj /T1_0 1 Tf (\).)Tj 1.2 -1.242 Td [(The)-250(main)-250(elements)-250(of)-250(this)-250(theory)-250(are)-250(the)-250(follo)25(wing:)]TJ /T1_7 1 Tf -0.2 -2.127 Td (\017)Tj /T1_0 1 Tf 1 0 Td [(a)-203(type)-204(for)-203(the)-203(rounding)-204(modes)-203(and)-204(\002)25(v)15(e)-203(constants)-203(of)-204(this)]TJ 0 -1.2 TD [(type)-320(\(the)-320(four)-320(rounding)-320(modes)-320(of)-320(IEEE-754,)-338(plus)-320(the)]TJ T* [(rounding)-205(to)-204(nearest,)-214(ties)-205(a)15(w)10(ay)-205(from)-204(zero)-205(of)-205(the)-205(re)25(vision)]TJ T* [(of)-250(the)-250(IEEE-754)-250(standard)-250([13]\);)]TJ /T1_7 1 Tf -1 -2.169 Td (\017)Tj /T1_0 1 Tf 1 0 Td [(the)-250(single)-250(and)-250(double)-250(types;)]TJ /T1_7 1 Tf -1 -2.169 Td (\017)Tj /T1_0 1 Tf 1 0 Td [(the)-435(basic)-435(operations)-435(\(addition,)-481(subtraction,)-482(di)25(vision,)]TJ T* [(square)-376(root,)-408(ne)15(g)5(ation,)-408(absolute)-376(v)25(alue,)-408(etc.\))-688(on)-377(these)]TJ T* [(types,)-346(used)-327(in)-327(the)-326(interpretation)-327(of)-327(the)-327(program)-327(com-)]TJ T* (putations;)Tj /T1_7 1 Tf -1 -2.169 Td (\017)Tj /T1_0 1 Tf 1 0 Td [(the)-205(functions)-205(to)-205(access)-205(the)-205(\003oating-point)-205(part,)-214(the)-205(e)15(xact)]TJ T* [(part)-346(and)-345(the)-346(model)-345(part,)-370(used)-345(in)-346(the)-345(interpretation)-346(of)]TJ T* [(the)-250(annotations;)]TJ /T1_7 1 Tf -1 -2.169 Td (\017)Tj /T1_0 1 Tf 1 0 Td [(the)-250(rounding)-250(functions)-250(\(to)-250(interpret)-250(the)-250(constants\);)]TJ /T1_7 1 Tf -1 -2.169 Td (\017)Tj /T1_0 1 Tf 1 0 Td [(the)-204(maximum)-204(\003oat)-204(allo)25(wed)-203(in)-204(each)-204(type,)-213(as)-204(a)-204(real)-204(num-)]TJ 0 -1.2 TD (ber;)Tj /T1_7 1 Tf -1 -2.169 Td (\017)Tj /T1_0 1 Tf 1 0 Td [(the)-440(coercions)-439(between)-440(the)-439(dif)25(ferent)-440(types)-439(\(single)-440(to)]TJ T* [(double)-250(and)-250(double)-250(to)-250(single\).)]TJ -0.8 -2.127 Td [(In)-230(addition,)-234(this)-230(Wh)5(y)-230(theory)-230(also)-230(contains)-230(v)25(ariants)-230(of)-230(the)]TJ -1.2 -1.2 Td [(\003oating-point)-275(operations)-276(with)-275(o)15(v)15(er\003o)25(w)-276(checks.)-386(Such)-276(oper)20(-)]TJ T* [(ations)-368(perform)-367(the)-368(same)-368(computations)-368(as)-367(the)-368(ones)-368(abo)15(v)15(e,)]TJ T* [(b)20(ut)-299(ha)20(v)15(e)-299(preconditions)-299(enforcing)-299(the)-299(user)-299(to)-300(pro)15(v)15(e)-299(that)-299(the)]TJ T* [(resulting)-221(v)25(alue)-221(is)-221(not)-221(greater)-221(than)-221(the)-221(maximal)-221(\003oat)-221(allo)25(wed)]TJ T* [(in)-379(the)-379(gi)25(v)15(en)-379(type.)-698(Thus)-379(we)-379(can)-379(actually)-380(choose)-379(between)]TJ T* [(tw)10(o)-426(dif)25(ferent)-425(models:)-662(one)-426(model)-425(where)-426(we)]TJ /T1_8 1 Tf 18.844 0 Td (assume)Tj /T1_0 1 Tf 3.37 0 Td (that)Tj -22.214 -1.2 Td [(there)-259(is)-258(no)-259(o)15(v)15(er\003o)25(w)-259(during)-259(the)-258(program)-259(e)15(x)15(ecution,)-261(and)-259(one)]TJ T* [(model)-301(where)-301(we)-300(ha)20(v)15(e)-301(to)]TJ /T1_8 1 Tf 10.244 0 Td [(pr)45(o)10(ve)]TJ /T1_0 1 Tf 2.523 0 Td [(that)-301(there)-301(is)-300(no)-301(o)15(v)15(er\003o)25(w)-301(\(a)]TJ -12.767 -1.2 Td [(Caduceus)-334(command-line)-334(option)-334(switches)-334(between)-335(the)-334(tw)10(o)]TJ T* [(models\).)-756(W)80(e)-399(could)-398(also)-399(implement)-399(a)-398(third)-399(model)-399(where)]TJ T* [(o)15(v)15(er\003o)25(ws)-248(are)-249(tak)10(en)-248(into)-248(account)-249(\(and)-248(thus)-249(where)]TJ /T1_4 1 Tf 19.806 0 Td (NaN)Tj /T1_0 1 Tf 2.048 0 Td [(is)-248(an)]TJ -21.854 -1.2 Td [(e)15(xplicit)-325(v)25(alue\).)-536(But)-325(this)-325(w)10(ould)-326(require)-325(much)-325(w)10(ork)-325(for)-326(the)]TJ T* [(v)15(ery)-343(fe)25(w)-342(situations)-343(where)-342(a)-343(program)-342(is)-343(correct)-343(in)-342(spite)-343(of)]TJ T* [(o)15(v)15(er\003o)25(ws.)-460(W)80(e)-300(do)-300(not)-300(consider)-300(\003oating-point)-301(\003ags)-300(and)-300(e)15(x-)]TJ T* [(ceptions)-261(at)-261(all.)-344(It)-261(could)-261(be)-262(added)-261(to)-261(this)-261(model)-261(b)20(ut)-262(i)1(t)-262(w)10(ould)]TJ T* [(mak)10(e)-258(it)-258(much)-259(more)-258(comple)15(x,)-260(as)-258(each)-258(operation)-259(should)-258(also)]TJ T* [(return)-236(\003ags.)-305(Since)-236(such)-236(\003ags)-236(are)-236(rarely)-236(and)-236(hardly)-236(accessed)]TJ T* [(in)-250(C)-250(programs,)-250(we)-250(prefer)-250(not)-250(handling)-250(them.)]TJ ET Q q 1 0 0 1 20 57.5999908 cm /GS1 gs /Fm0 Do Q q 1 0 0 1 120 -11 cm /GS1 gs /Fm1 Do Q q 1 0 0 1 525 3 cm /GS1 gs /Fm2 Do Q endstream endobj 47 0 obj<>stream x 0E<$vS[5)jV g9.ܚI%c)HC [!8N'э>UA 8MCxJD6 endstream endobj 48 0 obj<>stream x+|endstream endobj 49 0 obj<>stream q 40 67 m 572 67 l 572 720 l 40 720 l W n 0 g 1 i /GS0 gs BT /T1_0 1 Tf 0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 9.9626 0 0 9.9626 70.7071 710.0373 Tm [(Note)-563(that)-562(we)-563(do)-563(handle)-563(under\003o)25(ws:)-935(our)-563(model)-563(of)]TJ -1.2 -1.2 Td [(\003oating-point)-476(numbers)-477(contains)-476(subnormal)-476(numbers)-477(and)]TJ 0 -1.2 TD [(tin)15(y)-317(enough)-316(v)25(alues)-317(will)-317(be)-316(rounded)-317(into)-317(subnormals.)-510(This)]TJ 0 -1.2 TD [(means)-348(that)-348(we)-348(may)-348(ha)20(v)15(e)-348(to)-348(add)-348(h)5(ypotheses)-348(on)-348(some)-348(pro-)]TJ 0 -1.2 TD [(grams)-250(such)-250(as)-250(\223the)-250(input)-250(v)25(alues)-250(are)-250(normal)-250(\003oats\224.)]TJ /T1_1 1 Tf 10.9589 0 0 10.9589 58.7519 637.1555 Tm [(3.4)-1150(Co)-32(q)-383(i)-1(mplem)-1(en)32(tati)-1(on)-383(of)-384(the)-383(mo)-32(del)]TJ /T1_0 1 Tf 9.9626 0 0 9.9626 70.7071 612.0943 Tm [(At)-225(this)-224(point,)-230(we)-225(are)-224(no)25(w)-225(able)-225(to)-224(produce)-225(the)-225(v)15(eri\002cation)]TJ -1.2 -1.2 Td [(conditions)-314(for)-314(an)15(y)-314(pro)15(v)15(er)-315(supported)-314(by)-314(the)-314(Wh)5(y)-314(tool.)-503(But)]TJ 0 -1.2 TD [(none)-330(of)-330(these)-330(pro)15(v)15(ers)-330(is)-330(able)-330(to)-330(dischar)18(ge)-330(an)15(y)-331(of)-330(the)-330(v)15(eri-)]TJ 0 -1.2 TD [(\002cation)-285(conditions,)-293(since)-285(our)-284(model)-285(is)-285(merely)-285(a)-284(set)-285(of)-285(dec-)]TJ 0 -1.2 TD [(larations)-303(without)-302(de\002nitions.)-468(Thus)-303(the)-302(last)-303(step)-302(of)-303(the)-303(v)15(er)20(-)]TJ T* [(i\002cation)-350(chain)-351(consists)-350(in)-350(implementing)-350(the)-351(\003oating-point)]TJ T* [(model)-251(for)-251(a)-251(particular)-251(pro)15(v)15(er)40(,)-251(in)-252(or)1(d)-1(e)1(r)-252(to)-251(be)-251(able)-251(to)-251(conduct)]TJ T* [(proofs.)-310(W)80(e)-250(focus)-250(here)-250(on)-250(the)-250(Coq)-250(proof)-250(assistant)-250([1].)]TJ 1.2 -1.205 Td [(Our)-231(Coq)-231(implementation)-231(of)-230(the)-231(model)-231(is)-231(based)-231(on)-231(an)-231(e)15(x-)]TJ -1.2 -1.2 Td [(isting)-315(formalization)-316(of)-315(the)-315(IEEE-754)-316(standard)-315(by)-315(M.)-316(Dau-)]TJ 0 -1.2 TD [(mas,)-462(L.)-419(Rideau)-420(and)-419(L.)-420(Th)]TJ 11.166 0.005 Td (\264)Tj -0.055 -0.005 Td [(ery)-419([7].)-819(This)-419(formalization)-420(is)]TJ -11.111 -1.2 Td [(radix-independent)-304(and)-304(format-independent.)-471(T)80(o)-304(correspond)]TJ T* [(to)-298(\003oating-point)-297(processors,)-309(we)-298(choose)-298(the)-297(radix)-298(2)-297(and)-298(we)]TJ T* [(use)-295(single)-295(and)-296(double)-295(\003oating-point)-295(numbers)-295(that)-295(ha)20(v)15(e)-296(the)]TJ T* [(required)-317(mantissa)-317(and)-317(e)15(xponent)-318(size.)-511(T)80(o)-317(be)-318(in)-317(accordance)]TJ T* [(with)-243(the)-244(Wh)5(y)-243(model,)-245(the)-243(Coq)-244(implementation)-243(of)-243(a)-244(\003oating-)]TJ T* [(point)-250(number)-250(is)-250(a)-250(three)-250(\002elds)-250(record)-250(composed)-250(of:)]TJ /T1_2 1 Tf 1 -2.016 Td (\017)Tj /T1_0 1 Tf 1 0 Td [(the)-316(\003oating-point)-316(v)25(alue,)-333(of)-316(type)]TJ /T1_3 1 Tf 13.21 0 Td (float)Tj /T1_0 1 Tf 3.316 0 Td [(as)-316(de\002ned)-316(in)]TJ -16.526 -1.2 Td ([7];)Tj /T1_2 1 Tf -1 -2.021 Td (\017)Tj /T1_0 1 Tf 1 0 Td [(a)-271(proof)-270(that)-271(the)-271(\003oat)-271(\002t)1(s)-271(in)-271(the)-271(gi)25(v)15(en)-270(format)-271(\(single)-271(or)]TJ T* [(double)-250(precision\);)]TJ /T1_2 1 Tf -1 -2.021 Td (\017)Tj /T1_0 1 Tf 1 0 Td [(an)-331(e)15(xact)-331(v)25(alue)-332(of)-331(type)]TJ /T1_3 1 Tf 9.391 0 Td (R)Tj /T1_0 1 Tf [(,)-331(where)]TJ /T1_3 1 Tf 3.955 0 Td (R)Tj /T1_0 1 Tf 0.931 0 Td [(is)-331(the)-331(Coq)-332(type)-331(of)]TJ -14.278 -1.2 Td [(real)-250(numbers;)]TJ /T1_2 1 Tf -1 -2.021 Td (\017)Tj /T1_0 1 Tf 1 0 Td [(a)-250(model)-250(v)25(alue)-250(of)-250(type)]TJ /T1_3 1 Tf 8.89 0 Td (R)Tj /T1_0 1 Tf (.)Tj -9.69 -2.016 Td [(F)15(or)-247(the)-248(rounded)-247(operations,)-248(we)-247(de\002ne)-248(only)-247(the)-247(basic)-248(op-)]TJ -1.2 -1.2 Td [(erations)-341(de\002ned)-342(by)-341(the)-341(IEEE-754)-341(standard)-342(\(addition,)-364(sub-)]TJ 0 -1.2 TD [(traction,)-307(multiplicat)1(ion,)-307(di)25(vision)-295(and)-296(square)-295(root\),)-306(plus)-296(op-)]TJ T* [(posite)-218(and)-218(absolute)-218(v)25(alue.)-299(These)-219(are)-218(de\002ned)-218(using)-218(rounding)]TJ T* [(functions)-311(that)-311(were)-311(pre)25(viously)-311(de)25(v)15(eloped)-311([3].)-493(W)80(e)-311(also)-311(de-)]TJ T* [(\002ne)-191(functions)-190(for)-191(jumping)-191(from)-191(one)-190(format)-191(to)-191(another)-191(\(with-)]TJ T* [(out)-323(rounding)-324(for)-323(single)-323(to)-324(double,)-342(b)20(ut)-323(with)-323(rounding)-324(from)]TJ T* [(double)-250(to)-250(single\).)]TJ 1.2 -1.205 Td [(W)80(e)-382(also)-382(need)-382(a)-382(function)-382(to)-382(round)-382(a)-382(constant)-382(v)25(alue:)-574(if)]TJ -1.2 -1.2 Td [(0.1)-340(appears)-341(in)-340(a)-340(program,)-363(it)-341(will)-340(be)-340(seen)-341(as)-340(the)-340(single)-341(\(or)]TJ T* [(double\))-205(\003oating-point)-205(number)-206(with)-205(a)-205(\003oating-point)-205(part)-206(that)]TJ T* [(is)-266(the)-267(rounded)-266(\(with)-266(the)-266(current)-267(rounding)-266(mode\))-266(of)-266(the)-267(real)]TJ T* [(v)25(alue)]TJ /T1_4 1 Tf 6.9738 0 0 6.9738 85.6201 144.75 Tm (1)Tj ET q 1 0 0 1 83.6345215 143.1188049 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 7.943 0.199 l S Q BT /T1_4 1 Tf 6.9738 0 0 6.9738 83.6345 137.3918 Tm (10)Tj /T1_0 1 Tf 9.9626 0 0 9.9626 95.1298 140.8273 Tm [(and)-237(an)-236(e)15(xact)-237(and)-236(a)-237(model)-237(parts)-236(that)-237(are)-236(e)15(xactly)]TJ /T1_4 1 Tf 6.9738 0 0 6.9738 285.3589 144.7499 Tm (1)Tj ET q 1 0 0 1 283.3733215 143.1188049 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 7.943 0.199 l S Q BT /T1_4 1 Tf 6.9738 0 0 6.9738 283.3733 137.3918 Tm (10)Tj /T1_0 1 Tf 9.9626 0 0 9.9626 292.5113 140.8273 Tm (.)Tj -22.264 -1.205 Td [(It)-366(is)-366(important)-366(to)-366(notice)-366(that)-366(our)-367(architecture)-366(based)-366(on)]TJ -1.2 -1.2 Td [(a)-457(model)-457(written)-456(in)-457(the)-457(syntax)-457(of)-457(the)-456(Wh)5(y)-457(tool)-457(of)25(fers)-457(a)]TJ 0 -1.2 TD [(great)-431(\003e)15(xibility)65(.)-852(It)-430(is)-431(indeed)-430(v)14(e)1(ry)-431(easy)-431(to)-430(switch)-431(to)-431(an-)]TJ 0 -1.2 TD [(other)-287(\003oating-point)-288(computational)-287(model,)-297(such)-287(as)-287(radix)-288(10)]TJ T* [(or)-229(\002x)15(ed-point)-229(arithmetic.)-303(All)-229(the)-229(user)-229(has)-229(to)-229(do)-229(is)-229(to)-229(replace)]TJ 25.972 63.14 Td [(the)-282(Coq)-282(implementation)-282(of)-283(the)-282(Wh)5(y)-282(model.)-406(Similarly)65(,)-291(it)-282(is)]TJ 0 -1.2 TD [(easy)-254(to)-253(switch)-254(to)-253(another)-254(pro)15(v)15(er)40(,)-254(as)-254(soon)-254(as)-253(a)-254(\003oating-point)]TJ T* [(formalization)-250(is)-250(a)20(v)25(ailable)-250(\(e.g.)-310(HOL)-250(and)-250(PVS)-250([6]\).)]TJ /T1_5 1 Tf 11.9552 0 0 11.9552 317.5019 659.1197 Tm [(4)-1000(Examples)]TJ /T1_0 1 Tf 9.9626 0 0 9.9626 329.4571 634.1049 Tm [(This)-261(section)-261(illustrates)-261(the)-261(use)-261(of)-261(our)-261(v)15(eri\002cation)-261(frame-)]TJ -1.2 -1.2 Td [(w)10(ork)-250(on)-250(se)25(v)15(eral)-250(short)-250(\003oating-point)-250(programs.)]TJ /T1_1 1 Tf 10.9589 0 0 10.9589 317.5019 598.1312 Tm [(4.1)-1150(St)-1(er)1(b)-32(enz)-383(t)-1(heor)1(em)]TJ /T1_0 1 Tf 9.9626 0 0 9.9626 329.4571 574.1127 Tm [(The)-358(well-kno)25(wn)-357(Sterbenz)-358(theorem)-357([22])-358(states)-357(that)-358(if)]TJ /T1_6 1 Tf 21.942 0 Td (x)Tj /T1_0 1 Tf -23.142 -1.2 Td (and)Tj /T1_6 1 Tf 1.761 0 Td (y)Tj /T1_0 1 Tf 0.843 0 Td [(are)-317(\003oating-point)-317(numbers)-317(not)-317(too)-317(f)10(ar)-317(a)15(w)10(ay)-317(\()]TJ /T1_6 1 Tf [(y)-36(=)]TJ /T1_7 1 Tf (2)Tj /T1_2 1 Tf 20.332 0 Td (\024)Tj /T1_6 1 Tf -22.936 -1.2 Td (x)Tj /T1_2 1 Tf 0.849 0 Td (\024)Tj /T1_7 1 Tf 1.056 0 Td (2)Tj /T1_6 1 Tf 0.75 0 Td (y)Tj /T1_0 1 Tf 0.526 0 Td [(\),)-250(then)]TJ /T1_6 1 Tf 2.805 0 Td (x)Tj /T1_2 1 Tf 0.794 0 Td (\000)Tj /T1_6 1 Tf 1 0 Td (y)Tj /T1_0 1 Tf 0.776 0 Td [(is)-250(computed)-250(e)15(xactly)65(.)]TJ -7.356 -1.2 Td [(This)-274(can)-274(be)-274(formally)-274(stated)-274(as)-274(the)-274(speci\002cation)-274(of)-274(a)-274(sin-)]TJ -1.2 -1.2 Td [(gle)-250(precision)-250(C)-250(function)-250(computing)]TJ /T1_6 1 Tf 14.416 0 Td (x)Tj /T1_2 1 Tf 0.794 0 Td (\000)Tj /T1_6 1 Tf 1 0 Td (y)Tj /T1_0 1 Tf 0.526 0 Td (:)Tj /T1_3 1 Tf -16.736 -1.822 Td (/)Tj 0.6 -0.175 Td (*)Tj 0.6 0.175 Td [(@)-600(requires)-600(y/2)-600(<=)-600(x)-600(<=)-600(2)]TJ 14.4 -0.175 Td (*)Tj 0.6 0.175 Td (y)Tj -15 -1.2 Td [(@)-600(ensures)-1200(\\result)-600(==)-600(x-y)]TJ 0 -1.2 TD (@)Tj 0.6 -0.175 Td (*)Tj 0.6 0.175 Td (/)Tj -2.4 -1.2 Td [(float)-600(Sterbenz\(float)-600(x,float)-600(y\){)]TJ 1.2 -1.2 Td [(return)-600(x-y;)]TJ -1.2 -1.2 Td (})Tj /T1_0 1 Tf 1.2 -1.822 Td [(Let)-329(us)-330(denote)]TJ /T1_6 1 Tf 5.876 0 Td (x)Tj /T1_7 1 Tf 0.996 0 Td [(=)-424(\()]TJ /T1_6 1 Tf (x)Tj /T1_8 1 Tf 6.9738 0 0 6.9738 419.4667 428.7237 Tm (f)Tj /T1_6 1 Tf 9.9626 0 0 9.9626 424.6314 430.2181 Tm [(;)-166(x)]TJ /T1_8 1 Tf 6.9738 0 0 6.9738 434.7531 428.7237 Tm (e)Tj /T1_6 1 Tf 9.9626 0 0 9.9626 439.0312 430.2181 Tm [(;)-166(x)]TJ /T1_8 1 Tf 6.9738 0 0 6.9738 449.1529 428.7237 Tm (m)Tj /T1_7 1 Tf 9.9626 0 0 9.9626 456.7206 430.2181 Tm (\))Tj /T1_0 1 Tf 0.718 0 Td (and)Tj /T1_6 1 Tf 1.773 0 Td (y)Tj /T1_7 1 Tf 0.951 0 Td [(=)-424(\()]TJ /T1_6 1 Tf (y)Tj /T1_8 1 Tf 6.9738 0 0 6.9738 511.7518 428.7237 Tm (f)Tj /T1_6 1 Tf 9.9626 0 0 9.9626 516.9165 430.2181 Tm [(;)-166(y)]TJ /T1_8 1 Tf 6.9738 0 0 6.9738 526.2288 428.7237 Tm (e)Tj /T1_6 1 Tf 9.9626 0 0 9.9626 530.5069 430.2181 Tm [(;)-166(y)]TJ /T1_8 1 Tf 6.9738 0 0 6.9738 539.8192 428.7237 Tm (m)Tj /T1_7 1 Tf 9.9626 0 0 9.9626 547.3869 430.2181 Tm (\))Tj /T1_0 1 Tf (.)Tj -23.075 -1.2 Td [(The)-366(result)-366(of)-365(the)-366(function)-366(call,)-394(denoted)]TJ /T1_3 1 Tf 16.614 0 Td (\\result)Tj /T1_0 1 Tf [(,)-395(is)-365(the)]TJ -16.614 -1.2 Td (triple)Tj /T1_7 1 Tf 2.325 0 Td (\()Tj /T1_2 1 Tf (\016)Tj /T1_7 1 Tf (\()Tj /T1_6 1 Tf (x)Tj /T1_8 1 Tf 6.9738 0 0 6.9738 359.0896 404.8134 Tm (f)Tj /T1_2 1 Tf 9.9626 0 0 9.9626 365.1433 406.3078 Tm (\000)Tj /T1_6 1 Tf 0.867 0 Td (y)Tj /T1_8 1 Tf 6.9738 0 0 6.9738 378.6655 404.8134 Tm (f)Tj /T1_7 1 Tf 9.9626 0 0 9.9626 383.8302 406.3078 Tm (\))Tj /T1_6 1 Tf [(;)-166(x)]TJ /T1_8 1 Tf 6.9738 0 0 6.9738 397.8263 404.8134 Tm (e)Tj /T1_2 1 Tf 9.9626 0 0 9.9626 402.9933 406.3078 Tm (\000)Tj /T1_6 1 Tf 0.867 0 Td (y)Tj /T1_8 1 Tf 6.9738 0 0 6.9738 416.5155 404.8134 Tm (e)Tj /T1_6 1 Tf 9.9626 0 0 9.9626 420.7935 406.3078 Tm [(;)-166(x)]TJ /T1_8 1 Tf 6.9738 0 0 6.9738 430.9152 404.8134 Tm (m)Tj /T1_2 1 Tf 9.9626 0 0 9.9626 439.3719 406.3078 Tm (\000)Tj /T1_6 1 Tf 0.867 0 Td (y)Tj /T1_8 1 Tf 6.9738 0 0 6.9738 452.8941 404.8134 Tm (m)Tj /T1_7 1 Tf 9.9626 0 0 9.9626 460.4618 406.3078 Tm (\))Tj /T1_0 1 Tf [(.)-298(The)-214(annotation)-214(states)]TJ -14.35 -1.2 Td [(that)-303(the)-304(\003oating-point)-303(part)-304(is)-303(e)15(xactly)-303(the)-304(subtraction)-303(of)-304(the)]TJ 0 -1.2 TD [(\003oating-point)-207(parts)-207(of)]TJ /T1_6 1 Tf 8.843 0 Td (x)Tj /T1_0 1 Tf 0.779 0 Td (and)Tj /T1_6 1 Tf 1.651 0 Td (y)Tj /T1_0 1 Tf 0.526 0 Td [(,)-216(that)-207(is)]TJ /T1_2 1 Tf 3.047 0 Td (\016)Tj /T1_7 1 Tf (\()Tj /T1_6 1 Tf (x)Tj /T1_8 1 Tf 6.9738 0 0 6.9738 479.9577 380.9031 Tm (f)Tj /T1_2 1 Tf 9.9626 0 0 9.9626 485.7541 382.3975 Tm (\000)Tj /T1_6 1 Tf 0.841 0 Td (y)Tj /T1_8 1 Tf 6.9738 0 0 6.9738 499.019 380.9031 Tm (f)Tj /T1_7 1 Tf 9.9626 0 0 9.9626 504.1837 382.3975 Tm [(\))-278(=)]TJ /T1_6 1 Tf 1.722 0 Td (x)Tj /T1_8 1 Tf 6.9738 0 0 6.9738 527.0354 380.9031 Tm (f)Tj /T1_2 1 Tf 9.9626 0 0 9.9626 532.8317 382.3975 Tm (\000)Tj /T1_6 1 Tf 0.841 0 Td (y)Tj /T1_8 1 Tf 6.9738 0 0 6.9738 546.0966 380.9031 Tm (f)Tj /T1_0 1 Tf 9.9626 0 0 9.9626 551.2613 382.3975 Tm (.)Tj -22.264 -1.2 Td [(Since)-460(there)-460(is)-461(no)-460(modi\002cation)-460(of)-460(the)-460(rounding)-461(mode)]TJ -1.2 -1.2 Td [(in)-460(the)-459(source)-460(code,)-512(all)-460(computations)-460(are)-459(assumed)-460(to)-460(be)]TJ 0 -1.2 TD [(in)-446(rounding)-445(to)-446(nearest,)-495(ties)-445(to)-446(e)25(v)15(en)-446(and)-445(the)-446(rounding)-446(is)]TJ 0 -1.2 TD [(statically)-429(set)-430(in)-429(the)-430(v)15(eri\002cation)-429(conditions.)-848(A)-430(Caduceus)]TJ T* [(command-line)-461(option)-461(can)-461(be)-461(used)-461(to)-461(specify)-461(a)-461(dif)25(ferent)]TJ T* [(rounding)-324(mode.)-530(When)-324(run)-323(on)-324(the)-324(abo)15(v)15(e)-323(source)-324(code,)-342(Ca-)]TJ T* [(duceus)-198(produces)-198(a)-197(single)-198(v)15(eri\002cation)-198(condition,)-208(which)-198(is)-198(the)]TJ 0 -1.2 TD [(follo)25(wing)-250(statement:)]TJ /T1_2 1 Tf 2.038 -1.934 Td (8)Tj /T1_6 1 Tf (x)Tj /T1_7 1 Tf 1.405 0 Td (:)Tj /T1_9 1 Tf 0.556 0 Td (single)Tj /T1_6 1 Tf (:)Tj /T1_2 1 Tf 3.678 0 Td (8)Tj /T1_6 1 Tf (y)Tj /T1_7 1 Tf 1.36 0 Td (:)Tj /T1_9 1 Tf 0.556 0 Td (single)Tj /T1_6 1 Tf (:)Tj /T1_9 1 Tf -7.553 -1.2 Td (s)Tj ET q 1 0 0 1 343.6340179 255.5368042 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_9 1 Tf 9.9626 0 0 9.9626 346.6228 255.5368 Tm (to)Tj ET q 1 0 0 1 357.6812134 255.5368042 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_9 1 Tf 9.9626 0 0 9.9626 360.67 255.5368 Tm (r)Tj /T1_7 1 Tf (\()Tj /T1_6 1 Tf (y)Tj /T1_7 1 Tf 1.44 0 Td (\))Tj /T1_6 1 Tf (=)Tj /T1_7 1 Tf (2)Tj /T1_2 1 Tf 1.667 0 Td (\024)Tj /T1_9 1 Tf 1.056 0 Td (s)Tj ET q 1 0 0 1 407.96521 255.5368042 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_9 1 Tf 9.9626 0 0 9.9626 410.954 255.5368 Tm (to)Tj ET q 1 0 0 1 422.0125122 255.5368042 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_9 1 Tf 9.9626 0 0 9.9626 425.0013 255.5368 Tm (r)Tj /T1_7 1 Tf (\()Tj /T1_6 1 Tf (x)Tj /T1_7 1 Tf 1.485 0 Td (\))Tj /T1_2 1 Tf 0.667 0 Td (\024)Tj /T1_7 1 Tf 1.056 0 Td (2)Tj /T1_2 1 Tf 0.722 0 Td (\002)Tj /T1_9 1 Tf 1 0 Td (s)Tj ET q 1 0 0 1 479.9436188 255.5368042 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_9 1 Tf 9.9626 0 0 9.9626 482.9324 255.5368 Tm (to)Tj ET q 1 0 0 1 493.9908142 255.5368042 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_9 1 Tf 9.9626 0 0 9.9626 496.9796 255.5368 Tm (r)Tj /T1_7 1 Tf (\()Tj /T1_6 1 Tf (y)Tj /T1_7 1 Tf 1.44 0 Td (\))Tj /T1_2 1 Tf 0.667 0 Td (\))Tj /T1_9 1 Tf -17.084 -1.2 Td (s)Tj ET q 1 0 0 1 353.5966187 243.5816956 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_9 1 Tf 9.9626 0 0 9.9626 356.5854 243.5817 Tm (to)Tj ET q 1 0 0 1 367.6439209 243.5816956 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_9 1 Tf 9.9626 0 0 9.9626 370.6327 243.5817 Tm (r)Tj /T1_7 1 Tf (\()Tj /T1_9 1 Tf (sub)Tj ET q 1 0 0 1 396.0262146 243.5816956 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_9 1 Tf 9.9626 0 0 9.9626 399.015 243.5817 Tm (single)Tj /T1_7 1 Tf (\()Tj /T1_9 1 Tf (nearest)Tj ET q 1 0 0 1 471.4815216 243.5816956 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_9 1 Tf 9.9626 0 0 9.9626 474.4703 243.5817 Tm (even)Tj /T1_6 1 Tf [(;)-166(x;)-166(y)]TJ /T1_7 1 Tf 4.087 0 Td [(\)\))-278(=)]TJ /T1_9 1 Tf -16.804 -1.2 Td (s)Tj ET q 1 0 0 1 353.5966187 231.6264954 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_9 1 Tf 9.9626 0 0 9.9626 356.5854 231.6265 Tm (to)Tj ET q 1 0 0 1 367.6439209 231.6264954 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_9 1 Tf 9.9626 0 0 9.9626 370.6327 231.6265 Tm (r)Tj /T1_7 1 Tf (\()Tj /T1_6 1 Tf (x)Tj /T1_7 1 Tf 1.485 0 Td (\))Tj /T1_2 1 Tf 0.611 0 Td (\000)Tj /T1_9 1 Tf 1 0 Td (s)Tj ET q 1 0 0 1 407.3102112 231.6264954 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_9 1 Tf 9.9626 0 0 9.9626 410.2991 231.6265 Tm (to)Tj ET q 1 0 0 1 421.3575134 231.6264954 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_9 1 Tf 9.9626 0 0 9.9626 424.3463 231.6265 Tm (r)Tj /T1_7 1 Tf (\()Tj /T1_6 1 Tf (y)Tj /T1_7 1 Tf 1.44 0 Td (\))Tj /T1_0 1 Tf -12.165 -1.919 Td [(where)-371(all)-371(inequalities)-371(and)-371(equalities)-371(are)-372(on)-371(real)-371(numbers,)]TJ /T1_3 1 Tf 0 -1.2 TD (s)Tj ET q 1 0 0 1 324.0773163 200.5516968 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_3 1 Tf 9.9626 0 0 9.9626 327.0661 200.5517 Tm (to)Tj ET q 1 0 0 1 339.6190186 200.5516968 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_3 1 Tf 9.9626 0 0 9.9626 342.6078 200.5517 Tm (r)Tj /T1_0 1 Tf 0.814 0 Td [(is)-214(the)-215(projection)-214(to)-215(access)-214(the)-214(\003oating-point)-215(part)-214(\(as)]TJ -3.334 -1.2 Td [(a)-342(real)-343(number\),)]TJ /T1_3 1 Tf 6.631 0 Td (sub)Tj ET q 1 0 0 1 402.0989075 188.5964966 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_3 1 Tf 9.9626 0 0 9.9626 405.0877 188.5965 Tm (single)Tj /T1_0 1 Tf 3.942 0 Td [(the)-342(subtraction)-343(on)-342(the)-343(type)]TJ /T1_3 1 Tf -12.734 -1.2 Td (single)Tj /T1_0 1 Tf 3.86 0 Td (and)Tj /T1_3 1 Tf 1.704 0 Td (nearest)Tj ET q 1 0 0 1 415.3825073 176.6412964 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_3 1 Tf 9.9626 0 0 9.9626 418.3713 176.6413 Tm (even)Tj /T1_0 1 Tf 2.66 0 Td [(the)-260(rounding)-261(mode)-260(\(see)-260(the)]TJ -12.785 -1.2 Td [(Appendix)-233(for)-233(the)-233(signatures)-233(of)-233(all)-233(these)-233(symbols\).)-305(This)-233(v)15(er)20(-)]TJ T* [(i\002cation)-224(condit)1(ion)-224(is)-224(easily)-223(dischar)18(ged)-224(with)-223(a)-224(dozen)-223(lines)-224(of)]TJ 0 -1.2 TD [(Coq)-250(tactics)-250(using)-250(pre)25(vious)-250(results)-250(from)-250([7].)]TJ 1.2 -1.2 Td [(This)-399(function)-400(could)-399(be)-399(gi)25(v)15(en)-400(a)-399(dif)25(ferent,)-437(strengthened)]TJ -1.2 -1.2 Td [(speci\002cation.)-717(Indeed,)-419(if)-386(we)-386(kno)25(w)-385(beforehand)-386(that)]TJ /T1_6 1 Tf 21.313 0 Td (x)Tj /T1_0 1 Tf 0.957 0 Td (and)Tj /T1_6 1 Tf -22.27 -1.2 Td (y)Tj /T1_0 1 Tf 0.85 0 Td [(ha)20(v)15(e)-324(no)-325(rounding)-324(error)40(,)-343(i.e.)-533(ar)1(e)-325(e)15(xact)-324(representations)-324(of)]TJ -0.85 -1.2 Td [(real)-367(numbers,)-397(the)1(n)-368(so)-367(is)-367(the)-367(result.)-661(This)-367(can)-368(be)-367(formally)]TJ 0 -1.2 TD [(e)15(xpressed)-250(as)-250(follo)25(ws:)]TJ ET Q q 1 0 0 1 20 57.5999908 cm /GS1 gs /Fm0 Do Q q 1 0 0 1 120 -11 cm /GS1 gs /Fm1 Do Q q 1 0 0 1 525 3 cm /GS1 gs /Fm2 Do Q endstream endobj 50 0 obj<>stream x 0E<$vS[5)jV g9.ܚI%c)HC [!8N'э>UA 8MCxJD6 endstream endobj 51 0 obj<> endobj 52 0 obj<>stream x+|endstream endobj 53 0 obj<>stream q 40 67 m 572 67 l 572 720 l 40 720 l W n 0 g 1 i /GS0 gs BT /T1_0 1 Tf 0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 9.9626 0 0 9.9626 58.7519 710.0373 Tm (/)Tj 0.6 -0.175 Td (*)Tj 0.6 0.175 Td [(@)-600(requires)-600(y/2)-600(<=)-600(x)-600(<=)-600(2)]TJ 14.4 -0.175 Td (*)Tj 0.6 0.175 Td (y)Tj -15 -1.2 Td [(@)-1800(&&)-600(\\round_error\(x\)==0)]TJ 0 -1.2 TD [(@)-1800(&&)-600(\\round_error\(y\)==0)]TJ 0 -1.2 TD [(@)-600(ensures)]TJ 0 -1.2 TD [(@)-1800(\\round_error\(\\result\)==0)]TJ T* (@)Tj 0.6 -0.175 Td (*)Tj 0.6 0.175 Td (/)Tj -2.4 -1.2 Td [(double)-600(Sterbenz\(double)-600(x,double)-600(y\){)]TJ 1.2 -1.2 Td [(return)-600(x-y;)]TJ -1.2 -1.2 Td (})Tj /T1_1 1 Tf 0 -2.001 TD [(This)-370(v)25(ariant)-370(w)10(as)-369(also)-370(pro)15(v)15(ed)-370(correct)-370(using)-369(a)-370(fe)25(w)-370(lines)-370(of)]TJ 0 -1.2 TD [(Coq)-250(tactics.)]TJ /T1_2 1 Tf 10.9589 0 0 10.9589 58.7519 557.5805 Tm [(4.2)-1150(Mal)-1(colm')-1(s)-383(algorit)-1(h)1(m)]TJ /T1_1 1 Tf 9.9626 0 0 9.9626 70.7071 532.6597 Tm [(In)-210(the)-209(early)-210(se)25(v)15(enties,)-217(Malcolm)-210(and)-209(Gentleman)-210(proposed)]TJ -1.2 -1.2 Td [(an)-303(algorithm)-303(to)-303(deduce)-302(from)-303(some)-303(gi)25(v)15(en)-303(computations)-303(the)]TJ 0 -1.2 TD [(characteristics)-192(of)-191(the)-192(\003oating-point)-192(system)-191(\(radix,)-204(precision,)]TJ 0 -1.2 TD [(rounding)-275(mode,)-281(etc.\))-275([18].)-384(The)-275(most)-274(f)10(amous)-275(of)-275(these)-275(algo-)]TJ 0 -1.2 TD [(rithms)-209(is)-210(the)-209(follo)25(wing)-209(one,)-218(which)-209(computes)-210(the)-209(radix)-209(of)-210(the)]TJ T* [(\003oating-point)-250(system:)]TJ /T1_3 1 Tf 2.351 -2.157 Td (1)Tj /T1_4 1 Tf [(:)-1000(A)]TJ /T1_5 1 Tf 2.806 0 Td ( )Tj /T1_3 1 Tf 1.278 0 Td (2)Tj -4.083 -1.2 Td (2)Tj /T1_4 1 Tf (:)Tj /T1_6 1 Tf 1.778 0 Td (while)Tj /T1_4 1 Tf 2.372 0 Td (A)Tj /T1_5 1 Tf 1.028 0 Td (6)Tj /T1_3 1 Tf (=)Tj /T1_4 1 Tf 1.056 0 Td (A)Tj /T1_3 1 Tf 0.972 0 Td [(+)-222(1)]TJ /T1_6 1 Tf 1.75 0 Td (do)Tj /T1_4 1 Tf 1.267 0 Td (A)Tj /T1_5 1 Tf 1.028 0 Td ( )Tj /T1_4 1 Tf 1.278 0 Td (A)Tj /T1_5 1 Tf 0.972 0 Td (\002)Tj /T1_3 1 Tf 1 0 Td (2)Tj -14.5 -1.2 Td (3)Tj /T1_4 1 Tf [(:)-1000(B)]TJ /T1_5 1 Tf 2.864 0 Td ( )Tj /T1_3 1 Tf 1.278 0 Td (1)Tj -4.142 -1.2 Td (4)Tj /T1_4 1 Tf (:)Tj /T1_6 1 Tf 1.778 0 Td (while)Tj /T1_3 1 Tf 2.372 0 Td (\(\()Tj /T1_4 1 Tf (A)Tj /T1_3 1 Tf 1.75 0 Td (+)Tj /T1_4 1 Tf 1 0 Td (B)Tj /T1_3 1 Tf 0.809 0 Td (\))Tj /T1_5 1 Tf 0.611 0 Td (\000)Tj /T1_4 1 Tf 1 0 Td (A)Tj /T1_3 1 Tf (\))Tj /T1_5 1 Tf 1.417 0 Td (6)Tj /T1_3 1 Tf (=)Tj /T1_4 1 Tf 1.056 0 Td (B)Tj /T1_6 1 Tf 1.059 0 Td (do)Tj /T1_4 1 Tf 1.267 0 Td (B)Tj /T1_5 1 Tf 1.086 0 Td ( )Tj /T1_4 1 Tf 1.278 0 Td (B)Tj /T1_3 1 Tf 1.031 0 Td [(+)-222(1)]TJ -17.513 -1.2 Td (5)Tj /T1_4 1 Tf (:)Tj /T1_6 1 Tf 1.778 0 Td (return)Tj /T1_4 1 Tf 2.772 0 Td (B)Tj /T1_1 1 Tf -5.701 -2.143 Td [(In)-311(our)-311(case)-311(the)-311(result)-311(should)-311(be)-311(2,)-326(since)-311(we)-311(are)-311(consid-)]TJ -1.2 -1.2 Td [(ering)-274(IEEE-754)-274(double)-274(precision.)-382(Ne)25(v)15(ertheless,)-280(the)-274(simple)]TJ 0 -1.2 TD [(f)10(act)-317(that)-317(this)-317(algorithm)-317(does)-317(terminate)-317(is)-317(a)-318(challenge)-317(in)-317(it-)]TJ T* [(self.)-309(Indeed,)-246(the)-246(\002rst)-246(loop)-246(multiplies)-246(a)-245(v)25(ariable)]TJ /T1_4 1 Tf 18.892 0 Td (A)Tj /T1_1 1 Tf 0.996 0 Td [(by)-246(2)-246(until)]TJ /T1_4 1 Tf -19.888 -1.2 Td (A)Tj /T1_1 1 Tf 1.042 0 Td (equals)Tj /T1_4 1 Tf 2.847 0 Td (A)Tj /T1_3 1 Tf 1.003 0 Td [(+)-253(1)]TJ /T1_1 1 Tf [(.)-437(This)-292(w)10(ould)-292(clearly)-292(ne)25(v)15(er)-292(halt)-292(if)-292(the)-293(com-)]TJ -4.893 -1.2 Td [(putations)-250(were)-250(error)20(-free.)]TJ 1.2 -1.2 Td [(T)80(o)-569(annotate)-569(the)-569(C)-569(implementation)-569(of)-570(the)-569(algorithm)]TJ -1.2 -1.2 Td [(abo)15(v)15(e,)-417(we)-383(need)-383(to)-383(introduce)-384(\002rst)-383(tw)10(o)-383(functions)-383(o)15(v)15(er)-384(real)]TJ T* (numbers:)Tj /T1_0 1 Tf 0 -2.002 TD (/)Tj 0.6 -0.175 Td (*)Tj 0.6 0.175 Td [(@)-600(logic)-600(int)-600(IRNDD\(real)-600(s\))]TJ 15.6 -0.175 Td (*)Tj 0.6 0.175 Td (/)Tj -17.4 -1.2 Td (/)Tj 0.6 -0.175 Td (*)Tj 0.6 0.175 Td [(@)-600(logic)-600(int)-600(my_log\(real)-600(s\))]TJ 16.2 -0.175 Td (*)Tj 0.6 0.175 Td (/)Tj /T1_1 1 Tf -18 -2.001 Td (Such)Tj /T1_0 1 Tf 2.27 0 Td (logic)Tj /T1_1 1 Tf 3.27 0 Td [(declarations)-270(mak)10(e)-270(Caduceus)-269(a)15(w)10(are)-270(of)-270(the)-270(e)15(x-)]TJ -5.54 -1.2 Td [(istence)-326(of)-327(such)-326(logical)-326(functions.)-539(The)15(y)-327(are)-326(de\002ned)-326(on)-327(the)]TJ 0 -1.2 TD [(pro)15(v)15(er)-315(side)-315(and)-316(do)-315(not)-315(require)-315(an)15(y)-315(de\002nition)-315(at)-316(the)-315(source)]TJ 0 -1.2 TD [(code)-326(le)25(v)15(el.)-537(These)-326(are)-326(tw)10(o)-326(Coq)-326(functions)-325(from)]TJ /T1_7 1 Tf 19.292 0 Td (R)Tj /T1_1 1 Tf 1.048 0 Td (to)Tj /T1_7 1 Tf 1.104 0 Td (Z)Tj /T1_1 1 Tf 0.993 0 Td (de-)Tj -22.437 -1.327 Td [(\002ned)-250(as)]TJ /T1_0 1 Tf 3.333 0 Td (IRNDD)Tj /T1_3 1 Tf (\()Tj /T1_4 1 Tf (x)Tj /T1_3 1 Tf 3.96 0 Td [(\))-278(=)]TJ /T1_5 1 Tf 1.722 0 Td (b)Tj /T1_4 1 Tf (x)Tj /T1_5 1 Tf (c)Tj /T1_1 1 Tf 1.71 0 Td (and)Tj /T1_0 1 Tf 1.694 0 Td (my_log)Tj /T1_3 1 Tf (\()Tj /T1_4 1 Tf (x)Tj /T1_3 1 Tf 4.56 0 Td [(\))-278(=)]TJ /T1_5 1 Tf 1.722 0 Td (b)Tj /T1_8 1 Tf 6.9738 0 0 6.9738 250.703 190.4815 Tm (ln\()Tj /T1_9 1 Tf 1.401 0 Td (x)Tj /T1_8 1 Tf (\))Tj ET q 1 0 0 1 250.7030182 187.9409943 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 17.4 0.199 l S Q BT /T1_8 1 Tf 6.9738 0 0 6.9738 250.9762 182.2141 Tm [(ln\()-1(2\))]TJ /T1_5 1 Tf 9.9626 0 0 9.9626 269.2986 185.6496 Tm (c)Tj /T1_1 1 Tf (.)Tj -19.934 -1.302 Td [(Then)-368(we)-368(can)-368(annotate)-367(a)-368(C)-368(v)15(ersion)-368(of)-368(Malcolm')55(s)-368(algo-)]TJ -1.2 -1.2 Td (rithm:)Tj /T1_0 1 Tf 0 -2.002 TD (/)Tj 0.6 -0.175 Td (*)Tj 0.6 0.175 Td [(@)-600(ensures)-600(\\result)-600(==)-600(2)]TJ 13.8 -0.175 Td (*)Tj 0.6 0.175 Td (/)Tj -15.6 -1.2 Td [(double)-600(malcolm\(\))-600({)]TJ 1.2 -1.2 Td [(double)-600(A,)-600(B;)]TJ 0 -1.2 TD (A=2;)Tj T* (/)Tj 0.6 -0.175 Td (*)Tj 0.6 0.175 Td [(@)-600(assert)-600(A==2)]TJ 8.4 -0.175 Td (*)Tj 0.6 0.175 Td (/)Tj 15.772 61.94 Td (/)Tj 0.6 -0.175 Td (*)Tj 0.6 0.175 Td [(@)-600(invariant)-600(A)-600(==)-600(2)-600(\210\210)-600(my_log\(A\))]TJ 0 -1.2 TD [(@)-2400(&&)-600(1)-600(<=)-600(my_log\(A\))-600(<=)-600(53)]TJ T* [(@)-600(variant)-600(\(53-my_log\(A\)\))]TJ 15 -0.175 Td (*)Tj 0.6 0.175 Td (/)Tj -16.8 -1.2 Td [(while)-600(\(A)-600(!=)-600(\(A+1\)\))-600(A)]TJ 12 -0.175 Td (*)Tj 0.6 0.175 Td (=2;)Tj -12.6 -2.4 Td (/)Tj 0.6 -0.175 Td (*)Tj 0.6 0.175 Td [(@)-600(assert)-600(A)-600(==)-600(2)-600(\210\210)-600(\(53\))]TJ 14.4 -0.175 Td (*)Tj 0.6 0.175 Td (/)Tj -16.2 -2.4 Td (B=1;)Tj T* (/)Tj 0.6 -0.175 Td (*)Tj 0.6 0.175 Td [(@)-600(assert)-600(B==1)]TJ 8.4 -0.175 Td (*)Tj 0.6 0.175 Td (/)Tj -10.2 -2.4 Td (/)Tj 0.6 -0.175 Td (*)Tj 0.6 0.175 Td [(@)-600(invariant)-600(B)-600(==)-600(IRNDD\(B\))]TJ T* [(@)-2400(&&)-600(1)-600(<=)-600(B)-600(<=)-600(2)]TJ T* [(@)-600(variant)-600(\(2-IRNDD\(B\)\))]TJ 13.8 -0.175 Td (*)Tj 0.6 0.175 Td (/)Tj -15.6 -1.2 Td [(while)-600(\(\(A+B\)-A)-600(!=)-600(B\))-600(B++;)]TJ 0 -2.4 TD [(return)-600(B;)]TJ -1.2 -1.2 Td (})Tj /T1_1 1 Tf 1.2 -3.339 Td [(Let)-250(us)-250(detail)-250(the)-250(annotations:)]TJ /T1_5 1 Tf -0.2 -2.444 Td (\017)Tj /T1_1 1 Tf 1 0 Td [(The)-265(postcondition)-265(states)-265(that)-265(the)-265(result)-265(is)-265(the)-265(e)15(xpected)]TJ 0 -1.2 TD [(radix,)-250(that)-250(is)-250(2.)]TJ /T1_5 1 Tf -1 -2.591 Td (\017)Tj /T1_1 1 Tf 1 0 Td [(T)80(w)10(o)-371(assertions)-372(state)-371(that)]TJ /T1_4 1 Tf 10.505 0 Td (A)Tj /T1_1 1 Tf 1.121 0 Td [(is)-371(2)-372(\(resp.)]TJ /T1_4 1 Tf 4.833 0 Td (B)Tj /T1_1 1 Tf 1.18 0 Td [(is)-371(1\))-372(after)]TJ -17.639 -1.2 Td [(the)-249(assignment)]TJ /T1_0 1 Tf 6.221 0 Td (A=2)Tj /T1_1 1 Tf 2.049 0 Td (\(resp.)Tj /T1_0 1 Tf 2.559 0 Td (B=1)Tj /T1_1 1 Tf [(\).)-310(Though)-249(it)-250(ma)1(y)-250(seem)]TJ -10.829 -1.2 Td [(ob)15(vious)-264(and)-263(redundant,)-267(it)-264(actually)-264(states)-263(that)-264(the)]TJ /T1_10 1 Tf 19.624 0 Td [(e)20(xact)]TJ /T1_1 1 Tf -19.624 -1.2 Td [(parts)-303(of)]TJ /T1_4 1 Tf 3.384 0 Td (A)Tj /T1_1 1 Tf 1.053 0 Td (and)Tj /T1_4 1 Tf 1.747 0 Td (B)Tj /T1_1 1 Tf 1.112 0 Td [(are)-303(2)-304(and)-303(1)-303(respecti)25(v)15(ely)65(,)-317(i.e.)-470(that)]TJ /T1_4 1 Tf 13.667 0 Td (A)Tj /T1_1 1 Tf -20.964 -1.2 Td (and)Tj /T1_4 1 Tf 1.694 0 Td (B)Tj /T1_1 1 Tf 1.059 0 Td [(are)-250(computed)-250(e)15(xactly)65(.)]TJ /T1_5 1 Tf -3.753 -2.591 Td (\017)Tj /T1_1 1 Tf 1 0 Td [(The)-210(\002rst)-210(loop)-210(is)-210(annotated)-210(with)-210(an)-211(in)40(v)25(ariant)-210(stating)-210(that)]TJ /T1_4 1 Tf T* (A)Tj /T1_1 1 Tf 1.006 0 Td [(is)-256(e)15(xactly)-255(of)-256(po)25(wer)-255(of)-256(2)-255(and)-256(that)-255(its)-256(log)5(arithm)-256(is)-255(be-)]TJ -1.006 -1.2 Td [(tween)-280(1)-280(and)-280(53.)-400(It)-280(is)-280(also)-280(gi)25(v)15(en)-280(a)-280(v)25(ariant)-280(to)-280(guarantee)]TJ T* [(its)-310(termination.)-491(The)-311(v)25(ariant)-310(is)-311(here)-310(a)-310(nonne)15(g)5(ati)25(v)15(e)-311(de-)]TJ T* [(creasing)-250(inte)15(ger)40(,)-250(namely)]TJ /T1_3 1 Tf 9.998 0 Td (53)Tj /T1_5 1 Tf 1.222 0 Td (\000)Tj /T1_11 1 Tf 1 0 Td (my)Tj ET q 1 0 0 1 470.2303162 301.912796 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_11 1 Tf 9.9626 0 0 9.9626 473.2191 301.9128 Tm (log)Tj /T1_3 1 Tf (\()Tj /T1_4 1 Tf (A)Tj /T1_3 1 Tf (\))Tj /T1_1 1 Tf (.)Tj /T1_5 1 Tf -14.63 -2.591 Td (\017)Tj /T1_1 1 Tf 1 0 Td [(Right)-298(after)-298(the)-298(\002rst)-298(loop,)-310(we)-298(can)-298(pro)15(v)15(e)-298(that)]TJ /T1_4 1 Tf 17.855 0 Td (A)Tj /T1_3 1 Tf 1.117 0 Td [(=)-366(2)]TJ /T1_8 1 Tf 6.9738 0 0 6.9738 542.8207 279.7112 Tm (53)Tj /T1_1 1 Tf 9.9626 0 0 9.9626 551.2613 276.0959 Tm (,)Tj -21.464 -1.2 Td [(which)-250(is)-250(also)-250(inserted)-250(as)-250(an)-250(annotation.)]TJ /T1_5 1 Tf -1 -2.591 Td (\017)Tj /T1_1 1 Tf 1 0 Td [(The)-430(annotation)-429(of)-430(the)-430(second)-430(loop)-429(is)-430(much)-430(simpler)]TJ 0 -1.2 TD [(since)-297(we)-298(kno)25(w)-297(that)-297(this)-297(loop)-298(will)-297(be)-297(e)15(x)15(ecuted)-298(e)15(xactly)]TJ T* (twice,)Tj /T1_4 1 Tf 2.753 0 Td (B)Tj /T1_1 1 Tf 1.128 0 Td [(taking)-320(the)-319(v)25(alues)-320(1)-320(and)-319(2)-320(successi)25(v)15(ely)65(.)-519(The)]TJ -3.881 -1.2 Td [(only)-257(dif)25(\002culty)-257(is)-258(here)-257(to)-257(state)-257(in)-257(the)-257(in)40(v)25(ariant)-258(that)]TJ /T1_4 1 Tf 19.981 0 Td (B)Tj /T1_1 1 Tf 1.066 0 Td (is)Tj -21.047 -1.2 Td [(al)10(w)10(ays)-250(an)]TJ /T1_10 1 Tf 4.201 0 Td [(inte)40(g)10(er)]TJ /T1_1 1 Tf 3.056 0 Td [(that)-250(is)-250(either)-250(1)-250(or)-250(2.)]TJ -9.257 -2.444 Td [(When)-415(run)-414(on)-415(this)-414(annotated)-415(source)-414(code,)-456(Caduceus)-415(pro-)]TJ 0 -1.2 TD [(duces)-244(four)-243(v)15(eri\002cation)-244(conditions.)-307(All)-244(of)-244(them)-243(were)-244(pro)15(v)15(ed)]TJ T* [(correct)-250(using)-250(163)-250(lines)-250(of)-250(Coq)-250(tactics.)]TJ 1.2 -1.348 Td [(It)-325(is)-325(important)-326(to)-325(notice)-325(that)-325(this)-326(is)-325(not)-325(a)-325(proof)-325(that)-326(the)]TJ -1.2 -1.2 Td [(Malcolm')55(s)-285(algorithm)-284(returns)-285(the)-285(radix)-284(of)-285(the)-285(\003oating-point)]TJ 0 -1.2 TD [(system.)-497(W)80(e)-312(kne)25(w)-312(beforehand)-312(that)-313(the)-312(radix)-312(w)10(as)-312(2)-312(and)-313(we)]TJ 0 -1.2 TD [(used)-309(this)-309(information)-309(in)-309(the)-309(annotations)-309(to)-309(mak)10(e)-309(the)-309(proof)]TJ T* [(simpler)55(.)]TJ ET Q q 1 0 0 1 20 57.5999908 cm /GS1 gs /Fm0 Do Q q 1 0 0 1 120 -11 cm /GS1 gs /Fm1 Do Q q 1 0 0 1 525 3 cm /GS1 gs /Fm2 Do Q endstream endobj 54 0 obj<>stream x 0E<$vS[5)jV g9.ܚI%c)HC [!8N'э>UA 8MCxJD6 endstream endobj 55 0 obj<> endobj 56 0 obj<> endobj 57 0 obj<>stream x+|endstream endobj 58 0 obj<>stream q 40 67 m 572 67 l 572 720 l 40 720 l W n 0 g 1 i /GS0 gs BT /T1_0 1 Tf 0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 10.9589 0 0 10.9589 58.7519 710.0373 Tm [(4.3)-1150(A)-1(n)-383(exp)-32(onen)32(ti)-1(al)]TJ /T1_1 1 Tf 9.9626 0 0 9.9626 70.7071 681.704 Tm [(The)-325(purpose)-326(of)-325(this)-325(last)-325(e)15(xample)-326(is)-325(to)-325(illustrate)-325(the)-326(use)]TJ -1.2 -1.2 Td [(of)-384(the)-384(third)-384(component)-384(of)-384(our)-384(\003oating-point)-384(abstractions,)]TJ 0 -1.2 TD [(which)-250(we)-250(called)-250(the)]TJ /T1_2 1 Tf 8.22 0 Td [(model)-250(part)]TJ /T1_1 1 Tf (.)Tj -7.02 -1.315 Td [(It)-525(is)-524(a)-525(to)10(y)-525(e)15(xample)-525(computing)-524(the)-525(e)15(xponential)-525(of)-525(a)]TJ -1.2 -1.2 Td [(double-precision)-275(\003oat)]TJ /T1_3 1 Tf 9.049 0 Td (x)Tj /T1_1 1 Tf 0.846 0 Td [(around)-275(zero.)-385(A)-275(small)-275(T)80(aylor)-274(poly-)]TJ -9.895 -1.2 Td [(nomial)-265(is)-264(e)25(v)25(aluated)-265(using)-265(Horner')55(s)-264(rule,)-269(namely)]TJ /T1_4 1 Tf 19.498 0 Td [(1)-233(+)]TJ /T1_3 1 Tf 1.744 0 Td (x)Tj /T1_4 1 Tf [(\(1)-233(+)]TJ /T1_3 1 Tf -21.242 -1.2 Td (x=)Tj /T1_4 1 Tf (2\))Tj /T1_1 1 Tf [(.)-585(In)-342(t)1(his)-342(case,)-365(the)-341(computation)-342(will)-341(be)-342(f)10(aithful)-342([4,)-341(5])]TJ 0 -1.2 TD [(so)-289(the)-288(rounding)-289(and)-289(total)-289(error)-288(can)-289(be)-289(bounded.)-426(More)-289(pre-)]TJ 0 -1.2 TD [(cisely)65(,)-250(the)-250(source)-250(code)-250(can)-250(be)-250(annotated)-250(as)-250(follo)25(ws:)]TJ /T1_5 1 Tf 0 -2.459 TD (/)Tj 0.6 -0.175 Td (*)Tj 0.6 0.175 Td [(@)-600(requires)-600(|x|)-600(<=)-600(2)-600(\210\210)-600(\(-3\))]TJ 0 -1.2 TD [(@)-600(ensures)]TJ T* [(@)-600(\\model\(\\result\)==exp\(\\model\(x\)\))]TJ T* [(@)-1200(&&)-600(\(\\round_error\(x\)==0)]TJ T* [(@)-4800(=>)-600(\\round_error\(\\result\))]TJ T* (@)Tj 9 0 Td [(<=)-600(2)-600(\210\210)-600(\(-52\)\))]TJ -9 -1.2 Td [(@)-1200(&&)-600(\\total_error\(\\result\))]TJ T* [(@)-4800(<=)-600(\\total_error\(x\))]TJ T* (@)Tj 9 0 Td [(+)-600(2)-600(\210\210)-600(\(-51\))]TJ -10.2 -1.375 Td (*)Tj 0.6 0.175 Td (/)Tj -0.6 -1.2 Td [(double)-600(my_exp\(double)-600(x\))-600({)]TJ 1.2 -1.2 Td [(double)-600(y=1+x)]TJ 7.2 -0.175 Td (*)Tj 0.6 0.175 Td (\(1+x/2\);)Tj -7.8 -1.2 Td (/)Tj 0.6 -0.175 Td (*)Tj 0.6 0.175 Td [(@)-600(\\set_model)-600(y)-600(exp\(\\model\(x\)\))]TJ 18 -0.175 Td (*)Tj 0.6 0.175 Td (/)Tj -19.8 -1.2 Td [(return)-600(y;)]TJ -1.2 -1.2 Td (})Tj /T1_1 1 Tf 0 -2.344 TD [(Let)-250(us)-250(detail)-250(the)-250(annotations:)]TJ /T1_6 1 Tf 1 -2.344 Td (\017)Tj /T1_1 1 Tf 1 0 Td [(The)-381(precondition)-381(states)-381(that)-381(the)-381(input)-381(must)-381(be)-381(small)]TJ 0 -1.2 TD [(enough:)-689(the)-440(function)-439(will)-440(not)-440(comput)1(e)-440(an)-440(approxi-)]TJ T* [(mation)-365(of)-365(the)-364(e)15(xponential)-365(for)]TJ /T1_3 1 Tf 12.474 0 Td (x)Tj /T1_4 1 Tf 1.062 0 Td [(=)-490(100)]TJ /T1_1 1 Tf [(.)-655(W)80(e)-364(require)]TJ /T1_6 1 Tf -13.536 -1.2 Td (j)Tj /T1_3 1 Tf (x)Tj /T1_6 1 Tf 0.849 0 Td [(j)-278(\024)]TJ /T1_4 1 Tf 1.611 0 Td (2)Tj /T1_7 1 Tf 6.9738 0 0 6.9738 108.1707 314.0995 Tm (\000)Tj /T1_8 1 Tf (3)Tj /T1_1 1 Tf 9.9626 0 0 9.9626 118.8668 310.4841 Tm (.)Tj /T1_6 1 Tf -5.034 -2.459 Td (\017)Tj /T1_1 1 Tf 1 0 Td [(The)-250(postcondition)-250(then)-250(states)-250(that)]TJ /T1_9 1 Tf 1.2 -2.459 Td (\226)Tj /T1_1 1 Tf 1 0 Td [(the)-335(output)-335(is)-335(a)-335(\003oat)-335(whose)-335(model)-335(part)-335(\(its)-335(ideal)]TJ 0 -1.2 TD [(v)25(alue\))-399(is)-399(the)-400(e)15(xponential)-399(of)-399(the)-399(\(ideal)-399(v)25(alue)-400(of)]TJ T* [(the\))-250(input;)]TJ /T1_9 1 Tf -1 -1.829 Td (\226)Tj /T1_1 1 Tf 1 0 Td [(the)-240(rounding)-241(error)-240(inside)-241(the)-240(function)-240(is)-241(bounded)]TJ 0 -1.2 TD (by)Tj /T1_4 1 Tf 1.25 0 Td (2)Tj /T1_7 1 Tf 6.9738 0 0 6.9738 118.0297 211.0206 Tm (\000)Tj /T1_8 1 Tf (52)Tj /T1_1 1 Tf 9.9626 0 0 9.9626 132.697 207.4052 Tm (;)Tj /T1_9 1 Tf -4.222 -1.829 Td (\226)Tj /T1_1 1 Tf 1 0 Td [(the)-282(total)-282(error)-281(of)-282(the)-282(function)-282(\(i.e.)-405(the)-282(dif)25(ference)]TJ 0 -1.2 TD [(between)-461(the)-460(\003oating-point)-461(v)25(alue)-460(and)-461(the)-461(ideal)]TJ 0 -1.2 TD [(v)25(alue\))-279(is)-280(bounded)-279(by)]TJ /T1_4 1 Tf 8.702 0 Td (2)Tj /T1_7 1 Tf 6.9738 0 0 6.9738 192.272 168.8855 Tm (\000)Tj /T1_8 1 Tf (51)Tj /T1_1 1 Tf 9.9626 0 0 9.9626 209.7216 165.2702 Tm [(plus)-279(the)-280(total)-279(error)-279(of)]TJ -10.954 -1.2 Td [(the)-250(input.)]TJ -4.2 -2.459 Td [(It)-335(may)-336(seem)-335(some)25(what)-335(redundant)-335(to)-336(set)-335(the)-335(model)-335(part)-336(to)]TJ /T1_4 1 Tf T* (exp)Tj /T1_3 1 Tf 1.694 0 Td (x)Tj /T1_1 1 Tf 0.828 0 Td [(in)-256(the)-256(code)-257(and)-256(to)-256(state)-256(the)-256(corresponding)-256(equality)-257(in)]TJ -2.522 -1.2 Td [(the)-328(postcondition.)-546(As)-328(f)10(ar)-329(as)-328(the)-328(correctness)-329(of)]TJ /T1_5 1 Tf 19.358 0 Td (my)Tj ET q 1 0 0 1 264.1634216 104.9102936 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_5 1 Tf 9.9626 0 0 9.9626 267.1522 104.9103 Tm (exp)Tj /T1_1 1 Tf 2.128 0 Td (is)Tj -23.047 -1.2 Td [(concerned,)-312(this)-300(is)-300(indeed)-300(a)-300(tautology)65(,)-312(b)20(ut)-300(it)-300(will)-300(be)-300(needed)]TJ 0 -1.2 TD [(when)-250(calling)]TJ /T1_5 1 Tf 5.388 0 Td (my)Tj ET q 1 0 0 1 124.983017 81 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_5 1 Tf 9.9626 0 0 9.9626 127.9718 81 Tm (exp)Tj /T1_1 1 Tf (.)Tj 20.224 63.14 Td [(On)-280(the)-279(annotated)-280(code)-279(abo)15(v)15(e,)-287(Caduceus)-280(produces)-279(a)-280(sin-)]TJ -1.2 -1.2 Td [(gle)-250(v)15(eri\002cation)-250(condition,)-250(which)-250(reads)-250(as)-250(follo)25(ws:)]TJ /T1_6 1 Tf 0.885 -1.957 Td (8)Tj /T1_3 1 Tf (x)Tj /T1_4 1 Tf 1.405 0 Td (:)Tj /T1_10 1 Tf 0.556 0 Td (double)Tj /T1_3 1 Tf (:)Tj /T1_6 1 Tf 3.678 0 Td (j)Tj /T1_10 1 Tf (d)Tj ET q 1 0 0 1 391.0875092 678.5863037 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_10 1 Tf 9.9626 0 0 9.9626 394.0764 678.5863 Tm (to)Tj ET q 1 0 0 1 405.1348114 678.5863037 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_10 1 Tf 9.9626 0 0 9.9626 408.1236 678.5863 Tm (r)Tj /T1_4 1 Tf (\()Tj /T1_3 1 Tf (x)Tj /T1_4 1 Tf 1.485 0 Td (\))Tj /T1_6 1 Tf [(j)-278(\024)]TJ /T1_4 1 Tf 2 0 Td (2)Tj /T1_7 1 Tf 6.9738 0 0 6.9738 447.8288 682.2017 Tm (\000)Tj /T1_8 1 Tf (3)Tj /T1_6 1 Tf 9.9626 0 0 9.9626 461.2921 678.5863 Tm (\))Tj -13.548 -1.2 Td (8)Tj /T1_3 1 Tf (y)Tj /T1_4 1 Tf 1.359 0 Td (:)Tj /T1_10 1 Tf 0.556 0 Td (double)Tj /T1_3 1 Tf (:)Tj /T1_6 1 Tf 3.678 0 Td (8)Tj /T1_3 1 Tf (y)Tj /T1_8 1 Tf 6.9738 0 0 6.9738 392.4594 665.1367 Tm (1)Tj /T1_4 1 Tf 9.9626 0 0 9.9626 399.6961 666.6311 Tm (:)Tj /T1_10 1 Tf 0.556 0 Td (double)Tj /T1_3 1 Tf (:)Tj -7.921 -1.2 Td (y)Tj /T1_4 1 Tf 0.804 0 Td (=)Tj /T1_10 1 Tf 1.056 0 Td (add)Tj ET q 1 0 0 1 361.1352081 654.6759949 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_10 1 Tf 9.9626 0 0 9.9626 364.1241 654.676 Tm (double)Tj /T1_4 1 Tf (\()Tj /T1_10 1 Tf (nearest)Tj ET q 1 0 0 1 436.5906219 654.6759949 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_10 1 Tf 9.9626 0 0 9.9626 439.5794 654.676 Tm (even)Tj /T1_3 1 Tf (;)Tj /T1_10 1 Tf -8.868 -1.2 Td (r)Tj ET q 1 0 0 1 357.0558167 642.7207947 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_10 1 Tf 9.9626 0 0 9.9626 360.0446 642.7208 Tm (to)Tj ET q 1 0 0 1 371.1030121 642.7207947 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_10 1 Tf 9.9626 0 0 9.9626 374.0919 642.7208 Tm (d)Tj /T1_4 1 Tf (\()Tj /T1_10 1 Tf (nearest)Tj ET q 1 0 0 1 420.4067078 642.7207947 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_10 1 Tf 9.9626 0 0 9.9626 423.3955 642.7208 Tm (even)Tj /T1_3 1 Tf (;)Tj /T1_4 1 Tf 2.544 0 Td (1\))Tj /T1_3 1 Tf (;)Tj /T1_10 1 Tf -9.788 -1.2 Td (mul)Tj ET q 1 0 0 1 367.51651 630.7655945 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_10 1 Tf 9.9626 0 0 9.9626 370.5053 630.7656 Tm (double)Tj /T1_4 1 Tf (\()Tj /T1_10 1 Tf (nearest)Tj ET q 1 0 0 1 442.971817 630.7655945 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_10 1 Tf 9.9626 0 0 9.9626 445.9607 630.7656 Tm (even)Tj /T1_3 1 Tf [(;)-166(x;)]TJ /T1_10 1 Tf -8.009 -1.2 Td (add)Tj ET q 1 0 0 1 382.4604187 618.8105011 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_10 1 Tf 9.9626 0 0 9.9626 385.4493 618.8105 Tm (double)Tj /T1_4 1 Tf (\()Tj /T1_10 1 Tf (nearest)Tj ET q 1 0 0 1 457.9158173 618.8105011 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_10 1 Tf 9.9626 0 0 9.9626 460.9046 618.8105 Tm (even)Tj /T1_3 1 Tf (;)Tj /T1_10 1 Tf -9.009 -1.2 Td (r)Tj ET q 1 0 0 1 376.9811096 606.8553009 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_10 1 Tf 9.9626 0 0 9.9626 379.9699 606.8553 Tm (to)Tj ET q 1 0 0 1 391.0283203 606.8553009 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_10 1 Tf 9.9626 0 0 9.9626 394.0171 606.8553 Tm (d)Tj /T1_4 1 Tf (\()Tj /T1_10 1 Tf (nearest)Tj ET q 1 0 0 1 440.332016 606.8553009 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_10 1 Tf 9.9626 0 0 9.9626 443.3208 606.8553 Tm (even)Tj /T1_3 1 Tf (;)Tj /T1_4 1 Tf 2.544 0 Td (1\))Tj /T1_3 1 Tf (;)Tj /T1_10 1 Tf -9.788 -1.2 Td (div)Tj ET q 1 0 0 1 387.4418182 594.9001007 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_10 1 Tf 9.9626 0 0 9.9626 390.4306 594.9001 Tm (double)Tj /T1_4 1 Tf (\()Tj /T1_10 1 Tf (nearest)Tj ET q 1 0 0 1 462.89711 594.9001007 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_10 1 Tf 9.9626 0 0 9.9626 465.8859 594.9001 Tm (even)Tj /T1_3 1 Tf [(;)-166(x;)]TJ /T1_10 1 Tf -9.009 -1.2 Td (r)Tj ET q 1 0 0 1 381.9624176 582.9450073 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_10 1 Tf 9.9626 0 0 9.9626 384.9512 582.945 Tm (to)Tj ET q 1 0 0 1 396.009613 582.9450073 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_10 1 Tf 9.9626 0 0 9.9626 398.9985 582.945 Tm (d)Tj /T1_4 1 Tf (\()Tj /T1_10 1 Tf (nearest)Tj ET q 1 0 0 1 445.3133087 582.9450073 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_10 1 Tf 9.9626 0 0 9.9626 448.3021 582.945 Tm (even)Tj /T1_3 1 Tf (;)Tj /T1_4 1 Tf 2.544 0 Td (2\)\)\)\)\))Tj /T1_6 1 Tf 2.722 0 Td (\))Tj /T1_3 1 Tf -17.511 -1.2 Td (y)Tj /T1_8 1 Tf 6.9738 0 0 6.9738 331.2056 569.4954 Tm (1)Tj /T1_4 1 Tf 9.9626 0 0 9.9626 338.4423 570.9898 Tm (=)Tj /T1_10 1 Tf 1.056 0 Td (double)Tj ET q 1 0 0 1 380.9382172 570.9898071 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_10 1 Tf 9.9626 0 0 9.9626 383.927 570.9898 Tm (set)Tj ET q 1 0 0 1 400.2158203 570.9898071 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_10 1 Tf 9.9626 0 0 9.9626 403.2046 570.9898 Tm (model)Tj /T1_4 1 Tf (\()Tj /T1_3 1 Tf [(y)-36(;)]TJ /T1_4 1 Tf 3.984 0 Td (exp\()Tj /T1_10 1 Tf (d)Tj ET q 1 0 0 1 467.8236084 570.9898071 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_10 1 Tf 9.9626 0 0 9.9626 470.8124 570.9898 Tm (to)Tj ET q 1 0 0 1 481.8708191 570.9898071 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_10 1 Tf 9.9626 0 0 9.9626 484.8597 570.9898 Tm (model)Tj /T1_4 1 Tf (\()Tj /T1_3 1 Tf (x)Tj /T1_4 1 Tf 3.585 0 Td (\)\)\))Tj /T1_6 1 Tf 1.444 0 Td (\))Tj /T1_10 1 Tf -20.943 -1.2 Td (d)Tj ET q 1 0 0 1 332.1492157 559.0346069 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_10 1 Tf 9.9626 0 0 9.9626 335.138 559.0346 Tm (to)Tj ET q 1 0 0 1 346.1964111 559.0346069 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_10 1 Tf 9.9626 0 0 9.9626 349.1853 559.0346 Tm (model)Tj /T1_4 1 Tf (\()Tj /T1_3 1 Tf (y)Tj /T1_8 1 Tf 6.9738 0 0 6.9738 384.0959 557.5402 Tm (1)Tj /T1_4 1 Tf 9.9626 0 0 9.9626 388.5652 559.0346 Tm [(\))-278(=)-277(e)-1(x)1(p\()]TJ /T1_10 1 Tf (d)Tj ET q 1 0 0 1 430.6462097 559.0346069 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_10 1 Tf 9.9626 0 0 9.9626 433.635 559.0346 Tm (to)Tj ET q 1 0 0 1 444.6934204 559.0346069 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_10 1 Tf 9.9626 0 0 9.9626 447.6822 559.0346 Tm (model)Tj /T1_4 1 Tf (\()Tj /T1_3 1 Tf (x)Tj /T1_4 1 Tf 3.585 0 Td (\)\))Tj /T1_6 1 Tf 1.028 0 Td (^)Tj /T1_4 1 Tf -16.795 -1.2 Td (\()Tj /T1_10 1 Tf (double)Tj ET q 1 0 0 1 362.1753082 547.0794983 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_10 1 Tf 9.9626 0 0 9.9626 365.1641 547.0795 Tm (round)Tj ET q 1 0 0 1 391.9135132 547.0794983 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_10 1 Tf 9.9626 0 0 9.9626 394.9024 547.0795 Tm (error)Tj /T1_4 1 Tf (\()Tj /T1_3 1 Tf (x)Tj /T1_4 1 Tf 3.585 0 Td [(\))-278(=)-277(0)]TJ /T1_6 1 Tf 2.5 0 Td (\))Tj /T1_10 1 Tf -10.969 -1.2 Td (double)Tj ET q 1 0 0 1 378.2262115 535.1242981 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_10 1 Tf 9.9626 0 0 9.9626 381.215 535.1243 Tm (round)Tj ET q 1 0 0 1 407.9644165 535.1242981 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_10 1 Tf 9.9626 0 0 9.9626 410.9533 535.1243 Tm (error)Tj /T1_4 1 Tf (\()Tj /T1_3 1 Tf (y)Tj /T1_8 1 Tf 6.9738 0 0 6.9738 445.8639 533.6299 Tm (1)Tj /T1_4 1 Tf 9.9626 0 0 9.9626 450.3333 535.1243 Tm (\))Tj /T1_6 1 Tf 0.667 0 Td (\024)Tj /T1_4 1 Tf 1.056 0 Td (2)Tj /T1_7 1 Tf 6.9738 0 0 6.9738 472.4724 538.7397 Tm (\000)Tj /T1_8 1 Tf (52)Tj /T1_4 1 Tf 9.9626 0 0 9.9626 487.1397 535.1243 Tm (\))Tj /T1_6 1 Tf 0.639 0 Td (^)Tj /T1_10 1 Tf -16.781 -1.2 Td (double)Tj ET q 1 0 0 1 358.3009186 523.1690979 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_10 1 Tf 9.9626 0 0 9.9626 361.2897 523.1691 Tm (total)Tj ET q 1 0 0 1 388.0392151 523.1690979 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_10 1 Tf 9.9626 0 0 9.9626 391.028 523.1691 Tm (error)Tj /T1_4 1 Tf (\()Tj /T1_3 1 Tf (y)Tj /T1_8 1 Tf 6.9738 0 0 6.9738 425.9386 521.6747 Tm (1)Tj /T1_4 1 Tf 9.9626 0 0 9.9626 430.408 523.1691 Tm (\))Tj /T1_6 1 Tf 0.667 0 Td (\024)Tj /T1_10 1 Tf -9.114 -1.2 Td (double)Tj ET q 1 0 0 1 378.2262115 511.2140045 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_10 1 Tf 9.9626 0 0 9.9626 381.215 511.214 Tm (total)Tj ET q 1 0 0 1 407.9644165 511.2140045 cm 0 G 0.398 w 10 M 0 j 0 J []0 d 0 0.199 m 2.989 0.199 l S Q BT /T1_10 1 Tf 9.9626 0 0 9.9626 410.9533 511.214 Tm (error)Tj /T1_4 1 Tf (\()Tj /T1_3 1 Tf (x)Tj /T1_4 1 Tf 3.585 0 Td [(\))-222(+)-222(2)]TJ /T1_7 1 Tf 6.9738 0 0 6.9738 467.7055 514.8293 Tm (\000)Tj /T1_8 1 Tf (51)Tj /T1_1 1 Tf 9.9626 0 0 9.9626 317.502 491.8625 Tm [(This)-367(has)-367(not)-366(yet)-367(been)-367(pro)15(v)15(ed)-367(in)-367(Coq.)-660(Indeed,)-396(we)-367(do)-367(not)]TJ T* [(w)10(ant)-323(to)-324(perform)-323(an)-323(interacti)25(v)15(e)-324(proof)-323(b)20(ut)-324(we)-323(rather)-323(plan)-324(to)]TJ T* [(generate)-201(a)-202(proof)-201(automatically)-202(using)-201(the)-201(tool)-202(Gappa)-201([8];)-218(this)]TJ 0 -1.2 TD [(is)-250(discussed)-250(in)-250(the)-250(ne)15(xt)-250(section.)]TJ 1.2 -1.2 Td [(Note)-250(that)-251(we)-250(choose)-251(on)-250(this)-250(e)15(xample)-251(an)-250(annotation)-251(style)]TJ -1.2 -1.2 Td [(where)-334(the)-335(function)]TJ /T1_2 1 Tf 8.001 0 Td [(r)37(equir)37(es)]TJ /T1_1 1 Tf 3.593 0 Td (that)Tj /T1_6 1 Tf 1.834 0 Td (j)Tj /T1_3 1 Tf (x)Tj /T1_6 1 Tf 0.849 0 Td [(j)-434(\024)]TJ /T1_4 1 Tf 1.923 0 Td (2)Tj /T1_7 1 Tf 6.9738 0 0 6.9738 483.8908 435.7021 Tm (\000)Tj /T1_8 1 Tf (3)Tj /T1_1 1 Tf 9.9626 0 0 9.9626 494.5869 432.0867 Tm [(,)-355(which)-335(means)]TJ -17.775 -1.2 Td [(that)-224(a)-224(call)]TJ /T1_5 1 Tf 4.06 0 Td (my_exp\(1\))Tj /T1_1 1 Tf 5.624 0 Td [(w)10(ould)-224(generate)-224(the)-224(unpro)15(v)25(able)-224(v)15(er)20(-)]TJ -9.684 -1.2 Td [(i\002cation)-253(condition)]TJ /T1_4 1 Tf 7.563 0 Td (1)Tj /T1_6 1 Tf 0.784 0 Td (\024)Tj /T1_4 1 Tf 1.062 0 Td (2)Tj /T1_7 1 Tf 6.9738 0 0 6.9738 416.2177 411.7917 Tm (\000)Tj /T1_8 1 Tf (3)Tj /T1_1 1 Tf 9.9626 0 0 9.9626 426.9137 408.1764 Tm [(.)-320(T)80(o)-254(be)-253(able)-253(to)-254(call)-253(this)-253(function)]TJ -10.982 -1.2 Td [(on)-203(big)-204(i)1(nputs)-204(\(b)20(ut)-203(with)-203(no)-203(guarantee)-204(on)-203(the)-203(output\))-203(we)-204(could)]TJ 0 -1.2 TD [(adopt)-263(a)-263(more)-264(liberal)-263(speci\002cation)-263(with)-263(no)-263(precondition)-264(and)]TJ 0 -1.2 TD [(a)-224(postcondition)-225(of)-224(the)-225(shape)]TJ /T1_6 1 Tf 11.343 0 Td (j)Tj /T1_3 1 Tf (x)Tj /T1_6 1 Tf 0.849 0 Td [(j)-278(\024)]TJ /T1_4 1 Tf 1.611 0 Td (2)Tj /T1_7 1 Tf 6.9738 0 0 6.9738 460.002 375.9262 Tm (\000)Tj /T1_8 1 Tf (3)Tj /T1_6 1 Tf 9.9626 0 0 9.9626 475.7012 372.3109 Tm (\))Tj /T1_3 1 Tf 1.278 0 Td [(:)-166(:)-167(:)]TJ /T1_1 1 Tf 1.333 0 Td [(.)-301(This)-225(is)-224(sim-)]TJ -18.49 -1.2 Td [(ilar)-381(to)-382(the)-381(usual)-381(choice)-382(of)-381(defensi)25(v)15(e)-381(programming)-382(v)15(ersus)]TJ 0 -1.2 TD [(programming)-250(with)-250(assumptions.)]TJ /T1_9 1 Tf 11.9552 0 0 11.9552 317.502 321.3005 Tm [(5)-1000(Conclusions)-250(and)-250(perspecti)10(v)10(es)]TJ /T1_1 1 Tf 9.9626 0 0 9.9626 329.4571 296.193 Tm [(W)80(e)-336(ha)20(v)15(e)-336(presented)-336(a)-336(formal)-337(v)15(eri\002cat)1(ion)-337(frame)25(w)10(ork)-336(for)]TJ -1.2 -1.2 Td [(\003oating-point)-248(programs.)-310(From)-248(C)-248(programs)-248(annotated)-248(at)-249(the)]TJ T* [(source)-381(code)-381(le)25(v)15(el,)-413(we)-381(get)-380(v)15(eri\002cation)-381(conditions)-381(that)-381(can)]TJ 0 -1.2 TD [(be)-253(manually)-254(dischar)18(ged)-253(using)-254(the)-253(Coq)-254(proof)-253(assistant.)-321(This)]TJ 0 -1.2 TD [(w)10(ork)-260(e)15(xtends)-261(the)-260(e)15(xisting)-261(tool)-260(for)-261(the)-260(v)15(eri\002cation)-261(of)-260(C)-261(pro-)]TJ T* [(grams)-326(Caduceus)-326([15])-325(with)-326(a)-326(ne)25(w)-326(set)-325(of)-326(annotations)-326(to)-326(e)15(x-)]TJ T* [(press)-308(properties)-308(of)-308(\003oating-point)-307(programs.)-484(On)-308(the)-308(pro)15(v)15(er)]TJ T* [(side,)-410(it)-379(is)-378(based)-378(on)-378(a)-379(e)15(xisting)-378(formalization)-378(of)-378(the)-379(IEEE-)]TJ 0 -1.2 TD [(754)-294(standard)-293([7].)-442(This)-293(v)14(eri)1(\002cation)-294(methodology)-294(is)-294(already)]TJ T* [(implemented)-206(and)-206(has)-206(been)-206(successfully)-206(used)-206(on)-206(se)25(v)15(eral)-206(pro-)]TJ T* [(grams)-250(\(which)-250(are)-250(quite)-250(short)-250(b)20(ut)-250(require)-250(comple)15(x)-250(proofs\).)]TJ 1.2 -1.2 Td [(Our)-450(main)-449(contrib)20(ution)-450(is)-450(a)-449(speci\002cation)-450(language)-450(for)]TJ -1.2 -1.2 Td [(\003oating-point)-378(programs.)-696(Such)-378(a)-378(speci\002cation)-379(is)-378(indeed)-379(a)]TJ T* [(decisi)25(v)15(e)-372(k)10(e)15(y)-372(to)-372(the)-371(security)-372(of)-372(numerical)-372(programs:)-554(e)25(v)15(en)]TJ 0 -1.2 TD [(if)-278(the)-278(annotations)-278(are)-278(not)-278(formally)-278(pro)15(v)15(ed,)-285(the)-278(mere)-278(f)10(act)-278(of)]TJ 0 -1.2 TD [(precisely)-286(specifying)-287(what)-286(should)-287(do)-286(each)-287(function,)-295(what)-287(is)]TJ T* [(its)-358(error)-358(bound,)-385(etc.,)-385(is)-358(a)-358(huge)-359(s)1(tep)-359(to)25(w)10(ards)-358(program)-358(cor)20(-)]TJ T* [(rectness.)-724(Additionally)65(,)-423(we)-388(pro)15(vide)-388(a)-388(w)10(ay)-388(to)-388(perform)-388(the)]TJ T* [(full)-230(formal)-229(proof)-230(using)-229(the)-230(Coq)-229(proof)-230(assistant,)-234(and)-229(an)-230(open)]TJ ET Q q 1 0 0 1 20 57.5999908 cm /GS1 gs /Fm0 Do Q q 1 0 0 1 120 -11 cm /GS1 gs /Fm1 Do Q q 1 0 0 1 525 3 cm /GS1 gs /Fm2 Do Q endstream endobj 59 0 obj<>stream x 0E<$vS[5)jV g9.ܚI%c)HC [!8N'э>UA 8MCxJD6 endstream endobj 60 0 obj<> endobj 61 0 obj<>stream x+|endstream endobj 62 0 obj<>stream q 40 67 m 572 67 l 572 720 l 40 720 l W n 0 g 1 i /GS0 gs BT /T1_0 1 Tf 0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 9.9626 0 0 9.9626 58.7519 710.0373 Tm [(frame)25(w)10(ork)-290(which)-290(is)-290(amenable)-290(to)-290(other)-290(\003oating-point)-290(mod-)]TJ 0 -1.2 TD [(els)-250(and/or)-250(other)-250(pro)15(v)15(ers.)]TJ 1.2 -1.287 Td [(W)80(e)-297(are)-298(a)15(w)10(are)-297(that)-298(the)-297(set)-298(of)-297(e)15(xamples)-298(presented)-297(here)-298(is)]TJ -1.2 -1.2 Td [(not)-311(lar)18(ge)-311(enough)-310(to)-311(con)40(vince)-311(that)-311(our)-310(set)-311(of)-311(annotations)-311(is)]TJ 0 -1.2 TD [(adapted)-392(to)-393(all)-392(needs.)-737(Ne)25(v)15(ertheless,)-428(our)-392(annotations)-393(ha)20(v)15(e)]TJ T* [(been)-381(de)25(vised)-382(to)-381(be)-382(appli)1(cable)-382(to)-381(as)-382(man)15(y)-381(cases)-381(as)-382(possi-)]TJ T* [(ble.)-882(The)15(y)-441(will)-440(be)-441(used)-440(in)-441(the)-441(CerP)92(AN)-440(project)-441(\()]TJ /T1_1 1 Tf (http:)Tj 0 -1.2 TD [(//www-)-50(lipn.univ-)-50(paris13.fr/CerPAN/)]TJ /T1_0 1 Tf [(\))-326(whose)]TJ T* [(aim)-293(is)-293(to)-293(pro)15(v)15(e)-292(the)-293(soundness)-293(of)-293(programs)-293(from)-293(numerical)]TJ T* [(analysis)-203(and)-202(especially)-203(a)-203(program)-202(computing)-203(the)-203(deri)25(v)25(ati)25(v)15(es)]TJ T* [(of)-250(a)-250(multi)25(v)25(ariable)-250(function.)]TJ 1.2 -1.287 Td [(A)-229(limitation)-229(of)-229(our)-229(current)-229(w)10(ork)-229(is)-229(that)-229(it)-229(can)-230(only)-229(be)-229(ap-)]TJ -1.2 -1.2 Td [(plied)-241(to)-241(programs)-241(using)-241(basic)-241(operations)-241(\(addition,)-243(subtrac-)]TJ T* [(tion,)-400(multiplication,)-400(di)25(vision)-369(and)-370(square)-370(root\).)-670(Man)15(y)-370(nu-)]TJ T* [(merical)-209(programs)-208(hea)20(vily)-209(rely)-209(on)-208(elementary)-209(functions)-209(such)]TJ T* [(as)-247(e)15(xponential)-247(or)-248(sine/cosine.)-309(These)-247(functions)-247(are)-247(harder)-248(to)]TJ T* [(formalize)-389(than)-390(di)25(vis)1(ion)-390(as)-389(the)15(y)-389(are)-390(not)-389(standardized.)-728(In-)]TJ T* [(deed,)-366(one)-342(may)-342(get)-343(dif)25(ferent)-342(results)-342(depending)-343(on)-342(the)-343(pro-)]TJ T* [(cessor)-345(used)-346(thus)-345(one)-346(has)-345(to)-345(turn)-346(the)-345(processor')55(s)-346(reference)]TJ T* [(manual)-288(into)-288(formal)-288(statements)-288(\(e.g.)-424(\223the)-288(maximal)-288(error)-288(on)]TJ T* [(the)-234(e)15(xponential)-234(is)]TJ /T1_2 1 Tf 7.242 0 Td (0)Tj /T1_3 1 Tf (:)Tj /T1_2 1 Tf (50)Tj /T1_4 1 Tf 1.944 0 Td [(\001)-166(\001)-167(\001)]TJ /T1_2 1 Tf 1.333 0 Td (01)Tj /T1_0 1 Tf 1.234 0 Td [(ulp\224\).)-305(Ev)15(en)-234(if)-233(such)-234(formaliza-)]TJ -11.753 -1.2 Td [(tions)-341(are)-340(theoretically)-341(feasible,)-363(this)-341(w)10(ould)-341(require)-340(a)-341(lot)-341(of)]TJ T* [(w)10(ork)-250(to)-250(be)-250(repeated)-250(for)-250(each)-250(platform.)]TJ 1.2 -1.287 Td [(Another)-407(limitation)-407(is)-406(the)-407(assumption)-407(that)-407(each)-407(double)]TJ -1.2 -1.2 Td [(precision)-521(computation)-521(is)-521(performed)-521(on)-521(e)15(xactly)-522(64)-521(bits,)]TJ T* [(which)-332(is)-332(not)-333(al)10(w)10(ays)-332(the)-332(case)-332(on)-332(recent)-333(Intel)-332(architectures,)]TJ T* [(where)-247(it)-247(can)-247(be)-247(computed)-247(using)-247(80)-248(bits.)-309(This)-247(feature)-247(w)10(ould)]TJ T* [(be)-320(v)15(ery)-319(hard)-320(to)-319(formalize,)-337(as)-320(which)-320(computations)-319(are)-320(per)20(-)]TJ 0 -1.2 TD [(formed)-250(on)-250(64)-250(or)-250(80)-250(bits)-250(can)-250(not)-250(be)-250(predicted.)]TJ 1.2 -1.287 Td [(Another)-457(perspecti)25(v)15(e)-457(is)-457(the)-457(use)-457(of)-457(the)-458(Gappa)-457(tool)-457([8])]TJ -1.2 -1.2 Td [(which)-434(automatically)-435(generates)-434(formal)-435(proofs)-434(of)-435(\003oating-)]TJ T* [(point)-415(properties)-415(using)-415(interv)25(al)-415(arithmetic.)-806(Gappa)-415(cannot)]TJ T* [(solv)15(e)-381(all)-382(the)-381(v)15(eri\002cation)-382(conditions)-381(b)20(ut)-381(could)-382(be)-381(of)-382(great)]TJ T* [(help)-421(in)-421(formally)-421(pro)15(ving)-421(error)-421(bounds)-421(or)-421(the)-421(absence)-421(of)]TJ T* [(o)15(v)15(er\003o)25(ws.)-699(F)15(or)-380(instance,)-412(Gappa)-379(w)10(ould)-380(automatically)-380(dis-)]TJ T* [(char)18(ge)-375(the)-374(v)14(eri)1(\002cation)-375(conditions)-375(of)-375(e)15(xample)-374(4.3.)-685(More-)]TJ T* [(o)15(v)15(er)40(,)-213(Gappa)-205(b)20(uilds)-204(Coq)-204(proofs)-204(that)-204(can)-204(be)-205(check)10(ed)-204(automat-)]TJ T* [(ically)65(,)-242(making)-240(the)-240(combination)-240(of)-241(interac)1(ti)25(v)15(e)-241(and)-240(automatic)]TJ T* [(proofs)-250(trustw)10(orth)5(y)65(.)]TJ /T1_5 1 Tf 0 -3.142 TD [(Ackno)10(wledgements.)]TJ /T1_0 1 Tf 9.517 0 Td [(The)-540(authors)-540(wi)1(sh)-540(to)-540(thank)-540(Marc)]TJ -9.517 -1.2 Td [(Daumas)-256(and)-256(Guillaume)-255(Melquiond)-256(for)-256(constructi)25(v)15(e)-256(discus-)]TJ 0 -1.2 TD [(sions)-346(about)-346(the)-346(possible)-346(type)-346(of)-346(annotations.)-599(The)-346(authors)]TJ T* [(are)-298(also)-298(grateful)-299(to)-298(Micaela)-298(Mayero)-298(and)-299(Franc)389(\270)-56(ois)-298(Cl)]TJ 21.325 0.005 Td (\264)Tj -0.056 -0.005 Td (ement)Tj -21.27 -1.2 Td [(for)-250(careful)-250(readings)-250(of)-250(this)-250(paper)55(.)]TJ /T1_5 1 Tf 11.9552 0 0 11.9552 58.7519 142.6322 Tm [(Refer)18(ences)]TJ /T1_0 1 Tf 8.9664 0 0 8.9664 64.8948 115.1174 Tm [([1])-556(The)-250(Coq)-250(Proof)-250(Ass)1(istant.)]TJ /T1_1 1 Tf 12.192 0 Td (http://coq.inria.fr/)Tj /T1_0 1 Tf (.)Tj -12.192 -1.361 Td [([2])-556(G.)-233(Barrett.)-324(F)15(ormal)-233(methods)-234(applied)-233(to)-234(a)-233(\003oating-point)-233(num-)]TJ 1.722 -1.222 Td [(ber)-371(system.)]TJ /T1_6 1 Tf 5.425 0 Td [(IEEE)-371(T)55(r)15(ansactions)-372(on)-371(Softwar)37(e)-371(Engineering)]TJ /T1_0 1 Tf (,)Tj -5.425 -1.222 Td [(15\(5\):611\226621,)-250(1989.)]TJ 27.136 70.155 Td [([3])-556(S.)-208(Boldo.)-269(Bridging)-208(the)-209(g)5(ap)-208(between)-208(formal)-208(speci\002cation)-208(and)]TJ 1.722 -1.222 Td [(bit-le)25(v)15(el)-211(\003oating-point)-212(arithmetic.)-276(In)-212(C.)-211(Frougn)15(y)65(,)-219(V)129(.)-212(Brattka,)]TJ 0 -1.222 TD [(and)-405(N.)-405(Mller)40(,)-444(edi)1(tors,)]TJ /T1_6 1 Tf 9.517 0 Td [(Pr)45(oceedings)-405(of)-405(the)-405(6th)-405(Confer)37(ence)]TJ -9.517 -1.222 Td [(on)-456(Real)-456(Number)10(s)-456(and)-456(Computer)10(s)]TJ /T1_0 1 Tf [(,)-508(pages)-456(22\22636,)-507(Schloss)]TJ T* [(Dagstuhl,)-250(German)15(y)65(,)-250(2004.)]TJ -1.722 -1.257 Td [([4])-556(S.)-302(Boldo)-302(and)-303(M.)-302(Daumas.)-528(A)-302(simple)-302(test)-303(qualifying)-302(the)-302(ac-)]TJ 1.722 -1.222 Td [(curac)15(y)-355(of)-354(horner')55(s)-355(rule)-354(for)-355(polynomials.)]TJ /T1_6 1 Tf 17.143 0 Td [(Numerical)-355(Al)1(go-)]TJ -17.143 -1.222 Td (rithms)Tj /T1_0 1 Tf [(,)-250(37\(1-4\):45\22660,)-250(2004.)]TJ -1.722 -1.257 Td [([5])-556(S.)-415(Boldo)-415(and)-415(C)1(.)-415(Mu)]TJ 10.466 0.005 Td (\230)Tj -0.084 -0.005 Td [(noz.)-888(Pro)15(v)25(ably)-415(f)10(aithful)-415(e)25(v)25(aluation)-415(of)]TJ -8.661 -1.222 Td [(polynomials.)-427(In)]TJ /T1_6 1 Tf 6.726 0 Td [(Pr)45(oceedings)-271(of)-271(the)-271(21st)-271(Annual)-271(A)30(CM)-271(Sym-)]TJ -6.726 -1.222 Td [(posium)-211(on)-210(Applied)-211(Computing)]TJ /T1_0 1 Tf [(,)-218(v)20(olume)-211(2,)-219(page)1(s)-211(1328\2261332,)]TJ T* [(Dijon,)-250(France,)-250(Apr)55(.)-250(2006.)]TJ -1.722 -1.257 Td [([6])-556(V)129(.)-199(A.)-200(Carre)]TJ 6.24 0.005 Td (\230)Tj -0.084 -0.005 Td [(no)-199(and)-200(P)111(.)-199(S.)-200(Miner)55(.)-250(Speci\002cation)-200(of)-199(the)-200(IEEE-854)]TJ -4.435 -1.222 Td [(\003oating-point)-302(standard)-301(in)-302(HOL)-302(and)-302(PVS.)-525(In)]TJ /T1_6 1 Tf 18.363 0 Td [(1995)-302(Interna-)]TJ -18.363 -1.222 Td [(tional)-350(W)92(orkshop)-351(on)-350(Higher)-350(Or)37(der)-350(Lo)10(gic)-351(Theor)37(em)-350(Pr)45(o)10(ving)]TJ T* [(and)-243(its)-243(Applications)]TJ /T1_0 1 Tf [(,)-244(Aspen)-243(Gro)15(v)15(e,)-245(Utah,)-244(1995.)-345(supplemen-)]TJ T* [(tal)-250(proceedings.)]TJ -1.722 -1.257 Td [([7])-556(M.)-303(Daumas,)-317(L.)-304(Ri)1(deau,)-317(and)-304(L.)-303(Th)]TJ 15.651 0.005 Td (\264)Tj -0.056 -0.005 Td [(ery)65(.)-531(A)-304(generic)-303(library)-304(of)]TJ -13.874 -1.222 Td [(\003oating-point)-288(numbers)-287(and)-288(its)-288(application)-287(to)-288(e)15(xact)-288(comput-)]TJ T* [(ing.)-502(In)]TJ /T1_6 1 Tf 3.157 0 Td [(14th)-294(International)-294(Confer)37(ence)-295(on)-294(Theor)37(em)-294(Pr)45(o)10(ving)]TJ -3.157 -1.222 Td [(in)-340(Higher)-339(Or)37(der)-340(Lo)10(gics)]TJ /T1_0 1 Tf [(,)-362(pages)-340(169\226184,)-362(Edinb)20(ur)18(gh,)-362(Scot-)]TJ T* [(land,)-250(2001.)]TJ -1.722 -1.257 Td [([8])-556(F)80(.)-270(de)-271(Dinechin,)-275(C.)-271(Lauter)40(,)-275(and)-271(G.)-270(Melquiond.)-426(Assisted)-270(v)15(er)20(-)]TJ 1.722 -1.222 Td [(i\002cation)-285(of)-286(elementary)-285(functions)-286(using)-285(Gappa.)-473(In)]TJ /T1_6 1 Tf 20.322 0 Td [(Pr)45(oceed-)]TJ -20.322 -1.222 Td [(ings)-396(of)-396(the)-396(2006)-395(A)29(C)1(M)-396(symposium)-396(on)-396(Applied)-396(computing)]TJ /T1_0 1 Tf (,)Tj T* [(pages)-250(1318\2261322,)-250(2006.)]TJ -1.722 -1.257 Td [([9])-556(J.-C.)-322(Filli)]TJ 5.657 0.005 Td (\210)Tj -0.056 -0.005 Td [(atre)-323(and)-323(C.)-322(March)]TJ 7.494 0.005 Td (\264)Tj -0.055 -0.005 Td [(e.)-593(Multi-Pro)15(v)15(er)-323(V)111(eri\002cation)-323(of)]TJ -11.318 -1.222 Td [(C)-461(Programs.)-1034(In)]TJ /T1_6 1 Tf 7.539 0 Td [(Sixth)-461(International)-461(Confer)37(ence)-461(on)-460(F)105(or)20(-)]TJ -7.539 -1.222 Td [(mal)-356(Engineering)-356(Methods)-356(\(ICFEM\))]TJ /T1_0 1 Tf [(,)-356(v)20(olume)-356(3308)-356(of)]TJ /T1_6 1 Tf 22.165 0 Td (Lec-)Tj -22.165 -1.222 Td [(tur)37(e)-263(Notes)-264(in)-263(Computer)-263(Science)]TJ /T1_0 1 Tf [(,)-267(pages)-263(15\22629,)-267(Seattle,)-266(No)15(v)65(.)]TJ T* [(2004.)-250(Springer)20(-V)111(erlag.)]TJ -2.222 -1.257 Td [([10])-556(J.)-364(Harrison.)-728(Floating)-365(point)-365(v)15(eri\002cation)-365(in)-365(HOL)-365(light:)-539(the)]TJ 2.222 -1.222 Td [(e)15(xponential)-337(function.)-640(T)70(echnical)-337(Report)-337(428,)-359(Uni)25(v)15(ersity)-338(of)]TJ T* [(Cambridge)-250(Computer)-250(Laboratory)65(,)-250(1997.)]TJ -2.222 -1.257 Td [([11])-556(J.)-371(Harr)1(ison.)-748(F)15(ormal)-371(v)15(eri\002cation)-370(of)-371(\003oating)-371(point)-371(trigono-)]TJ 2.222 -1.222 Td [(metric)-264(functions.)-405(In)-264(W)92(.)-265(A.)-264(Hunt)-264(and)-264(S.)-264(D.)-264(Johnson,)-268(editors,)]TJ /T1_6 1 Tf T* [(Pr)45(oceedings)-320(of)-321(the)-320(Thir)37(d)-321(International)-320(Confer)37(ence)-320(on)-321(F)105(or)20(-)]TJ T* [(mal)-404(Methods)-404(in)-405(Computer)20(-Aided)-404(Design)]TJ /T1_0 1 Tf [(,)-443(pages)-404(217\226233,)]TJ T* [(Austin,)-250(T)70(e)15(xas,)-250(2000.)]TJ -2.222 -1.257 Td [([12])-556(C.)-272(A.)-273(R.)-272(Hoare.)-433(An)-272(axiomatic)-273(basis)-272(for)-273(computer)-272(program-)]TJ 2.222 -1.222 Td (ming.)Tj /T1_6 1 Tf 2.987 0 Td [(Communications)-350(of)-351(the)-350(A)30(CM)]TJ /T1_0 1 Tf [(,)-350(12\(10\):576\226580,583,)]TJ -2.987 -1.222 Td (1969.)Tj -2.222 -1.257 Td [([13])-556(IEEE)-296(standard)-296(for)-296(\003oating-point)-296(arithmetic.)-508(Floating-Point)]TJ 2.222 -1.222 Td [(W)80(orking)-338(Group)-337(of)-338(the)-338(Microprocessor)-337(Standards)-338(Subcom-)]TJ 0 -1.222 TD [(mittee)-347(of)-347(the)-347(Standards)-347(Committee)-348(of)-347(the)-347(IEEE)-347(Computer)]TJ T* [(Society)65(,)-250(2004.)-360(W)80(ork)-250(in)-250(progress.)]TJ -2.222 -1.257 Td [([14])-556(C.)-331(Jacobi)1(.)]TJ /T1_6 1 Tf 6.894 0 Td [(F)105(ormal)-331(V)111(eri\002cation)-331(of)-331(a)-331(Fully)-331(IEEE)-331(Compliant)]TJ -4.672 -1.222 Td [(Floating)-255(P)80(oint)-256(Unit)]TJ /T1_0 1 Tf [(.)-378(PhD)-255(thesis,)-257(Computer)-255(Science)-256(Depart-)]TJ T* [(ment,)-250(Saarland)-250(Uni)25(v)15(ersity)65(,)-250(Saarbruck)10(en,)-250(German)15(y)65(,)-250(2002.)]TJ -2.222 -1.257 Td [([15])-556(Jean-Chri)1(stophe)-353(Filli)]TJ 10.796 0.005 Td (\210)Tj -0.056 -0.005 Td [(atre,)-378(Claude)-353(March)]TJ 7.978 0.005 Td (\264)Tj -0.055 -0.005 Td [(e)-353(and)-352(Thierry)-353(Hu-)]TJ -16.442 -1.222 Td [(bert.)-452(The)-279(Caduceus)-279(tool)-279(for)-279(the)-278(v)15(eri\002cation)-279(of)-279(C)-279(programs.)]TJ /T1_1 1 Tf 0 -1.222 TD (http://caduceus.lri.fr/)Tj /T1_0 1 Tf (.)Tj -2.222 -1.257 Td [([16])-556(L.)-273(Lamport)-273(and)-273(P)111(.)-274(M.)-273(Melliar)20(-Smith.)-434(Synchronizing)-273(clocks)]TJ 2.222 -1.222 Td [(in)-266(the)-266(presence)-266(of)-265(f)10(aults.)]TJ /T1_6 1 Tf 10.267 0 Td [(J)25(ournal)-266(of)-266(the)-266(A)30(CM)]TJ /T1_0 1 Tf [(,)-266(32\(1\):52\22678,)]TJ -10.267 -1.222 Td (1985.)Tj -2.222 -1.257 Td [([17])-556(G.)-209(T)74(.)-209(Lea)20(v)15(ens,)-217(A.)-209(L.)-209(Bak)10(er)40(,)-217(and)-209(C.)-209(Ruby)65(.)-271(Preliminary)-209(design)]TJ 2.222 -1.222 Td [(of)-386(JML:)-385(A)-386(beha)20(vioral)-386(interf)10(ace)-385(speci\002cation)-386(language)-386(for)]TJ T* [(Ja)20(v)25(a.)-360(T)70(echnical)-250(Report)-250(98-06i,)-250(Io)25(w)10(a)-250(State)-250(Uni)25(v)15(ersity)65(,)-250(2000.)]TJ ET Q q 1 0 0 1 20 57.5999908 cm /GS1 gs /Fm0 Do Q q 1 0 0 1 120 -11 cm /GS1 gs /Fm1 Do Q q 1 0 0 1 525 3 cm /GS1 gs /Fm2 Do Q endstream endobj 63 0 obj<>stream x 0E<$vS[5)jV g9.ܚI%c)HC [!8N'э>UA 8MCxJD6 endstream endobj 64 0 obj<>stream x+|endstream endobj 65 0 obj<>stream q 40 67 m 572 67 l 572 720 l 40 720 l W n 0 g 1 i /GS0 gs BT /T1_0 1 Tf 0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 8.9664 0 0 8.9664 60.4117 710.0373 Tm [([18])-556(M.)-239(A.)-239(Malcolm.)-337(Algorithms)-239(to)-240(re)26(v)14(e)1(al)-240(properties)-239(of)-239(\003oating-)]TJ 2.222 -1.222 Td [(point)-250(arithmetic.)]TJ /T1_1 1 Tf 6.971 0 Td [(Commun.)-250(A)30(CM)]TJ /T1_0 1 Tf [(,)-250(15\(11\):949\226951,)-250(1972.)]TJ -9.192 -1.19 Td [([19])-556(J.)-248(O'Leary)65(,)-249(X.)-249(Zhao,)-249(R.)-248(Gerth,)-249(and)-249(C.-J.)-249(H.)-248(Se)15(ger)55(.)-357(F)15(ormally)]TJ 2.222 -1.222 Td [(v)15(erifying)-240(IEEE)-240(compliance)-239(of)-240(\003oating)-240(point)-240(hardw)10(are.)]TJ /T1_1 1 Tf 22.109 0 Td (Intel)Tj -22.109 -1.222 Td [(T)92(ec)15(hnolo)10(gy)-250(J)25(ournal)]TJ /T1_0 1 Tf [(,)-250(3\(1\),)-250(1999.)]TJ -2.222 -1.19 Td [([20])-556(J.)-346(Rushby)-347(and)-347(F)80(.)-347(v)20(on)-347(Henk)10(e.)-670(F)15(ormal)-347(v)15(eri\002cation)-346(of)-347(algo-)]TJ 2.222 -1.222 Td [(rithms)-202(for)-201(critical)-202(systems.)-255(In)]TJ /T1_1 1 Tf 11.81 0 Td [(Pr)45(oceedings)-202(of)-201(the)-202(Confer)37(ence)]TJ -11.81 -1.222 Td [(on)-247(Softwar)37(e)-247(for)-247(Critical)-247(Systems)]TJ /T1_0 1 Tf [(,)-248(pages)-247(1\22615,)-247(Ne)25(w)-248(Orleans,)]TJ 0 -1.222 TD [(Louisiana,)-250(1991.)]TJ -2.222 -1.19 Td [([21])-556(D.)-360(M.)-360(Russinof)25(f)1(.)-713(A)-359(mechanically)-360(check)10(ed)-360(proof)-360(of)-360(IEEE)]TJ 2.222 -1.222 Td [(compliance)-507(of)-507(the)-506(\003oating)-507(point)-507(multiplication,)-571(di)25(vision)]TJ T* [(and)-576(square)-575(root)-576(algorithms)-575(of)-576(the)-575(AMD-K7)-576(processor)55(.)]TJ /T1_1 1 Tf T* [(LMS)-253(J)25(ournal)-254(of)-253(Computation)-254(and)-253(Mathematics)]TJ /T1_0 1 Tf [(,)-254(1:148\226200,)]TJ T* (1998.)Tj -2.222 -1.19 Td [([22])-556(P)111(.)-298(H.)-299(Sterbenz.)]TJ /T1_1 1 Tf 8.751 0 Td [(Floating)-299(point)-298(computation)]TJ /T1_0 1 Tf [(.)-516(Prentice)-299(Hall,)]TJ -6.53 -1.222 Td (1974.)Tj -2.222 -1.19 Td [([23])-556(D.)-276(Ste)25(v)15(enson)-276(et)-276(al.)-443(A)-276(proposed)-276(standard)-276(for)-276(binary)-276(\003oating)]TJ 2.222 -1.222 Td [(point)-250(arithmetic.)]TJ /T1_1 1 Tf 6.971 0 Td [(IEEE)-250(Computer)]TJ /T1_0 1 Tf [(,)-250(14\(3\):51\22662,)-250(1981.)]TJ -9.192 -1.19 Td [([24])-556(D.)-322(Ste)25(v)15(enson)-323(et)-323(al.)-593(An)-323(American)-323(national)-323(standard:)-455(IEEE)]TJ 2.222 -1.222 Td [(standard)-422(for)-423(binary)-422(\003oating)-423(point)-422(arithmetic.)]TJ /T1_1 1 Tf 19.55 0 Td [(A)30(CM)-422(SIG-)]TJ -19.55 -1.222 Td [(PLAN)-250(Notices)]TJ /T1_0 1 Tf [(,)-250(22\(2\):9\22625,)-250(1987.)]TJ /T1_2 1 Tf 11.9552 0 0 11.9552 58.7519 464.3956 Tm [(A)25(ppendix:)-310(Wh)15(y)-250(Theory)]TJ /T1_0 1 Tf 9.9626 0 0 9.9626 70.7071 438.1813 Tm [(W)80(e)-333(gi)25(v)15(e)-333(here)-332(a)-333(small)-333(e)15(xcerpt)-333(of)-332(the)-333(Wh)5(y)-333(theory)-333(corre-)]TJ -1.2 -1.2 Td [(sponding)-346(to)-346(the)-347(\003oating-point)-346(model)-346(presented)-346(in)-346(this)-347(pa-)]TJ 0 -1.2 TD [(per)55(.)-436(The)-292(k)10(e)15(yw)10(ord)]TJ /T1_3 1 Tf 7.511 0 Td (type)Tj /T1_0 1 Tf 2.692 0 Td [(introduces)-292(a)-292(ne)25(w)-292(datatype,)-302(which)]TJ -10.203 -1.2 Td [(is)-343(abstract)-344(and)-343(purely)-343(applicati)25(v)15(e)-344(\()]TJ /T1_3 1 Tf (real)Tj /T1_0 1 Tf 16.917 0 Td [(is)-343(the)-344(prede\002ned)]TJ -16.917 -1.2 Td [(type)-344(of)-345(real)-344(numbers\).)-593(The)-345(k)10(e)15(yw)10(ord)]TJ /T1_3 1 Tf 15.415 0 Td (logic)Tj /T1_0 1 Tf 3.344 0 Td [(introduces)-344(a)]TJ -18.759 -1.2 Td [(ne)25(w)-339(function)-339(symbol)-339(with)-340(its)-339(arity)65(.)-577(Finally)65(,)]TJ /T1_3 1 Tf 18.314 0 Td (parameter)Tj /T1_0 1 Tf -18.314 -1.2 Td [(declares)-237(a)-237(ne)25(w)-237(program)-237(function)-238(\(with)-237(no)-237(implementation\).)]TJ 0 -1.2 TD [(The)-203(syntax)-203(is)]TJ /T1_4 1 Tf 5.442 0 Td (x)Tj /T1_5 1 Tf 6.9738 0 0 6.9738 118.6669 353.0008 Tm (1)Tj /T1_6 1 Tf 9.9626 0 0 9.9626 125.9036 354.4952 Tm (:)Tj /T1_4 1 Tf 0.556 0 Td (\034)Tj /T1_5 1 Tf 6.9738 0 0 6.9738 135.7936 353.0008 Tm (1)Tj /T1_7 1 Tf 9.9626 0 0 9.9626 143.0303 354.4952 Tm [(!)-278(\001)-166(\001)-167(\001)-277(!)]TJ /T1_4 1 Tf 4 0 Td (x)Tj /T1_8 1 Tf 6.9738 0 0 6.9738 188.5745 353.0008 Tm (n)Tj /T1_6 1 Tf 9.9626 0 0 9.9626 196.7649 354.4952 Tm (:)Tj /T1_4 1 Tf 0.556 0 Td (\034)Tj /T1_8 1 Tf 6.9738 0 0 6.9738 206.6548 353.0008 Tm (n)Tj /T1_7 1 Tf 9.9626 0 0 9.9626 214.8451 354.4952 Tm [(!)-278(f)]TJ /T1_4 1 Tf (P)Tj /T1_7 1 Tf 2.559 0 Td (g)Tj /T1_4 1 Tf (\034)Tj /T1_7 1 Tf 1.05 0 Td (f)Tj /T1_4 1 Tf (Q)Tj /T1_7 1 Tf (g)Tj /T1_0 1 Tf 1.994 0 Td (where)Tj -21.271 -1.2 Td (the)Tj /T1_4 1 Tf 1.543 0 Td (x)Tj /T1_8 1 Tf 6.9738 0 0 6.9738 79.8207 341.0456 Tm (i)Tj /T1_0 1 Tf 9.9626 0 0 9.9626 83.1376 342.54 Tm [(s)-321(are)-322(the)-321(function)-321(parameters,)]TJ /T1_4 1 Tf 12.426 0 Td (P)Tj /T1_0 1 Tf 1.102 0 Td [(the)-321(precondition,)]TJ /T1_4 1 Tf 7.187 0 Td (\034)Tj /T1_0 1 Tf -23.163 -1.2 Td [(the)-250(type)-250(of)-250(the)-250(result)-250(and)]TJ /T1_4 1 Tf 10.165 0 Td (Q)Tj /T1_0 1 Tf 1.041 0 Td [(the)-250(postcondition.)]TJ /T1_3 1 Tf -11.206 -2.252 Td (\()Tj 0.6 -0.175 Td (*)Tj 1.2 0.175 Td [(rounding)-600(modes)]TJ 9 -0.175 Td (*)Tj 0.6 0.175 Td (\))Tj -11.4 -1.2 Td [(type)-600(mode)]TJ T* [(logic)-600(nearest_even,)-600(to_zero,)-600(up,)-600(down,)]TJ 3.6 -1.2 Td [(nearest_away)-600(:)-600(mode)]TJ -3.6 -2.4 Td (\()Tj 0.6 -0.175 Td (*)Tj 1.2 0.175 Td [(the)-600(type)-600(of)-600(single)-600(precision)-600(floats)]TJ 21.6 -0.175 Td (*)Tj 0.6 0.175 Td (\))Tj -24 -1.2 Td [(type)-600(single)]TJ 0 -2.4 TD (\()Tj 0.6 -0.175 Td (*)Tj 1.2 0.175 Td (operations)Tj 6.6 -0.175 Td (*)Tj 0.6 0.175 Td (\))Tj -9 -1.2 Td [(logic)-600(add_single)-600(:)]TJ 1.2 -1.2 Td [(mode,single,single)-600(->)-600(single)]TJ -1.2 -1.2 Td [(logic)-600(sub_single)-600(:)]TJ 1.2 -1.2 Td [(mode,single,single)-600(->)-600(single)]TJ -1.2 -1.2 Td (...)Tj 0 -2.4 TD (\()Tj 0.6 -0.175 Td (*)Tj 1.2 0.175 Td (coercions)Tj 6 -0.175 Td (*)Tj 0.6 0.175 Td (\))Tj -8.4 -1.2 Td [(logic)-600(s_to_r,)-600(s_to_exact,)-600(s_to_model)-600(:)]TJ 1.2 -1.2 Td [(single)-600(->)-600(real)]TJ -1.2 -1.2 Td [(logic)-600(r_to_s)-600(:)-600(mode,real)-600(->)-600(single)]TJ 25.972 61.94 Td (\()Tj 0.6 -0.175 Td (*)Tj 1.2 0.175 Td [(overflow)-600(checks)]TJ 9.6 -0.175 Td (*)Tj 0.6 0.175 Td (\))Tj -12 -2.4 Td [(logic)-600(max_single)-600(:)-600(real)]TJ T* [(parameter)-600(add_single_)-600(:)]TJ 1.2 -1.2 Td [(m:mode)-600(->)-600(x:single)-600(->)-600(y:single)-600(->)]TJ 0 -1.2 TD [({)-600(abs_real\(s_to_r\(add_single\(m,x,y\)\)\))]TJ 1.2 -1.2 Td [(<=)-600(max_single)-600(})]TJ -1.2 -1.2 Td (single)Tj T* [({)-600(result)-600(=)-600(add_single\(m,x,y\))-600(})]TJ -1.2 -1.2 Td (...)Tj ET Q q 1 0 0 1 20 57.5999908 cm /GS1 gs /Fm0 Do Q q 1 0 0 1 120 -11 cm /GS1 gs /Fm1 Do Q q 1 0 0 1 525 3 cm /GS1 gs /Fm2 Do Q endstream endobj 66 0 obj<>stream x 0E<$vS[5)jV g9.ܚI%c)HC [!8N'э>UA 8MCxJD6 endstream endobj 67 0 obj<>>>/FormType 1/Resources<>/ProcSet[/PDF/Text]>>/Matrix[1 0 0 1 0 0]/Subtype/Form/LastModified(D:20070518103956-07'00')/OC 81 0 R/Length 183/BBox[0 -37.6 206.032 -19.024]>>stream 0 g 0 i BT /T1_0 1 Tf 0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 8 0 0 8 0 -26.4 Tm (18th IEEE Symposium on Computer Arithmetic\(ARITH'07\))Tj 0 -1.15 TD (0-7695-2854-6/07 $20.00 \251 2007)Tj ET endstream endobj 68 0 obj<>stream 2007-04-03T16:06:50+02:00 TeX 2007-05-18T10:39:57-07:00 2007-05-18T10:39:57-07:00 This is pdfeTeX, Version 3.141592-1.21a-2.2 (Web2C 7.5.4) kpathsea version 3.5.4 pdfeTeX-1.21a application/pdf uuid:72e69d3b-0084-4e3a-90a0-aade9ab9cf79 uuid:19566385-83f0-4e7b-af92-4e4cddd5c264 endstream endobj 69 0 obj<>/Print<>/View<>/PageElement<>>>>> endobj 70 0 obj<> endobj 71 0 obj<> endobj 72 0 obj[556 556 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 333 250 0 0 500 500 500 500 500 0 0 0 0 333 0 0 0 0 0 0 722 0 722 0 667 611 0 0 389 0 0 0 0 0 0 611 0 722 0 667 0 722 1000 0 0 0 0 0 0 0 0 0 500 556 444 556 444 333 500 556 278 0 556 278 833 556 500 556 0 444 389 333 556 500 722 500 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500] endobj 73 0 obj<> endobj 74 0 obj<> endobj 75 0 obj[556 556 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 333 333 333 0 0 250 333 250 278 500 500 500 500 500 500 500 500 500 500 278 278 0 0 0 0 921 722 667 667 722 611 556 722 722 333 389 722 611 889 722 722 556 0 667 556 611 722 722 944 722 722 611 333 0 333 0 0 0 444 500 444 500 444 333 500 500 278 278 500 278 778 500 500 500 500 333 389 278 500 500 722 500 500 444 0 0 0 0 0 0 0 0 0 0 0 0 0 333 0 0 0 0 0 0 0 0 0 0 444 444 0 500 0 333 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 333 0 0 0 333] endobj 76 0 obj<> endobj 77 0 obj[500 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 333 333 0 0 250 333 250 0 500 500 500 0 500 500 500 0 0 500 0 0 0 0 0 0 0 611 0 667 722 611 611 722 722 333 444 0 556 833 667 722 611 0 611 500 556 722 611 833 0 0 0 0 0 0 0 0 0 500 500 444 500 444 278 500 500 278 0 444 278 722 500 500 500 500 389 389 278 500 444 667 444 444 389] endobj 78 0 obj<> endobj 79 0 obj[600 0 0 0 0 600 0 600 600 600 600 600 600 600 600 600 600 600 600 0 600 0 0 0 0 600 600 600 600 600 0 600 600 600 600 600 0 0 0 0 600 0 0 0 0 600 0 600 0 600 600 0 0 0 0 0 0 0 0 600 0 0 600 0 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 0 0 0 0 0 0 0 0 0 600] endobj 80 0 obj<> endobj 81 0 obj<> endobj 82 0 obj<> endobj 83 0 obj<>stream AdobedC     $''''$25552;;;;;;;;;; #i"  3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw?/}fx/c㽭>v|J?ŷ>_\]^[iKƃqZo֞?aHê1+'_1&??zg/G}K=s59{2-nE3{Ldz_}rIlK_1>ޡY0 FK}/nk5}rIlK_1[t)4d`mA ezdߪ3=VJW+Nu_eտtP{n ޙ 7na8z[YwE0oIJYUb{bg|ڽohJ0]l hy.L^)2jģ X==\&?Ƹ ֈ=F/ C*ɥ-sw״ gE?O,?"qպx3R`dzUEӅyYuo0 [Rŭ[z;"鶠 3%v/[l*tm10]H+"bJzM;8[riH;}F_c?8u[qH7lDfQXC`հckc%׵I{?V?cG^ޭ_P~ImouA"d=˷_=[_עOJ,? tY:)YƠXְ΀O=r>孟Uצ}G=O}F규ɬ=mM {CGuˡa}qƢj:6^hѭ~kg5_'X3&o갬ǻjsex.MY5fc> endobj 85 0 obj<>stream AdobedC     $''''$25552;;;;;;;;;; "  3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw?TI$I$I$O\~0;岗Ki\\nꝫfV0~]d3<Edf5徖kkA/*??zAq&HL -ws [k&i3K>/]ū3uY]pQI$I$I$I$I$I%/6}^:͝C<{OxsǃtoBPxΫPwSnUUߥ1I$I$I$I$I$K36U?W:]Ne8wx^k+km542ƴ@ hI$I$I$I$GJ -}" ͕Y[ctU\˶;:m.^mL^־u_ҁ&i v{N'IU:OGFȴ`xo9COhQGٕn>6eY2ךK.i']vVUxdY:=Ē9=G\+v}b|Xw=2:eyoO |}eՌߨ#b_{CŌnO9oxoȳ#\AUƷV?Vzw='2|dcμ A o9Xq-_^E8Wa!umg{[wx.g׎+j}L(}Ȟce_O>C>k:K'{_Բ15KZU[h{ƫr',k-p>"$I$I$I$I,_;EGBukk n洈dr*vp#v;+kNZ.nѫNt%ѰL>Ke-KH 3'0:XOTƩ)K^~ڃK`׬0ےۮkGTFXXK*f/PƳ6_Em75WMTKDu-7*3G[5uƢ ?M?gDٿH_a~tI0^nTNP ّ[~I$I$I([mTT{k!kZ$ o~Y~c깁ޛAdlLOyu7^vaWS|U>KV+6 u'3 X||$.X#%wh~%3pۜg@I$I$LZөI$I$I$I$v^7՜g2rφ~w?T ?W:'K1s68<[ *X='fcu[}1kY,ɒuPw]uNgMz5{~+own[MyXPlq}uZ߯= u [15R' Vq_WLZN<Gc!\.c{A1Scѳ]\)'sEkx"ay Y?Z~ ί(HuV7>K/?X:UbǢ=G5ϪoOD7ы[]mX .5칍#M5GUs#Uf@f5m}^[N?qX^sb]N.vtdžu}tX:J]!6c_KKdV4m_RҨ]])5QKZk 6n-n y[YQ3[l?)zt\zuUSZ{\[x/f֜Xu1fjv1ǩo˭hȰ Y.O0*[ucӲT-;폞< 痁F`}2LCw:7^uCL~ETmD=X\9#}h~S}{[U:Z&v] \ ?`?Q:RͫM9x+sC*n8'?U1:x¿ [Om6k.a;A-= j1^Ugd2.{1ceꌷx Ǔ3O3c1v~%uI/ s? c7Pk kۗ$K̾d^zN'N-Eg, ZƯMIy7K޻ _ u~v`m<\]6<~༂|[nN?Rk5q-@{ \״=95p\ W7t?&I/϶Mպ5C?g!zwr0տ?Uo!:g뜨~/7}2ܻ٫w _Q#.`3ߚgI9t+Mwq?4ߗWѿ-OCUeV?WUYM}aǢCo sğT<}fiuub 8%UvQ~U6V4Q\RThy=[+SUU't}gol̝1s]SGhևW;=^i=os7hu]*4ܟRֵz q/MO`_Om҈n+͹3k%d}Go4g51YAnwVGHwFqp.̜D~&}?✓#{Y|ۯW#:G/_n/zf6[nm7YFr/R"|90VWDstq۷?[U珞~'UTh}&k e'WUU+ҮmyB/ؿVq Ys,$0%3r:._J:۳}>X յ'iEz>n 8\)+mlXLG}d߰zj a;[[i]2oK:ke͍X>Fxž.KYc2[v=mHF<^}Ct^l~emiզ 1ݍyAsLn]Hen~+Cǧ/\ );1kt_/#2mcYc*{[Ę@b}vλfHWRƺeB*5-'%}uwd:w]m]s 258nh>N9 J/UWk϶s{68;NoE.m/{ZCX];.U.^1iYUi5mǷ/tԒϵxO!to-iVvV~#n·ݠ}:unps|u$I$sXִI'@V'kn^e-$p.0v]E`»ѺJޑ)cNv0ֻǿgD"Jm6r <`iӂPkͺޝu>C}loA2N_czS)L{*`sݯT0?5Saax1?E~-M1YcZ|OWS !ոk)sUu*.k꺋c#`w«>}]dY.,vKuϮWldWfSsw; E~u+cnad?XzRuKUU׶.,*k'i '|:ٙ層b]l2E&49/ak!g*}#@2Γu5`V/Ԇ#~ ?/ rVeY7(ٸr݃t=nb'?w+_;0^saIo]I$I$KeS/,]nVDVԺ.OI-/VGLozn^vV, C҉>ksNmuu"_YKZ9P8%v=7`|*wNc6I<{ʇW?[zBmj昀0خ]3_kk(ua{=[ϵ>kjt3W8Qq8Mh'E:~:S/ʷcE96~h,Z>׉ϬaW3+,,kK-h+oFO~)b?lkʩ>~o# SP :niX1,i; WuVh\GZ柸i\f̬2zh q?oˡ^_Z1p:wP_][h 7d 2} )ŵfhߢi5vuΟ_D?X]gCA wxCEYW ;SM|S4VtI$I$I cgۅ[nY[sO!yoS_d'{w`ԯ?xC⻯Zt+g}ni \- Ǔ_q֗q^TCc;jz]ސvHtNQ|t|ק좻* kGHD6?G}b^_Z#i+]/}rIS[]^=-qF.v.˯#,\y6 Gr?#i.%z7kYU};eVkx~+oՆk6湵[;[kA:;8_بրzoTh mma$ D껿5'Hs21}C!6Zʩcܗ|#eeXu,@I[Sߪո< v0TƸ|L^}V7=4]7ՎzF% ksÁB\͏rpf!fGQ5^8;k. 2O 8BەPc{hs|]5Uz1a *`#Z/5ozJƵ)$I$I$.?ffOw9U#7"=W.3?&z}-vǷli~?b|j}ςEt~/۠};c_|x]RK/Ϳ7rГ[_oO9Gv]?Bfw#}=.CB~zE7=46g`5ۿĪ]CS77_gw߿?_]WhU[?Ы'쟷{zv힟e.c7o]C/GzOR}ky{R?=oz[ϷU./K}OlFާ?4?*=FvOdmݱG i$Kendstream endobj 86 0 obj/Default endobj 87 0 obj/Default endobj 88 0 obj/Default endobj 89 0 obj<> endobj 90 0 obj[278 278 0 556 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 722 0 0 611 0 0 0 0 0 0 0 0 0 0 0 0 0 611 0 0 944 0 0 0 0 0 0 0 0 0 556 611 556 611 556 0 611 611 278 0 0 0 889 611 611 0 0 389 556 333 611 0 0 0 556] endobj 91 0 obj<> endobj 92 0 obj[677] endobj 93 0 obj<> endobj 94 0 obj<> endobj 95 0 obj[681] endobj 96 0 obj<> endobj 97 0 obj<> endobj 98 0 obj[446 446 0 0 0 0 0 0 569 569 569 569 0 569 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 323 0 631] endobj 99 0 obj<> endobj 100 0 obj<> endobj 101 0 obj[639 639 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 319 0 0 0 0 0 383 319 0 0 575 575 575 575 0 0 0 0 0 0 0 0 0 0 0 0 869 0 831 0 0 0 0 0 0 0 0 0 1092 0 0 0 0 0 639 0 0 0 1189 0 0 0 0 0 0 0 0 0 559 639 511 639 527 351 575 639 319 0 0 319 958 639 575 639 607 474 454 447 0 0 0 607 607 511] endobj 102 0 obj<> endobj 103 0 obj<> endobj 104 0 obj[570 0 0 437 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 278 278 0 500 0 0 0 750 759 0 0 0 0 0 0 0 0 0 0 0 0 0 642 791 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 466 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 572 490] endobj 105 0 obj<> endobj 106 0 obj<> endobj 107 0 obj[542 557 0 0 404 0 0 0 1014 706 0 0 0 0 0 0 0 0 0 648] endobj 108 0 obj<> endobj 109 0 obj<> endobj 110 0 obj[389 389 0 778 0 0 0 0 500 500 500 500 500 500 0 0 0 0 278 0 0 778 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 444 0 0 0 0 0 0 0 0 0 0 556 0 0 0 0 0 0 0 528] endobj 111 0 obj<> endobj 112 0 obj<> endobj 113 0 obj[778 278 778 0 0 0 0 0 0 0 0 0 0 0 500 500 0 0 0 0 778 0 0 0 0 0 0 0 0 0 0 0 1000 1000 0 0 0 0 0 0 0 1000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 556 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 667 0 0 0 444 444 0 0 500 500 0 0 278 0 0 0 0 0 833] endobj 114 0 obj<> endobj 115 0 obj[1.82161 18.0984 443.641 468.697] endobj 116 0 obj<> endobj 117 0 obj<> endobj 118 0 obj[1 0 0 1 0 0] endobj 119 0 obj<> endobj 120 0 obj[525 525 0 525 525 0 525 0 525 0 0 525 525 525 525 0 0 525 525 525 525 525 0 0 525] endobj 121 0 obj<> endobj 122 0 obj<> endobj 123 0 obj[517 444 0 0 517 239 0 0 239 0 517 500 0 0 342 0 361 517 0 683] endobj 124 0 obj<> endobj 125 0 obj<> endobj 126 0 obj[722 0 0 0 0 0 0 0 667] endobj 127 0 obj<> endobj 128 0 obj<> endobj 129 0 obj[893] endobj 130 0 obj<> endobj 131 0 obj<> endobj 132 0 obj<> endobj 133 0 obj<>stream xtUp\ے-,1Y̬T33Yh133dEݯMtMLET +Wʽ)IDMv. ,̼E=<s PR9M\@v&.@^ 4Xxxx(bN K+-=Z z#dip;\> Հ@`Ĕud4R)jj2ȃ̀v@Z9֜?D&g# att9;|@K';@vf6[M#llrp|TUO+j;>{Hs{3׿Zu19\.2A6&?@puYgt'?uo`wQ `D`aiQd׮YXa7wuw3$Ll<@ &E{;DDy{FwBK(~,?#cbxgW-dJh-?؊ۘOc$"v032ry͕A.fV ymװ3:ـ=R 3ԭ@fv _H7y& 1yQ%9q;Pc \=>[+ q FT ``cg{x8}`}w_`$Z5;M_n3W']=fKf|_Ҿ M@84TwTք06Ni\P v@gSA!SE8fjTxV`acC춧V@aȆ 5Z#`xWƼP[cuGOg0|w*hkl-a Vz>]"1.b.,46xI%nKw,>q({!0B<&cWI<@7`ZM5=U 6š c|'Q=ICx7 Li^Me+,ٱYD`)Bm_޳IF")iy<{T72i&+K.d6)k kMP%Ձ'7\mS;!'ZGΌ=Yr ҪEMOJR}sQO7|{[s!V7T "͜F${nQjs8aJc8RfܑL؇<8.ͣ<`V;\!c:U )bFF OYB~]/ka߹ 2{4,ۅrWf` (EtǘFlXMڄǽhur|0wpN &ܽ=U}9O-U<:߻dmdLF2ݜ$H.į4XN$g+] %eS]Vb$w ʨxZs ɠÜ>F|piɟӼԚD4֡seܣŨLAh `ui"_LO& ζ |ӻLQxG>K&m35fj1h}59WІq_>GtfTz;W/ΚJ_nޣy(bٮPt"A?v Xtz9ΘwxkW=F~"gbASaDk<YU{x+8|A`\Fל7ҢF!-*<"v4g# ]8MxCh%Kn5YyFWp0Y!>d՟|9NCt;Qri94-5};҆?~τ"a{@yF'L/=F>^7ܪ)}л,>"9}^MM՘ҿ“o]mj3s%<j@<t[%Krp 6@̭",ӐF1zV +QL9i%e#a_ijA?-8.^ݵB, = i+ʶFT ~5?"ΌĹqϵyyՂp! וgs M CDNud1srz]4mWK4-u mNNf-R@,jW8eZ+5\=ujVd6;%Uz;޷.x f qgdC~yLw>I Ԧ&_, Ajp?ncSPXCMbHʋ*}0z>ub7 rݎk#} tC;$Nܩ?Ysr+"|:h͚vF\ 9'}Ա- nM {X[zpXWHi^ =8 {G"GQ"Iz)I !hMi_\Q$OCW żJU%{?AXϥ(AT H¸YA:ڡNw'L/"c4gDHҹ覡'lSF4By\*.2וmLYj"oh'H'OuiJ,>?CqɗUgrYً*}s;5q{ [#4juO# KCx.3Iot%czHm#IDf&0-55y]+! DzC;DU.l@WЌ+2|9qb{܂6^ǀ.yP yxd5.48/Z*|Rdp~0%GqL@^67P$8TdMwg=D9(㋓? VS;RC+i>F=ţ0 Rqh4]F%[~RN L E6!j mA!aRpEsvç좟ob^r.V2ҟ_CXcC ʷfg֧u!eI+jV&6 ;ڬX\()㸉_T,ɘ1d5Tz+&i(27;-GA4R68hv@ 8VͬiNp 8N2~lXSEw ]}9ƍ:{,w}ɹ}kpF d m1-[;+z79t~]߫ꩠ~n5"CPt[mX ʏP'WM"Ԁ5H O>-rJN0DK瞪*dy' h ֔ݖJJYL78w{c>2 9 &{l̎y/+?B vUX㧄J2Cv6zBYc(Ul4(?o$_؃_`O'rHܙ_^S5`_\h1Tmh|Y­[ 3ȱJ\12E\iCЯ1y=%2sMӴո 2!]Ӕxu_EU[ 7~IQ>M C#Zn*)X:Vl.H?,;ge'p} 2nyRgGV IF]F5xi0|mj\(@gz{zQvQwL"o(_ÏYy=r| ɫe,ơ"\K.N9ֳ]1➄D|yc5yV|>|vWMDIǽvuB_=h7j~Hji|36? 68-! 7$n%H8x~R$)glŘ}CL82k8)lOxZU"-w,RځXlqg"XtÌ>y'ЇO|_XKLݲTd#ڱ7Jshp ?f7u! s'cI&nj'De=(yqqfv8oz.cx #[/gCV., [ːORJ>]itE:0ŌA[)$`I4E$+~ GX}UMQ'=q[WAEx+KZ'*-nWUwT"s_5ޡղg>RA/4'\1 2ND1~y< @D(("Qv{suB#<7w3@|d=1mmaxڙt;s>PkJmGPqd M?rV!B_-lk7+"+ػ\E2ԨJk:o,%XR&~nQbIJV̯ NI{&~GXh ⎸qtY&Σxd>56.--Hx##S2Qy75qy|V]o!xۍE睨T]f"}ˀ>Cz ? o hzuo[R1q"uı7J 9qhN+L>ffS[o+WSiPY6mV >'t aoѱeM)nyx0nk&mix56@Z~#Fk-E-zL7NK:8=3ܤڕbF!Fu* c ]Mp qŲRTnmg::s~[ב|]K%:6$F&nP->l!}5 wPHt1`#CޓbVyVd5N68[z&$.B= 㥫"$2,{));N~94|A}<^mڙ#\b6AY>Z4?rIΰ6S`P,ttOX/GAZ6H]hg}SiTXߦgDo~6 \`@|V̘6d^%yrs9u.k m3TaY)%L)يZb(8 QoIJQ'MGrOnL!>U k >7Q3U0*Xb3xR۝('gO `1CHLߋV|cvr61=9:!zС8/x'=sl޸3`@T_:|$ #x!l5WChF|) )~H2A.ݱ.L@Ye4Цi&cvvKG5 (〩@ ѱmKͨ$0XsK3π^u͝MZsLA Y :}L7A?ٛqAlVH@A dxSHJ9%ׂAb5.Y @/h9Q݅:I%PCmk{X@XS<әj/D )Y ,[yZF7_g߾D|fQ^;p K1,M{`Tv+6z(:´thu/x#[8 Gz5-S2fv'yqQb9=  Z϶ߍ?4jkX"ƕXPg xlRnS]Ol#^,2 Y,%#.1B$AOfI wW8=t\DŽ!`6~J&x8)/78Dي:ޑ!#N, BVE_=UFd&M*Jsk' EqkOtFܳ:Os2;)❼hXާw0lz 8{zSg}<ƔϹyW?8A[HIf$k g6竚 ˕3判\CݲfM߮% T,2Iwu^%3 10!P ==ZG829~*s\ECXz{L7LW5%AK:x Σ.G*QI+zfb`[f y,0W/Grz&kpPIU8XگLOx6aʓAX.]AJQ.k<_o" cӺҟʞb̝Klԙf6.Gh(>#1 ewEx፵Ix*@m5ydĉFq }w(=LnuȠU%4?ug 䨴j8J[~|M.{[ZFk:Xҋ)_@XkfP%x6r1d1$۟qO/'whtxRW^G#k!Ig?O1іRM 8RFPoFA?'@waضtW)*4i;rgì5(OQPɹӑ#{a%yARA8X6o\ &hWp3vߒukHU\asnރOPmnXz9_X]jf3̟>\׬[bݵ\rvLY0nO4/ꮑ_WG]TA'F3.][mC:ڗp:!QgV pzf3Z`]ӓtS$#R^H-<~ &pV[BaqJȕ̓N`2[Nl%hdTVD]l9S3buHm|\;̓$v's .e~Ș{h%3ȦBM-^d-crBx[E/iP.L ya|Z"Zl}q T_XhHnِ`&Eg͊E#_#.q7 q51$`z]LZ zO6k3ڿWhv˖fo ~އ$*#NQr)s- ⾕ y?KXdH6=D)letA[06r.W֯N pq}kZWN>7m4/7g h$o<^}GE}) 6㭤$V/khYH+tHSAL86a/J^I HV;U'eDN*g21J"z}cb}z(NnrSV]M%Y>RxFN?F[c/96cо3lm-fj;} "񡫞'ZaUt*T3}}LEBMn0pr/[$,XTO E6M ucQˤ*meWm~IV >Zc 6eO#Nn/Ӽmfm^B˵U,uޮ),iTB1Z-BRQ+g=.џu+[- ؓ!/ BnjrJ6h tzf73 :WKz_ #F$ r%"t٣ ҷ>C\[l_r%|f%W[?dILpC[x4p;د,!0?TOHK6łNHi39YӮ5 80S L8y|C;Q.U Zv) #3I--N S} `yrqOGGLfqm!,;;SdiT k֗Pk3Z*pcjh$T!j@֮`n,/z'/udCOM\mM}endstream endobj 134 0 obj<>stream xڬct]&;۶m;m[۶Qm'VX}8_cqkk56wE:!S{c =#7@YVޞKNh +g##qXۉ@S( `#;x:Y[(Ք5hhhS ?4=-?܀6@;׎*@ 0D%j jlci49fN&vLK`pvXuzQNs'#;=pXڙظ_rpkaWL7t0r'_5쯥?%Kp'1`j`c7_0'ligFN6@g0 _7rpg.@3z8&1M\6cgVL: Q33T02]P߱LG-FB%cdg_5N&b-BvagYhhbb03۳LN6v:&FS4vt+e%i9ai͂ApQtFx1s9޿ q1oB ?rF.Nu32ϓ37gtT\LN6qurKߪ=&p+&0m(zS }I Qɻ8h35bdw!ՏKߡfX`H IL15'<=R @ÒA G8 hUyaP %%Ii=ɨZX=pN>Mg3,\)n(3*>KS|z.qdsIHKSXe{>LJlHkrƍi[3Gl͜8z9 k%کYH]=gUކRPq& 5:Kߋ8"'qmyttb&y(֋j`k-??iB3ӽ敟^N!$x7s^b#9nCZ% ' 6A~X;}K"[VΉD؅)Ra *i.h䎥F^ҟ bs?[ej]fzH;~ǿǠ|y3!UE+[5L* 萌5˲D E)P>ML ƨXd+hcÑwHeOdm$ԭN!.gZSN΢sJiHACuy/:밫~2 L}DczÑGOcwIP8/ɕ_8zS Hnp`p(F=7v,ȊtZX^MBq!iǵri'])P˖4 i'vtā5!>6-!=SNn~DTYYS0޷k! ?H!Y CX#eAsjRN7 4lM.;"d@Q)K*:H_B_QHP)f/k9z;YS֒gt6nyI7̇+Yޗ0wZd?&AI'8zw$7k*.n% 8ߟŹRJ!w&|U!46Yo@&ݞGuh×%Vk0$U$½'e79ج _?]?é)Ă^TP.69vphػ/m0eAſV#N8{v5 m …}tkF rpL-Aq.⫄K,'?\ȗ' JF(/WMcł(QQppB™S㉵7)u{&1W`vҥ\@ s\u.WtTBvR"'!$ʐe*J/?1V'8.n^@?1[TUp|D\9EbsWTq lN#Vb q͖uQGUF&G2u3{s g {>Tu9dzB/dM W139 hlvw ç?ȇhI1D ``Ff(/=DOw{Ӊ{FzNڇ6*StvzX Y_?0=ڐs鍶͑h)H"UymYVMe e,dF$ Bκ!Li 4 ;t] gUtÎɡq f82f C)<>š{P𾛂 U";˶SȍH&[ yo` ONSY^3-a)L67L_-_R# "G<'kfO:/ԥ葲FlQ>-.kVtH畍J'~{LXF'>ҤMxFe՟T37)-(PINN z:.OB°\D3Hs~tQKh +n*^0oԨ0e>V)#&Q!qcay:~ g ;} nmٌ:"TU1ObJ+N[=>ʝwv̩ss]CrVPR[$ձ|YPDV'2' i֟釞+6#ךxV?=Eqff`b0f#$7[|SESXz Ai2^MܛRحyϼXޡǤ'G tW1 rh[(ݱ]|g~ mN.ҒCHBŮ1O!3AFu;2-ֳcf[UQ|#ZD F{齉xeܺMt [l.N53vAqڮk=V!orl9ь#Q/vH00YNJ 't8BZʹ'qI0ťߢhX*ކ45UE('Eų]IAᔊ\4 o-Kp4~<#*n]9[,5)YL/*{R=/ mbpdJ.PA, MTW쇲<7q~kVR!jY\̖qB/cxщ·Fxy,87ā>&p X#UETUnZf |6j:2!sEA)_{_65Jowq㸀իު{p9q{H|yQ덻po±AZӚC,@އ6iϑd_ Nw JyӖѐۿ~O{]jY[MʇV1|Z]CLu!~c RR.Ev`E*F;^,(n@:JЗ(unE8aR)1sX}̣c]N,h*1wu٥0]S|V7C<w:;_)wpMa '#<5{'n-tB˜5J k#1'AL0 %Aid+Kݙ EKa/z8 )fT "ȶ$g3! h"~kN?#[苇WʵuQߋ0EwP-i˞^VOh$.H̙6D^euf*)Cb( /C|NQ{xك2t쒩#0 '5_ ֭Ol7is~4Uq H7CJ5l5c_Cl4>󆗄B8yO,EĭKaC$<#ܾʳ$ \@`1 oI/lƏ+X(i(;VC}VlYwHu,Kܿ?ak FN֐:.xQb-fTw]JKuc>Eol&i*З %HWմYrucX(T>hMȓ$P Q`Jq :zZ!N9#!ꈹ ޥYd |Z*G_xodMZc?-| qj,>"SQeN1u̧R=wьVj$phwr5FIW'[Oi4K1/#2 ,JP 5پRwP%pL ޳Bx?n>_͢ c 7)ZplSΐpBeWAI \X@LEF'*u,eu+m4_/A~QlNPgʪfzǩGz7CH=Q 罇|;Tq/nV.I%`'D(EO2j^yF$:5|#Q­Tţn)e2 ͇^ja?=.<緐D|ƌ:_"tP{<ߎqw8$B)S`odEt!?WAĆpRPӴɣ K !;wt>*4{Jr|=y0fΑłƧ (Na#Ju7wmfM)}rQoQ0'r!p lMTe=飁l`/ϾM8bkPE1{d|o+dtQ ` {*[jNb4XS@`|+nNw0$%$磐\&:wZfTDU]@AN.4h?nfLM-dʎ@sG}C1=TQItHNKĪ8u .p\u$|4p>X P Pm+k!k\MbxZ J<>-ƚ,cIu ҴsMO]umIJ뒳I 7ͼa`1a/ */n5$ԋ}#Qc6aosa,kq*LpbeyP0Of馫o$SwOk-ک6 SZUj9:i!e]Tнg2>,ʅKuun配1Q4V[4{ֻqvhvŪa:Zx0k`ShʝM\g+]w7;nm2HɝACS+91.]/F'o$]~JY:&"_G\ITu}dpfFKۢ†jȣ9Y8sXuswl Fz@DPt  8̫&-gU> ΙIXZ /͎ᤚ[ c"eYFmtfv((ͺ"kILz_Sd&rfQ.KߪPw;)*KAè-n :Gx݈FtSS8-޴wg,L,DOWOo0 X?ֻR?6mFP#v͗EbIjufB4|dHiPR _4Ao75a4P'\Z]w`m]1w6cp-x_V#HW,IQg'z;T8l \}\O-] #my|sfbX|ݯ!3;ߔ(mh&!&nm7nFc9}ԟa$IAqνj:'pSU$1rҟpRILNJ1')+ ɏ;^D%eXp c,5i7.KB~QY .Ŕ-2"j<ɊV<4 Afcޙ PNLxLJ="e'62=8M&H|2q2UNh[u*J*z馀8Ҥ*؜!s #@UOx!Bsꄪ)pNy+46=ꊓ"9)gsY?M#fH!rIMeGr tQ+?%DM LM'M&T(įFwCl B]HtGXYDl](;<L}Ź )dиp'a6=% h~A$1EP (.`۲mYmk+T=\Ъhge7,7ަ%>>90%~*^>_)W8JPW3OGǷjGMzROSNol4%وXVܮT?DԪ~IGc c˶Qχ\LO~U GsZPDxi,CJ9CY?fݣ5UIPFr $d7)l^2BRwgĥK4uOoASg2H'-Q[+nXʭlъ!GRߟGxx9 L{mSN$X{~/<}e{*+"rz [XR968v[=  U&rmޙLe \wGEREgcj3S+%+ _>GpV #7 91Şy w"tT*#1K e(<,( zprtRejAo7ϭl̢}GQ7J~) ]O:C&+>7~ҟ&J+OSE (Yb&0y70n (*wzwl6\[;;3ʩ`~VkonT\BBޗП!!# Mu"Φ W4D0<]v;O lOk088i\0Q[ߐS_,F6\_ d|Ӵ#YI9CVJ)X]H!`HwK 3u6:@uRcQҋ8(j/89P0@7ELuvF115ljp3SFOҽF- հXQ5*Ok]-ZRho*`kc_`?E⯗:EMt2\b}h6kL|̳Mu"[<M;ڨ&nQe -ȏ|K޻Y9yneLL^xI-6b!dw9r+ߟِ:VS`%(dұ;VrUIc[+$6#nE3 `O~PіEa7pǚ5Ay8X~0~O2 '⁇.fR__d);kY1DΊXa, :8]y)p`>jƬ`ᢨYyaM6RRbY |k>eLq\rF)+hXxѐuj˧@fp-ʫ&9m'4]w4eU׆# Ңì>=Y5ˀam9ŠnmX펑rҍS:]NGDx8݂w@K#k4٢Hpx6o,C3Ƽr^qAx)sH |Kr?Ek]BGGAON0wẗ́EEei8 K%P謂|rlm'*UJb tJ\';pɣo#CW{uT$ggYzidZ[|9Jy*8w=$7>]۾Yy@>3]4`-Bp;ذWQM4x7\\Ҏ&0LsM r:ŭsܓRՇLy(\dtU`b#UgK #+j|єy`bH{ Eyw%qIW*q8mkʽ^p|1kJyCTS#sO&V𐢗a|C<Ȏ'gppݠ ELo\|t}Od |Ubȟ 0 N*$rj*Ч5{Mbv$q6wG?2mnS_\Žs"Bn&,y,-jǣ)=ֶjd>vjgpOO;q^xYƗ :z*2\j4)c^pu9&ͷDFpO]) =.|s׳BVհBM%o)ىx}$nUv b"+[֨=ʎuFieCAA f#d|HuMjsN)wga/B׏gQZ[6l 5 ͟5SvZi]p b[k?3K45nJ-мb\p\ױ{SNźv>Ayb,Tr}YzW.(R$K! ᅂb-N@OZ-A)ۖef`Ö_AGV&}a1hLH2\t*n@.Pc&NJn_ T<d_c %G ;9jzRLbyʇf3EZ@wֲ?#4_HWGf߹o&J-/(8h(P_ӓ;`9E~DwT,7!,âqBN|8 m KSvevS(]Ep8\܋mB EN?ǐYbe?7+ ^oÖg'|Z%[y|d`Yk[54KD$G?l1Z3x1n1< =..jk$w\! Tj< X wot= KW5 O7pO86]0Ir}c j4_Mg |4hת {sc >xh{ $dݤ?;9uk=Ie!eLu^D(k_;3٥RnòņN?5 KiZr^JMG ѣ wϰDD|HnblWh2|`(cOCkc>#@/lIE`' 7i7Y5:*$;FzqBO~P?W!,XsJ[n{kyCQ̚:G`#A ejѯq*!١ɬ,b6VV!|qJz>X7RW.gK_N\LH9|j( o~%U^Wz?`o-H`K}dXhp6~9G=oNOvd|cZud(S5de8Tevvp.t:>gr̅糺1@l#{]n =ߺ&GfYYN$U[:-e=7nj*!8JʤeJ䋃31r6</&sٗqpK͜tƅkUs/Tf^)!aOXKH?岜o j},iܠȍs2k.gTVLrS}dU_~D^gpGXK0-DpL66 6 FKwn^ h;'Zz{ϼLzC4.L2 ־9?Ғ7)? K%|B6&N9k;nVLg W~?jiB9ή*IQMXf.Ũc&cZ( fqbڙ^Ԟ-r!sd/ײB#6%b qя.԰+X'Ǟݨ>)qbJswfdaLH̛\}peː\WNC>븣ڳ%aj+ԉ~ƨ^95Օ|JדX 0huCfVA]*u!F04S`:~FqC sS5-2p@GUnұçÔ?6@>ljGlkd@Ϣ<9Fˆ6wf{ut/KAxMf7rZdINVȚ&- ^>BHywIʷP x.|pW`-7m:I(M>;J2߰mhE㮐T) J6 Q'SAf@get[=lDŊ+>9>$bq=d)\MF?L };AM}zDВgxFRv+4D;4/%bo?2[7Ktq8Gdq8СZm}ПBfrZ?@l?# t_Xh u"FX :^$r__|<峤Ol[bfPdM^m|ۃFJ6f@3> Ipr:/ec\Kщz̸n^x#,ЉZ!ڿSRs?eMuQt-du OD( D5{c -ОΤb*ЛT[Wn|D],6g#3nIU٪_u[Kaju[lWH/ 9ZMfKh'~E|I%FjHF=87GPْ zdz ,R>^" AH~ fg5_^?j~ In|(k2Ҋmn(9UsC6[,V?ƭHT dԣ6q-:ܥfYXjTs^ ", īq ?oJ ]8 . jKJI`r?@]U]Sm6l୩3),%s`tMƲzN  3KJ`4KLM*#YEޙalLR\a΋tjH`PX<&x3Zbhqx0C#N¸:x:O&(d [8ok@csI$V0mNf;\␨ޡzl5u W\#7h/TcuapoËőAYlW۷YhkmƦ3(v<{Q֬+ f;u +n~,16o`&}pF*g1q𩭥Vyh3;Eױd-bڈvS8f΅6/.xcAFqF_z^3M1LYsr  BE2@KLYoou=sj(h{\C6խ{HXOQAe@\63yK$ա 3<=] -#K~ף2c`5噽)6=QӬ-SM`7Ei)ek*H:@ [ ;ڷ(ǁ=Bt޽:GօpddqqddlYHVV9{6/|<>?` >%.Ӎl9(=^qcxGK^k6eM⥓ ,vTnWuss͠arꀱſȠ{vUi{vgͶ#X)90_m4RtffPnXX&#w6+o |';B$ Dץ#\ϣx-b! 2J0_t ÒW~o(D--;N{-ڞlYG${W҄^N5M˽ՆUuQI >.-Ly-R$'J2<0tQcLlz82h%,#4TtQi2ÿbhB.cB$;d\4&@vGnP6$HIw y/Տľ?ft7`zt*32x)='i*XD#k}MW +Vl ~īj2$(p/!p66SE3au֔uí+ޫ+l'h|4o CX q٘{e.O 9^mP!Ȟ2"|X{bژIp Ў6[? o<#/R^~SJV*Y6ӽ"wSqvR٘Z-\?.#apN飐d_D9 ^Ip.L?*D!q1<>hv pk6k/aW% nFgN(q}6DB/9~kkWljR(~8z5nl'h`:F zFĔOXn+_W# }0n⳨!{ XC劶#\ߪ8)NWVDy+lqXYe7w%i^)Gx4zuBz1q1>zc| @h\˹>`Ppr:63nYRXĪvlu CtheNhaY]!w8etaH|iZl QGT8S5x,!Nr*08{"ɼ8l3qN`؃8{&8A3 pSl{Iԛ6rDdaq*j*1S8ǢKE(V ؁ݱqHt͑:-I9 _ˁosig~T["m> YZP1(S~) 0$օXẉJr4˰>^%5p(YtʌCz&< qmu,NjU|rAxUËlaZ G4ų5V93THg[O'j*9BYh{c3yma~\~ JUr>DztqlF f' <2i(W[ fmo}f"[!&P6N15<Mq@G4џ{mꁕ9vyUd6Og\J+.}wl(7?5x/ 㒅Q?cڽ &f>#I9uw:dfNANO_~mjXw 1- w^IqF⠴F:yւ#RYe;i6ɇ ;KSkU6iʆ rg;{)DNVPN!SatZo ݞ9xUHkS&}O^^&<Z(K*On M"ᕌܡZa^$_,SE]. ]a e@DjK@< qՠCI[fu+E*ܝ@VMrXI ?\["qAYUwfƲmԦKVզTGoP:k̜ ت\w=.*ο'OU,L _>h :תg~_=1wP:Qg!t:{GQ6g:9zO'L@80K@JRKqӾH%%yhE`)ƃ =1S}J IkJXiX;C3dJ[*LK{*E!Ehn̻8?#ɸ '>Nc @ z!HO,3cЖbX.*+2"a ܽƗ~ ycfbHW0d."4&kZ, 4wll"W7 `u۰B;JY+t"]h=c8Vendstream endobj 135 0 obj<>stream xvctmnlٝmvvlF۶mu~33fYYk? WUWUMEAN(ngLD 1rqR㒡SH9Z>ulpdd"@Cg ;[QCg 7@hL\\\pd;{G 3sg: ?%<]daf pZm?!ˎ@ 0D4$r -#k c1 H0sX054'O,!'!hlt7m,>N3GC[;pX[>-l>u` vNNƎ΀Ϩ Nj駥_%:Z:2L, =>c;Z?38 MNN0?o[{m`6cbi~501Cnb:WDWP}&ahbgk019PX#GoCߝw3l1| ecmkX6Za!l>cbgIh`ll05媶&@Gk ['#T-lb*ɿ0*Ɉ)'ocϮpV-sx1s9?sY}/abYH|'53 mM>[?]?{|V翇tí.[Hwa /W)K *7xo~oX<F}0҃eMѝ#J՛IAsȠW~u BQ`gBQIpk?=qj],fJZMy`5d>>Mv,,+"yC6jwtY!5t޴ z_~Hz-ˆÂ^ԱWz<&/yOwQ6 loRjfU%mm} i+`e+OB~;}7QxzK~U2Bͱ^sęMd1qATNc&rMcZIқ,=̷0G jlH<Qy!g/a@j|,\K'nBHaHs2|bF0j@y醳Zp},-Ї0U;5vyUÜcg*[!íf%P6@זy~I7D*.2;Ij[P z{pp~:d7o@l*x3[Əj>Tyɖ ._OFl PY?NF&5*;Q6MWГX5EtT# %#l; .x=+G@X^Qprzu>B(ȯ]42ۇq2Q{9L!Xe2K7l蕇O ڰԙmeˋR԰^)lSƥRDFι/4=Ty,Go3d R%p{iB pjq`KRaƗZ,} L fE-)/L]QnFLz-త%ot?vH;QMUmf1D)$W%`-֭7F=p{DDL6i>8, =AJ:yf*TJUZ:&T20|RrM+ q,IԳP8W]w w@S4>&џ-(ȍ^?HjzYl,1B8K~]Wx,pB|}R;1ћmTײU+5~)[rD# ޳á`EdM嵃D/_%;c8Jl|$^[&5 3szB-I;JJĹ8 J7QWT|@ r~(ǂP „Qt6,E=w?R*f\t4*}WaI+7Qo\c, KUq'K6r*N,KczWFZ[`v#8RSN9BiQgS ;2XT_o9c/cj̨%еG!mɽ:%.AOR MZT:b6 뻂BRw-#U2dГ1抍~ ,[k`qRH؉̅:sa_wIhLdωcSe4B<D$Į}[kǮhHz=n4-ʁfhG7D~ YX Oq kA *Su]cV8[g^cE{7Z&2 J)!lxN<nN/mPAv1Ѐ6n6b~(@G)ɕrȩJ&uˆ3Zpl=#f_HtbGd9` m?eCv[O4cs"4~#>@?5oV3vc`:oJRl>Bc ƬBl]iA:,Gsˊ#pyk UUy6_Q\1GaWfs:S#YQ(f2\@5.Ų31hAryK :݀g"9}7bUӤCѲfiд] 83`iBT>Fa+k. 21л;b}8I֨fpjcMAhhq\i#Ok.,™pE';Z;R-1Ǥy5LAn̥>ěGfn;AQϨ8ppJ a~\n,LF!x- 1J/0 0AHfV=hшO"0Y(6Յb4*Eywѽr}|A-}8ፔU 徭/ko[0Y58[s.QUX>9%L,8†mS %ӊ}%JMpgf{lxm-b[ITUrw[HZ/bW;׉[#lxM@x(8|}pdGg(HDcI=:7;Rڠ?vAW)yXhR]љ#t\p;P8; "7a| .`撦zvpmK U=(k[I_O OOJ#jh3- o#k9nj;A+IE9hIV ]Ѯ)Wu1z ѩ3KKnXr<~#̯nHf\L D뀥&O`*@%CkdqUi݌Rz++ isU*p퉏SSKS(2ɖPG&IV<.8*!MSQ j <8]S8=6^nS"6wLWMO򑬚*G|ݦi ?q;‚I]_rt٥ڨa BIgz%ْ费׵xK=)z4܈p\ At*/@ksۨ@D~ ;9 BBhhʠ2tl!&% oVu"{-Hk}d )-3/qD_Yu.+VPA4eDxlgש֙*9%ῥԘCXPjž;ߋ_RXQ åtK :1"y:Pe -?9ޡ.8~coΆ\Dg2R E߭g5!NyU˘c߯,Q#+Pq :$ɺVz{Y) cыLouW:w?x)(CK>CicMӞBTzcBS+cp^{(ӑ앝>`-ԏ^$ ]VMoQQ$#F1 J/NX{1`h"+/%=FPx#Q?=(tN͏Ml-AW, adD@C2b`+ ad΍U<2􂙤 IhD)2kbor/P:;\˝$lT5(WFjK1L"ߧLHEuyk> AsNHxLJ6O ϩWv陧x$x"agLt!Ɛ[m"%ea!Wm2{/7-}YVHiSW\ޚ9PG10a!;7\_M"nt9R5`Eq-DKg_ OR JYaqKX/Jo_5`PP_l19eަP Ɍ1'*_Bw5a.<z 6C6Q鱗mpLq m Vrgj;(<7Vт&=d6Wk3Z <@mlTgykJl门 ]1O# bcA/ź%on顜TlHhE0Ti3ʛ+ ܇:V4w9t&ʦHR=4h/i锛#gtFUm︔'$Ү4 QU$T~McibKUg:d=rhђ- m-H1nՑկ ^l,MD}PS6KR{L^??vo9{tzfM뭸2QK]jĥ:,$ 2ywa}7ee+ -aSKݪ=4S@ E_'ESQ΄ǶJ#iM;P[C !iMoB!Λj+vc>M2?2$aB@.[ՠ_뗎(@-"s,3nP#'RHoM8eKh歊_bgHxwe¯b8KF3QzBŪg4'Ali)TwXٶP7~EsE fmFߝQQ)_AIlw):  gF˞i΁2Ղ|&%&vErQyY9{=#pxck$W@z4wUuG]ҍGO$+mh9z7XPu'D{7"QBC;YZ_FVO=Н e2xT.򄰌; JB7g Oؤs-(TÇ@x9)쫼!= 3N/8  &x3AiWw)_9Z#[ON:WM ŭh2Z)$}ݸg}Id5?J%귏,(AIqH%/IQ4W. .$|$J+?OѡYo/]@f<~r0T '$^t#?%:ykUvYϾo˅#1fGP0XraV/)*m fz"ASrtUTct77U|Z`(;&~gEW'~:U. =Ekdy`aEPf6q\-a [^ VcPentm nF kDPR32;9\U>NCMfݪسD_Flnԋ%y@:'_~@pUj5=#K睋Qө98'UVˬ暫*o\MdSA 7lUC*ua  @iUJ+$c. F# x_( }y!Tվq|IT}%$fhSݲ%RGkl$͟)ybp q 8$RrM]),bXF` V%ge\U>+"_J~ 3e3^w%9Y&N [GSY6Me.Zq ?n;iI=op"golk1z8 ÉrC> \DV9-ڃN).ND{/A%}]`2j-]6ܗIz;$+,cnd$3u?Þxοhm~R-ssm,s/ND%ɷ+BICZ%u+ŧF沇%11VR KFP1 SK)vy*93&N-8N# EAde@l xtgˉۯSi!Ow%/ueCCdl|{v_Vwj1/)q͌7+d~䯀’u3x͠x`Z^̅b[f]2}U0Uꌼ5sE]O$MCHu|p F,(== t6׻8ySGp3!X&Kn鸰E|&qQZJ) ^I|9-*T)1?E ,>^C k|Vپ!HblIĘw\WCGQP%qX"$8;tgƥbj8Dݹ|{e,}FR]MA'5i;x ƂH'K$ؖк$zUV_DQVED4Ҹ .s׺{sf~2P QRd|HѥYޡ+0PgKD5dDɋ@{N2WrFtfh5.7u@&*M> O<̉V R 'M 츺8>OC7q:N_e3#"Yn _f]&9޹“0j/3| QAd@@Ԯ.ѡj\N.6 7z'+s @aWs#R>7 Ԇʓvnum݈KP+O/篥"(aQ$Sk4\$[:Cc('0b77+a9%%q,M%l9zKç#nh3`VuWtܔԅ$׬(7Y4&9ίd3U߫ ތ q. +})ϥܡr4-.~1J$V>M|:anH:AuF%k<:kQ3H?ׂN9rm;`SeHζ o?ͽ({.\|ug>Ϝ?f""'sԒ`?>ڗΙnmA˻Wȕ)Fyv7!s2Η]PbF#1.>¼׉t| ټ{]/No0^T;+æZU,YR݂g^؀y7$mpGiB療R va(0)]-xJ9nZ+H4(co2/"t PO ;oބVkfU^a,E3<%+!U3D EžwS#fGKa3s+cܒ Kƹ-kB,nj%PoP4` 'i7$-։8Ā3fOh"+k~ ܽ=9a K9^L{- 獉:[22#h5M^~Ke1 Cg72ݘp'뤗mbSkB{KTqw^&D0i58MpnuS`e(- Trerfkt`Wk u5Q9}|GL~O7 ~G!_ D1p׋2:دI{惥;Fo,[f?#9&Išސ37Bg0?੬u%{aN a-*ԇh)^{pF-O 9%HUɁcNJ$oNaw#h3wrG&lЎFk8CsȝEqF Dt[CjY2ѭiC\ ~&:[VR?IXiLX`$M Ҡrˠ ?OѡoBݵ^?#fHy]7Fb8!3AVg?y;YSB]EAQEҺZ!1:juQ"cn:G..!P uT ;6PCzoD¿Ki5Q LDmR3smxĿwEVSI 71;/0zQk[SpZED|@zjT-PIU^.eC3-3S[7Kb.w5BzK it8T²s'!e_/p 2ȧl-VLOha yqJ@CZ.L|kMhגAsoK)3"g |L{cz 6*key ҔmhqYl IOz0*B"Ms}dWfN,tUxYIAT 2K G}/>#NCW>ۖ~w#C@a |0L!j$JΑz(!:(6Q:Q}42c^דj蠊 G`> FV tFhC7_HUd:|kQWaINNfÒTLFP{s<౒ ;zHu{r!wu MO vhl jqu7F֍DO*գuLÈEBxjo5A4MjX;{ڵ|҆/wk^g?}G/ ~+o f=p+@Wh́Jfޓ,s `/Oxv噑u%c0Xw7EN7lt e۸pMc2-#N1*mRrUW$ƠF$~5l(KX\#:\H +RaWlqYo}AN)gҤJ4AW0TޛwrCZmHt%Oyz>m~f~W>5R ;B c&DIׄǎ07XhؾiV~XscgT՚dxݼ-4ret6yQ[CR El 'h|%70.ɾQaX‹ ZA:#Y2fRWFɨ н;չLH&s^L 3(,tX0~O(GOGʷv^%:ڏtw߈{ib]q&u+mɭrK }l|IÙBZW!&*tܯG8¹x֛%1ע񞥼tJamDvnӂ5-vIu4X:8jMR8_Heض]QDQ]-1=$K;FFo_n*XbW^E%^/V{mң8~@L Vb:waCu#hz1 i;U.&WFj968P"N-¿]45Y߈(' V3i2S3L2('v6Vp Sendstream endobj 136 0 obj<>stream xwUp]˒YGZ̲ddxh133L{_w7=?51;bGZ2WV9$ J_ ?ā_fV?ֲ_8((D֢̀F5#CGڸڙ:UW{73Pp2XY;ިddp05YD)hHK%UFFvǟfY3#k{#1`hmhWi {#?ی\ lrl|&vzYX:E7!;??` @{{;3 `Wn{?nO!u788RO?`6vfp76'z?uuS66,Y4pA6a7tw kfh7Z[ RTf@GC= -hi)ogq0@,;R ׷2t/6k?Hp4C L L0ً*9-toEn& 3ӿM ,j=?\FֆJHSg;(?;(!o c0 `7 ?rvf.?%31]\i YQrз63^amhgGտO}, xSSjEzm |])!\zoՁ - '6{ҴXT]IFd4=ymt~:ňj[L;uޠ'X`.i|Ȝ|0l 1Q@jON)G!{鲢a)x )}l4UCiR[/?:ur(ìd_LrW[e S[x$Uc]N Ord9Rc6LL[OC ރ]QڇXUѾ e M)97CQ0} u@ecOcIX$3::a^'_[Ea]M:IS1q#{~õh߄㕦$YᩢkES/>yl s|ecCJ{cpga r)B@W)H{%F,YH*볩By!~@m1L!Pq90fGBaOE3KttzD6nkI=?{@Ir*d AO{+ibOY24▮gGC@G>qb|st肁E($3dV2:(^,?"C _^XZEN1]uƏ-_εC~b@{\ U0c{Q |c~ X+xDICK:ӆ" ?'kW-ȟr\%]{pU9nȤt(C!z܂;e~}X&v~Iw+Sa(_1b1-bx w0L04o⯵*tM)_3z\9GhD1D?xy ~+ͼsZRA5˟J. g. l5+jN‘P2ju;vfư-ͬ ʎJiP}eqx7Alw 3x I!B$(X'. ;k[랭by-Od"rpNKEyBz"3#Hue^9;H[㹶qվ;Ю08X/rIiVϵ`gPIlwcɟ!|<rY3xLq""=|cqRxv*{rl}tc썓)*&ȉ "h+E̶*cB)ݡzlnE W@IWsL톕v-Tvն*Dz݁Yv;,&ٱ'Dl FǶ8M9sZVAƒl/&qlNg_ЭY9k ~EY*J5fR,$]=Zڣ)(uV/FKVyY>.TC(FeC@O~t(7S܊sq,r#uMBǑqnEqM̀,K|nVHcW-I%MgH^* @hbS9~ばlO D?Of;U \nD=z@1+{X-ĺ&J-&Yb<+zoU.)N}LZ/s~Go(g/uJm`?$-T@f69SJ@z~{d|P|x| ^uzw3 q~?hnxD" N$i=2Q-D\#K._eBLII5 ]JIޝ} Ȕ+'=[jKշ*aC~Ns.Owlv@&\C8 ׅ~x4E%'4C9 ;R; PePRG$̕A-y+sZ$W >"Iu!֏Rj=o(_L[b6b7 4jͫABtU ۰͚q&ݼ֧S+̒i 9A:vZ;mi7q)6ŖRHٸ,鶈T\X7}KyWE9Bt#fB4~^' 'C G`dnl!-f*zGK[dŕ{B 7GGR5p% 7]+l*'b!ӑ ,{Ruд+Z.ގX(38RpfnWӆT}v}mE͏LM[ O2=B獂's\TzJj]a+pͲFZ#ځ EnC#~7qtkAәO(#99ICc!,ږC.~uX<*f\UKfeK|gޚ3͋(jyu%#2GGH^dB=O:[Hb?[P 0ЯXy+Dw.^c[Iq=gc_b8aIO+1 $_ۂwn˅/8]-aYi ?rzyiEZ‘Kq[ ,&l;UMYhş\ȱg6J)i:PK?v_9j:97+ B%=+h<6M8] {ɫ$[{`l˜}8d\vT \9Xk`9ÂUgE'[B,6!76z7$q`_C ]jnH$o; Apڦ́eE|  2fsJaj[wP` ;'Oh? ]#)R4׎vӜ߽5Sk $=u=M0?Q{SnFvR5rtpjZYnejy(f4Yk\="u^'VkxA~߶MO𠾥A+WBf w!`cLr7}IJ%IHȩm . <69l&wjeJaNփ b۞KWW,{3Fp2-/jVܚL6#A۠rX`6{:H~.bm#Y O)ki/So^9E^ܿ9^bq6`!г>CQݣi?R$r4;'6#77\(Xn-n~V3js=D;9O i+,Iwpst_DSa޺sGa]uDz_ԸLu!hO L'c Sϋ/uIU0=qi0Le;Y `ԎvYC$v0no}'3u;!Tr$i+B~jT:p & r*JB _{ckcN{ EM<&Oa䣣Sf&BA!LdO|_mʱ2[]47q=^nc<pVB Z4uaL )hW z.vgѫJ=O&k$i8ł+$F1AsMh 8U- kPPδsx'׸9hefK~©.bxЅ+O`/-bIDR=(KwZp>Ϛ.5mJK]!CD+Rs844NF]NNfU]1TSY>SXS:K0kq_- U>U"r2qIg T 2[=] ik I{X]!HѲN=pAg|J|F m{w.H1<]-u\>h/&YOqA$j+ozzCaLQmpsW{N)J>_zs ߧ%ƕs[@r–)qbQdeDNUjoa {#a]G­}fi>`kKAfN$37ԓ o!>\OC\XQ'Wýf!X]Gam~oxdf{ߑ%7d80AaHn=ؑ)p1#]U /̊*REBM|de,{ڷyRc_-grϋ5nGYAh2NeHAWp/@VVپu.#F}Qr̆ <~#c|5+>aZPrI{.бA5("=ʌE5*Ek|XijT:Ig<9vuYO)^`ɲs<_z`EsV;A1_ǂ ѠŬb.k-qH|]Xs.˱m&"~-lm t_$ ~wQO!<͝^J9#erLSVb~ jB]ZzGOڈC\0n1$< WJsL]3\(Qٱw9q?Tk^*jR<1I |N߾xn֞)w|4%\8;e)hgzKQ;M)#xzoWtj^C?\Ib;/us4"k6#UC?AAbGuD:.CZCd.Xب_6 5xL7 eS˖:O>&$HΦnr5 S|&z٬ ug|5!vDN@795:1!<]vue~)סq ~"-6 oPӰO?%vZVbq]1wMj 5Kv`~Q;"z}K+~M% 4ϘVk,9Lˣa4AMBݯB5}_*[|n1/f Lag$ӝ?f6U,,ZX9Z$"PnY)A01(W 3iR4Dg:ȳaKc"QȮBb,d1=w[W4D#8N#<Ӱ`g$`y'%Mxyv[+U(74ڒVW v~"=8W9!oH2rVD(:{a lԧ$.L0(g,Q+͋7=iؐU6ڠR ܶ.&% *&ZePHvp!&g: 1EBנlGDl@`ڂ&hmN9G0\(F%igrwLaij0%<:`)0 5tkSU[qԩ#Gz[9%פ^ 1-Qۡz5 ܢ`;&֌ A{F嬃wL>?戮8<~ ?w~|Cs2wAS G}56X τC1熜7(MОx7晬5_!',M'8\[̒tR\nWӭG!X*}/C52ÁwD*Zxpe3jxD JlXy"-Z&=O[@|60"];ߵHV}hKb{$Yy#guu >OD5I'=ƯG6oe_G導:"0Fk)>20M11n1*Rts֚zuM K~DomܐRjVC0^5ҧ:eQUćoX U /=LːS.5HsbHKs&@SZrjȑԋy_Zz9v/תdzQCx㨅9.t6+ +N9YYݭOY-~&Dl @U[(:C.gϺ,E"BY[:wÂl(){aWUfQF'EX { o {RAD!JIԽ=е2bifQҏU {}j#Σꂦ~2rG3E?u, w 㯱,5;%_byXYݞ4gv TQx=s}gZvO nx+bWXKէ>+0xJB|/Q&H!&gSɲX1<Ԭ8(*6 !lҶVߦH.Sj&S}x/2a29݁.~ui;ZaI|>m͂Za(Վ$"D2,qfh+3jQ&čɀ[o"D3a^i!)hcIƄN2g԰Z¡{(Uͧ%]t")gpioT0h}BfЍOlS;OjJhr_eF1y ͜OU7`}_fSC0bfACΨuȔ F~}ԝƳʅ$xKcluHL.L?c@]oE?`?+җT<8:ʎ;Ժ&Oک5Áy0p]NdyTuR=vkEJJ9~Ptc`O<*Isc栻lK`EF`"x3|ѧt `n{Fu]gfi &Z2iwiu;=Cga<*Du+x}DCԿQx& P \^@!Qp//4YQGtA'_e9g|߇5C! S`L4Ht@cD Xoy8"RCH%n< ֋ Ն{"iieW>TҖiv5ΎئRE9󤺼'[&7*Shr(O?ؼh|zj'qQȳU1n=9$x4ors8%l]\V4?kbEqWGjVÿT^GD0nj3}S2\>ҲXBϲ9'j!ו#F\CeIH'*:p[<0_F- 4?4P̙8D+-1e<f{&SX4m36*4 L Mb1lKt9߄7դQT S%%iNǴY]ˆ/^&>Ú-`#cGe~g{;oI(7CzI @j MʔOR돢B1 H֚hY6TPZ"δnzՉk|~)@xmn~ب 70^KE Ԕ >ԸQp}ECmPI_I'?9 ֨5NDyF >=+}'G~.0 8uE/ku#XFL<+{$ؔ!;_b6e4A rTIƼ@ _^' 9NmcZ8k}6KX@ |. T.%sKut(fF0_ѣG%pnHřPkthROA6EF=;ƈGpSeaZGZh"^G6_|bKOݭB(k _~{wJy*ic'9n1g=Gnu l,㇓2>}G'lMhiY%InkG -{*hjx]1E1nΗ68˶fS_E wB1ϟҕ;=S[dhhi+ˁhkfC.NI3X(FdhF(0_ (%MƣU~!S NOkC*gPj;wˋ\ 3#DM-{zKD<q]t6=Y=1zEw|hҿ ٝ#7u)m^闲a&jN!Zʈ'+Bv~:n<'̜^O$vfC{på 7(f:`/#̤$Fp3Q>6W Y:ՀM{xGpӪ dkM&3RoYp } R]yԄEL.#1r1W4AkiwT5fد X]}hUeҼ71&&% [IJe@87vSzwjчd-BN6Skp N+rp1[DN@ <^w5_ ~Gqj6_mi {radID?@"K=%#|g\_npϚV&=ߢQL7Jh +茣Ҵ;Zk/% YVhD9x9d叐uL՚FpKvqY9 h ;Ҝ*NeHLclZDyk֝3Bj1L :iדQd&.*xr7&T)<}`I~2"^ׯйoP wWtg !y2sڋ`?QKv(P[zzZx 4܉QYtx@8PO筕l$eUߕ[djS6Thk&W= &L[axwkCo ’6 >]?ȣI KwhU³KK5g,*UGUƭNxg:{`-BϬn07ߛ2V{"(?ѥ@ˀJE~ȸ8бmz"4a[3n@D}@ԺrFcQaD-I$'/gcH\>.]*v7|g=/d8rb  cLcvθSaz`z]36?*c E%zЬ=#]iv+ljqTrxKt `V3dm\nh_3R jc7Eqbn%b QqC7\Q 2$:f%:f 9@O!..bEh} JB)ly%Oj-G!; oSLfi03qRF"y_75q;h&+ з;&TJ3^85TrH0jGz?\MV)\/N 49l;Pkiq1ޛve1͑ǹVҼM5*@ES'$Jmh,9韔QF${o,1\4'l)6d⳨XWf_~:!PٶόүPX*/pמ4e׶E;ةa3kX.= 4xaew y;a7HuƋP-Ϲnt[to9EAe@_2=Ujz6pzQ&?` o0X|H\QuњO<;7\FVF+ XVF)H. j -Մ轮 Wp,z̔7}c_l'ێi3lݱZ}hr#27J)endstream endobj 137 0 obj<> endobj 138 0 obj<>stream image/tiff 2006-07-05T11:19:45-07:00 2006-07-05T11:20:30-07:00 Adobe Photoshop CS2 Windows 2006-07-05T11:20:30-08:00 uuid:FF792AD2520CDB118C5CCC47AFA5CF51 uuid:017A2AD2520CDB118C5CCC47AFA5CF51 256,257,258,259,262,274,277,284,530,531,282,283,296,301,318,319,529,532,306,270,271,272,305,315,33432;07B4BB98279FF76F9A894BDDC443BFB9 105 35 5 1 1 1 3000000/10000 3000000/10000 2 8 36864,40960,40961,37121,37122,40962,40963,37510,40964,36867,36868,33434,33437,34850,34852,34855,34856,37377,37378,37379,37380,37381,37382,37383,37384,37385,37386,37396,41483,41484,41486,41487,41488,41492,41493,41495,41728,41729,41730,41985,41986,41987,41988,41989,41990,41991,41992,41993,41994,41995,41996,42016,0,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,20,22,23,24,25,26,27,28,30;37854914E518BEF1B0D9F7891114E316 65535 105 35 1 Gray Gamma 2.2 endstream endobj 139 0 obj<>stream image/tiff 2006-07-05T11:19:45-07:00 2006-07-05T11:36:51-07:00 Adobe Photoshop CS2 Windows 2006-07-05T11:36:51-08:00 uuid:FF792AD2520CDB118C5CCC47AFA5CF51 uuid:047A2AD2520CDB118C5CCC47AFA5CF51 256,257,258,259,262,274,277,284,530,531,282,283,296,301,318,319,529,532,306,270,271,272,305,315,33432;D98EFCF26BA2199A534099DA08D6F680 258 158 5 1 1 1 3000000/10000 3000000/10000 2 8 36864,40960,40961,37121,37122,40962,40963,37510,40964,36867,36868,33434,33437,34850,34852,34855,34856,37377,37378,37379,37380,37381,37382,37383,37384,37385,37386,37396,41483,41484,41486,41487,41488,41492,41493,41495,41728,41729,41730,41985,41986,41987,41988,41989,41990,41991,41992,41993,41994,41995,41996,42016,0,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,20,22,23,24,25,26,27,28,30;218850A00F4C207601BD08C45D018D0F 65535 258 158 1 Gray Gamma 2.2 endstream endobj 140 0 obj<>stream xww4־QF޻ jy13af DE]%: 1DQH.QFO~z=k=k={UH!nQDePW{OM[@n$*QY P utBM x s utp|xA`pwW ( Pӷpk4 nAAm(ↄwCzHwz r!W(y "(8y;rGo"\o|7`p$ B@QD9Qr#7n& y*ƋBݐ+="a@ߛ7`oH_ #A_N;($ H""zu#5(npv?|^q@0 CHtᨛʂ9Gw!wߡ=a0]ynn$@bP￈{O DiC7)4BPX9! r6D$$3v\~5]R ;y~Rm;JFu C2' "%9lbq7_k qSke757kNP@7h D n}oJC > $"+U{/-ZnܷEA2v5 ׭WZi`\]il<=KR|lJI3OiYJ ~60)$`mCyQy J~CހEY[3 Wл]= |r^xA &~%")a=&bKs4+b/@ ~^Cς],,_(N-0_:d2n|wS|׫QI+-ZG\eޖ? bƚ7'iP!ş)rUl%㜹4L$8< |pakīSx_iSTȷS/#"\rJ_n?>*Yg>Y `*ŧPY1PkWJ,,|&NCbgC|8N rsaTBdGG$c/&!K"{IYymmV|r~~ +&y1uY'S]_ǣ6OE]`0bk7ͅ+m9ַr>2_;ћYFtO鑊ij7F@(t8hR Ɖ'CCq RN%喨l~b)Vt_Ȟ\~AҌe-\J9E$Ĩx>erwS(]zW9OV3@3&!Kנ"&ǹrF)uUe^1ևd:κAZ[)"DC!k2]>eRɿ|F֓z%U-{lJն8&EHj ơT"dt޸GЕ6 xX0g*7 pLܰVsx{hߚ<& ^[Y:]|Z7k{#ܬ@p-/QY=Ć%B4&t8W^By2~;2&ET'}7̧?6=:sI mg#uzP􃶅J^Qnnd-~7RM42G*4V͏k#ٜI KΊ(`kfO:ك =%uRLiUKOaAχC!!B2:J%^Si*" CBcK[X+}s>Z,W+yǽ R7םl 4^ 8Y'fLOĥ|zZ Joyt#LpB1\^/=oZv Ú2=hz8p~E.Z{7Y6.Zj/P|1obeۤXV h?~ r6!k=7T43Q65@S|EC%A}==8]Wʼn|+мGbM?@4H|{E3+=j?[09 WTw&ˈ|k7~:3Z|402Ƒ^Br0bw!6Ƣ^O? 3d|P;~$ޚ9U|x{?ۊMb$3\ ey%aycA XS.hFKW`Tj룇t[шa"jTe{_qJ@n)Kʹ0zW[hYV.. 7GrB  'ߨƀ]]f'\f9? lbĦ7RAĿ(4#vtfEɍP7A󼴄n;)oVBvއUѷs4ۚ@ɁJm֋i( z;ɏa׊X3Ko:fwns0n|~x`./( 8OSqKؽ {\r|nt/-:- c2'sǣhVy5Wj*o^mB;n`I&4\M `Ϧ<l} /XԌQ_XFRٯ ^]6+<v8 }Y0huڶ}Mt)x`Ϫ2qfJEI_HW >7# #j ?(#ڟkۛ)U }/,)}v"wΉ1Yp8:R0$*HƑ.ֆ̐^AOHvv̴̡;\dGwr}+2Pf#a0\J` Y,_+!%⤎C4Ql g,' 'k2L37,`+!\G=C65<\a%=+_J|1l*7lef@8h@(\v0'&+m4z~r9K0ˋ5;<1ؓۛJUۙ`f'WMOLoivSHa@B!үDHp9]@]X^B+O2h+"MmQZ뱯"u٭3XH['e)H5 .p:_ q)}.aI~!N' rby=׃O_H3ƕ>bZyJOFxY;DWeW)BqskxL9 =tmjNß & :wN< $}RmږC,kR,ĜX9ˉbɏM*{%?HpMԱe/l? џ|]RW(Oyvr&,KstN sLglw֑1CؗXϻ]I ,f U?cݦ~ +R$!?tE&'|5QTVfW>%f\h&ig`hC]4&68)sqdqtoJIPgNXJ)ֺ~CkFnIBeYRe.[wlBpve:W3rEI]Hb5Ԙ6R$%8ZWhnL٠K0!1Bkvl #0ga=r7L8_$~(rX~a*x)Z7cX.͝hץF 9栖a"?nolpOVVg0_?%8'_*EQ}޼:GpJ)ć^Qp_{"^.V)l 1.O/5bd:2r*>"zN\0ܙKjijvoPM~5ȇT`b:Q̼.p382Nho/%Jrsy3[~47 _#/=Ltԯ*l<# y^O%6faƠe u"7Ɔbk#%åR_{g`΂cCm&^ JI2Gﮓtb4E|"pNY]\($nlS8*n'ęxDu&C}&{t[׭bxDIgjN?K{jBANJN#SvTX23Ȏ]њSn=f40~0G]w) ()u /=yڥnעDfN\ô9H\4%5ɮYj.T,FU0ΤLI;ݤQhu.K|u)NĜ ;: b+|[6CƀE"֟w 5٭Xfz*mv{d>AokE=ƈtdO5X7l0𙂼҄gDk?Y ,sӾX[b/vz%yii,91mg>tqO m 2T*/ipqFWa3k-H7^J$\\Яc2#Ƕ1܊<$kl_4&-v};J H%S%NmO4W*oR*؈I`7l߁7~FY-:DScz\{G?Ў5Sdxj a$1{T0ҟiCj0T'-FZ:ro u~KHO֍b_Ċ+c:nHkҧbc<͓u=h㷫ErHmdczՓ5Ob25ORoCdtq*}Jؼ=`kc9@Ux_#ϟ-ZA4E#LzWC hFKa +ݛt![bkN/(sM-S<2JF3Ѹ6H8Tuk,rAB[\ 6 ':l%.]ZPH/KL6`Qv:!V+'"+7fZդf 4p/+Ia:'ɨؤbU{>nU?k'?*0'uOd>pW8/?Ж<"|C/.ew֔\6]<,ʣ掼=-bwid8f՟&c_LG7}.X,⸇k?~qL +n`,Uɪ_H$Ѕ?/e{dZWf-MY\e#q苿'#.r]C#Fͬk! Hd? XZmegyMδ,F. ' aNK%eӊ Sx\`U'Ow]TQ )9}]%hܚ9">bD];lI5ǯ*o>$(+B΋!endstream endobj 141 0 obj<>stream xiX!"ڈlZBl$(EAE&3&Bl)@[ "ȵ rY^.p ӧ㽟ty73VpYSh4wf2RVV>B p\(Pti`I!%+B ተB|q8/>-Hap ,Lyd .%;-!p}扒ތRaa l1mPxSF,, 엂 |ɯL$a!`cވ\[6eE%|ӇY%t= >Ֆ]Z+f_ލ Qn}APjt`jY<Ԟs8R X a~We"e"vzh@h 5\o;eyƍƥlgAk xIn0lqyاJEы<a83StO 5y -?RJjt]A$i>ڸƲa#n7g5o2:Z:Y"x6S2̔{wd=?l~C" Eorc4}ye~ݐ')@"emH~#!J!4UO-5YZjLܝ>_gn:5+:YES ÈyEs3f7: TI|`Y;]6-19{{=._Θswj*+3>/DC$-?KOm7ziYf:|5zuQ֧f>DcW? oD=傡X1,jnȟI0 3dOBI~:-!]gyM/3ZvY[8`[g"Ҭ )l2if؜vD-C7.F@I?#UIov̴ h *G.M|$鶼^֛߷y:mOIxʿiiɃwvz׮|;ع)%~m܎5B΂⬒ě؃[GN%ٵ5 wYb?ئaN5ź!\T9b`l"b!u]ֽe['::FG4Uxݷu燊k=9h-޶dSK~ذy8aOt}MkOzgaRLJ€ˇ!! !/BȖfendstream endobj 142 0 obj<>stream xRkfF>~|  ifPlL33s!`DpL`sJM߁u`qhfT4. e0! !2Qb~I%Q&VD  X @I KƜp䁅-G0M62)1T $pSTq79zC y* A,RNR7ք˦$"b>&EazBݐXX⃐pd$SMPMZ` +&otWF!:T6 6pogSrĸõA@Jp`+ p,pZH@N&L2h~gg>.i5e5GvrЀgtGڦtdݬJܒ2rES\-}Y0G/Vڈ[.}0EGzgݙ-K>u'\S*uј]pOӯW6j*?ngײjVݱٰ &X=)Խ][ƕ~3=mvBIg]\ue }q'zo_ 75mGTZ5&Kil6doz ~&9yo>qwh-_;6%1\ף_uamD+;:U2 晨][]*P֜U!IWD͏ ,gE3a\>*_TʽCڇ'"'IXAG|}}h|-AL{gvzֆGL8vWމk8<\U’Zq_zn>6fGC~uZ%,T8wZ@}[PG$u*okp?P^dŬ JEi#q7CvX/oZblm{r욫Irpu]L쁕:n{^9c/BGRry? r^uN~>v!ih]5nYӏ;>Jmz^R_>|u;sZj'+v3Rr6;cmMG1{"X%ծKS{RB%@Iyt40G@ЬTEzK#>wTqr"ie̝ ZC{ǠiѳrmSD`?lW KB$užlf֮ьU>stream xRy<+*kZZf'[YSLx1 X|di!dD,!ȒH3}?u]sC$АDB(!4}3kU@dKGP@#]; $A 3,fy )4%@@A?*A.;}cLt#?hW_?HcX!VDW@\A7̜7BjnH%̱Y37'I>T HH k-#芧zS+3|+}n;Ym66m)w-K 3wDfNƜcʠ$} ΣcFStGypU+/jpH޴_Nh^.A.g7C_oY%0xmNy{ۧ|QvQKch xu@7~HaUY$|^s~wsFkBⲹ/2K> i}UG֗a\ظf=Cwngۥ=`U#Ek %7)Qaz^"O!Ns_NBp GQmw6]\?|b<)ecT| .HZ0]Oj{ jcYtwL<씠ȡQ~{`BO LŪ^ade 2R0WnΘɓѵ]P{R &%M]M|:_Jn1”дWpYqd"HM -BƷj0ªaiz܋'l8r=~-s+xiK{Bev !D 휉݁g[Zge 2>%-˓T:&H\)g> tE,ȺX?ûJKCQ:0\0K|SyC/1J*̔{+ƭ<15:_ЧY+-C7t:a:7n$+ aL5\݅FI.?me[M 6ڹ_?Tthݪۺ %Z*`ki^ͧѤgxFteb#h$>Rr|݊]Y<"[/T[]؊eB=!z.:sJaR1g(!a޶.$qԊ_KZ}oo5,{%^gbq\q"IGen"r=ZhO{˻ΗN\jmҔ!7w&[ɾ*6/tٔFqdHDžǴKjiG?yJ )FxɣFMRYӊ#AJcMhLCaeNZW ڥi"5TO&k鄕9rj2!iἢi}ѣ&<5T{r8D{h l ܏1^.izwp<\g&Җ g0;_Lͮ됥BR[LԷ2w,;}a+WV[Oēx:9.bI:r<00ԅNMiLovgLpHq|(ʹ7%v[FjgAiߦ˻ux2YƕIBDXoM8$+vGy8+&#VI03.рͫSē;Ӻb-EMݺŦWwG.t*TRѷj&֏ԌL/9$v8%SHX{@%endstream endobj 144 0 obj<>stream xUT\qwM En w; w5%]=Iԣk5=5FP1BMRP['fvv"P Ġw;AN`;??@ l}x0hP;w^$^ 2(;Ym`5@5(vrgY[TP;\,S `6bI WK.`G)60P[kw) U Sü߰ťm*wkb?P;g'@j vT-%#dl ٚ[l A n`S`fl;5O mU]IR?3{QbnOٿf  k/;,v?$mAPS9``;=0x `7 昕`ukV3_!' AN~3¿;07l;`AM` 0p?oC0R`~lM;V`5M0ߏh,0M? ֕?Ʋd@oV? av L:0]?6ߓc 0!?&7n̜0sF +2A`[/`/ƿ {`70ca  Ln.̛(E~4oQj .Z}[JMzOnT>&eqvGy럁- ӗʓ% :}_rT%wP)\҂xxR5B>rRؗr%!X}a\::e?݀P""B0Ex72wʳJY+;t3K6]Sm4׽ݐX,#;i3/ԯy38Ƨsi6T('ap 2(f*W`Ry"nTcrr3C/*74˺Cܻ8'.X} G^jQaa~+;CAL'v4&֛qIuBǒ`S{-.3<,D2nV"pd;1d5wpq9Q Y}Xuz!=oŹe ƨUo˼B| 0نu$cϕZ/** J jFNLδKqa~C4Ch;Y.Gsz7YCā^ryEOX#$t' $q8?🵪iӱw窰4qo }1ZZs|Ѷ&W}$ c)@DvӜ(A"So O"L)J_qNF,/A ¾,8{ U`(WIl=P'ƺ1[^\%U+h|1T@;1>SX_xw5A^/7;ĩr2GR+Y$Vv}ʸ7s0 cSp7hfȘH']DDhX4XG Ȼ*/ٙFzixnjߜEA 6|G޵JKH'Θo.P [Vx/D^n}Ԙh:4 zZEK&_yG\]<- %@Kgh%R<]L B}z4n7"B_}@ii\LP@4?ً*#kp3oN~pñȿy sN  qG 97Ӂ>?u #2Ư `%him 0lß%)D+sYJ_M|h&-vިAF$w ,td(g=Foh S8e0kV}|9@]YrKb=aQga=`e)R"w-^/&FY۷w:殳x nNgf, w u 雭sI5և7G=mUn6A5x;fdbyD#>Dҫ;t]`mu{T#2v49u?XH)PU2^,r_em. 2ǶƥHȩ ^+) % O 4F nvŋ}3~oU<︚|tR7]:P*OYҰ][8yd *Opݹ[u\V  {os6˻opX9 XNsiŽ-=>X DoeS̴x' 2oT+ @dRczfdFchRfP8T`xRwi['|Rvxd c5mȹ[yj>'2fIָI6gD2!2Hc_Y\!8K.w' q`.컁 2%-6r|+|j8&ORG/+}/]pq(ߥ S (݈Upw_zFly YfPp%ni Р ."y*c=.:۵Aː3ܒ]\g\?fb>$'v.u ^\rrູ!xt\!6ToT$^$5EY9/7| 7+(zB!&>l y;bl͍H_A<$wCB'@^x}R>f%tp &4 u?DoK4sAg܉*iwԫpFD\Lē0Kr107jt+>[zR$ 7 qb<]j %e#/ OMC "w?R"+%ґp+FN_FQ\$lT`ࣴGtD0p.KЖnIvƏ^);2F|(@Ӹ(af49૾"bn zԾJ?| z@jz( f`d3%0g/Qțj=avo_{dY?1ͣ7nyR!d8W ~w5-3$砉EqIO8Tfk<-Z^shRǥԏZO6 c Zrj<>Rxr_s(ʥcN$ gzSmҽNV6MD˭~Į+]%4Qk=oX)DU q>&TC:Ty0{*`c2ÿCGe]L,|/wP<-FDBS oKY2( pde *e{?,?Ic07n Ccߤ}q?/?ҧS ʕD~S33Ki&Hn$L;Mo{E0x`=\h;&zϊï1)>{or5_ۄF{?"LF ߘkbE͢v6]CԮaĖ`V=E2HfB(`yվ-deV.u{d=S z묘:i±?qt_&&RӼ9ӉOh,>EM')/Qsdͷ\޿QCj!,OzхN$`m͛3Ueq:eޡ)A)1BpY@*ꈕD̜+y;+O6Y-&XY|+v~QXz22׬.uq׌Gp {6 )k&]yLG u^3گj`uU̡ZŴ_+NqſK}QU]'9DFд/K֑$6y+(;NIxn RȭXN]K=L*( q׵.=eÓVv6 '\ZYXg+~$&.(9efNUûg`-9a&G2S_jIu9sV/-Vɱ~9/j7~#ideRj\Q'q{SH}Qs S'1h~khUC-81ӥЙCn*ԪBʣ:aAT_㞬sȘ {<@>;rqa̴g&1/rJ 'dgw}2 ؤ.9ES|=Ŗ.SH'u'Q[cEG֤';jϋJ*G4pdL͵c-I kcy;G"Jà 'dQ,*}z AH`kX%0ɴg0%Rn$cQ!O/P^+tE,PB.^{]3o :_In0h/h4Q)Xx' bwŶ ٖ:lH,=ъ($E~w2ZtA^;nQ6ccG`.uxbr@T*p1(PLį9τU+!!dEj[ _%$Gj$G,%uk.MyR(:7v9ʇ2XPkT} xEWؒ-fه2;>C: R'1^Ok-덳kaʶv퓅Nq{41dB_$'[ {o:ZDza⅟ tr,tHʻ 9. k(et~90t*N#*+ 2h>i.VWȄf(/QX6iMDG}ny~nyKЁL_gS}_K"2~K; FՌs`{chx#ߠ8XF# m@Tdnnq>ti)>err +cۉy@CaDߡwSz,ֻ@7n7p)pW(!?ifbعtӘwۑqIja{o 2{2,.׈ApQg})"T$_JۘYcQv5}|rf %J~9ErUeq 1=c>ܣ*,B( ܁e++[٭wV{\$RzQ*k^qԢM( >^i0zǫm4vb/\{eWCFGNzX0+4j҃YUr^SV'r KY'\k0[Ȑ;ccxiPܧuxU<G']&% 3X}؉v.XfAEn[&i/%WE5Ua'S9V5Y^Gd{2:xǽ .Z ̧>5YhNͲ?ȃ$쭨m@7-H3܃TH+8*x6TDȪv6 !he͍om"<<:K%j; 3C&Jݼ$gG-֐-<2;YJS6=a3|зqS-Ж]zԖDm>Oc#X_Jv[;*:T)Fpѩbs 1qu)d,pXnmYkլ釽mob3D8N^q ҞK'3Oe SX эBնjN@G=`ٴfJA08'<eDyfYV{c║Bh҅ΤL)y.,V֜;}'?dC_>sTJ'HVK)V>6淡n }:cT)s9o _Jla1AUӌ~Miܵr9Ӓr{;ϲ(SܜQ[$3Hĕ9wFШrdg׏I7Gk"5Ѹ0_#WV>stream xy q\uh=dveT`fzcr["OY:[[)݁/![ܔo7gS 㷏F݃OAҫR+Я//x ۈfC6I:d)N)?EH _hs%O0 -Eb[)]5"B dRwss\nuewMhCy?=ffzpgy"T,Bj(JadR1+wpOװN p ٞ !7L6v8z#Я;.f>j"jEd}'sRsH]Kn_LF/)Z91hw 9|->ބ9w;mעvIqzUNxh\QpG'8yuƧz)fPKfO$ą͕wm1)&]+#RrwԾ\(vɭ^J Nl2}C$i͚ ,$T kVZRlQf}tLmq+=pG9egR๏/+[nQ KqavgVӵ br` /M}?6k6 ᯍn;o.t-[UCѻgqxB3,V :zu;2:7_MA[Rځ#۬X{LoȺt5t;4~z%l(}W-Stf3~|$oBtrbLƤm4hWoӸ0{Vç_nexPl<*(@wrj o'ΆT\L-aOe@I{y,^& ZKv BAZ?֓#NtJiYBwXa2/z%?]¼R ԻWY.Cz5\Nk0Ƀ/w#3s*楇Wrlj) {^PAQ`k.ȽC2] f= B,.4C{Cx +W)m ƿZ|SgK4꘸uq6jo&CҚVk=k#ZYi3rK3\qXzf|e-}KTlopv" ۍ aFIB"r༢TWkHu$2f,pBݲbi3ޯ{[3j$ $훙.-8@''yZߺMX'S_< z|}Ư߭.:5j;xn-y!HO {(P7fǚ$ =>1jy&PeHO{䟻z ᵣ" T!xPq^;q>u9Qv~D=gAHR6P3w} qҟTgW%3i Z(k3BֵB;/GZo Cu<)k854Ul (+wUH -#?G;YLjzfZu=) Dg $^^l5l2MmQ0`9`*p )1zDf4e {v["ف[wt˫ܽy6PoC2SBVTmoe7ֳ7[.o~/ L =4Yendstream endobj 146 0 obj<>stream xRiy'U r@0Dk`;Iӄ'xjS˷Swxt FQߥ&/X :]D AԧV##WLSǓ׺Z Թj3 ֡z ȡ(ZNbWJ_]yhly|േߊu$ԈGODt)7Q:uR,. r@:/3#w5q#Xjzx>eG:}=cmJca22~y"a<:<`Bl@ov`_h΃*d!6.u7ëİQQR{󮋖yԢԣW$xs+Jorul5-s)B}ۉjvVS\yw>'elcLrL*ƋY3QIZ'zm?FB,hgd95~9n?{:Oq~=!0[n'V} i:J S*~m , Vz/8 u]jئ4Z|ԩ$ū u3 3SZҷ~hίi`d+\tܺAH4izp~XyG5UbV=FVW.E'D4|&mt<)t6&;:kT?(9e &J=JWZS<=U-MG)h<5ץP9x\֬E6U%JnwOݝ^ eKe{]f~2 ԨJkKŁ:MХkA鈴Nܤ9|N)!A[;zTbb2$&nixfᅙ(-wBg#l(iH o5EH}\0^Zq3"'R&&رb, DZܼ@V{#͍I.֗*8_eQGL0kiUO7·4Y=x2ְ1+q^cÛ*FW/Drx%/TΙ,gW[8.9ظe^7XZ1m^rw`+:BuuJV%sgQ~><"|Ģa ]ݹnճM1Q^ m"9{hQ\]/_/qP>`xhKn׵pp<~[ 02MB"{/)\< [fB@*ŧYY?%_N$lvD8E93[̎kMM媦ik̴/Lˋݳ/V<-'MHuMS zkћ֙R.} Y}Ue ^Ƹ.oSqT  'Z&Ͱ3x ە|x,E >3fO=/C$K$(~J\qϚ1MK^>8}*:17L(OA.X_˜Y))tdqW$llRd5}bUdXHO/G^qvkɇzYOڅq%nuf~VHRk5yKp ]e"^ܟX>/p:9X>*6{G_,W/y_[rtɛnмECP푡Vi]Rwu~z6Pv"ӗEN4Pzh[dH OS{An(B5V,@ +`y榒^Y0Mշ g(Nc-ф;KaK`= ^D_g5cIAQj!M#ӹHr H:*䪻Q"Pi#vyqqꬊzX]E;ԁu>stream xSgTmĀte(^ ޅBBR,*M!( R*]CS{_~?uם5k>gs72UC`ZX ^*U4M*5pH\ T^^B:?ȏHzP.x@HC'IPsGPpЇ]d 8 b($O PC'DP' iId_)o$΋l eS D`1h?t`Րd/)E@ `?6?0w_X'ۛ>"3Qp5  @~C(/-/a]g Gb4A/ Z:LuE~Wxpq6%FߌvS}ֲ4aܖ֥,#+fsS4zhJ JAGFT\uN4̩,F235.8`fΤ]',vY?C;ޤK/Ve?M;H8^z Y>K<ڑ&rϊ9?MKJj?q+͜K-硒p@PMW ԅ 虚[/-dpdTm6UX;>}3FAq,5I~iZvptHoignS*Y mmOl)m&#l p3f맓Njkt$TW1pzP!=Eu8mL}V;\KYz) +O -9,Lë́ӲO%!9U$pq?m&WggVQbwtuGsq0W{ G#-AWivqީAxjub: ~gs_qML ()ly1b\eܬyV(%W_Ù>4mJIؚA˅Ebxy 3tWc+OW@NNƃwO_z]H h|*#.0/z=ƸQ|P2E>a9:џ~:C]VnKT2{\Np@\ O#SBV$b>\OtrW8EzG-tR= &|BU{<%>0NX]%]kS$BW?i.~r/^E1*>Y`C]4..s [wiͫ8.o_>!/n-4ZvpÓwAb7Y8k";2B4O} L x >ڡ6d6{?3|TwGӎ#tPE9%f{~}SnF*jׅ#a mqaj"0آ)>Xk8;fKsN)MM}j$k-T uJѝsZ,U|2g\>[JG]iA k 8(R]d'&V8&ovz]n*fw_W ["QhcE2Z))H7W܃OO䷿qh V=#NDd(|PԳgnZ77a , BN$8.tՎ1.S懲]R2XZ+GvNKUlxaOuV;(qD8,8jf<~>Bw+MR?/@6Ww(rF#@2,%4N$!ysnOsR$Y]]>9s}GHvۃNwMf*1ԑE+/SE60Q;5_2ὙCƗ7z%ي߬`%g>,,:#|fU˄/; cO;ԏ~r6:!s 8ViFմq{/r+u֯dzԎ,fgySBC".}hn.貖[&M*GhqNӌ~=캸MMn2DMpvSpgdxD]CZI,Vs13tcJ &;Qc yk 7T{o.FPqav[~wc"cm 3s7ks~iߴpٸub}/S=on+D lH7k#"fUO /[,S"c/G)sߪզbTruAY*k?Jc81IMo6.{),A8]3u/No_DZ=2g<4QdqV!<7U DگZy<"Jmm KvjeR]EY}{L׃HѴIfD?cphEv!Ô 9OA/cf9}=鎄ݺz(TkRsr[m.jVGB՚IiC&Ϯ* q݌k 6T:Fe&9b1U㣉䑾uC8(:W-7oȌ(2FHr_ǹƪW)#ssd[i߯~*eUJYF 5ۛWJl~+¼SCKeiGV/ vJ{^ч5T{%6rVOd!*c0FGKx%K ܅UVקΔTU15]IA K;5RTĘ.em6-忕81WD'az!nj"|n/՚n3SCMC^ rXgU;~60C jR.6KYu0_ZXb3lN!zaoC=YEK_Ihӣɮi3VFArmJStF5Q53I^N8s UR{EIeR_qvyUS06'M|Tth]~)M j7!6P7U|ijԪ+2b-RDP[b6w*N֥|&YC9A g+)#9oy^ZyI=ӂVP)`md .[3L8Ucp@:lQ$,`%p+#xZj[aǸY%k,ÅNMx_ )| IbZaDnzF="TҏD0\^?!G#a8</f}endstream endobj 148 0 obj<>stream xSy`bcIk,Lc{D%0 yϯ;@QT* m/B'9)4ך`BI2 oV<$Zɨt"+Odt@/ y?xΛOK3M $(- k x g z}/D/FɄ:<=⵲X?D 5w*F"P??<'X/;O߄ߗА8hDjZZ߄8:ʛ{[ş' qЎv nOOBaxfȁY|UN!`[t f=_pˑ6퉓˰.%y fS)t[lTeu+oWZ+6t]1.,&v& .>)CЄp;-̬a&Q;9zSؙQG3dm?PJƘ\|4tT~QVta!hӮ暰SrkߣnUF*iXt'd. \tEx}0Vڡ#HIBV/-3GAƋfSSU"2׃0GX%i,ωTw )X=櫚W:er 彮Dӎ4}H*`9 ;qztۮ OYͲn&(tی]OI\Zjv o@eF{z&Q cY\ΰs K9QSU[wUpan\75}> EH].Y5~w@Նid+so cώ_RާNԒuM-<}GEm/|轪NqVSץ[l0*On=͑@iɁ%#prg̹وO \.]ܮ^-zg5I: 9:D{dж3>`ud.>5ŗmo.S=wr웉9vcdžc2y>;wn+#YH:](T t֋m\:A:_>Z2W,?_: y@]^pxC}fe*ɹΰ}w7Z_{1{kTpяt5H>\LE&x[D̚mZɫ%6LճP/Foʳ"ʳE%׈DӹBaFż1OF y0wuC`ƋkQWIa™MkUUAnB_c, ZrFs{{;h}A?E$[V_Lnك1 qurw*f7Ӈ=-)7n*䘴> 󍚯%3e=ind׾%n;w*tAx_9(g➚mxO?tpYk&Q!f@5cx(\LuAǴvNmQi=v!#՞$&DVc^9G !鄎;+$S+}+I_<'BmY"9jsSw*'^fwTfsbocޚ5lh*Gي, ez̦PiW)ɜCr?^V^U)wfs?ڑ--:|p~bug> endobj 150 0 obj<<>> endobj 151 0 obj<>stream xeXTmKzRR3t !S H) tIA9}+6 sQEá p."]й_$t5, E1_I#'g_ 7ڃ6`B!B7mtA,8LJ@2@ !]~ԏ`XBn( D Cp  $\C  P)oH nH C27$0!Aߐ>!a_$AP~bҀ 'V@_0p(P? ?rQl.(tXͽ%YKʈ',W0P^Z{ʎk2~=郎U_՜Vv˽}4q͋汃2Ć#siV%ov{ fxl|EYjcxLhKޥMK8;C\d ݇{1yA7pI-C*19bfgO:$teď!/:MN(c]"VZlUjR\Rhҧ^|qv6T$º$S.S}WmsK+Xx0-Z5e:H/+q}Af29P>QOק}-O2'\̝!BoeռU7=/Gκ^ _:,??jyx!u] wWTt#:`<:QYzUc&Q~rhi [+ =yUζD# vxr{ᶋh*!;{}cL!QىwiZB'5Qޒ5$K8{.'[Ⱦ/isZގjgrCe /ՙ `t^lc2tJy Iw(5ӷ6aB{.ܳSE+W5*zXqܥgG~[A ݤ܈R7Lzɶb!}nǾQ{$!wMbQ9} alEhfޤ< I!J"Rkx4yoQ8/urJD6+|jv.~𸭬#HVi^Fx%fK?sxg45%V:"%cN$I%]RS4|"찝+o(4ջ*%q'QND1j)T|y!SJq1U{eZo:DHUwGAc a4 ZtJ:/w8aȆt+_.U,L5B'"=n+uyQ ]\ !רbȱZ6۵4 EkwE[߇,;սJghTa 7r H aBMwgz`r<)Y$Jc)jp,9neVIE;ZoEn\g1q[]VSqd*@?,uq&DO]V(nHӎA[>!VnC2'YZi6X0I1_':H3ʆ_8l]_\}sOȶ'TY|NuG}d,ꡗU7BO*+"[\?n=*%ONg|8*N'~ŘIZ_&bh40L~,vM9nuhN)=wCKxЇݫI:=KOi 8t8$St([6c/ mziqk zHFD3cpi 36]̩U}:KDu65(?s"_Ck .c+wΖ0K^Ms9ꇽ2 ֩-2/DV 9&ggŹJrܳ5npyD޺A${>6VD$HqeEm}`#d}ۑ=V^A؅LpzpCWu&v ޑ#_ԛ<RW(XڕBUN*t^fN([=aHk7V07h$uZ^`͌Mg'^аd_ş}o$I ҽEEhgG`;bԖh?gu1LxM:]( :m.E(‡6\ݖ9SHC]Sꪇ,/2vw|( +Xrc)x5#+ۛrcۖ/>0e` R}S7s|7*ZOxmYE6;sb%JeO7ҥ=^ZU$C*߶A B/$-Y`}l`*F8/= wsmVtkiH|ь.Mv|0k_G#4 /.C0)u |@1ۨ"4wn֝<DPCǹy2:TG)-ĻO\e,'Jbٺ-˧sOr qdfҬMm"cϙ5Hߌڱ??xS/M_jϱnVivW9U%J W L>kRm6~fC¥?˻oW);1T6% #.IZNkLoWƱUZI!MJR(Uߍ>vcW=_$)qXϋuESf꠭Gս݊o5G2|gek2ۘL-І''\sXfƋƹwc:*WbkނolE8:W@0oKglf bpM񌈠5 {BibRJnFv.|6[W<[4 i 1GJ;YӰDm!XPj(m.>w FBzrCcDU/4(Ls?rnmrCݜh~t|ʦs>.jEͩ8tiݓwIy%SDQj8ܼo430Ho0y}U2,#Sj <Ŝxl)MotWt?+-ҫP#1u\S{V_e7=>Noll'qG]W)i3.q-tƝ3ON /V endstream endobj 152 0 obj<>stream x{q-a5ϥ+3aҀ[=0MM^~| 3ڔHŅoX!-ļ K?A Shc ZfYGrw7H f%f7O*> 6_ݷ{Ok <*e$/ ^04zDKl6b78S$ :pkEnzZI14 ^]Ǽ>8c~GM33Z-9%Vx^qnk|6̪ME>WXvùAB,6tu(i,HMbN FdkӏijW/+bu}>-Kt]erκN)LqQ*:ZZr#9]q^[dێX¥/iجmY&ovOQ-C@iieUܷdN2~K%W6 eQvfǾO [l̡]eї$=E9*,v-l2#!4 FMM AcZ{T(k:44譚K2'-d? IJ\o{]-.Uz)ܪV#51AȉK@+,?ytӡܤG~tg V8V,w!扷Q?iwَ>| 0p1JJ|9l >0W9=ՄCMc-.Bwܖ"CoeިqFD*H`0!'M1E+endstream endobj 153 0 obj<>stream xRm8T%L6!|L)G<3gfk>3l"H|tH["RJ7aTdM{qP(@D,OP&|P["xBR/dpAxHr@!# %bg~viC{0KD^]?>ſYPUa~̝,|sͨ \{2%%^\E56+9h, 3}cBtXw K tNehv^i+[1eVdj=Ζ ݥ&gZum f܊Y/ {%;z]y?:tYE-ooy4%7 >̫Vm+}]vMW"LEbc4kցe&Dƽ^~X/ |s,ye`3p ݝׇ)+W_ [֜U!υ+"{GS 1~ ̿hH~{ *v+\<'%e9C[S=։J= [ v6[`fY+?ftkOV::'o/eLom-m*|O@A+j. D*cIriMy<ֺ_B(?ˁ[*-;roU]XF|ǹ,ju;8u+mc;(uc Y*OQIztȝYὔu+_1^f޵xA΋f.'.IKIo-'pп*X# U+ou2ƚ<4ʴUV6 xljyߑ[#/7,^fF;WYeV0 uq zPn?oK+  %eܾ<*սQ?-gh/oo7<1VMI(ɻ(i8%O}@>ڰ[ߴ@%^#q|RчNEeK;TJ1ᣱ' hD sc"rç0)?Y\s^ceۤ^F_"7.kʋZzZ}G({5oE-@׳Q"A:kU-t)h%^ SEʲqbgi{:Ԛ׮MfUNq_M.ucǂǚ/9do*/|Yc%.=r6{,6yԷOT;fE:|P1:{>Ywssc_^>Oq7:p oƏ .TT<݌}'X NޣH%Չko6hƥj9podNXoֲ*fQ^~Srd;c,fĦG?1:Meraq ~VMFHZͮ|Z)Z{#O !ID +Z D endstream endobj 154 0 obj<>stream xSU uLOJu+53Rp 4W03RUu.JM,sI,IR04Tp,MW04U002225RUp/,L(Qp)2WpM-LNSM,HZRQZZTeh\ǥrg^Z9D8&UZT tБ @'T*qJB7ܭ4'/1d<(0s3s* s JKR|SRЕB曚Y.Y옗khg`l ,vˬHM ,IPHK)N楠;z`ziCb,WRY`P "0*ʬP6300*B+.׼̼t#S3ĢJ.QF Ն y) @(CV!-  y Q.L_89WTSQ-ҢԼp: Ԋd[ok[Y*V}Ο'־~ bG̔`y%K^-|xE dE[${z,^k nW6wMpa،9=թsr y)/~V$-%)+2W}~)Snʞ6-*Аbm?k/H&gB;A[":SZ}qMw~O: 77s7;8?lj9MuLWŭ94͟N>/rW7Uj{E=ۙ^ mWMXZ7_m]ToنU]0RܭboWd☭znڶ *nnd UDU+˸RIѱC&N3.0G߯Н69# 4W쪻t`j7nߎMȑ:/SFE?O.Ut[ڐJg_,]{RP͓nj-._alyyȗVk&' i=81wry_€B5j0 9'5$?7( bZj0endstream endobj 155 0 obj<<>> endobj 156 0 obj<>stream HTiXS%&r!$ps%` TPqeG+K"K aQ NU( b"XEicj}jυ>3ms9߇X"Y)9+'`cHoPu?,i5\v\ٳ0tїjU*:+#LIMaOa*UI'l*s54:_N)T*h:"'^1W(5JT)t:EMQgӪtzeU 7+_TTy>ZeW+tV]h[@/7}"NS+KOJSN9.Dc0fX&XlKJg=4Of.ZU={œ0_c^lnTq 2|px"fzM[=[[nmy򃕅j}V[lڴ:.-dG;3;.Ԯ^mCHdO nH-yQ񂓓S1Z g+ B0]O4CPkkߩ*I8FVU*#ZDiӇ%v{/1̕,dI$sܛ<Y3J'=}=y-y2x{ϴ:s3"Ǿ%~Y+4qdYYkYl<0 0!pks\ j n Yr(||?Tk=ܼ:1lsm /ggDB6:R&*1B—"D=8cq't|^Am F `nģWR y odl8 CqTاٷ9(fRɛx=rB,O@ >tv9ɾ^D>;@?<)8$3 ~9}AJ:'tAxFOG8$2ڷ" ` ӌ*N{joBO|C*>E^xpܕSB,a~̰i.n8jSsq&XAF 1'x(.~kD!kojQʵ1߅w&|e~Da?w.aށ-T/- ׏6տ/cbtN$^gJ9 q>)2.ZF1-Avpxc)Ew ^w$^역+Y=]UI72{/MQ΢hyrMN\jWa1q~7xyK _hjmP]ZW@Ù10¾όݪ]Ygg rgPv1fC%aHad9JBIrH'+feSJRhg}RAmNA=dPo@?3^|Nlc6LDQhV#"|$Q3l-zh:6mѣ0nL4!VSD%ůӎ{h񤴺xL[3bbv[*^w9?d:o>ey\Lu7#\L< 3UTqǪEDˮy11rdxDlŸ3 6 : soF 'z9 jTQ0ccB߰;`9kXJ rY=X|82_4apٮҨ(,su39g~̟:{wj~~c05w@(vnC.a`'>#Y<)gRU1u] S ({wU|1|D7p>(Ǔu6=h4?,lc%䦘*i00Fa8Ɔb\0*(y`T<yȃ@82~LiJ|s0p}ΰ+#W>jU/{^, &eٽA.GZoǪ6&e꿙xzLLGSࣇBXs0Q@Q`zXHLxq-LvƏ[u>96E _0ቡ/bJ`<| %,=SΡ>hd:Oʿkk䎨ށVF`l@nw C &Ƒ?v.cf,׌825$ nbw Pt Y/i_tpװrE|&e O[}k9NVSeSO B6PlYa?8cK-F޷(ziw2!c lDӿ1.g/?ڮo$ů`OXE,(*!إd7`.4x|Qz?B0C9l]*s6Ȭ<^VQ~/+/*-o>p>3?H$ AT7FHAkeJltO 4QBΦPN7*ʨk$KMXZJ.wZ}h~5[K-]WR'q8xT)+d0_NFxc(a"̦h4 ޾+y &Į>-T|G8]̯ؔn+J_(rNksCe{2,_9Nt)0UO7^8*(a[K s?nh, P-wI\{rnRaDi$h윇S(NAbHM ř}& D "zJBZ v= U$MVqǠT :35J%U|~woRuzJgVRzmF_ %8WS]iswut-QM\YdJ؇>0pَSqnhj@HwTHFg} s}ڼlEaAzF]tȅ9?wp y*~-տϹ9ՙsABF'W @ܺuֳ^erxʮw%$ƳFYȤ\[^ښTVorҶk: /]g~ bS0٥ga_?ZX+bU%i3Et\ ]+w!N ÂQCx)l3~\tO*WST[rFԸU@E D;pPN?sJd'Y ʑ-h+G?TWyTSw6Ƽڢ򚜐gs :RC. ,%(n,G6 ni *L&Zslcn3@;gz}w N9=(_/kBrF@5i[WG$mI wQۙGΧp5_BLqXNF!A!Tn"nw= 687 E0MjuMg,d(p-^INn䚖dev*aa( VhђنCyruX}X]#2SFXE.4deff@u\E|%JO" t7@ )r iV "K!ڐ686&Gi'$}t~)&,m`Xpdm8**\% m"x 6,. @@a=JQp$:i q/SGb:gx/: OB a.Km'|P$|~-"ۧ' \RLeWLN쫑yGW(ߓO=&%GZa,,u:nc[Z6 gGVT¶,2 E1Q}}~(a0nE*88MB2DmcC|Tx|Ё$8> :-pJh̖ҦvxUsf9 % xmLLtIѪa(kxqeR,mi,WDV\!K*-r\2Cg;,X+ٝtՃ{Ē?,(Vv .R0.w"ێ22×Si2?Kt8:bjRW\Fz}WX!@KǪ`H_nل+h&L}[}0f,f 2#TH|=p?Oz9&IWn%<313$8G5MӐ~9$ofK9 e%b-/ɍ`p~Fnݢ}bG{e69ީ OIvɳF9=,6_ď֯|?1pJ?N׋7MK tIu6UC&{pvmL֓u{"9YxRlEIV:Pw+zĀ@Y4|iEF뙈r`;~A@Ço ?IgyI۞ o%-h!IB7ij*fGi(^ R'Jb_ Q]BݿKTc(2'AEHQdnl4Jt=|%)qb'vVN54]bk/ TphMJDSYRxHxq}|> S&w2K+9E>b@fuvCI={ڙpHޛŷ{eǿe-`i!0f~YPk;Va-Hs\gWzb2=wMܩʊk (Xd&6tw*7շAJ'ΨE#3=ʏkZ @Eiy!p W_pęsǪ:xLB<ax@FTWpz`x7iگtS[s鋎~0յg8Q|}=az; cֱԯo遅@ z'SU|UtYqkmwxĔ%lUX F1|7 \/0^=R[ۥ9._&e7)?$UmG)n>߭aӞd%$Q.qjUbJ^{I9+sszfg FI\]ԁHvsB` +̥՗ߔO|,ޔv2 me 31 b!$$B 1I(n^udV$R[Pm?18ώx2 s7nPE?]6HN_6HBY@(8<"9$XgLK/($;l.[EtvV.9S$~KPKyEqqDZ'´NՄ7⵺HA1PAAeP9k`!Pd#܈b]1֬}MVͼW?K,6bO-HO }O.'4֯کwR_ߒk8"Xhs{Sq1wIDPA]>SSX̘G^ֲiZxVh6yHNl]x'UeM$'1L)>5{'BSX8@ M՝NsKSP :'7كE}VL q5R L ~ Zyey["MYʭш6Z4JDK2ϊV)$q,Ol-M!+̺% >(uɀDȁב?a+R5\S[]Ѿ>L:Ѱ.e%rItԝS0A[rɇ\$M#{Ght2Q_X\xT'QEW#eTF&T>l^#hP52_],Ⱦsq La)/.0+1UTfe]>=̊жp~$:LD@KؘHj$l3DLE ޑ>pWFea|qꮊ+3|GV QwV]=VyeT9=ՠp8$i[uF:T9v%.edˣwJXRQlCJen6ecTA쮕ƽ^v}7ծgh"=`'՞#XB]%¯)-NL,b;%ԥLcev~{>`&@dLch:舖+uELu R' PTH=HU_,և Ɯ>7g:0j^ $" ?U*:BtqyӬ hKWx']8S|6zlWqw͑z%ot7.ˆ=j;!<l9uR }.XahcgejsII켲<1H44%H&o҇x?:+XULб` Bjbk .M55K/. _;_ˉbwQxdž(Xy {.mNN۶9uvvEAHwz5,,$YZވ/M7hًeO$m@A(aO(0 t*Y(dFi@5C(Z>%%c313}`*- %=Eɚ3~!o.A,f"qo<3r(uGg#uf!&&n<7 [4ڌ!r n8k`@4 uj8FF &I8d#?>=};#~\+c~[HmV/8A+hw5: =r2/7]&S5gpqs 5͸ޣg_hȿ+өϟ1EQL3ę`i( g<ĸqC_VJ o^Z 50B*+h_Eհ-@B1č:v؟iCҽfuMՓį%`t 2vh'M#Nf"_o?6|Hs:m{-㛷]la?/VoDHҘD;d6 VYNyjs#`jv! s΅S<B#\IL1`ӄ-M]sƘ?bS_n9ݒnEQ7Me%LZ[RvyQz%'-M6Trz&t{T,;u=2ԙj4IWoiP)haEA@]@Š.Q K"P@E@#RFMzN3sΝ39{V*qYϋX@22X1 prk4!}/gWQM.dc }$K:-&K&W}n\YNU_[X˧bgCSٕ8WΓkŘ@HK$uMCF =D\}42B~J]nGHg VS-QrG:GX V(֦k><-4\Y." (ERP@w\1d]ܼrsu>?iES\6\le;æ6ǞLKv8d'/up99U !&xl`r MB8,ư@g0Y͊\`}?yCh/g RR)$l)87~YUI8Pd uQ8 "W. t6:.kz`ʋBg6p}\| ̐H,O-Y$P2bWyC)qpR|.V g?粠rVibj\]>r:8 v]Ⲧ#za;c7 0HDDLa4{44ŬƬ}:X;mYpӼQ ], R-$R6>fခX"u/J1s }̞]qPE ` a]XrY٥!KC#mi{$];^,;⥒ 5ݢhyWhy]YvQW@XUxHf<7'ha9H23<sa'^jI7/ox<* XNzx XfP XuU|)S}@r믓%r^RC2](;B㧱D? zYW>y0_.@M]i zȒ루`>1յԭ RTT`P$<|*(` Qk")0{3{j ,NΙIܹ|LI\&A7{ ItkW+[OpԵ} H`p36jW?ijrڸ'<'W^Gc5<h:#;PRZZxTR(K$b.Lg|ϋh>Cy7h &^zԀ2!# S4aU`jF*RVU]/*/ɄL&j?`SP*,یZ*,8QsՊl"BvF̯ %B^)7le02QyY=z] {bNe;d@/;>gЙE*O n"j,;^B\X<dqx~r6  N؃ 'DgNw 歗 o}U-9] jJpi̓ ]6,M =$u_-tvs glx #a'X\uVpnmq8D?v_4c5NT|aQRbZvHf[<i,b04PU sؕ rSB1)@.)vͯ! &1%^uz-߰µj^|ֺhj!m .^8}^Ow<>SN>]K~zaxRV*'u^V!OCs2xV ՁōT5DA]8EJ98⁜ĜZ_^T(oDټ`X ]e&[!O-GNܗY $+Dsy%".d-ﵶS1uTTYlAۇ\: ղ_D) 1S?`ˮPςNG*T{NP S~.B{ȎWiN&'=s,RF`x\/WqWs(p~2G-?DGRL_ŶB< p8f'u τ"jTWVm .E݉"Ĵݦ4gpUvDzc_XhXc|Jޖq~FhlVEm#aZ&yu~EBo3$KO|gY~ۣd6D0g^Ҥʈ5%A05&T0v54/FX6j'-R7I5RChGwnWT4miN͙`A{ w*嗈ϕ ?ioL}`Gq0 7緌Dki"!Gx޻C:[~e49&3+Onc F;4n؃.k`\nI:lsjf@]Z<ρ06fS̚˭Fߛb!74z.)D){B<ⓑ@Jtw?a]&r,VJA4 Y_>\ҧuV{>&&l@<]~!7pf@ Dxd^\:)mM{5XAsAiLCrpsxeTߴ!/~ u4Qme؛톝t̋1(SJεjTWۡbїNxpLQzch `7Rh 2GӒBBqcHf̞K{zUNy5jv<( G¤R5vkluVu 4ppkAŋB0.&ܟeQKV/ NI}+n]RZ U^_ {;a',ka'ɳMD_xK5\#$3L*On[aode,z:Yppْ;Y{?c[G2sH)ZӬ'>4:VUsiI.^iza6uygp"1ާ\aQp ::v?X P1=Vj{tam5V~FLy{F I!UBdrd_W@E(Ba>2 Yg%EEX!?ȢEH40wShX-7̰2 o(9229.<k eʳ򪼆z D;i΂Qڤ8T#o޷1ߋ CTƘ~$df ur c'C[-uTf]x2ŲVl<` 2ʚz<0l{,E~~-y*^ y>ͅaK!];ߦb&b8ۧu E8\"N4W- |%xN\kH",mP?G~uie7KqGW^K',zA_?&r\( s4yVL[m,XTUv=LRB#}EAu yuU\Z9ܻ`3uGw>c?O0jrC [~D5sxfΡ6"3|_8ztt prt8$G('QmBVn|wyߓJZ9т/_h(F1'*5,FU|7$-q?RF%'a٨55KRAAc{k4Ԣ?Tw$L@> ηqR5ڔ9E%dz9!_s4j9P|mȑ=)zѽUt>'WvhvK{6KnIJa|u*}[ y#1^rJ.m|HVgg4yOJ3Kr F886 x:֚.5i̴aO,mWMendstream endobj 157 0 obj<> endobj 158 0 obj/Default endobj 159 0 obj/Default endobj 160 0 obj/Default endobj xref 0 161 0000000000 65535 f 0000000015 00000 n 0000000143 00000 n 0000000236 00000 n 0000000726 00000 n 0000001289 00000 n 0000001790 00000 n 0000002303 00000 n 0000002842 00000 n 0000003368 00000 n 0000003845 00000 n 0000004347 00000 n 0000004684 00000 n 0000004759 00000 n 0000005480 00000 n 0000006107 00000 n 0000006755 00000 n 0000007361 00000 n 0000008003 00000 n 0000008649 00000 n 0000009292 00000 n 0000009881 00000 n 0000010110 00000 n 0000010198 00000 n 0000010354 00000 n 0000010510 00000 n 0000010670 00000 n 0000010824 00000 n 0000011322 00000 n 0000011714 00000 n 0000012106 00000 n 0000012207 00000 n 0000012252 00000 n 0000012327 00000 n 0000024238 00000 n 0000024467 00000 n 0000024621 00000 n 0000024766 00000 n 0000024908 00000 n 0000025051 00000 n 0000025199 00000 n 0000025347 00000 n 0000025495 00000 n 0000025642 00000 n 0000025789 00000 n 0000041511 00000 n 0000041586 00000 n 0000055152 00000 n 0000055381 00000 n 0000055456 00000 n 0000074070 00000 n 0000074299 00000 n 0000074447 00000 n 0000074522 00000 n 0000086324 00000 n 0000086553 00000 n 0000086702 00000 n 0000086849 00000 n 0000086924 00000 n 0000106702 00000 n 0000106931 00000 n 0000107075 00000 n 0000107150 00000 n 0000120555 00000 n 0000120784 00000 n 0000120859 00000 n 0000127846 00000 n 0000128075 00000 n 0000128574 00000 n 0000132172 00000 n 0000132326 00000 n 0000132362 00000 n 0000132678 00000 n 0000133082 00000 n 0000134961 00000 n 0000135478 00000 n 0000136025 00000 n 0000136394 00000 n 0000136771 00000 n 0000137223 00000 n 0000137570 00000 n 0000138743 00000 n 0000138785 00000 n 0000138838 00000 n 0000140510 00000 n 0000140563 00000 n 0000149604 00000 n 0000149628 00000 n 0000149652 00000 n 0000149676 00000 n 0000149923 00000 n 0000150138 00000 n 0000150322 00000 n 0000150343 00000 n 0000150418 00000 n 0000150600 00000 n 0000150621 00000 n 0000150696 00000 n 0000150922 00000 n 0000151099 00000 n 0000151279 00000 n 0000151563 00000 n 0000151875 00000 n 0000152208 00000 n 0000152433 00000 n 0000152669 00000 n 0000152883 00000 n 0000153077 00000 n 0000153148 00000 n 0000153282 00000 n 0000153535 00000 n 0000153743 00000 n 0000153992 00000 n 0000154360 00000 n 0000154641 00000 n 0000155044 00000 n 0000155094 00000 n 0000155307 00000 n 0000155365 00000 n 0000155395 00000 n 0000155605 00000 n 0000155705 00000 n 0000155905 00000 n 0000156106 00000 n 0000156186 00000 n 0000156378 00000 n 0000156559 00000 n 0000156599 00000 n 0000156689 00000 n 0000156880 00000 n 0000156902 00000 n 0000156968 00000 n 0000158142 00000 n 0000158174 00000 n 0000171096 00000 n 0000190696 00000 n 0000206046 00000 n 0000221678 00000 n 0000221920 00000 n 0000225027 00000 n 0000228136 00000 n 0000235587 00000 n 0000237428 00000 n 0000239178 00000 n 0000242151 00000 n 0000250400 00000 n 0000254088 00000 n 0000257055 00000 n 0000261578 00000 n 0000265136 00000 n 0000265169 00000 n 0000265190 00000 n 0000269973 00000 n 0000272664 00000 n 0000274801 00000 n 0000276018 00000 n 0000276039 00000 n 0000290291 00000 n 0000290396 00000 n 0000290421 00000 n 0000290446 00000 n trailer <<494e4431323336303230333738333333>]>> startxref 290471 %%EOF