From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 17770 invoked from network); 17 Sep 1999 12:59:12 -0000 Received: from sunsite.auc.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 17 Sep 1999 12:59:12 -0000 Received: (qmail 27847 invoked by alias); 17 Sep 1999 12:59:04 -0000 Mailing-List: contact zsh-workers-help@sunsite.auc.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 7915 Received: (qmail 27839 invoked from network); 17 Sep 1999 12:58:59 -0000 Message-Id: <9909171223.AA32858@ibmth.df.unipi.it> To: zsh-workers@sunsite.auc.dk (Zsh hackers list) Subject: PATCH: 3.1.6-pws-4: floating point support Date: Fri, 17 Sep 1999 14:23:55 +0200 From: Peter Stephenson Here's my first go at floating point support. It tries to follow ksh93: there are typeset -F and typeset -E type floats, both actually doubles internally, differing only in the way they are output (with %f and %e, not surprisingly), and a float builtin (in ksh this was an alias, but this is a standard difference between ksh and zsh applying to other aliased builtins too). Since I'm only going by the manual page, there could be many other differences. For other user-visible features, see the manual, but the highlights are: promotion from integer to floating point is broadly how you would expect; operators requiring integers silently truncate floating point values (like perl, but unlike C --- please don't use phrases like `strongly typed' around here); output via $((...)) instead of individual variables uses %g with about the largest sensible number of sig figs; undeclared variables used in math evals are typed by their first assignment (this just extends the existing behaviour for integers, but there's a gotcha here, see the manual); scalars used as numbers do not remember their type, e.g. `f=0; (( f += 0.5 ))' will assign f as a scalar, convert it's value to an integer, promote that to a float for the addition, then assign back to f as a float. Outside an immediate numeric context, such as a $((...)) or a normal array subscript, there is no special way of telling whether an integer or float is required. So if you need an integer but use a float, the decimal point is liable to get in the way. But that's inevitable. Internals: math numbers are passed around as an mnumber. Unlike most other structures, this is passed around bodily, not by pointer: it's only a union for the number, plus an int for the type, and it's convenient to be able to treat it like other numeric types. I've adapted mem.c to align to doubles regardless of the largest integer type in use. Unfortunately this hasn't been tested properly, since --enable-zsh-mem doesn't work here: it needs trying out with both that and --disable-lfs which uses 32 bit integers and hence requires some extra padding. I'll try to remember to test this next time I compile on a machine where this works. begin 0 float.dif.gz M'XL(`!LQXC<``\1<>UO;1KK_&W^*"6V#%5]BF3N$;)W$I.Q#@.5RTDTV)Q7R MV-8B2UY)YI*2?O;S>]^9D4;&AM!NGL.38GDT\]ZO,T,;C89X$_O//Z3#YUX2 M9,/F3=SLA[&7+;R7/?'W22C:KG!7M]R-K18>-C>U(9H$OY*473KPLB",G M?UV,U44Q%>_[ZGTHL[J8I%+$?:?2.!U*D0YE&`K?B\18)OTX&8D@RN1`)M;Z MNI!XQ-`D#:*!P*,XGP1A%D0BRPBF4Z\TXD1N(W4#Y.(!?1$.``REI>65U;W]B$=L'+TK8(%)O1 M9'1.DAN/I9>`J<@?>M$`:"H->ETBR\M$*+TT$QN:ODKM`7V`$K8RHF\<$SGS M5%2IS=*1>+2*=N.D4M/XTSI/F]:8>(3"`&NVQL3C%%:IS=:8>*S"*K6Y&A,/ M*PSRT>JHU*;UP0O"*^\F%;UX`FX+6,V*J+#Q:[WD>C+49]Z%3&U8\AJ+4UJ+ M87HSF(QDE*7;0GK^L$*XM.-##:D<>PF>PAL0>!)$OA2`>F/4;(&-86%>%I-F M`?4*>N7`L]RN;XK:\C)^4^#Y(I-8I)F735*F7$>:FB@Z)/0>*9B4VKIVELB,^?E7//=D%$,78@B+Z$'` M(R]L%E2,O!MH(8T)@VWFOUUZ"7/@`,X/#GV+G*6Z1=9C5VHKS]^R_H6FR,2% M-NZ=!)D=5,%9WG"I'I)PLH)513TW`LZH? M<@)9^T^?PAGXZ?;6/#U]ND./)B[?WN(K*S@=QDG6\(/$GP1D!9`4DLA+;G(J*@T[%L((#A`=\E"N6#=PSX.,!&,>U?[+(4 M9XN0=JWB&;)([@1L.YNK]1515&[S0.8@HG1'!8;'[M.SW`D>'D+X/5,FP0(B51TBZT4R:5(!4QH0HL,P M*>YXTQ65#JJ$*LHK+\AJ$F:DHDHMB2<1IZ->?!71/*[[Y'5F9I-OU[3WYF3" M?"?E\F!)G-ET4H`\3)239&8"25>1SQ*K6>3/TD.`<:"G4: M"X.QBAL=CTO+#9GG-V-H6?9`TXUN,:S85JI5`T1GE`/&:@LSL&?!DX.F;+(Y M__@[F[-B&M^_PJXY1&:<'2!@13=S@Y!?J?&J_:/.<=51O\L`CGE,_3:P/#&0 ML"P06]8'%,B0V22.DG@4FX+;6!;L9TJ%;/YIV3/8$5&KPN/3%.$!PMQ#M.CU M`M7IH9CE"L_$C*MAX`]AM?^9!`F1EUMRI58E]O[(0UD>W5+"G12I9I0(!@:NQ@8/I> M_SKQ/5@VQ::`6@EE\<,XS,,`9>?9DH7=*>.6I*`L&,G4^`!HCF(QDJ,XR>ME MN!1KE@Q:F$CBH[QA.O:H$#%4T'I55RA!<%!2A1J#0&V1$2,D*S@"A?#+()ZD M:'MKYY)CBG986S0B0#$7^`')AHCH49D!;6A&31VB#)2S>BV1F6?*0J;;](:H M+D/EHYLJ0\#LYNRH77$9=OL`G*2:FN M&?-2E$(G)[\X'I/@]`NN5]&@]<6.:&WCXX5PZ:.&KTWJU;9A!]N5V@\<_'[L M(]H@DSH$@3HXL.V`#%(;A!XF"`U4X8&60I)%M6>E$I:M[Q'0@*R`ZWP?ZS,E MW\)E5`[/6('>F5*6"C+2%Q@Y%I*R.5LZF3S@`B98JTK'([+;R*O=K8B$H-Z*ZL[2\=W=-B!\SL:8EE MX2YON:M;JVMW=\"L9:5-,'>KM;)%#V83;'EEG5H3^M"]R2M.2E0;B'2,ZKX? M2-47_3L^=]A!622QJ6KD@`,**A_X*KR[F)H6`.JLGY%2E3])*#8(S,*JJ2R, MKZ9`UA[W4?R.+T?[9UTDA%L\-IROU!?L#H9ADDU0.GW"'&Z#D*N,OUY$A6-KE.'&JAQ4E82CS-5,X+2$/646M&?VHTP MU0#K%@X"DQT%&?=>M6)+L`];9&C45QK6\K&"O9,2>]ED-,58SH>8ST=?-YRK MR\OU=5%;7=[`!VG5[BNLW.#7C6LCIKR^NU<9_8$2U/6H+*I_ M56K?#DF+?#ZLAYVKL.P<6^.TA%#A8X2$+5%^"]B"H9^\[NQWCF?`IVUUJ*0A<_5NKO!*CCC[1O.*&CO0JNOT'L^'+2IJNOK+1Y5BD2\]X8$ MI2M55;7J&GIJ?\C>30TXT/=(?R,N<-7^2>5.'N1`D)L^P@QYPC2U:O_2VE.? MJJON<'$8:1I5RL_+(U/0()E>RD2GO]0/:-.K#S9@T+,$@<(WET1)$+I70WG" M[1Q`4"#L!X,)5;V4V()T''HWVZJ4P5*/L[#\TCGYI?NFF`@7COV`+<6>_A7_O3DZ.SVI/L'$NEA\=?9V2Q7[ ME"U0X?="U97DHEQTMG,5F5Y]6C%N"_^VEB'FU;)B\@6E*FYEJ[6^U6X5ZEAM M<;9OZ8Q$/Z_.]O9/]PZJBWYOL2Y:Z+V#Z+/?X\=V7;S:._C\^DU=')SM[ZO? M3GUZX;`7)']V;4S[[!.YR+-W/Q^=''5?[W7V%2@6)T-S-;3#`RP[ZT[!;)1@ MZBK:@#S]YU'W\.CT1-RJ[^\Z;_=>=_]QUMG/A\I8=69BO`V7/Q:114_MU+>8 MXZY]?]R4=^=@+TL3>D@+1="W$J#+^>M2"H[%4AFIRY6HF[[1:KN_[IW>:[%TLI%D_S6C43B/#H^!=5&;CK(,=OO24!NO=,DE.79]\+44C%_M:WW'E7T?4/Y[FNB6T/P2_3LO@;B*$SD MWO'[3N]-OQN,YIE)?S#7@'??3E%2EJ-*&_]-Y\^[5Y);=X;83(,XC563;UZ7 M@(ZRR=D\Y@Z2@]5HFJP@I`TQG.G$4^)*;;QE=6&8,O%C6+R?[1/"82([GC>X)'$LY=#B^YQV>2+Y-6 M?O-E?/&?W(=F&A`MI[.>[U;`Z&B2W,T#WP=UJ7ZQD4\+<>BEPT*,],U67Z]_ M.7'4_7(&5XJ9R3VJ=8NQ/)7-]T;B?7BURH7C'*+5BOVM1/9H7V[X+\CM5 M]=QZ8#+RTHM"=/S56!2!.IF[,/+"P+/RUR121NU:N9@$[MVUZ4EDG#V3@.B/9=^Z`UX\S.BF@^P?#HLH?U8Z<<@Z3I+,!"DT&'UU]/C MSFO:A@\UTM8VW:6@G^?/\M,7-.MI3/=M:!/'/DAY]EP):F.SO@%!;;I:4`L: M0&YK?)F(+@Y9YX;FP%0\TPO$,Z&WBC,O",WYG-DVMGZ`5JT(^J(:\`Y1E03L MB*=/197Y%T]+UDUO*HV%A2IF?6RXD-^.6-I?$K>WPAXYIA&:5QK]<&=>L.0X ME=K"`G3A#Y-JH9FZF8;W8F'!FUR',H)8Z5C3^8()61Q66D8?2[#\.FN)`Q?W9YB3GI>YH$5T+W-(VPO566ZCIB@ M-HW@%\1=FC/U%<+4S-&1J!5[&H@F#=0'C0]\$MD(ILU#PDX]RTB>:U"D\[DZ M%E5EY99^K8%>'&P\Q4?L&)F:8 ME2*0S;BF9#^#.-OBO"P.2!?.8Y3%67=UW>7M`SRTZ^YJ'OF^6I&![GJ-QIFZ M:\0;<6H+..6+&]#TR+O0+^D@TX_#..*]QK^Q(G,19!2;JI-4CD>DADA>\>$E M'X\ML#ZKU;C?AY#&H\9+%IB#K%2%X3X5?Q1C$(PV#U$M=B]O\RW&6[/W20^G M>WK@[/1P_[#SQL$/5BLJ.`1RT&7:S!>B=A:9;!)\R7.HU`EVOIGBVDR*U7[J M;;Z/:G%A5HA[V:'-6>CH0LKQ]`YV7_Q[DF8BO0HR?T@*,G=W\Q,`MFAEJ(6& M#'-0B'E\LL-T3Q/K<&`D$J?%^55G*``%3%)M+@Q(AG:Q59&A+?F+3!+DSJJO M$NCB3^D6W`BB>CO?>_G+Z^97]Y8/ZHHW`T6[^IP$(,I0%929*0>JU41&!5RZO MN''T-\W4CAXFMHF&)R5-56W;4W;IL,Y8R.NZ9E]W-XR0D9)V`SIV@J5Y%UMD M`5=R"6F-V@R5UJQKI`H-W=!02_5I?QUKZ&8MW1$QET^\\3B)QZA%,EG/]S:8MN9OC!?KC),Y?3;EC;4]=4U/FI=7UNA0)P7 M5--G,VSD6(P$E#:#?@0U*7/'>'Y*8R\L3FKLT=U\M(#6-]":+0XG"_E9C+U2 MG2:5R/#TPM$%A_LJ5_(EDA2+&\H7US?7K=KZB!P8\M#%;"<=<-;TTL&VF9!! MY0-!BL=8PZJ=N9SF,Z0`G="'<))DUV?#TT6[@BYF6<7SR>FQ53S'D2J6*83S M0X(GZA=(089E:WY@/:O&61UEM>A6.@9-9#&ZW6BMUEVZ7+SAKM?;*SGKB4*H M@DV>9D^\B/X4P1]*_R(U-XEUJ8'*[UB.J%A$ZD4YQ]$[?TL5W%R M(21=H*3+@H.A2CQT4R,5C2Z=Z)L#7$Y!1/J.^,.&K'+)'>;4>^?[L;:K"1#3 MF$WX0-#Y:ZBW_S+QPE0(,P/_#-H)[CV$:];N(6R&]A]`J9>7L1;\S41YY_6C M\7THXYN)Y?&P6?X4Y2U2#]]WCV=)FL8='03:?'+L;JS8.UOV;)U72Y!+H<>: M2_7?3.Y*AE%`?1334ND+\OK MJ[RF;U)_]<0IA+M]PS-OHU#Q^`0=C,<%GQJC"E[H'P!!*!UY@(A@K-[7:HZ. M'7=G!-840RLAHUDOD%"I'C4_7ZZ\)**Z5)>E.1]TYV<8]#,QH@+[G&XF1(U( M#E!57\I%LY=HBM'E%JN^MMQ"CE="RF6DKC.HFLB(Z^Z>R;10B,K&PGS6%^[A MF=ZA^17N=M'I,94;JWPXL+Q1.D[Z@F9NH*]L%/M%5\,`5&MB0(IZ/Y.4\JNR M^)4,NDE"?ZL41#RK]+FK>\O-6RKN:X;;[12Q\KJT7)UE=%0#7- M>B`-]B(:/_GB)]K$]!LOJ86IYUUY*/N98VD@3W%ZIGBY(UX?'KSYW/T'-V)Z M](4>?=M5F7VD[TZ-(A=E6-3>YC'7UH7&1.-M>SP)!D-^89J/*A8V"]M7DRYC\:D?GMWO+&B$$*5`4DM7XA?[!,ZVR4D!]W'(GDR%\F3>4CV3Q^+Y,4\ M'"_FH'C[:!0OYZ%X.8^+1XOJQ5Q1O9@GJK>/1O)R+I*7921?\X)8!0YE?<(V M/QXOB$&_0T8H%C0M\'Y_./8RC@KH=W0,4(4*FI5-I/+VBA7^&=32P9(%HXH` M!\]`3J8C`A5?]$XF^L+LLT=_CT3RT=]']-W$.@4O`[R&@1>D7I;=5,L!RS$- M7\F9&A8?UF1VCNFX-K6\BI@3>) MLOA"_E]O3]K51I+D9_PK"GIL2TC".D&(MOMAP&W><'@X/-[N\?!*4@%:ZQJ5 M)$./F=^^&5=>5240O;N\9TNJRHR,B(R,C(R,C(2S\CE\1F3X:,=BV7DO>E0) MW=9OUL$IQ+,_^-(S@D&KS5:MZL[^5#HY^TLYVBEL5FFK4'V*RR812PO/`,^I MX[29@KL$GLPV%-+D*H%2VH.3$FCK1]JRN\^"?.U"[A+H@@/:0M%X0)!)'^+3(4JUN;>@N0[<%F9:=+4GH@;[]G9$9Y MF8U]$Q.US8KE@W8;0SR2K>7S_QC:D<0`3TN.)$4*MH+R=JO1:-4KKN10:2>& MN(82MFV=!,.0[IJ$=/_4&W;ZLVX4K/T1WVX,NK=K]C,$J&RG-;`.]>.?\?'M M.Y@"E&TE$?6#*!Q"^A-]J$:,:#C`C[L`:OF$IY+1>.8QPGDS5%_6ZV;UQAN_ MU(MCW+9^4>*'M!JXOT<#N\`/Q0CEQP+@Z+-ZTJ='^B&FL.A'\ZAO_&2-&J:) M:C2*55D=*=*.SE0)T#BEZ:B$NBG0$>-S<)2MOX`-T+,C50Q?0SDHGRA64L7> MGYZJ'AF/:83C:S_^$@OGXS6Y4^M M\G%1+U/U>5"J#81Y=0^JB9;,41M3R&W`+Y?9H-W:&\,6(CP(ZMXC17;3?W2J ME++S[`!JUJK>,U5NLPZ#1+->:>9/NTYO'5^=7E[`,ZO/3DXO5)>A/513]A`X M;AI5^"2YM*08./_[Q>E?]TXO3RZ^!F]?P)H<%,[161'_G1WI?_3">B"%W!K6 MOR5?@*A)W!%\?1R!I[T@8/1_9BV+8(/=V1'(=1"454]G<04+-+B`RYT?W-O. M=ZQ0,1"3A=*^.>\)1,,#D=FB^7[F?$HJF#DO'(P,?SY M@1).%6MES3Y^_,1OTG*MX0&@MI;ZCH#J98\$*N;^.CNR"1+FBRS4?5DP0F-W M7\.6*4%#V7X[CF+^C`,3-`-M"%=IFTU\6_\V6SD=V9!C-PS.8Y9?0/N/L0:> M]M_9D5I@NL@Z#&;+0H'L"UKH%-1"AV;^*AS/*-2J^IB&O40\^)L^*/7Z+[C6 M(HL8T@(A9F0`(6)@Z=R/>UTQ?@A;=!'("PX?^``^;U>HO'1?,)))]4)P-E85$@758OP]E7M6YI%FLUTV4. M!7<84*1_?GG-D3DNAV!SCW:S85\[FAJD((\!1V(-!R^CJ6C#+D"[7&<9HWTA[EX)-$-+N,)E$NQ0`S;A?; M=Q#1W8#Q-KFU=IA(QBFIXYP]#*@ABNKT4+?U(%^H/ZA7U:.'`.(=4D@VR:A\ MJC-'+W6\39W7H8`;]R9\?;HRT"7S%D%*)A\6JC1<\19JVW5+I5D"%=@,4:O? M;]&]0D*QEY`@EFXJ;.;YA/3-$WW-3QFHJU*2"GZ%4=S&8(MZ5#)DT2]4L$0B;I: M@5;JVLJ>S#I37-!3)C6>K-6*DM:3:&7JG2GV",DRE&:I!WO5F0"XKEYTONUH M;Y&.=A[UNB]*XUE\F]/@B]*N6JOA&ZLAZYVV*!0/8XPN/;_8W?OK^6]!*:CD M.<@MMX8-!Z-Y-%%#[WMBK[!>*ZM5<$,Q9+-6K)6;S!%Q:MG+<'_]_0(DK@/' M[15.L4&(E.[4X])@J!^DFCJ&F-6<>$-.;6^B1NG,:LZW2W MS;O"RCRM%^"QYE#`PU6:'HXB$CR!,^<^4'CWW*XJ!G-AD7HY3'L96/R;>^RS MEKTO2L/1%%Q./#["/*2VH"?"HC"OU\*`9P@LPHUUOW-*9-&^Q\13#E,#BZDVP_AIA2DKJ4EI$'8F(]B5'(_&F#:0 MDZM!N(1)XDCC%61(5A:J>#6G$`K^P9&':K3_K(8X/2'E9B98VM+6N2I;2H^W MPWXX[$":8X!MHX\@#;KT^P'_;^/$K\K_'H]+I:_@/J;78<8+(KZ$OC27U-M) M%"U!;"U);/7_F-A.%K'/YH(F:#@"N0>2I/C7#7@"HWCGP2)<:?IY[@L0BDK_ M2[%443@_N'+0GR-S6"3Z343`: MPWF2X/LM).Z2<<6#KQBTBT''T^S\M*@FN3'-A7KNE/AV<%]!#`CZL`#R5T?C M8Q\[8RZUH8U".P8$:^:O95D,/%O/A#Q"-`ZWCQ%?#JPAE?"LR? M%#A[8Y9W5%-E2CU.DR@=+&&1(8AKE-GF[8RB20>C'B3YO!OX$";WA-&<#=,G M@A76C0$IWCQJQ[1XAW8&W'8&W+8+M^W#?3"F(:.VJI;2W,@KE$MXLG=Z?+QK M,T".+ZP'^Y*J4A*SQB.+.[@"V3"E#Z=\%FH\AAR(,SS%!/%AX%ZFZ"M),G;T M\=S4LS-8AITI)?:W5L;NB%/Y3R919VH=E['HQ`,&W\/[HER\X.0>,A0$E."',[M*;Q>@L670C9,+4%6GH1<>$6<$W[4S`[53` M;0]P.RWHAF1KG?8^P"6@$UFV](T.,2>IPU?#;DS='VW<;%!=LDK:>=8%$'U& MO$&^=`0Y&NBLJ,!",72@A0+%2"MP)!"J:1,&M'NRW[*^FX"@#H\Z&M6O`H=0 M-^O2E].SEO4]"\8_%\&P0&1#^+$(PO'E40K4^%#`[KBW#8/_SYQ\A:KSE_LR2 M\Y]_7@P*@\A;WN\L8._>+0)V='#N5^-Y%@@4O6MQ!^+"0@Z@:W-(&#WI\Y-^ M/I_55@+%)[?U-MG8V\6M_7IV\-S6WB4:>_=(6\^G[%V2LG>/4):BI9_:VMMD M:V\?:>WD^:VM)EM;?8PV>T+:3YV1N'4&^(JGIBQXUL2RGS:SN-!^_%@,S9[J M]E/G.H%GT%LEB``[M^HAG=$.VJH:,NP,9>A8.,;1#+JSCJ8:%^UT>=ZX"/,K.P2C5-KA#EEG-:@9;3O_R0!D_5+&OI+9+Z39#VJ8&7"%3%%2?F5W MTP3/"""R)3C;L+X.MAOD$FA3FMEI^O8"WULUQ8A5882_TM%\@&)F4-E;);U! M>--#A_88,H=F;(^X6R,/]D2GJA%I10;O]X,K>9;@IXHGU'+6H8F%,Q1/]T?P M2\\#T8&\(',*,Y896!?KH//C1<'0R:BS3W%,&P6OC$O%.!YDEM"(^FYT7XA!0/_E$A+_.U?A`"".!DU_:P+#K^^MAA_@,0,A# MUWT4H/_H1:#/SFHJE;+YE$;F?_YWR?Q/CL7:D)O_<_3^YWGT?CH]OR#CM+22 M`Q=6GH7,!5`,7(84`I(P<+N(XVHA&QAE'%2T_6<1@DJ)GB[$(E!7);$D`F!!T-CM(*>4BA!#E6 M0UCSIM=`(R"MQC^S:F15^)%5`1>S:376LVK@TM.N03LP9BU7TMH2X+S);/ET M?QDX+[/@2-\F22AD-BT]FJQ3RJHCZZJT2K",RJK%2ZBT:K!@2J^&BZ5D%6U" MP@(HGU7U;X]4?9M9%U-\/][?+@ M7(2[YE`2@HNPK99C'0MKWB_[DYL7+]*V+M+VR5XLN:,!BY,V71"$;F-5XM[< M+L4I@IQ+H\B^1L,PE[:-\0N[=5J\-A">0.J]]*EJ[_3H]*1EWABA\07=,6G! M:!"C5DU4T32W0%L:2+!I)Q4>TY=9M3(U)OM&T^HLFER2==(G!H*T:'I9#E+F M!,.^@30Z%LW<6746S-U953)G;^/=2ZOVZ+2453%[8MK/9,93E>9CM1]1FXNK M9RO.%'#L^TBJ88=VRQ0^.Q!;P[<$T\U159`6P2!CJ2;^,LH\8=D;E4VO,FQB MLKXSK/NS@TSK=EF:R.)/4SGD._)-O;:X-DK69$"ISC@5A*21T)?VQE[4D#T- ME%8@Z2(Y:=A!@\X9=,Q8G=M9@&2ZPOA_1Q0DNK.T?"06348^Z-5R\J%CGB7P M`>XX-'==QHEX/4B!5FD$A:VM+;DIR0XE#-HI;?Q`1ID-\J MRQ'P2Y!8\ZMYUC)J`O^DN$+#<<&0,>C^)GG`S2H'+\F8MJJPDF1G%(-&H:^) M<8;&HO/3@$Z%_`3`#\SVZE:Q6H',]YMP:'V9($DY)MKG9/FMR+&2 MZ]$X[YP0F4HT&?RXDRCB8G!':*HO&.VJ/OOSSHX==GF'4=%6S,Z=')ZT)4$> M8L6CS_"[;QXP4G<8L!=@NK'U(47O\2F7KS9Z\5@\;XFHUSL*V4$00^H"#E+] MZB"I1JV'(3[A,]EW5A@UK0T7O*$R:,A\3^I"N M`P^'RBD:NRGY"B)AFJ4O+!6-.ASR:58K9F5?2.&0`L^0F1 M%XGW8X/_>S;\Y@JI+Y^V?`VF(\`0/K1(H%X`P$Y0J_V&^)O!'YLU7%]08+[< M!6^MD:O&[,7I)S6/[Q6#5X"]!+`R;G>,G""`%%(^KF89-4:AV:S(<6,S3R&A MF(X'&5D01NJ3Y9J!!4^7V_@EDA3D[E+S?Y#NON.UTAWOSF!V#PD!)`0TY'!R M8[06JX4X]L,"E^F]=.;NGOU*S(UU>@8,I!ZS#/IC"_Y++UN?S@ M0&3LNCI?"]FP,X_C.A0'F%Y?PF/W^K'#?3G&A,5OO`AI&M!?\T4^L:Z7VU)Z M^$CIM#;WH-'``8/1^5S)JHW$-3:1N-JV3J4:F-,9+F3M@(!7_[(6Q'I-+R_< M>389BV&9$$Y![((7F/3E,F;PI!'E)E?\%C;9""G$,NA"@' M-R(RV)+3R.K;X.S([!UGU4@VK"O:-HPB:20T,:T:)Y[9C4$]$@F;,$ M,TK4&JWREI=Y`@H[*4O*4*QF74&\3;*E-%^-IXJ?HF&W=PWJ6T*3/UX=GA_^ M=@"I6?Z(1MG`,><[CV23"#!/]WHV^G!C*P`W,U[-A-X3X1\C\>S]F M']%L"&'Z"K\KJL0ZD[24V$"\10N..F7<%G/7]>+#["8OF*INU M9EUU#M?URESMGAV<[%Y145VI)`VPO70;A>.\5_/#V4$:=,Q>4:D#6PL-.-I; M1?:^64>%^#Z"E*B8+YJOOHXCBF`=3>#"T*@K][0KM3OJX+7WL$**[^-I-(`4 ML`CF^VU/F>YT'VH[FM)]F"&EAZ6BKZ&LXODQ0=/7UO>&05L!_A:C,D:N4=2H MM5<^4..R![CA%:16SP>Y>M"^GT:8BG8PBL&0A#3B44RG_"&>LFE*0&BE(K0; M=51#X]MPQ[[^7DJV!"ZJ:N,FY+F$(?"TIVB"L#-]%;R3.-M!FH,3^%N!L)%03\<"N.C+I&$ MS`K@&A]R=U[WHKZY.Q[%`T;!X.JVBU&Z>.W&]:R/L*XG462#P3H1Y!-D.+EA M=#?-DT!@%#'T)(TC>(,`1$00$.<`QN?]7@P!JLOTHS]@BLPHNI8=IJ7)J!VV M^W#=?+!9+T'>XS!F2=.C&R]FI2&KNH=&J]P8A)7KG MN3V#T.S>2>D9,J5.03.."2^0#QKV9GAC_#FK!$+`&_H#]?L%6>;*9(WQ4ES% MH@T(B^>,Z*JSVB/%P6NU*H#C'@I(/XKA)OBP$Y7@!.]L0#'LX9`TU!:J_T:S M4MSR3EA>Q<"O?[OK17JX#I3OP.X`"B=F*!T:BNF44.]:*' M%WBS!:0KPN>?=O?YN<[UV9T-!O?`VP',*<@DD3P6:\GNZ6&#%7?TQ(5T->MX M0K_1W"Y6&SYE%F$\X43#G16,Q3(BR/J7!!E3TB@517J_FS/H8WJ[57GND9NG M>4S!Y;RV%1@H56KU=2A3E%?!5>9Z;3$@RZ=VB]8+N2]?Z MTBD'R@.[02D,O+H;FJ-[-J@/,)\6=EJ.YVY6R=IR4=J'KL'ARVCA9'QAL[)I MW4;K:,J\ET#K^.HCV6.N$8;2#GM55OXFIYQAV;-Z]*?`AUM=3T`FMW*R:+(@ MR8+!]?CP1!&>JP;K4DMZ[/@*;4F98HU,DX6$9YOP'BBE(]O,MW:D!$JS7,UN MR.KZ-EW\N]D0#Y!I__QP_TON/`]YQM3_;RPDK#(GE\W^N6X3__86!::EDM91H*EF-FW+82'>"_%EJ M.1/$4VD-GDLKMQ,\BU)_<)R<'^\>'8'@U5)R-!`,U3[H_M^E]%>S.$973)S( MZ*UFW$JEI9;(]9J[/I;R?F[&NBILW>_>P)S>\"$)FNS,G6H5K\S"&')<[/"K M&^?5C;R2&%TTXOQDGO9#D\[33N2IH"%=W%3!-&6]O)&7R;U-*[VGG=@3SJM, M)DG\]2L&B9JE40%6;#8V=7K3E.RFJ-EU*E,(<;9XDAL/?*]8827!C93,IA;4 MK@?V6L`64EQB-MT6#$48D=>=C7,VT0#)QY!2NY.3L5)MB+6,B8XGN(.2^XS[ M*'/?@1X7T1'+3D\[@69[=OV[.U^HL=V$,5K_*D+R>#D[&\?N^YQO7%@B]H\G[>V M4.S&^,*JE!NH].X)RU`ZEUUGO-G<2+;^0-E)85[665'`&SX;>,/!WPYY)+N, ME1!@=0Y1*PJQ7@P)A_E6`R\OC'4&'4H.YUXYZB&_Z%,Z*@$GM;-2D'B\-P1T MRK$=;+#K-9CH(!V:_S0Q222_T3E^*W6XB*JJI+NNM%N5]4+:W&'I=Z23+CTD MS[E0+5-BGI\4#6)07@_/Q\OWI`)'1L9@[>9D1^6!D5C5.@&,3+T7N@J;H1(N M8(JX^\3/F(PMNMG_KV7:WN.S=XD<2J]M2G/2_^Y6%_=_BW4<_IF;)IP#50Y3 M.&'%HDG_^/+\XO+\`)S6>!NW",H:\I0O[H/L8#!-U+?JLD7CI.Q80LWIF85F MZR?/+SK?TU+JC1I9>AI)G40"P4!107`S9PM/"T=*`3$CZV78ZJK4F]O%;9V[ M.I%0##(R#:>.SBR:_&5Y3#7E*]6BG=#,;/%J:V'_\-?WEQ]@59]^NHHU11<@.1[-D[1:Y+*YX%`[N]98D;,\I0<76*MAZ8*CJ83&]].GDH MY("=`!YK\:6=3@F[M@_#N<)'&Z5XFWC9LDW2,1KG,Z(1+:T+AXVRE*9H@.P2 M&70J?2/1)UKAB(W))*2AKB%B?+-Q'8.! M*IOE6K%:]0,];JP1B>G/..HC.(N4K1O-K7N=[2,2.\$"W`V5R$-Y^$S%BKY2RJN2U)6&95BL9=I5K.JU8)H%]E:+A@58Z M-AM-]ZUXT83T56^IIJUK1]X_6K;6]+%QY M:YZYHF\D?3#9]+2DZ&%(R&9%?)FW;%?JB#];T:.*M^#9*P9C?&/2_:/>M\C* MZY>G=#9P7(.NJ.4A/3B&B<+E*81BF37FI9 M5ZH"&ON?+B_.7_[:LL8%4$3M=->>-@-YLBBG].UYQW:(L#ZTN*&' MST.JD+%!G10Q??=?I5DC9;FME*9U4:V-F14:%WR8#3MX0=]T!.SF[(&X;^`E M%';TA18X-HY(U;\H&)]63F3'2)NF45A@AH:#1^S@83;&%V*`YEG!.-QT^T6) M2[DSF#B]<&?IRP7L>++^K&XV\7:8:K.L;',S7SUHKN,0WL-48M,DHZE-S(8U MFXYG&"NP'EP.^Z`YM(VC%`?NN=[B/G\;JQ':UJ3.*L;W=2::%!D$OQ!>K4(3['U.K/^])YN*`'=P/L;P@-`='>L-DQE-B;/N7)8V&EQ.\14Z@K0-GX6]1%D0JO M*>K(H[H(YH^YJEUQLA^IQ;>&T0XG-Y"<#D#TIHKF\Q$4Q_N(]$9B`QP3W+HJ M`FGQ#,V<-1_ND9ZI":*/C&F/NO>(2)="CRK59LEBNR;ZC3TS+%Y:TAPAB>7V MM"B0S"<&FSFTJ?N-`IJP>J@734@/[-_A;3A3YQ@EL2&.(-(+]_JHLOHJ5][? M1$/5M_W@Y0UP#^6MA>,'YTR.`7ZM@3.TG_&>#+^!\DX2 MY(&7XL).(_DQFD1%D6$*<'-W4"$'H[(AU*B"_>Z;V22*O:R)+Z/@>PA#VJVH MA;H?0H:>W(RTYLN;O*[ZQD&?CA8])`P05&2(O%PO!D^*P)NB5G_Z>K846\;P M^O/NF5K[HB56I&6I/5!HP<9MX-N%3?@N?,%;)K#S:8ASBIF=XHY2+(DY:JM6 MPSEJN[+U^,UWSL5W,*.:W2)V.^?:.PM*]K5WS4TB M?JMNAVAS)ZPIS4[;WP&YVO`J!L?18GG-[(IBJ!AK:V MC;3[+=.5VPOKR=WDR`$(P,<+[&I5V5WB?>P5`?FR#TG.Q_9.(/H]>!?X6=Z$ M-^OV91G&P!C;&X-Y;+4SQ0^V+N)I%P9DEMM%RP/$[LCMX[++',_:\=1L,BOS M![>.Z[!U7-EN-;P@;"[NW1Q9K[8:UKW1FTV\FX$^$C=ACFU/(R][K(TD./DC MFT:V(WIL+1\#^Q;$)\#3KZ$NG/>DU4"YWL#5`'PVO5'.7CJY='&-#-RUGI+HZCZVKI1BM?.D`&HC;=^P-4+YDW2/]LFOZ-S`$L6UWK]K7TA6EQ" MZ=ZY+0VA;"UZ_E+VEL*;J:`6F+LZA[R1K"CM1\,;5:5Y. M7Y`K3]4(! MFXH+A;Q32C0#7-9YFZH7RENM6M/5"UC8B3PIMRJ;+;B`5D>>X&VJZO\JR1'P M$:)G9\.8(F)1(OZ8P<>.=7)#EH3[9.^1BHQGX_%(S>5\XX0;74MW,\8CZ#"` M%F/\'\#@H.>8U@<03?P=0I\IRGP<=F%1*5ZCGY16!_R.3D]^O3H\EPA?$R=G MPL*"BH[_*?!%!'!+*H(1,CGNAQ=_%.B(_B%]2F3%.B)"5M),!(\3E,!:7,:* MA2&5"]V,D6:)6G))M!4/7+>VL`7/SJSH(G1Y]W.,AO3XEGV*$H M\F_1D-B*=GMO$*'Y/R76YG0G@T3G7\,*B/_6R36SW4"3:WNK*JJ8S_TI;4IQ MP+0XQ["\CE+%"A9-9@$:#S3QDPDK=17+LZJ2JJ.JI.KS7-56X(A1D&DN<.T6X,T/ M&T28ULBZ5DTX`U#)6[>DYH@N^P!.LGB'*<0MX.WM,1<&-H:#9!'>^,E,JE6*C[$3`:NE=*8,@L!?N\3\0 M!0L&#IZ57.7GG\MY8R4N#X>'`T*J("09+$^!5+(@D=`BH"JA9"R8QP$YH'!+ M]DL^R'WA=09Q[(?!]X>PX(<9+GD/"J3B64%\:GDZ6W$]1==&[_H>KOT=C.8P MHX1=O$6Y'\*AEC3",#7/U7N$5$=(=.>S!G4-9\G0`>)#2X7T&T)J/`T2I$:* MDS@=07H4A+-)O%;U^I#_E980"WE=L."0YK(ZC<<)XO`R8H\M:3ZOZ@=3M9:L M>KVHJB4J]:5%I>"`$E'Y!TR[B^7%U]+I,N2"-S+46%J&"ADRM+FT#"4AD0QM M+2U#A509:BXM0V1,@`?Q>J3LW.]X$PJ[G_DPSK"#/^4V=#P8-HG`.PD!]:59 M,!K+S@1FVF<`E>U<*B,U9\0*8.!,H_]>K:7ASHU!Z_,\#=/#ET^G9!8.JT#P%&9DFTR=`\\7>IH]A+4-@(9W` M2F5I"@N9%%:7IO#/#Z/+)PVCD\._71[8!+/FZL[&_1[L=<0+D'0A[1X=[IZ[ MW.N.<&M9$1[BL=&>&@=JF0;[.B+%:+DG1X!!J[8T6H5LM&I+H^4.IH^'^PCR,U/<&!\=MPWAO-)L%MK]N-\*(_V"SJ9[#KXO!@/[!Q(C-MVI,KDI3! M6AI#LLW1))AOS#>R"+0PJB^-42$=H\;2&`4<@S,(>T-@'7ECF<]XI50\AI/# MW1Y<+M6_)XB#`1X$!@3"RPP`G:)NV5/4&Z,Q`-/7]7HN@G1V< M7YP=[FEEL86X=<(A0%.4J47(\`;7JG`!@UKK=C`+PZ@;I8_#\P-&BY0];)L/ M9XI)M++,_DN@=7SZ>??]$0]#4OC",8[5H5'9I1U'Y-XT;*HOJ)HYK,J#=;)*7!,_4?`'$T##(+-;AW-0!(A:">EWA*OS:7%JY`E M7EM+BU=A@7@UEQ:OP@+QVEY:O`JIXE4M+RU>A4SQXEY<1KP*F>)575J\"MGB M55M>O##,!Z9NGH#9/V748"R)&NB<\TBN,Z7>C(.P#7.=C1 M#-;"WL&'W:.SW_JSR?3N\O9BS;0*&_$\W5/[L8ZWH]\*48X2U5HWJRTXS;FF MFE&MK;&._X":':(CHKLI.`R!M*@?D?*&^"&8-M!+:Q9O$)9)CVTG@UJ+G2B& M_WWWY.+S[M&YXAYY+3A`NTD1D(U*S=YY,OEN[+P".C7`HW\Z#T#OC^AJ*H?X M(9\TGF7&.PJ=H*$%(`PN?`EM/,9<`@A$3;>00@O>YO(8[(4GI/6]M5CH&0DI M&''*+8&8FU1'?!@/LP%1Q@X[Q4J3N.^=;556Y3!4"^65G.Q0!+!L]@_DF_HTB2#0ZOWY?J#4]*"C>K_?:T\@DZ)JZ?P^_AQT M9A,P%OEQ437;B<:8RJ(332!C#$'B6!P<$;N'7Y"(CY]*EU\4 17HWB-47&B_\!65@Y(]O6``!C ` end -- Peter Stephenson Tel: +39 050 844536 WWW: http://www.ifh.de/~pws/ Dipartimento di Fisica, Via Buonarroti 2, 56127 Pisa, Italy