Changeset 3b6f1b in git


Ignore:
Timestamp:
Sep 12, 2014, 2:11:16 PM (9 years ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'spielwiese', '8d54773d6c9e2f1d2593a28bc68b7eeab54ed529')
Children:
750a0ef0a22f27fddb8987152aad2b122395dd60
Parents:
eb7c6b1e58d5e8f567c011a4a28afa0700b274e35ce0932fba9e2d08b5823f3de76db0209913f4ae
Message:
Merge pull request #639 from mmklee/docu

Docu+charsets
Files:
26 edited

Legend:

Unmodified
Added
Removed
  • Tst/Long/gcdp_l.res.gz.uu

    reb7c6b r3b6f1b  
    11begin 664 gcdp_l.res.gz
    2 M'XL(""Y215(``V=C9'!?;"YR97,`[%M;CQ['<7W7KQCHQ<OOXT=U5]]MD(`#
     2M'XL("/0_`%0``V=C9'!?;"YR97,`[%M;CQ['<7W7KQCHQ<OOXT=U5]]MD(`#
    33M`X&!)`A@YU76B%Q2"RQWB>5*'B?(?\\Y5=T]LR9]`6(CL"(]:&?FZVM=SJFJ
    44M;O[FM[_Z];\MR^)?+5]]]<5O^IN\P-OR[O6;#[^[??'X\7&Y++?W=^^6Q^N/
     
    123123M($T>K^>X1R7J_FT$N%*UPLJO*<Y`AN%.R$/,A3<\0R>_)GJZ5W8JDT,6*'I+
    124124MDEG?K-CQ^FE&8C+@SVN>:T%18`$FV%U&;38C2M[-\D%&D$-T3+6K6E_^I[UO
    125 MV['E1JY\/U^AAWDX75M[G+R3,-S?X(=Y%E#84Z=K4+![(,GP[SO6B@NYCR6A
    126 MQQ@,#$\)D%29W$DRR6!P1<0*9BEVOV^1AS:4]XXEB4O$.UQIBH$W[#Z\U%MK
    127 MRN4*)4/#VK`1E.5::=B?]#6'WA3]LU430Z"N-J55U1CPL5Q;SW2X`N*1?A/8
    128 M-%QKRM+5J([<+J'1`?G[5NE8)&TKS;F<O]E3V#\9JR(\N.2LU5Y=:S8-:.'V
    129 M5<*M!M785PPW+J\UAJM-,-=,:_;28KA%^F5P8H]"6'#4T)K#_&#R9VV'I6#>
    130 MLC`5:JK;5%@:C(%!L5<PU&$['KH0LRFN-,?0?8`_BI&CDJQ;DPD61$35_6W+
    131 M7&?P8_9M5((#&)(`G3ES6Z$SET:@>;]MQ"N+(J7P3%$NRJ$QI[-E)O@NVXT]
    132 MP_$)S3B3ZSY`1^-)0RKJ.KQM.978!1!]3'6&LPV^$ONSJ7WJP7=!MZ>WK8?Y
    133 M`]FX5,&`%M1/<P%A_,/=EF?UIPHVIV[^ME$#YU`;YB=[H8#Y9DJS)/L1_".'
    134 MLTUD:)[.[-E]PY&+JMQR:,\T(K0!=0AK<>M,669C^]O&-8=KUKZVOZVD%@!$
    135 MKJII-:A-4AX68H`^W)H\>OBR4[K<8FA-[_6-;[#4<W@UY:JO/MTO4"_2(P"C
    136 M5H1-.ARPEPL![(<:)D.Y%'D=)D,^_"/Y-UG*7T'O&72G-<+FJPNTOF-K%K0J
    137 M6@*(6O9@(&700N4G<->^$IKS)W#)B<S#8S<$%A(.+\)E67[\!=Q1L\(PD+%L
    138 M`H@AR/(#6,0HAS>J5(7H[:*K2'#U$D!=M1?P1LG`$Z[#,M$VQ')!3"\#5F=`
    139 M_T7CX9Y+JWB3A-[<5J4])&:`C.X%VZ$(=(=$";2!Z=(S?8>T"40YP_P8"<[%
    140 M^ZQ3?E':I.MQT&B0Y2Q-B#FT@.M7Y6O0.$J=72@8",&6&*D&[QVH5H5]P&#F
    141 M>M%S*-LO_9<@K[V*437=O7E?$P98[C21>LMX!]D"PK]9]34&'L1KP,$GVKL/
    142 M<^S!@K\XE"EA&$1KB9'5YKK<+A0US:$4N44;JRW:<+)-F!$E2I%6&EZARPO=
    143 MA@B)&XAKHA`T/A3+/Z]WP;1F'E99VQCCQ"F0*>LR/KDF-P[SY+NMQ:[#.D+J
    144 M"\6@?S%Q@R82";RN9>*%D#H\A8)9%AJM`B3A;95MV\2+]#YX,V6UPIF)/!6,
    145 MO,!7%S"1DTQW9^:H(%X,MV^NRR1,Q)633R8'ZH"T@Z[B\@72-87XDD&0'TP9
    146 MR%?2799)&$A&ZI6EB%'2I&'U+$/`!!15KK4!I^R0;40F-_'U(5_2>9VZJW4*
    147 MN528.#7J=(6$B1)3"<RH8O:!]VQ5W=LZ?F(\TW4JJ^<5FRIZ,7.?)F&R'6..
    148 MZ(&F@SQQ^OLU7<9Z<^?KHGDKYH;,R.S9G<>B+;,NYWJI%,]%UVW9WN.$,MC7
    149 M@EO13A4]*5WMM9N4B<[.*DEX5S@I[BM1T!?]^)G=!.63*^'":,^+JW5BK$JG
    150 MQBA#7>R7`/A7Z(55S8?>>N5HSHD.]$N$!^@XGQ[D?#@V\U0/,A*G`N-D9!8<
    151 M&$?T;W*,`U>VD5:DWFV"PA*8VS[.=):%;2CJH)MM*&MU8THXN/KA$!41MEU-
    152 M+NI0`@S0;^V'/Q1P_W"(9NX.]O?21!\Z1%MXM6#^]8V3-8#H;G%B'KLMNCJ@
    153 M$0^,"%^8AA6W0W1JGE)2CLSA$)4NG%'%@?RP<(AFQ5-D4M<C6@^SY<`YF+\=
    154 MK[\\!TQVBN@=_*'A2P::D=TD.\KI9?EMP:>!!RIB=/.P"T52:T3K^RH1K:\G
    155 MQLE7VB"B$&*T\(FVDLTPA',@FLK,9HC^03R&>=N53JO'H6"MCGS$[(LHFL,K
    156 M*NCE"L-0Q-(RVQ"2C0Y"`G(_0O9BQ]9PB\H<5D<Y(@*';5CFV+9AQXD5BG+@
    157 ME3=ZI=C\!\Z9HQ[FH6Q"VS-:+#L@7^NP#G,+:Y^N@.'F83:V-NY>;?M&9?_R
    158 M(1-PTPP9`=]JVB2$(<0&66+=D52#B5@O"X`,M7C:`8L.3VIAHL%7P1N.RHJR
    159 M(,+Y)O.`(TW<^,S*/,6O1@MKB&ZYG`^/G6Q%O;OQN5+X\4*8Q*8LV_*7JS9M
    160 M?NFZJYH7B8&?@7TSQC>%F0W#<WG(72Z&96?>=@08]F1JY3`Z1:#-C2T73<,?
    161 M,$VGNK/<ZLS`GV%VRO:1MK/.,OLZ'$3K-#SK-@#@O"O5K':8FTK`SSQB9D5+
    162 M]<:<FK`\X>%K;GF*\:U&,9QZ,YUJN><KGD*T-X7#;N@$05F/W)XY5#W<:(CS
    163 M+P\XT9FWW*^7YWXGS3EX\MA-"^SCXC(K-S$;)`Q].&3F-HUY>677R\4R@.7/
    164 M>`1691NG4I8WS,&B$L50C$4E]ENX/*![M\<)$8HT-]?#\E.HE6=$_DB:FO4T
    165 M/EM$G'!1W%\'ET0\A7CCJJ%8D(O57+%`#A93+S1^59X4\XH(!_D=SB>#9K9[
    166 M4UE3II9[WH$W!*JZ+2/H8EEA=E\VCW:XZP3.7Z'+L><[EPRB,J;?%N/FT,HB
    167 M`26<B?G8<)%5>C6_?:5-K\%$UY-(Q3PO4\K+4JW@L-!%&J&JF-@+^:I7F)U&
    168 M6*;>#@TD&CA/WV06Q^=RJU.I9^3597\5NI]B1J&.RXAPM"RV9G>#KX*YW1LF
    169 MLW+J"'4\F0",;-S9#L,SK7!"X^IJ'I*NS=FP/HO4!,%7;"`BFG^C@>S5G]5Q
    170 M.4(AY7=R;026PF:1'5"-&K'-$'#ICN^!.V@B`.:+B5#%AL`.4MQ^E/5#NV4-
    171 M(%:1'GG\(C('MB\@<`BJ1J`FWQ&'>Y6?*N$#5H^L)*E\=8]*@8QQ-8/UHD9@
    172 M0<NZ(9$B(R3F!IE:C?EBWQ)C9FO0]%@,F1'3EVM-&MBR+M'\0LPMUUX,TXMP
    173 MTT:7Y8BPEZRA!D3/:!,I,:*JT;\^&KH_BU1WKY?:E#)RZUJ-A!8CFXBJ$RC>
    174 M:!S19&PYT:AHC-OE`J0L9F$.,%_8P04S#&`FP3H7?%[<8,QDLXQ"XUVD3PU*
    175 MEB\R10CEX<Q6DT,&L/=B/!"9F\SWK]?(G!Q$]98@'`7RB957(_24K';9L*`B
    176 M6#6-!D\1Z('Q%>L)AD"?,&C:I_!\"L]_7'A<+1T!BU*-:+0"WC821((`TR;=
    177 M`KH[\F+8KV3C#Q#=Z.G?6I+<YJD;<</9<Y?=%A,C<";RK>L,WVPC,INJB1NB
    178 M`PS1\7:*(&]K/#'#]\>&;;B9G2@7FHF,N^T*#5YO8M3'"U70'75O;)41H&:W
    179 MK\TI:DBJ"%*4IGZ;O=?`:RY,;,&?@\P(?0C$L2OP:<NT!PR[8T_6/&[\V7OU
    180 M';_I02C!>$I@/]K0$9@7330GL23>"2[@/=ZPC<R&;<QAU.PI<G`CJ%[A^-\!
    181 M\LHHF85&*AG-S7X&!YJCV@J24`O+%Y?=0_%((EZ:[X;[Y"_I0^`/A0S)576Z
    182 M327WDGP0Y!VG'H]P\W5X53LCD#I-R)8'\4[_Y*D=]@RBZ*O$&S60(U6`*K.V
    183 MB;CYYTHQ#!4)0RU:`A1SBP!GUBB!J`*^7YMCADG?,7^DYX/,I0_AV$3-F(%+
    184 MML3(,9`>T![GHA@MC9XLIL?SL)1@K"+#7YT1^D02Y6#.%OE[JGTC?S$/WAXA
    185 M(`^KHUX[6ED9*++C5\2*C$A`6;?1`RWB0(G1+/Q22,;6M#7$!4)*"^9]!4D`
    186 M9[>(KM2&>%&+W4?2;3P%$RT%I1:7PT/6<F%9<>,V6T1L"E9^6,N%<F`1862-
    187 M7]?E]^&[](=$$&;Q02@X2N>ROI$[1L)2(><B!+M@\9?]1K@<%ER4B]G]=*&^
    188 M8@D59G!&,)>L;/.A%3(O-&D=OI0-:0MVJA%D%ERN::!6+J9FF!7LF&Y"P3B'
    189 MFWO;[;+3F+CQ0*/1[#Z/%0B[7<0M`#TOEP\#;/IZ&=5&S(B@<V:N_''8[FDZ
    190 M?Y)18XO_0EMLET;F<I\'V:8-`]&,(.=F2?DR>M<9-&Z;:@J"S0KK?;9I9S"M
    191 MOIV"<)%<L47@S)[NH4]&DU?DX:V0(%CK(AR'\9XLB@G6S65'.#7V)5P+R'#I
    192 MY3#>4ZPCEBGS`\9[F7L48*V7(VPLBL1CS84AR?IB$>2P/LD<C4G*NOZW0W5=
    193 M?JY4:[MW\)^M=9CN\'XE-]U'JW8Z468NY7:H[HP&4F]*C_RG.34!E#SB'5DD
    194 MM2+V%5)J\A54&[`[['X[H\:BT$.\F=R&?#5WJ(XPW5O;@4\`AK[M?;#SDU$,
    195 MX5P=ZD8\>!;EB/_A$.J__,/7-<*8;?3[A1NOX4PFBXCB;SU$2_Z:>XTIF/')
    196 M(^SQS0,7ZUK^JV!8`,"($@S$`D]3-MHE8`YSB`!^RHB<@D;_TXQVZ/0S-8,R
    197 MH[+Q?@]O"!!,#BW8F%G2+D<YF6M"_QQ[?0F&(<$K@(Z`$Y-\7/1%KQ61S@Q.
    198 MD6"857(\5$CK&HYT4E*COI$\5@ZDDS'>!]+IQ=:R7"S--VWP4VU:C4"8L6(O
    199 MD*N:W9)&O&`UQSE&]C*<`PD,2'4AU_URH-/T1&4%0Z%O`6!`@=PX1P:\7(%S
    200 MQM(SR40:6KA0`&7J)LY7.G]+H)RJ)\C)GVM$Q+\B>^0*H9/+WGR+%X4VJ]WE
    201 MD2F!<NCV")0#%^$(E%.[GZ?7]NLTVD@^0W*YKAP@1Y`DO2B`0K*.HQT1A1G)
    202 M`P`SPP("%=$!/8`-T*<&30I'N-4>K`Q<KI4"XN2D!_K@S[G)@S7HSX9Q9'Z:
    203 MHYRA>>W`.SV%A2$`ILP-0^%AZL9BKW0^^JDR@CMSM$.20XTW(G6T!-#),!WU
    204 MS[+3\0!A>FQ2A:??F',5%Y<>["Y_S@.RD`D?<1%@FU',EX8R^MD,\VP0C[-M
    205 MTMYSB'N:J76Y:"W9489EHU<@G1QL/B*=Z<Q8$8!"3H8"H'"TXVRO=`(=.'N3
    206 M(QU&T/7/<K7P,0/:Y+(IN-`%[0JD@P5O]^551^`C.)U'>"(+$?`58"?K(0PX
    207 MO4"7@$$=',(>T!+(IQLIJI#ZHF=696;O'5&*M=F&A3PH1U4@P23[4=G>V,)]
    208 M*^0.F.9R82UT0';[61]!54*4(C$Q+:!.J@;$Y*)::H?\E<.G/\68OXX811@R
    209 MQ#9ZS"/_[)ODA4R8&0%&8)MN=%7RB_4$#/Q*C;9`.M?6/X`TU(+Z-RB;S6X?
    210 MH4P2XD:XF(TNEQSKR/1U(\CE=%!W,>5U!S=P$D4/J-.O;#\"7>A@R&7HY0UU
    211 M$!J[`NJ4-@WJ2$_'@75RV?LE:7'-;&]>Z!%H&<'_S:MCIE,0O8A]JD>3R#J^
    212 M#.T@X^Q(]Y:A&-&4G1H7\>.6[-Q&X.!^TN3:SO9A_-C$E?G>>CXI(QASYVM@
    213 M;ZB;N@M7R"H[5C'L6)C)83X`#TC-&_!8TI%=U'S9(6=C[*@SA&*#I*[G%GF@
    214 M(A45\G2PI,K!`2C_[OQSLJ00FH,/Z\IT$$J?7N6_#5XD`2%?B[1`'Y1R&<0P
    215 M'*_WU1-]2"1E"`"&FVDMLFHJ4^%$13+O`127V9FNA\0!>@DKB"QWT8?X`1DN
    216 M(*R_ZG9#/QAL7FE$9@(_`<4%7UD`;V>"7H-$B%%?J6'AJ!2,\'6)74E*18:K
    217 MD%8[.#"#W63RA)CD;$2,'78#1/17Y7D@>0$<%X$LI$C!6\?3X5YEWV4G*FD9
    218 MFA0H.!Q-=++)9J$W37;UK[(^)YVAG<7R_U>R"%D]'7(XS8#OR122`8:5YCW*
    219 M;OVU3B9>"A)3!E$K649I81@K<B(3<S];!6\%R9?E]89#BE`,)_`@X:2QZ@):
    220 M"(Y-I:=3MMNOM69F1,(KIU0X$,A$8E!.3R:82;1?5U=ZS@6>VR)%J&(`$=IC
    221 M7DBB-Q=YC[?5F-XB.R8F@+.,4^B8E9G0@.QY:$)VQZ](=D(+0XDW3;3KZWTH
    222 MT:D,.D.[DGLN\V4G$4R><X1?<`#;8@K/JN1@B9DC0RP=QB`4R**\%:H0[8$^
    223 M"N"I8'#1(UJJ-J$\*(%I%,4L0GV7?00^:=FZOB)<]XKCB3F.`+&O.*L&<U2R
    224 MIN"RAMJ0'8-/M#2L%O)R"L=1M&*BI)J43?9!I42V'YEF)AD)DD$7"UA0]THB
    225 M7\8HUDX.'=*V,<JK@QF4R0S*RN-+'(&5.4VUI887T`H&4H#[4")7Q1O.A&G$
    226 M@3@H5Z]P&1>]\A0$9&F]\GS08:3(!@$LFLS%]8QE(HHU&V4-T4F(6D8'95N#
    227 MI.'<$Z=#BII%1`+@@`V,0J^]0"@/232,.@F1C>PE43$R1)U40\8DP,?0]%D=
    228 M1+C7[T496*2K960^XRVUA<E76)>3U>;0'.:*]<849?*GFD`P"TU`_)0(R`:0
    229 MM"6X=28/392B1+-*SSU<Z9-TQZ(YQ/T+=2,\S\Q$3B28ELI%!2$-Y2A+D,G.
    230 MC9S'>572`IG+#.4H5CL[BB",2(/HG%=-O0[=B.4F`IDN9H619$IJ97+5*"I&
    231 MI%1>Y1I0'++I-21D7<4T(PZ2(7,S(55;$\NE5;%-RF7*L2^-0V09`=70&:$$
    232 M,2N'J4:(#7.J99`P(*,BU"(]I8*E=O2>BEW)GC8P('&RM*E'G%O";EP,)4$L
    233 MH(^ZJT>X\MB)22;D9+1B##(W*_FE1D$4V*])U8*W*5G#=>1]33((JZ:F9QEU
    234 MKKUB2K)F3@9\Q&@!&Q_VB#%,2XKR8GJ\S&K1+2(E+HZKNY[$!WUV8O?"'B$M
    235 MZ!8B(XGMXE4]?]S)\"X\%S";FN1WA=`)&2;LIPO[E$Q%-2T)B6F)*YPJ"@=>
    236 M('N>_$2JR9JH:!LD$KE]J6.;:*XD-;E/"G6C1#]Y"-$T'0G&+E6@O`*>[^`_
    237 MRBZ53$?*'E*XX0-O8J<1V_F5NYFIR#M]F:]Z_!EF2F!@X?HCP9%J<ND[@C7)
    238 MP%<&[74-+C^HR78IX;GK.^:+VU5GJB.4I(`K.Z;@,B8P1J&UXGJRZF8C<T=9
    239 MP3J_=25QFIK4=$RX;704*W8*GJ4`-8F`#82U4$MFQ-EP`.ZUM62CEI02<IEQ
    240 M4"2Z6"@))/.6PCS)Q>U.ME=YPYZZ:TD8')P'"E(1VT1FZ=+BHCF:2ME.I,..
    241 M)@.&B^:DWJ3!4WA9N!DBA(DQZIO4FU4.*,P5.QOFFWL5.>.E6&JH[!+<S(!G
    242 M9,E.5Y,(HE"-MF2;$7:;G)7SK0%(CB(/YJ>JG8MG+8C=9IH2:AL1V*D1U`1X
    243 M(H^I)@TJ:CE8:?7\NIY(\].YER7.COSQ\>/;GWX4D/K^X\>?CJ_)I9J?GB__
    244 M?==<?_-TR]^O\P_.N?R#AZ*Y]N?_@Q\?9Z+5X8=9_J/\=_]D^H&6S[>/L>.W
    245 MR5"*I#*<#O7X24R(-S$.OLF_'S_ABP07;EYRL\K-+#<;85_RV_AM?7F7@G+7
    246 M7R^YVUZ^R9T.@C=_NJR"PE_6>]D_107MY9UU,VC-!Z:4=+DS>-R&W6CLPCL[
    247 M,?;MJEU@#>4^KJ@`57<ID'?AEQ)P?[#B;ZRE$\;[W:;]8S4XS.^*$M0SI*0J
    248 MFI2[7>X.UH%#EN)6UP[Z.!5$D[2D61\QK/!IQ"/5^EA?/AA^DMN-E7^S>N"W
    249 MTWJ:M5"LGNKOVJR!IO7\E'W0FC6`SK=[1=3J(3=8/3M:="R1*:<%W?I9.988
    250 MA&PES3K:I*.X5^3>9"\+AU(J:79[6">K=E)K+U9[TSI^LK-8K*19+_O-[V:Y
    251 MNZSV<2]V9UK'JXXPOMEG)<-ZWMASO=>MSQT"H/6RUF]60[\]K,YB3];C=\-Z
    252 M"SG,VPAN!PFKX=RKYQ4DM4N->_&((/+=I+_WY;+Y#:]VK!E(669G.>%-AWWP
    253 MT6EKIOE/OV'E?;]@>BPED\G+;F8=6;8_&B6@L]X52Z:Z.'[#^N>0ZSDM*D&V
    254 MC#C+.'%-[V;MFBZ76]&[WK="*9Q>A]S-NGYL5543S&9K"':HW?;%EETTFQ5D
    255 MZS.7D``ZETSO=;5)ODRD?&5E7>DB*MU*BG5=%Q%*EI5D?P$NH_O<HNCK*U,<
    256 M;2GE8WV5D,AE)<4Z;&LIY,I7$M?-35_$*IJQ:MCT7A>4]T,&#Y9-^_YP*,CC
    257 MCRJ6\,C<'P(3OI5W9*,\WN3/_)X_9#=^PVWY,\-.O?*CL`@E"&\_,G[ZCM('
    258 M?OG^4;0D/01<?K.GTJ/(SS[*%ZW_+@_]W=='M"$/RN5NA[/V\';03#1RU]]:
    259 M0ZPZ6SO:JK;C[WR$ZUJ/76SJX4*V-65J!$BGCOWKL>.<L^7W<PADN45-OL&H
    260 M*AYQ;^][%3]>49`/L;//B[)L/&V!;)MQ\+W%M%B0='UNK6#B=<N\Z]N)[H00
    261 MH#*BX-P+957.*#CV0NP/<=^7<;UG;=0W$]\*V[W5*+`U:VL0?)I#1YB<6N6^
    262 MF_A^V&]E%YS;(<)$47!LAUA_O.\[A^][S1LN+\_[7K&F7?7[1G8<SW1\P3'A
    263 M"XY_.02'Z$<U*.?4H8^)T5[<<M,U(A71=0A0"6V3]6X(E<F)[A"NX4+'N$Q1
    264 MO_"LBGD(5'74LWJ-/:6?\J*[RG2T`QQ_B%8Q]3W@2=Z"U4)2ZHS]9AQ2HMO-
    265 M4ODX1$QE;\"L'H>`U9"9E0_YZB$Q^8KMQU0=)G_+5@EAX>NW8V6HJ%2'-7D+
    266 M'#X\=,B5"QR^Q71(50WI81WU6!,J._.0*!<U1-"/[<0%K;+!?`CR]_KY0-G]
    267 M^Q.(OM//E0IUOC-_LU.A?AOO]0.^,='"T()=+K,6OT%--[F&`^(-3U:YT-S/
    268 M1^.C11XM\U'?^&3ADZU*Q9F/%CQ:4'7ATX5/SP<K*W+9J'_7H_-Y*FXJJT=[
    269 M8P59-709TD1F%9E5Y$O:*+K7H!(T46TOZ*QCK<=@%:AA//H;G_ZH6MBD`=VJ
    270 M\'26VFU+ZK8A3/R<OX8^?PP\[MU-4AL>EJ:^V&!6WXQT-/O>C7P\T8+<.H94
    271 M.BPWCF'57L>XZLH^1I8KU?<N'UU=?UIY/@8Y:_5E#S0/7+,^Z4B#B?,X!IIG
    272 MMC^-<].*]T!KK7D/-1&=O1;[,_`2>0\W?I`?QV@K/#D&'!W3K5Z'(?MF_RWZ
    273 MG4PZ,>0NZP<VQH=;;5]6)8>HTP-(\&WK2>(U*TBVK%4%EN/VUH#W[+?-^)2;
    274 M4ZK/3_?S5GFF2G?AJ?8P3]T;6J&!5;?)_F`4J:W=0\'=\E'TI.+L8(U`#JQM
    275 MWG.[COOEU'7WF5<Z"O.I\>3=2MF%I]:[)3M1;X.+K?O$-&GI*"U/*A#^U'*4
    276 MYB=-F.8N,DTMF^*]^!@;`K&V)I*UCY)ZZD^X?=-16)ZT:#'B]9.E8M;A4:5M
    277 M00A:^]UV*/NB6V8>\RBLIV(&F^-\TA5_T]?-UU'F@`@V8YU>4H^-H=J+];/0
    278 MMP<U(FNM1YF#HVYF[U'D1@W.P+/;#G?<S!7KJ,^CS+><QC=[+G/XU/EB,2VG
    279 MT2.6Z#T*'"FY^=OO?CSUL]73312/(K=[!D71>W\@K\[^'05N]^")LO?*XT/(
    280 M"1]"=GO:O4R5,A;8J]B2&@0DU"9<88*-YJ5WGD!G#AURK(U%($:X=Z#*O/6'
    281 MBS8._PJ]X<+&3^'UY$@P8":(7%M9A&3V7D-/E!#),B[#@BXV.*L@](,^+&NK
    282 MGC@P;_%#_J*KA!J"5ZR*+09(WG/,5\+SP;/'\K'Z2T@4WBW6?@MAPAE("@=M
    283 MUK6WNN*UTGD?'"Y?Z#FD"M\%.U9Y#9'JUXPU[K*1O6856%"A'`Q2GYJ/8X8K
    284 MPK6I2MSLCBA=D0Y;YC.<%'B%"9R\3HB8K8Y^;]41I>O-H?M%_-XUYE1-G!T]
    285 MNO8;.I9QWQ7?W!/MJZC:[<-,.;[5G?KWQ]%\AQ\-81!?$#@4PAW=FA7H*(AQ
    286 MV&'X9"@@R(80#0XH@%%8XN"-Q\[HYJ^81#=^@R/$&HUV?'$@0?"IP(Y`0:#D
    287 M1_WBO7P+^%*?G`1/O?VNLT]=#;QU]C8_]79W]ONNEN^ZFI^[6ME5'_O#7,2W
    288 MNAW/X).*RHL2'3!MI7SHP0'%6-%2,EZV%X)?7;5\`"T*(W+Q<)WN1?UE^RA2
    289 MOO<TUUFTW13I,@?V+CU,2QY*.+VLO6P_!CX*FUL]B[8[`Y^,NM99=GHT%K]D
    290 M.([BPY<&53>C1=LR426SGTHY2[8K)#%A:9R%IS<$+]GF]51^.$6H'H:==*S%
    291 MA]L-*1W^S0CN'1I52/@,S?&6OJTJ]./Y%&N6L_3TJ\@(C5;267QZ5_")JV:'
    292 M(EAQ.%DX2&.TL^47<SE2^][+B#>US5G[)+MO+D]%IY,FZ3%-[2P_?340S#J?
    293 MGS]<-MCH5GUZVH&)Z>_>UU'Z8BY7ZO"=<&`87KW-,L;MVL.0OG,'<9!'>WKP
    294 M]`K)(/>Z129]YQOB=_GF6>KXIMGN-NI3W>'9Y28!&L_9M1?S4'.G0!0\GKU>
    295 MSF`,OTZ2UEEX>J:8&F]'$UCQZ9\241[]N3BB,[K9'U/DP;7EF]*MKGX69I\%
    296 MW9K&:F>_4%A\?PH[RWQ2X;B72:I.FM>2,S*$`SSK2$?IZ55#&G^/"5XO3R$B
    297 MF:#6TMFDN[<UJ@=`?C9;?'ITW^07S79I]OF9NI.;2;<];`F=6K*AFR7H.&H'
    298 MJ'@^3>E'V1FEP@EZ(2_SY3E2Q5-#0T%Y(-(!_907C1%T;_&R-^'7QLOY:/%9
    299 MTQC1JD=9]DE;BMMV$0K0'2K#M7RBL;]X2(1?>._S*#EC98E\^WJ4GO$R?*&R
    300 MQL!9B#00Y+J-/3@>*353XB<]J;,<I=6G<BH$:GXD[S9$.9=+S>6S3]FG4I[_
    301 MV$7]Y0S:015Z9HV6G0$\')@^QU%X1O%PIH3GPNZ(K5LQLO[\7-;M95_V(O@T
    302 MRSK*JL_CXCS6LS_%YQ&O(1.I)=A*([:$C[OXH#5]O8#+./AQC>LHG0=FYL==
    303 M<\M'\3C`,SXJ5-=1&#!:)ZO5<98VGZQ%M?C4:O69XFN4NR_UJB_B2#SAN\5'
    304 MT3K0>.(A`OU\<AZ@'-]*#MGQN+1A<W[4Z*RWVVPLSD;TU"US3@9[*JO*RHKU
    305 M-)!]XE%L\RQ?!\#'M\]"6"W`'2A_D?)W':7#AG:]F+=Y%W4?5_9(!M;*LO?(
    306 M;01\HNHH<WMPZNB4\[EI@[,4]=2CR+WT;*V[YO"VW,#`EQ*C9-FK+2KK_82'
    307 M$5C5D2'7#Y?VN,),Q_D&90-:VS;VS<"JZ::@^4"QNJ/>6Z>SW^"KH5">_]"2
    308 MWM_X4Q6@5F.X5;>Q,K5%!ZPEH!P2!@*J!JI,RDO4DHTF5W1=0>H'O[^,3W8?
    309 MT-1@HB`?I,<>F#00(KER-*,-D#HXE#FM2*E@P0:%\[[L9<O+]AKBI.Z>RPDR
    310 M`_`5?H8X'CE]AG@W63K7QI<.\V2><9";>E$"WN'3F.9K45S)MG&([I@GF`SH
    311 M)@HXI2<<&:@-.:;NY?WI]"K*Q'4<+Q8`TK':!%_V&B_FN0F,UN^:C;VQ86`6
    312 M(/Y23U@8`*S`@?6$"0-\)=!9ZC@!H2.OQ9,5#C#HH&O@XS_MQ5Q%@;;XS>=@
    313 M1H5L(A:[G4BG>Q*R@I.&#M07,"K?1CH]V@&A^.6=&LT<CDEL5=;?:QL0X\7\
    314 MW3M(&:"I.LEGN5'AH`&VR@G@`A*56\'YTQN]!1Y*`)OS0&Z.A6#(XJOV&[4Y
    315 M$*+3;;8-V!P"M:`!K1/]!%_"H)IU%WZO-=PC=GI)@<ROU0^`%N`&9\&<X,QQ
    316 M#?3KNDZ7O(.:>:]>4\CDC-&=&Y,YCJDWYY>,L!=TFR?S^`!5@5,`R'([$%6`
    317 ME,3C<@\TY0!E4?>=0,K1"8=W.5\M+(/U-,#=@+]I-9\0!TD!/^#FJB=`"N@!
    318 M[JE*E\,CAQU8WLXX<L6FFSB:.9V"@3;Z_8`WWK:L+*<=.3ZW?3N?@"8`!#Y6
    319 MBN.E-YIQ^,#!FF=PV<'#N+GWW1%RM]>6,?38L,-CW:,CP.Q[D>W//NH.0AP-
    320 MS/N)(&*OIQ<U"$J.3&>\R')OH<-2W9Q/2IQ#P6G:]BAR&+C8M[USCR,H-[X_
    321 M->P[9R(R_`J]>?.=4<!>U9GW;;SW#]P8.5DHN<L=1J5Y+UMDNG]8$I8\:/'I
    322 M;O%IJ?JMT:_7&7/,%V/,X[U)S:MK?+G+%6N=U>++3>[`RS>ZQ9>KW&#,VB/,
    323 M16X@*-D?K#_+I70^:[0Y@N<E:<390KVY>,#9(^CY6A9TAF>R(0M)6JSFF>P:
    324 M@,]L0J[US*G2&N/2'OD5:'YI9-J#OOA"P++H=$1]Q\B/9N'6HO'6GM%Z5:\F
    325 M,Y@P%1PQN3$9Y9Z/M0/!D/S^F&\[$#RO4J7Q,Q*<T'119RB8ZM)JI3]T.AT+
    326 MYS]%%!@R^%AO$0;&3^ICJFL8%4CU!?[2B6/"^WC@/.MOVE0KTGJZ\#!^R>*%
    327 M)S_F%Q6G>]LA>96F,R;OTG0&Y2E-[8S*JS#)J,B=0YBPO3U"F-(\1`E!WG&$
    328 MZ"E-Y2D\3WD:H@_/`#UEJFA+=8N5K+A^L@@X"X=<@=W_)%=I]72$[*O.E'2Q
    329 MGHYOGE"FC95#P/#)6AL+)6Y<E,&3N=%R?YS2A62.=,H6)M%:"^G2EK++%IG:
    330 MEPUQ-KG%BY9#O)"%Y904DR_&$0[Y(AUJ2UA&I6W+%UC;JDY4O#K*RY8NXBI5
    331 M)10QLENI))1"DAAK<`G3TFHBYAKN"">.>I+[1WM*#JC_H"S[KZ39__CO4P-&
    332 M?WIZ\.G_\?ZV/U3][>>__I-4],/KSV\__/K^UU_>[$[YX5__UZ_O/_SOUY]?
    333 M_^GMU[>??XE*)BMYO+_^\U_>_N</O_Y5^^(?MOYEM[W.MN>UTQ)F^LVTA-][
    334 MFS](2OC=1Z*I_.>_^:?'J,_ZFPD)L_UF0L(\4AGF^$Q(^$Q(^$Q(..R$OR$A
    335 M8<YC!:W/A(27SX2$_^<)">O:,KC2']H82N?/`!7WI!%YH`&+QK\16=PM%@_^
    336 M?U=(@#0!/OJ6-9M`?U+>/I2M+Q#H_:-\L8HUHX'U9JM3?\4J+<&!F0=6W7UZ
    337 M;7>KR=\F'V]6/E,-/E,-_L94@U4/P6F?J0:?J08A._\W4PW6@9_7^$/-6Q\=
    338 MU'AD"@SRV>'/:&_*CR?E?QH-O<Q'?S.*>Z8?QJQ=Y68MY95K5L!X4ZHZ<@S$
    339 M[E5#53,9BMG$U*WI(I5\/.:;LM"90M#E";4X"]HI9M;2LV,&M&X,ZXW,<TT4
    340 M$'.>)B5<2$T>HH%ZG_#6F!6L"0/R,QB.&3X0-3G12%7K]8L.A[V3C4B-`5%6
    341 MF8V(+K,]*'V/B;+*?$A(W_<AT<5UC$H]!D7W+QT5)>C[P)#ROT=&E]@Q..?8
    342 MY#TV2NJ/H6G'R.1C9+1=&QK;=6-XCM%QF3K0Y5J?E/Y/2O\GI?^3TO_3'U'Z
    343 M12>%SLA7^J3T?U+Z_[^G].<K'VNB_"%.&TFV_T*V?*HYSX=NW3A@+M,4+HI/
    344 M1`H?33GOQ#Y&D.?CV-Z)V$IK@K+(>->(4GTC,3YJRV31W^5W_3&`PUH#=``0
    345 MT8Z\H87ZQ7M$M&0]RD=O@):\-YI?$#V*WBA68F_NNR<Y>F'@9'R8V\OZ$7WP
    346 M\:O'6+9/6OXG+?_EDY;_2<L_"S]I^5'Z2<O_I.5_TO(_:?F?M/R?_LO1\O/5
    347 M#R@\/FGYG[3\3UK^)RW_DY;_2<O_I.4'"/G/2,O/USQV[O6'#D%UW"%:V1'Q
    348 M',IR5HX]PY7]XY8U>@N7W^H:J&QDR8"<K\'*#L\<&>O+H[0E:;"RXF)Z`+?A
    349 MRIC^Q5C89)\C6LF0)&GNC%<B(`DJO88K&9,<W8*5#7X\]E(CEOVC&N<\*2-8
    350 M*>P(7S),J51YC6`61G>7!3$KPKO5HI@-/^60O#7C?RL7W4*:)+&GZTU#FB3%
    351 M,]Q)RK)R[S7@"7;TRA;S!`5;^?W*]#8^>WK[]C&4!K_@I?S`Y@,6O#*>E;??
    352 MI`;PJC7LW92]K7VZWL"$E@X4,)JKM%S)C79G+"9B:BBZ<S>PZ67\5J>6C'.?
    353 MW#3/R3UGEE1QF]D;!]:G]D8*_-/D[IDUZK=/[8T,\YA:LMF/R2UES^VM[7F]
    354 MD>IM\VK<\9A74M1C6O&MO[3G%5&>=LSLGE3E=]NLDCKNDZI,])A4,MZ/.06[
    355 M_IC5LB=5";,VJS?2SVU6;W19^[R2,K^GM>Q9M4YQ6I6NKE-+=D[,;DRL+?!T
    356 =_9D,[%]^??WU7W[YFO[T]__MR[\!,S`GJ7K0````
     125MV;'E1K:;GZ_0P(/35=HVWP\8M[_!`X\%%,IU^AB%>]MHR?#O.]:*!UGGJH7V
     126MA6$8=@F05)G<23+)8'!%Q`IFK79_')&'-I3WCB6)2\0[7&F*@3?M/KS41VO*
     127MY0XE0\/:L!&4Y=YYVI_T-8?>%/US5!-#H*XVI575&/"QI*-G!EP!\<AX%M@T
     128M76O*TM6HCMRNH=$!^<=1Z5@D_2C-M9V_.7+8/P6K(CRXY*RUT5QK=@UHX7:J
     129MX5:#:AP[AAN7:<_I:A/,-=.:H_88;I%^&9S8HQ`6G"VTYC0_F/S9^F4IF+<L
     130M3(66VS$5M@9C8%"<%0QUV*^'$F(VU97FG+H/\$<Q<E22[6@RP8*(J+J_;9OK
     131M#'[,<8Q*<`!#$J`S5^D[=.;6"#3O]X-X95'D')XIRD6]-.9RMLP"W^6XL5<X
     132M/J$95W;=!^AH/&E(1=N7MZWD&KL`HH^YK7"VP5=B?W:U3SWX+NCV]K:-,'\@
     133M&TD5#&A!XS87$,:_W&UE-7^J8G,:YF^;+7`.M6'Y8"]4,-],:=9L/X)_Y'*V
     134MB0RMVYF]AF\X<M&46P[MF6>$-J`.82T>G2G+;!Y_VTQKNF8=^_C;:NX!0.2J
     135MF5:#VB3E82,&Z,.MR:.7+SOGY!9#[WIO''R#I5["JRE78X_E?H&62(\`C-H1
     136M-AEPP"87`M@/+4R&FA1Y729#N?PCY7=9RE]![YETIW7"YC0$6C^P-0M:%2T!
     137M1"U[,)`R:*'R$[AK7PC-^1.XY$3FX;&;`@L)AS?ALBP__@+NJ-5@&,A8=@'$
     138M$&3Y`2QBE,,;59M"])[H*A)<O050-^T%O%$R\(3KL$RT#;%<$-,K@-4%T'_3
     139M>'B4VAO>)*,WS[O1'A(S0$8WP7:H`MTA40)M8+J,0M\A;0)1SC`_9H9S\;':
     140MDE_4ONAZG#0:9#E+$V(.;>#ZW?@:-([R8!<J!D*P)4:JPWL'JE5E'S"8I25Z
     141M#F7[I?\2Y+47,:J6NS<?>\$`*X,FTN@%[R!;0/@WF[[&Q(-X#3CX1'N/:8X]
     142M6/")0YDSAD&TEAA9?>WD=J&H:0ZER"W:V'W3AI-MPHPH48JTTO`*0U[H>8J0
     143MN(&X%PI!XT.Q_//R$$QKYF&3M8TQSIP"F;(AXU-:=N.P++[;WNPZK".DOE`,
     144MQA<3-V@BD<"4MHD70NKP%`IFV6BT"9"$MU6V;1,OTOO@S935"F<F\E0P\@)?
     145M7<!$3@K=G86C@G@QW+ZE;9,P$5=./ID<J`/2#KJ*RQ=(UQ3B)(,@/U@RD"^D
     146MNVR3,)",U"M+$:.D2</J68:`"2AJ7&L33MDIVXA,;N;K0[ZD\SIUJ0\*N528
     147M.37J=(6$B1)3"2RH8HV)]^Q-W=LZ?F(\TW4JJ^<%FRIZL<I8)F&R'6..Z(&F
     148M@SQS^D=:+F.CN_-UT[P5<T-F9(WBSF/1ED67<TLJQ6O3=5N/]SBC#/:UX%:T
     149MTT1/2E='&R9EHK.+2A+>%4Z*Q\X4]$T_?F$W0?GD2D@8[96X6A?&J@YJC#K5
     150MQ9X$P+]`+^QF/O0^&D=S+71@)!$>H.-R>Y#+Y=@L2SW(2)P*C%.067!A'-&_
     151MV3$.7-E&6I%ZCPD*2V`=^[C061:VH:B#8;:AK-6#*>'@&I=#5$38=C6Y:%,)
     152M,$"_;5S^4,#]RR%:N#O8WUL3?>@0[>'5@ODW#D[6`**[Q8EY[+;HZH!&/#`B
     153M?&$:5CP.T:5Y2EDY,I=#5+IP1Q4G\L/"(5H43Y%)W:YH/<R6"^=@_DZ\/GD.
     154MF.P4T3OX0\.7##0CNTEQE#/J]MN"3P,/-,3HUF47BJ2VB-:/72-:WVZ,4U(^
     155M(*(28O3PB?9:S#"$<R":*LQFB/Y!/*9YVY5.J\>A8*W.<L7LJRB:RRLJZ"6%
     156M82AB:9EM",E&!R$!95PA>[%C6[A%90Z;HQP1@<LVK&L>VW#@Q`I%.?#*&[U2
     157M;/X+YZS9+O-0-J'C&:V6'5#2OJS#TL/:IRM@NGE8C*V-NZD?WZCL7SYD`FZZ
     158M(2/@6TV;A#"$V"!+;#B2ZC`16[(`R%2+IU^PZ/*D5B8:?!6\X:BL*@LBG&\R
     159M#SC2Q(W/HLQ3_&KVL(;HEBOE\MC)5C2&&Y\[AQ\OA$ELRGHL?[GJR^:7KKNF
     160M>9$8^!78MV!\<YC9,#RWA]SE8EIVYO.)`,.>S+U>1J<(M+FQY:)K^`.FZ5)W
     161MEEN=!?@SS$[9/O)QUEEFWX"#:-^&9SL&`)QWM9G5#G-3"?B%1\SL:*D],Z<F
     162M+$]X^+I;GF)\JU$,I][*MUH>)<53B/;F<-A-G2`HZUGZ1P[5"#<:XOS;`TYT
     163MYFWWZY5UWDES#CYX[)8%]G&1S,K-S`8)0Q\.F75,8UZFXGJY6@:P_!F/P*KL
     164M\U;*\H8E6%2B&*JQJ,1^"Y<'=._Q."%"D=?A>EA^"K7RBL@?25.KW<9GCX@3
     165M+JK[Z^"2B*<0;]PM%`MRL;HK%LC!9NJ%QJ_J!\6\(\)!?H?SR:"9[=Y2UI2I
     166MY5%.X`V!JF'+"+I85IC=E\VC7^XZ@?,I=#GV?.>2053F\MMBW%Q:622@AC.Q
     167M7!LNLDI3]]LI'WH-)KK=1"KF>9E2WI9J!8>%+M((5<7$)N2KIC`[C;!,O1T:
     168M2#1P6;[);(Y/<JM3J6?DU15_%;J?8D:ACNN,<+0LMFYW@Z^"N3T;)K-RV@QU
     169MO)@`C&S<U2_#,^]P0N,J=0])M^YL6)]%:H+@*W80$<V_T4'V&A_5<;U"(?7O
     170MY-H(+(7-(CN@&C5BFR'@,AS?`W?01`#,%Q.AB0V!':2Z_2CKAW;+GD"L(CWR
     171M>"(R![:O('`(JD:@ICP0AWN1GRKA`U:/K"2I?`^/2H&,D;K!>E$CL*!EW9!(
     172M41`2<X-,K<:2V+?,F-F>-#TV0V;$]#7M10-;UB6:WXBYE3:J87H1;MKHLAP1
     173M]I(UU('H&6TB)494-?HW9D?W5Y7J'BVI32DCM]/N)+08V414G4#Q3N.()F,O
     174MF49%9]RN5"!E,0M+@/G*#FZ880`S&=:YX//J!F,AFV56&N\B?6I0LGR3*4(H
     175M#V>VFAPR@&-4XX'(W!2^?TNS<'(0U=N"<!3(9U;>C-!3B]IETX**8-5T&CQ5
     176MH`?&5ZPG&`)CP:#IG\+S*3S_=N%QM70%+&HSHM$.>-M)$`D"3%]T"^CNR(MI
     177MOY*-/T!TIZ?_:$ERFY=NQ!UGSR6[+29&X$SD6[<5OME.9+94$W=$!QBBX^T<
     178M0=[>>6*&[X\=VW`W.U$N-!,9=WL*#=Z>Q:B/%VJ@.^K>V!LC0-UNI\,IZDBJ
     179M"%*4IGZ;O=?!:ZY,;,&?D\P(?0C$L13XM!?:`X;=L2=K'C?^'*/YCM_U()1@
     180M/&6P'VWH",RK)IJ36!+O!!?P&6_81F;#=N8P:O84.;@15&]P_)\`>6.4S$(C
     181MC8SF;C^#`\U1;0-)J(?EB\OAH7@D$6_-=\-]\I?T(?"'0H;DJCG=II%[23X(
     182M\H[SB$>X^3J\:H,12)TF9,N#>*=_\M0.>P91]%WCC3K(D2I`C5G;1-S\<^<8
     183MAH:$H1XM`8JY18`S:Y1`U`#?T^&88=)/S!_I^2!SZ4,X-E$S9N"2K3%R#*0'
     184MM,>Y*$9+HR>+Z?$\+"48J\CP5V>$/I%%.9BS1?Y>:M_(7\R#MT<(R,/J:.E$
     185M*QL#17;\BEB1$0FH^WF.0(LX4&)V"[]4DK$U;0UQ@9#2BGG?01+`V2VB*[4A
     186M7K1J]Y%T&T_!1,M!J<7E])"U7%A6W'Q>/2(V%2L_K.5*.;"(,++&4TI^'[Y+
     187M?T@$854?A(JC=)+UC=PQ$I8J.1<AV!6+OYXWPN6TX*)<K.&G"XT=2Z@R@S."
     188MN61EFP^MDGFA2>OPI1Q(6[%3S2"SX'(O`[5RL33#K&+'=!,*QCG<W,=NEYW&
     189MQ(T'&LUN]WFL0-CM(FX!Z'FY?1A@T[=D5!LQ(X+.6;CRYV6[Y^7\24:-+?X+
     190M;7%<&H7+?5UDFSX-1#."7+HEY<OHI3MHW`_5%`2;'=;[ZLO.8-KC.`7A(DFQ
     191M1>#,GN&A3T:3=^3A[9`@6.LB')?QGBV*"=9-LB.<.OL2K@5DN(QZ&>\YUA'+
     192ME/D!X[VN,PJPUNL5-A9%XK'FRI!D>[((<EB?9([&)!5=_\>ANI.?*]7[Z1W\
     193M9WM?ICN\7]E-]]F;G4Y4F$MY'*HGHX'4FSHB_VDM30`EC_A$%DFMB'V%E)J2
     194M@FH#=H?=[W?46!1ZB#>3VY"OY@[5&:9[[R?P"<`PCKT/=GXVBB&<JU/=B!?/
     195MHE[Q/QQ"_9=_^KIG&+.=?K]PXW6<R6014?RMAVC)7^NL,04S/GF$/;YYX&*G
     196M[;\*A@4`C"C!0"SP-!6C70+F,(<(X*?.R"GH]#^M:(=./U,S*#,J&^^/\(8`
     197MP930@IV9)3TYRBE<$_KG/.M+,`P)7@%T!)R8Y.-B;'JMB'16<(H$P^Q:XJ%*
     198M6M=TI).S&O6=Y+%Z(9V"\;Z0SJBVEN5B:[YIAY_JT&H$PLP=>X%<M>*6-.(%
     199MNSO.,;*7X1Q(8$"JA%SWY$"GZXG*"H9"WP+`@`)Y<(X,>$V!<^;6,\E$&GJX
     200M4`!EVB'.-SI_:Z"<IB?(R9][1L2_(7LDA=#)Y>B^Q8M"6\WN\LB40#ET>P3*
     201M@8MP!LIIP\_3Z^=U.FTDGR&YW*D$R!$D22\*H)"LXVA'1&%%\@#`S+2`0$-T
     202M0`]@`_1I09/"$6YM!"L#EWOG@#@EZX$^^',=\F`+^K-A')F?[BAG:EX[\,[(
     203M86$(@*GKP%!XF(:QV!N=CWZJC.#.$NV0Y-#BC4@=K0%T"DQ'_;.>=#Q`F!&;
     204M5.7I-^9<Q472@]WESW5!%C+A(RX";#.K^=)01C^;89X#XG&V33Y[#G%/-[4N
     205M%[UG.\JP'O0*I%."S4>DLYP9*P)0R<E0`!2.=ISME6^@`V=O=J3#"+K^65,/
     206M'S.@3:F'@@M=T%,@'2QXNR^O.@,?P>D\PQ-9B8!3@)VBAS#@]`)=`@9U<`A[
     207M0$L@GV&DJ$KJBYY959B]=T4I]F$;5O*@'%6!!)/M1_5X8ROWK9`[8)KDPEKI
     208M@!SVLS&#JH0H169B6D"=W`R(R46SU`[YJX1/?XDQGZX811@RQ#9ZS"/_'(?D
     209MA4R8%0%&8)MA=%7RB_4$#/Q*C;9`.NGH'T`::D']&Y3-;K>O4"8)<3-<S$:7
     210MRXYU9/J&$>1*OJB[F/)V@ALXB6($U!FIV(]`%[H8<@5Z^4`=A,920)W:ET$=
     211MZ>F\L$ZI9[\D+:Z;[<T+/0*M(/A_>'7,=`JB%[%/\V@26<?)T`XRSJYT;QF*
     212M&4W9J7$1/^[9SFT$#AXW3:Z?;!_&CTU<F>^MYY,R@K%.O@;VAG:HNW"%['IB
     213M%=..A5D<Y@OP@-1\`(\E'=E%*\D..9OS1)TA%`<D#3VWR`,5N:J0YXLE52\.
     214M0/U7YY^3)870''Q8J=!!*'UZD?]V>)$$A'RMT@)]4,IE$,-POCSVR/0AD90A
     215M`!ANIKW)JFE,A1,5R;P'4%S68+H>$@?H)6P@LCQ$'^('9+B`L/ZBVPW]8+!Y
     216MI1&9"?P$%!=\90&\G05Z#1(A9GNAAH6C4C#"URUV)2D5!:Y"6NW@P$QVD\D3
     217M8I*S$3%VV`T0T5^4YX'D!7!<!+*0(@5O'4^'>Y%]EYUHI&5H4J#@<#0QR"9;
     218ME=XTV=6_ROI<=(8.%LO_7\@B9/5TR.$T`[XG4T@F&%::]RB[]=>VF'@I2$P9
     219M1+T6&:6-86S(B<S,_>P-O!4D7]:79QQ2A&(X@2<))YU55]!"<&PJ/9VRW7YM
     220MK3`C$EXYI<*!0"82@W)Z,L%,HOVZA])S$GANFQ2AA@%$:(]Y(9G>7.0]/N_.
     221M]!;9,3$!G&6<0L>LS(P&9,]#$[([?D6R$UJ82KSIHEU?'E.)3G72&3J4W)/,
     222MEYU%,'G.$7[!`>R;*3R[D8,E9HX,L708@U`AB_)6J$*T!_HH@*>!P46/:&W:
     223MA/*@!*91%(L(]4/V$?BD9>OZBG#="XXGYC@"Q+[@K!K,42V:@LL:6D=V##[1
     224MTK%:R,NI'$?1BIF2:E*VV`>5$ME^9)J99"1(!EVL8$$]&HE\!:/8!CET2-O&
     225M*.\!9E`A,Z@HCR]S!';A-+6>.UY`*YA(`1Y3B5P-;[@RIA$'XJ!<O<)U)GKE
     226M*0C(TGKA^:#32)$=`E@UF8OK&<M$%&LQRAJBDQ"U@@[*M@9)P[DG3H<4-8N(
     227M!,`!&YB57GN!4!Z2Z!AU$B([V4NB8F2(!JF&C$F`CZ'ILSJ(<*\_JC*P2%<K
     228MR'S&6VH+BZ^PDY/5UM0<YH;UQA1E\J>Z0#`+34#\E`C(!I"T);AU90]-U*I$
     229MLT;//5SIBW3'JCG$XPMU(SS/S$3.))C6QD4%(0WE*$N0R<Z=G,>5&FF!S&6&
     230M<A2KG1U%$$:D073.BZ9>AV[$<A.!S(E98229DEJ9736*BA$IE5=)$XI#-KV.
     231MA*Q433/B(!DR-S-2M36Q7%H5VZ0F4XYC:QRBR`BHABX()8A9.4TU0FR84RV#
     232MA`&9#:$6Z2D5++6C]U3L2O:T@P&)DZ5-/>+<$G8C,90$L8`^&JX>X<IC)Q:9
     233MD(O1BCG)W&SDEQH%46"_)E4+WJ9D3=>1C[W((&R:FEYDU+GVJBG)5C@9\!&C
     234M!6Q\V"/F-"TIRHOI\3*K5;>(G+DXTG`]B0_ZG,3NC3U"6M`M1$82V\6+>OZX
     235MD^%=>"Y@,37)[PJA$S),V$\W]BF9BF9:$A+3,U<X510.O$#V//F)5),M4]%V
     236M2"1R^_+`-M%=26IRGQ3J1HE^\A"B93H2C%VJ0'D%/#_`?Y1=*IN.E#VD<L,'
     237MWL1.([;S"W<S4Y$/^C)?]/@SS)3`P,KU1X(CU>36=P1KDH&O`MKKGEQ^4),]
     238M*>%YZ#N6Q.UJ,-412E+`E1U3D(P)C%'HO;J>;+K9R-Q15K#.GX>2.$U-:CHF
     239MW#8ZB@T[!<]2@)I$P`;"6JDE"^)L.``W'2W9J26EA%QF'!2)+E9*`LF\M3)/
     240M<G.[D^U5WG#DX5H2!@?G@8)4Q3:164I:7#5'4RG;F738V67`<-&=U)LU>`HO
     241M"S=#A#`Q1N.0>HO*`86Y86?#?'.O(F>\5DL-E5V"FQGPC"S9Y6H2012JT9YM
     242M,\)N4XIROC4`R5'DP?Q4M6OSK`6QVTQ30FTC`KLT@IH!3^0QU:1!1:T7*ZW=
     243M7]<3:?YP[F6-LR-_?OWY[4\_"TC]_O/[GZZOR>56/CQ?__VIN?WNZ99_O\X_
     244M..?R#QZ*YOJ?_Q=^?)V)UJ8?9OF?Y+_G)\L/M/QX^QH[?IL,I4@JP^E0K[^(
     245M"?$FQL$W^??]%WR1(.%FDIM-;A:YV0G[LM_&;]O3=RFH#_WUEKO]Z9O<&2!X
     246M\Z?;*JC\97O4\U-4T)^^LVX&K?G`DI(A=R:/V[`;G5WXSD[,<[MI%UA#?<P4
     247M%:#J(07R+OQ2`NY/5OR-M0S">+_;M7^L!H?YI2A!/5-*FJ))N3OD[F0=.&0I
     248M;@WMH(]3131)2[KU$<,*GT8\TJR/[>F=X2>YW5GY-ZL'?CNMIUL+U>II_J[=
     249M&NA:SR_%!ZU;`^A\?S1$K5[E!JMG1ZN.)3+EM&!8/QO'$H-0K*1;1[MT%/>J
     250MW%OL9>502B7=;D_K9--.:NW5:N]:QR]V%HN5=.OE>/:[1>YNJWT^JMU9UO&F
     251M(XQO]EG)M)YW]ESO#>OS@`!HO:SUF]4PGE^MSFI/MNMWTWH+.2S'".X7":OC
     252MW*N/*TAJEQK/XA%!Y+M)?Q_;9?,;7NU:,Y"RPLYRPKL.^^2CR]9,]Y]^P\K[
     253M<<&,6$HFD\EN%AU9MC\[)6"PWAU+IKDX?L/ZYY#K.2TJ0;:,.,LX<4WO%NV:
     254M+I?GJG>];Y52N+P.N5MT_=BJ:B:8W=80[%"[[8NMN&AV*RC69RXA`70NF=[K
     255M9I.<3*1\915=Z2(JPTJJ=5T7$4JVE11_`2ZCQSJBZ.NK4!QM*95K?=60R&TE
     256MU3IL:RGDRE<2U\VSOHA5M&+5L.FS+BCOEPQ>+)O^X^%0D,>?52SAD6%5KP(5
     257MOM7OA`+HR.N;7)?OY?U9R]]0+I?\`>3AM?('4HXA?2WX_7<4LS;\_/M[M5,D
     258M\JO@S6_O15&W/"H_?J]?K#UY]#]\?8WFY%&YO)K#`+QZ8XBL1U,/_:TU%:_A
     259M3_$EI!T?ARN$UT?L;$L/'++MJE!+0&)U/EZN7>B>0;]?0DCK<]3DFXZJYQGW
     260MSE[8\.,=!>421?OD*,OFAVV1;3,V?K:='HN4[M"C*4SDG@OO^A:CNR.$JLXH
     261MN/='6:DK"J[]$7M&W/>EW1Y%&_4-QK?'_N@M"FP=V[H$Q^;2&R:[5KGO,+Y'
     262MCN=Z"NXM$J&C*+BV2*Q)WO?=Q/?"[@W7IX][8;6F?3OPS>TZLNGZJF/&5QW_
     263M<@D.$9%J5<ZIPR$3H[/@Y:9K22JG=`E0#0U4]&X(E<F)[AJN]4+ON$Q1Y_#\
     264MBG4)5',DM$>+?6;<\J([S7($!&Q_B58UE3[A73Z"U4-2VHH]:%Y2HEO05OFX
     265M1$QE;\+4GI>`M9"972[Y&B$Q)<669.H/DW]DJX:P\/7[M3)45)I#G7($#A\C
     266MNN3*!0[?9[JDJH7TL(YVK0F5G75)E(L:HNK7%N."UMA@N03Y1YU](>_QXZE$
     267M/^CL1HVZOC.G<U"A?IO?VSO\9:*+H06'7*HZ?WV#KNYR#:?$&YYL<J'YH*^=
     268MCU9YM*[7]L8G*Y_L32HN?+3BT8JJ*Y^N?'J]LK(JEYWZ=[\./D_%367UVM]8
     269M05$-7:<T45A%814E21M5]QY4@B::[06#=>S].ED%:IBOXXU/OS<M[-*`;EUX
     270MNDCMMB\-VQ`6?LY?<UN;>-R[FZ4V/"Q-?;'!;+X9Z6B.LQOY>*(%N74-J718
     271M;ES#JKV.<=65?8TL5ZKO73ZZNOZT\G(-<M'JZQEH'L)F?=*1!COG]1IHGN/^
     272M89R[5GP&6FLM9Z@?L:OK4`.7;]W7=;CQ@_)ZC;8BA6O`SUZOPU!\L_\6_<XF
     273MG1ARE_4++^-CKK8OJY)#).H5Z/#MZ$EB."O(MJQ5!=;K]M&`C^*WS2"5FTNJ
     274M+Q_NEZ/R3)6>PEOM89Z&-[1#`ZMND_W!:%-'NX>">RY7T0<59X=M!')@;>M1
     275M>KKNUUO7/5;9^2HLM\:3=ZOU%-Y:[SG;*7L'7!S=)^9*SU=I_:`"X6.M5VGY
     276MH`GS.D6FJ653?%0?8T,@UM9"`O=5TF[]"5=PO@KK!RU:C8S]P7HQB_&JTK8@
     277M!++];K^4?=4ML\QU%;9;,8/A<3_IBK_KZY9TE3D@@AW9EI>T:V-H]F+C+O3M
     278M00W+UMI5YN!HF"E\%;FA@W/Q[+;#'3=]Q6(:ZRKS+:?SS3Z6.7P:?+&8EML0
     279M$NOT$06.E-PD'@\_LOJC)31,%*\BMX4F1=%[?R&OP?Y=!6X+X8EZ]LKKX\@9
     280M'T=V&]L]3XTR%MBKVI*:!"34)EQA@HU6TCL?0&<)'7*MC4T@1KAWH<IR](>+
     281M-@X$"[WAPL;/XXWL2#!@)LA=1UF$9([10D_4$,DZDV%!%QN<7Q#Z01^6M=5N
     282M'%B.^"&GT55""\&K5L41`R3T.>:KX0WA>63E6OTU)`KO%FN_AS#A7"2%@S;K
     283MVEM=\5KI>DP.ER_T$E*%;X5=J[R%2(VT8HV[;!2O6046]"@'@]2GYO=8X9YP
     284M;:H2MX8C2E>DTY;Y"L<%7F$!)^\;(A:K8SQZ<T3I>G/J?A&_=XVY5!,71X^N
     285M_::.9=QWQ;?.1/LJ:G;[,E.N[W?G\>,1-3_@1P&%B@ZPK]="[%")>+)!(D<[
     286M*9"'H*^B>*`80*P&!PP>UE=';GQRZ=9OB&3HQF]PQ'"GVNU$G808@(_O[8OU
     287M*QP#VK,#Q:QS`;/J@5GS[E\)C*4]/,#).UE?3Q>O[@44,A_&4.!BO0R8\QYG
     288M4%[?[,[X9K=C&'Q:4?E1LNZ7K8YW/4"@&CM:2N;3\3SPZZN6%Z!%83AN'K(S
     289MO&@\';]$+H^1U[Z+CFLB)W-DG]++G.3AA,O+^M/Q7>#CL*6WN^BX,/#IJ+3O
     290MLMN+L?E%PWD57SXUJ+<5+=HVB2J9!57K77+<'YF)2_,NO#T@>,F^TH?RRQ%"
     291ME3#MQ&,MOMQO2.WP;T=PO]#H0L;G:*ZW]*U4X1[/J=BKWJ6W+T5&:/::[^+;
     292MHX)/774[',&*P['"09JSWRT_F>N1&O=19[RI;<C:)]EQ2_U0=#MFLA[7U._R
     293MVS\#P6SKX_.7FP:;VVX?GG8P8CI[C'V5/IGKE7K[)!X8;E>OLXQQ3V<8\@\N
     294M(`[R[!\>O#U!,LBC'9')/_B#^'V^=9<ZINFVH\WVH>[P\')C`)WG[MJ3>:JY
     295M.R`:'L^FISLHPZ^4Y'T7WMXHILC;$056?/ND1)3G^%@<41K=X*\I\B#;]HWH
     296MN>UQ%Q:?!=V.YNYWOU!8?4\*V\K\4.'`ETEJ3I[7DCM"A(,\V\Q7Z>U)0SK_
     297MB`G>3Q]"13)!O>>[27=S:W0/(/QNMOKTZ%[)+YN=TN+SLW3W-C/N>-4R.K5E
     298M$S?KS['3"53QG)HZKK([6H63]$)>UM/'B!5/#PT%Y0%)!_%+7C1&T#W$V]Z$
     299M7QVO]Z/59TUC1;M=9<4G;2M6.T4H0'>H#/?VB<;^XJ$1?NE]K*ODCIEE\N[;
     300M57K'S?"ERA8#9Z'20(W[>9[!\8BIF0^_Z(F=]2IM/I5+84_WHWF/\<FYW&HB
     301MWWTJ/I7R_/LI&D]W\`ZJT#-LM.P.Y.'@]#6OPCN:A[,E/"?V1&[=<I'UY^>S
     302M'L_ZMA?!)UKV5=9\'C?GL=W]J3Z/>`V92"W!5AHQ)GSDQ0>MZ^L%1,8!D'NF
     303MJW1=.)D?>2V]7,7S`LSXN%#;5V%`9YVLWN9=VGVR-M7BAU:;SQ1?HSY\J3=]
     304M$4??&=\OOHKVA<`S#Q,8]Y/K`N+X9G+(CL>G#8_SXT9WO<-F8W,VHJ=NC7,R
     305MV%-95596K:>!YC./9%MW^;Y`/;Z!%L)J@>Y`]IO4OW253AO:_60>YE,T?%S9
     306M(QE8*RO>([<+\*FJJ\QMP*6C4^_GE@W.5M33KB+WS+.UX9K#VW*C`E],C))M
     307MK[:IK,\3'CI@55>FW+C<V#.%:8YS#NH!M+9MG)N!5?.S@N8+Q>J.^NB##GZ#
     308MKX9">0Y$SWK_X$]5@%J-X5;=QNK2%AVPUH!R2!P(J!JH,BL_44L.FMS1=06I
     309M[_P.,S[=?4%3@XF"?)`F>V'20(CDS-%T-D#JX%#FM"&U@@4'%*['MI>M3\=3
     310MB!.[1ZDWR`S`5_DYXGCD]A/BW63II(,O'>;)/.-`-_6<!+S#)S+-OZ*XDFWC
     311M,-VY;C`9T$T4<,X?<&2@-N2:NF?WE]N3*!,W<,Q8`$C':@N\V32?S%L3&&T\
     312M-"O[8,/`+$#\M=VP,`!8A=/J`R8,\)5!:VGS!H2.O#9/6+C`H(.NB8\`]2=S
     313M#P7:XK>?@R$5LHGXZW$<W2Y)R`I.'+I07\"H\CSS[<4.",4O\+1HYG)&8JNR
     314M_J9C0,PG\W&?P&2`IN9DG^U&A8,&V"HW@`M(5)\KSJ$^Z"WP4`;87!=R<RP$
     315M0Q9?MS^HS8$0'6VK'\#F$*@''6C?Z"=X$P;5K+OP=>WI7K#;,PIDGO:X`%J`
     316M&YP)<X,SQS70KSO=;G@'->O1O*:0R16CNPXF<QS3GIUG,L->T&V>#.0+5`5.
     317M`2`K_4)4`5(RC\V]T)0#E$W==P,I1R<<WNV\M;`,]H<!'@;\3:OYA#A("O@!
     318MUU:[`5)`#W!05;H<'CGLP/)VYI$K-MW$T<SM"`RT,1X7O/&V964Y_<CQN>W;
     319MY08T`2#PT5(<,WW0C,,'#M:Z`\H.'N:S>]P=(0][;1E#CP<[/-8].H+*OA?9
     320M_NRC[B#$T<!ZW`@B]GIZ3H.HY,ATQ8ML]Q`Z+-7-^:;&.11<IFVO(H>!FWT[
     321M._>\`G'SQ]/#?G0@IH'@+H/0C/R-EC5Z/+\/N!$%>6<+'P^YPT@T[Q6+1@^C
     322M!^%!BTD/\PU*U6^=?KW!.&-)C"O/[UUJWD-CRD.N6.MJ%E/N<@=>OCDLIMSD
     323M!N/4'E6N<J/3&<GZBUQ*YXM&F"-@7K-&F2V\6ZH'F3UJ7M*V0#,\DQW92-)B
     324M,\_DT*![81-RK6=/U=X9B_9HKT#SI-%H#_3B2P';(M(1Z9VSO'8+L5:-L8Z"
     325MUIMZ-9G)A*G@B,F-Q<CV>MTG^`O)'Z_K[01_5ZI-&K^COQE-5W6&@K$NK3;Z
     326M0Y=3L'`.5$1^(8.O^RU"O_A)>UWJ#D8%4GV%OW3AN/`Q7W&N]3=MJE=I/2<\
     327MC%^R>./)]_5%Q>G13QA>I>F.P[LTW8%X2E._(_$J3#(J<N<2)FQOKR%,>5VB
     328MA,#NO,+R7;W:=TB>\C1%']Y!><I4U9;:$2M9<>-F#G`6+KD"R_^#7.4]\A6F
     329M;SI3TL5V.[YY4IDV5B\!PZ=K;2S4&Y\H@S=;HY?Q>DL7DCKR+5N81&LMI$M;
     330M*BY;9&PG&V+SY2-AQ<+\*E[(QG(:BLD77/.OEWR1`G4DK*#2?N0+[&U5)RI>
     331M`^7U2!=QE:H2BAA9KE022AL!3E4UH2L$I<U$S#7<%4*<[2;YS_XA2:#]D[+M
     332MOY)N__._3A&8X\/3DT__Y^]OYX/5W_[VUW^6BGYZ^=O;3[]]_^NO;W:G_O0_
     333M_NMOWW_Z;R]_>_GGM]_>_O9K5+)8R>OWEW_YR]M_^>FWOVI?_`/7OYZV]]WV
     334M2B<]8>7?34_X>V_S!\D)?_>1:*K\^1_^Z37JJ_UN8L+JOYN8L*Z4AC4_$Q,^
     335M$Q,^$Q,N.^$?2$Q8ZUI!^S,QX>DS,>'_>&+"3D<&=_Y#&\/R$@`J/.4`:,#S
     336M$X@L/+T`G'_+0T!J@*4L:`:!YQR\*T-?(-#W]_K%*B:RU7J+U:F_8I6+?`%6
     337M^6S5::]0V\-J\K<IUYO5S_2"S_2"?S"]8+=+</IG>L%G>D'(SO_.]()]X><]
     338M_U#SMM<!.CQ86I,<=O@S^IMRXDGS7T8]K^MUO!FMO=`/8]:N<K.V<LDU$V"^
     339M*3T=>05B]ZJAJMD+U6QBZM:<2!^?K^M-F>=,&QCRA%J<%>U4,VOIV3$#6C>&
     340M_4:VN28'B#E/DQ(NI"X/T4!]@)G6S`K6)`'Y&0S'`A^(FIQHI*GU^D6'P][)
     341M1J3%@"BKS$9$E]D9E''&1%EE/B2D[/N0Z.*Z1J5=@Z+[EXZ*DO)]8$CS/R.C
     342M2^P:G'MLRAD;)?+'T/1K9,HU,MJN#8WMNC$\U^BX3%WH<N]/&O\GC?^3QO])
     343MX__ECVC\HI-"9Y24/VG\GS3^_^]I_"65:TW4/\1IP$[8W\'2UUT;E'RQ5TF8
     344MK_6U&]%]8E\W6CR"7T4I]`!X`QQWD/7;&WGP6D-1QOSK!/P2?$"T`:2&^MH7
     345M;=8`D;5\&E9`9&TK*_\T?QHG'-+F:[1^-:[X8[Z;9\MZ$7WP(6K7</5/YOTG
     346M\_[IDWG_R;R_"S^9]U'ZR;S_9-Y_,N\_F?>?S/M?_I]CWI<T+B@\/YGWG\S[
     347M3^;])_/^DWG_R;S_9-X'"/F_D7E?TKIV[OW'/K_><,P:>=)9+(+*@&1_AXZN
     348M6X.2X_TA1FQA3%+=?&-TC4EVN>PBU1:6!)6ZY\6H)'UNN7>+U#;XY?K(%I4$
     349M&9H/:F`2?.O<6AL,3#(N*_4L#4U6QB*E58M-(G!9Q=BTT"1(U-I;C4\.*=ZR
     350M7;WFK!'),<9BK)(QR;;RMF@EPI*CY&D1RR:E8+\GBUIV7'-\WKKQO<ML^35;
     351M"+.LG4`\UQ!F[WUJ>),49?FAQS<K?BQCFRW*"=(UKA%L[DKO?O2VT.&W;^\3
     352M!Y9+Q1N.RW<`>+S+E)I(=5Z%&0N-?.J'5E.E&A*WM7OI#23HM1#9K>`SRV!A
     353M[!K)T?I&[0TSM+[8U)/&;C/??=:?23E?'H)?,>5BS)\)-ZZX3SEIZ3[CS^3`
     354MGRF'AS@FW+C?,>&DF/N$\]#Z?B8<[N<SW?U,]3.YWC[52AZ/N29'_<PU&/%G
     355MKA'FZ==4GUE6@K=-,[GC/LM*18]9)N7]S#+0P+HFN9X)5L:LS?`S^><^P71H
     356M^_R2,W_FMYZYM4YQ<I6OKK-+>D[,;DRL+?^<_DP*]J^_O?SVWW_]FO_T'__=
     357+E_\):Y"61X/0````
    357358`
    358359end
  • Tst/Long/gcdp_l.stat

    reb7c6b r3b6f1b  
    1 1 >> tst_memory_0 :: 1380274734:3.1.3.sw, 64 bit:spielwiese:x86_64-Linux:fifi.mathematik.uni-kl.de:360920
    2 1 >> tst_memory_1 :: 1380274734:3.1.3.sw, 64 bit:spielwiese:x86_64-Linux:fifi.mathematik.uni-kl.de:2369608
    3 1 >> tst_memory_2 :: 1380274734:3.1.3.sw, 64 bit:spielwiese:x86_64-Linux:fifi.mathematik.uni-kl.de:2410592
    4 1 >> tst_timer_1 :: 1380274734:3.1.3.sw, 64 bit:spielwiese:x86_64-Linux:fifi.mathematik.uni-kl.de:36
     11 >> tst_memory_0 :: 1409302516:4.0.0, 64 bit:4.0.0:x86_64-Linux:fifi.mathematik.uni-kl.de:351072
     21 >> tst_memory_1 :: 1409302516:4.0.0, 64 bit:4.0.0:x86_64-Linux:fifi.mathematik.uni-kl.de:2369624
     31 >> tst_memory_2 :: 1409302516:4.0.0, 64 bit:4.0.0:x86_64-Linux:fifi.mathematik.uni-kl.de:2410608
     41 >> tst_timer_1 :: 1409302516:4.0.0, 64 bit:4.0.0:x86_64-Linux:fifi.mathematik.uni-kl.de:120
  • autogen.sh

    r5ce0932 r3b6f1b  
    1 #! /bin/bash
     1#! /bin/sh
    22
    33cd `dirname "$0"`
  • configure.ac

    r5ce0932 r3b6f1b  
    5656
    5757# Checks for libraries.
     58
     59# This test for -lpthread etc has to come before AX_PTHREAD,
     60# because libtool tends to ignore -pthread in linking shared C++-libs
     61# see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=25460
     62# (happens with ubuntu 14.04)
     63AC_SEARCH_LIBS(sem_wait,[rt pthreads pthread],[],[
     64  AC_MSG_ERROR([sem_wait not found in rt,pthreads,pthread])
     65])
     66
    5867#AC_CHECK_LIB(pthread,pthread_create)
    5968AX_PTHREAD([], [
     
    7079# Set the correct PTHREAD flags and, if needed, change the compiler to one that is pthread-enabled.
    7180CC="$PTHREAD_CC"
    72 PTHREAD_LDFLAGS="$PTHREAD_CFLAGS"
     81CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
     82LDFLAGS="$LDFLAGS $PTHREAD_LDFLAGS"
    7383
    7484AC_SUBST(PTHREAD_CFLAGS)
  • factory/cfCharSets.cc

    reb7c6b r3b6f1b  
    437437    l= tmp.getFirst();
    438438
    439     tmp= minus (tmp, l);
     439    tmp= Difference (tmp, l);
    440440
    441441    select (ppi, l.length(), ppi1, ppi2);
     
    444444
    445445    if (count > 0)
    446       ppi= MyUnion (ListCFList (l), ppi1);
     446      ppi= Union (ppi1, ListCFList (l));
    447447    else
    448448      ppi= ListCFList();
     
    455455    if (charset.length() > 0 && charset.getFirst().level() > 0)
    456456    {
    457       result= MyUnion (result, ListCFList (charset));
     457      result= Union (ListCFList (charset), result);
    458458      ini= factorsOfInitials (charset);
    459459
     
    468468
    469469    tmp2= adjoin (ini, l, qqi);
    470     tmp= MyUnion (tmp, tmp2);
     470    tmp= Union (tmp2, tmp);
    471471
    472472    StoredFactors.FS1= CFList();
     
    616616    {
    617617      nr_of_iteration += 1;
    618       ppi= MyUnion (ListCFList (qs), ppi1);
     618      ppi= Union (ppi1, ListCFList (qs));
    619619    }
    620620
     
    636636        if (!isSubset (cs,qs))
    637637          cs= charSetViaCharSetN (Union (qs,cs));
    638         if (!isMember (cs, pi))
     638        if (!find (pi, cs))
    639639        {
    640           pi= MyUnion (pi, ListCFList (cs));
     640          pi= Union (ListCFList (cs), pi);
    641641          if (cs.getFirst().level() > 0)
    642642          {
     
    645645            if (indexRed <= 0) //irreducible
    646646            {
    647               qsi= MyUnion (qsi, ListCFList(cs));
     647              qsi= Union (ListCFList(cs), qsi);
    648648              if (cs.length() == highestlevel)
    649649                is= factorPSet (factorset);
     
    674674          }
    675675          is= Union (factorsOfInitials (cst), is);
    676           iss= MyUnion (adjoin (is, qs, qqi), adjoinb (ts, qs, qqi, cst));
     676          iss= Union (adjoinb (ts, qs, qqi, cst), adjoin (is, qs, qqi));
    677677        }
    678678        else
     
    685685    {
    686686      qhi.removeFirst();
    687       qhi= MyUnion (qhi, iss);
     687      qhi= Union (iss, qhi);
    688688    }
    689689    else
  • factory/cfCharSetsUtil.cc

    reb7c6b r3b6f1b  
    457457
    458458/* basic operations on lists */
    459 
    460 bool
    461 isMember (const CanonicalForm& f, const CFList& F)
    462 {
    463   for (CFListIterator i= F; i.hasItem(); i++)
    464   {
    465     if (i.getItem().mapinto() == f.mapinto())
    466       return 1;
    467   }
    468   return 0;
    469 }
    470 
    471 /// are list A and B the same?
    472 bool
    473 isSame (const CFList& A, const CFList& B)
    474 {
    475   if (A.length() != B.length())
    476     return 0;
    477 
    478   CFListIterator i;
    479 
    480   for (i= A; i.hasItem(); i++)
    481   {
    482     if (!isMember (i.getItem(), B))
    483       return 0;
    484   }
    485   for (i= B; i.hasItem(); i++)
    486   {
    487     if (!isMember (i.getItem(), A))
    488       return 0;
    489   }
    490   return 1;
    491 }
    492 
    493 
    494 /// is List cs contained in List of lists pi?
    495 bool
    496 isMember (const CFList& cs, const ListCFList& pi)
    497 {
    498   if (pi.isEmpty())
    499     return 0;
    500 
    501   ListCFListIterator i;
    502 
    503   for (i= pi; i.hasItem(); i++)
    504   {
    505     if (i.getItem().length() != cs.length())
    506       continue;
    507     if (isSame (cs, i.getItem()))
    508       return 1;
    509   }
    510   return 0;
    511 }
    512 
    513459/// is PS a subset of Cset ?
    514460bool
     
    517463  for (CFListIterator i= PS; i.hasItem(); i++)
    518464  {
    519     if (!isMember (i.getItem(), Cset))
     465    if (!find (Cset, i.getItem()))
    520466      return 0;
    521467  }
    522468  return 1;
    523 }
    524 
    525 /// Union of two List of Lists
    526 ListCFList
    527 MyUnion (const ListCFList& a, const ListCFList& b)
    528 {
    529   if (a.isEmpty())
    530     return b;
    531   if (b.isEmpty())
    532     return a;
    533 
    534   ListCFList output;
    535   ListCFListIterator i;
    536   CFList elem;
    537 
    538   for (i= a; i.hasItem(); i++)
    539   {
    540     elem= i.getItem();
    541     if ((!elem.isEmpty()) && (!isMember (elem, output)))
    542       output.append(elem);
    543   }
    544 
    545   for (i= b; i.hasItem(); i++)
    546   {
    547     elem= i.getItem();
    548     if ((!elem.isEmpty()) && (!isMember (elem, output)))
    549       output.append(elem);
    550   }
    551   return output;
    552469}
    553470
     
    570487  {
    571488    elem= i.getItem();
    572     if ((!elem.isEmpty()) && (!isMember (elem, b)))
     489    if ((!elem.isEmpty()) && (!find (b, elem)))
    573490      b.insert(elem);
    574491  }
    575 }
    576 
    577 ///if list b is member of the list of lists a remove b and return the rest
    578 ListCFList
    579 minus (const ListCFList& a, const CFList& b)
    580 {
    581   ListCFList output;
    582   ListCFListIterator i;
    583   CFList elem;
    584 
    585   for (i= a; i.hasItem(); i++)
    586   {
    587     elem= i.getItem();
    588     if ((!elem.isEmpty()) && (!isSame (elem, b)))
    589       output.append (elem);
    590   }
    591   return output;
    592 }
    593 
    594 /// remove all elements of b from list of lists a and return the rest
    595 ListCFList
    596 minus (const ListCFList& a, const ListCFList& b)
    597 {
    598   ListCFList output= a;
    599 
    600   for (ListCFListIterator i= b; i.hasItem(); i++)
    601     output = minus (output, i.getItem());
    602 
    603   return output;
    604492}
    605493
     
    621509    return iss;
    622510
    623   qhi= minus (qh, qs);
     511  qhi= Difference (qh, qs);
    624512  length= qhi.length();
    625513
     
    659547  if (iscopy.isEmpty())
    660548    return iss;
    661   qhi= minus (qh, qs);
     549  qhi= Difference (qh, qs);
    662550  length= qhi.length();
    663551  for (i= iscopy; i.hasItem(); i++)
     
    1052940  {
    1053941    iitem= i.getItem();
    1054     if (!isMember (iitem, mem))
     942    if (!find (mem, iitem))
    1055943    {
    1056944      j= i;
     
    1059947      {
    1060948        jitem= j.getItem();
    1061         if (!isMember (jitem, mem))
     949        if (!find (mem, jitem))
    1062950        {
    1063951          if (contractsub (iitem, jitem))
     
    1075963    }
    1076964  }
    1077   return minus (cs,ts);
    1078 }
    1079 
     965  return Difference (cs,ts);
     966}
     967
  • factory/cfCharSetsUtil.h

    reb7c6b r3b6f1b  
    101101
    102102bool
    103 isMember (const CFList& cs, const ListCFList& pi);
    104 
    105 bool
    106103isSubset (const CFList &PS, const CFList& Cset);
    107 
    108 ListCFList
    109 minus (const ListCFList& a, const CFList& b);
    110104
    111105ListCFList
     
    115109adjoinb (const CFList & is, const CFList & qs, const ListCFList & qh,
    116110         const CFList & cs);
    117 
    118 ListCFList
    119 MyUnion (const ListCFList& a, const ListCFList& b);
    120111
    121112void
  • factory/cfEzgcd.cc

    reb7c6b r3b6f1b  
    307307  for (int i= A.min(); i <= A.max(); i++)
    308308  {
    309     if (!A[i].isZero())
     309    if (!A[i].isZero() &&
     310        ((getCharacteristic() > degree (U,i)) || getCharacteristic() == 0))
    310311    {
    311312      termEstimate *= degree (U,i)*2;
     
    433434}
    434435
     436/// real implementation of EZGCD over Z
    435437static CanonicalForm
    436438ezgcd ( const CanonicalForm & FF, const CanonicalForm & GG, REvaluation & b,
     
    776778#endif
    777779
     780/// Extended Zassenhaus GCD over Z.
     781/// In case things become too dense we switch to a modular algorithm.
    778782CanonicalForm
    779783ezgcd ( const CanonicalForm & FF, const CanonicalForm & GG )
     
    790794
    791795#ifdef HAVE_NTL
    792 static inline
    793 int Hensel_P (const CanonicalForm & UU, CFArray & G, const Evaluation & AA,
    794               const CFArray& LeadCoeffs )
    795 {
    796   CFList factors;
    797   factors.append (G[1]);
    798   factors.append (G[2]);
    799 
    800   CFMap NN, MM;
    801   Evaluation A= optimize4Lift (UU, MM, NN, AA);
    802 
    803   CanonicalForm U= MM (UU);
    804   CFArray LCs= CFArray (1,2);
    805   LCs [1]= MM (LeadCoeffs [1]);
    806   LCs [2]= MM (LeadCoeffs [2]);
    807 
    808   CFList evaluation;
    809   long termEstimate= size (U);
    810   for (int i= A.min(); i <= A.max(); i++)
    811   {
    812     if (!A[i].isZero() && (getCharacteristic() > degree (U,i))) //TODO find a good estimate for getCharacteristic() <= degree (U,i)
    813     {
    814       termEstimate *= degree (U,i)*2;
    815       termEstimate /= 3;
    816     }
    817     evaluation.append (A [i]);
    818   }
    819   if (termEstimate/getNumVars(U) > 500)
    820     return -1;
    821   CFList UEval;
    822   CanonicalForm shiftedU= myShift2Zero (U, UEval, evaluation);
    823 
    824   if (size (shiftedU)/getNumVars (U) > 500)
    825     return -1;
    826 
    827   CFArray shiftedLCs= CFArray (2);
    828   CFList shiftedLCsEval1, shiftedLCsEval2;
    829   shiftedLCs[0]= myShift2Zero (LCs[1], shiftedLCsEval1, evaluation);
    830   shiftedLCs[1]= myShift2Zero (LCs[2], shiftedLCsEval2, evaluation);
    831   factors.insert (1);
    832   int liftBound= degree (UEval.getLast(), 2) + 1;
    833   CFArray Pi;
    834   CFMatrix M= CFMatrix (liftBound, factors.length() - 1);
    835   CFList diophant;
    836   CFArray lcs= CFArray (2);
    837   lcs [0]= shiftedLCsEval1.getFirst();
    838   lcs [1]= shiftedLCsEval2.getFirst();
    839   nonMonicHenselLift12 (UEval.getFirst(), factors, liftBound, Pi, diophant, M,
    840                         lcs, false);
    841 
    842   for (CFListIterator i= factors; i.hasItem(); i++)
    843   {
    844     if (!fdivides (i.getItem(), UEval.getFirst()))
    845       return 0;
    846   }
    847 
    848   int * liftBounds;
    849   bool noOneToOne= false;
    850   if (U.level() > 2)
    851   {
    852     liftBounds= new int [U.level() - 1]; /* index: 0.. U.level()-2 */
    853     liftBounds[0]= liftBound;
    854     for (int i= 1; i < U.level() - 1; i++)
    855       liftBounds[i]= degree (shiftedU, Variable (i + 2)) + 1;
    856     factors= nonMonicHenselLift2 (UEval, factors, liftBounds, U.level() - 1,
    857                                   false, shiftedLCsEval1, shiftedLCsEval2, Pi,
    858                                   diophant, noOneToOne);
    859     delete [] liftBounds;
    860     if (noOneToOne)
    861       return 0;
    862   }
    863   G[1]= factors.getFirst();
    864   G[2]= factors.getLast();
    865   G[1]= myReverseShift (G[1], evaluation);
    866   G[2]= myReverseShift (G[2], evaluation);
    867   G[1]= NN (G[1]);
    868   G[2]= NN (G[2]);
    869   return 1;
    870 }
    871 
    872 static inline
    873 bool findeval_P (const CanonicalForm & F, const CanonicalForm & G,
    874                  CanonicalForm & Fb, CanonicalForm & Gb, CanonicalForm & Db,
    875                  REvaluation & b, int delta, int degF, int degG, int maxeval,
    876                  int & count, int& k, int bound, int& l)
    877 {
    878   if( count == 0 && delta != 0)
    879   {
    880     if( count++ > maxeval )
    881       return false;
    882   }
    883   if (count > 0)
    884   {
    885     b.nextpoint(k);
    886     if (k == 0)
    887       k++;
    888     l++;
    889     if (l > bound)
    890     {
    891       l= 1;
    892       k++;
    893       if (k > tmax (F.level(), G.level()) - 1)
    894         return false;
    895       b.nextpoint (k);
    896     }
    897     if (count++ > maxeval)
    898       return false;
    899   }
    900   while( true )
    901   {
    902     Fb = b( F );
    903     if( degree( Fb, 1 ) == degF )
    904     {
    905       Gb = b( G );
    906       if( degree( Gb, 1 ) == degG )
    907       {
    908         Db = gcd( Fb, Gb );
    909         if( delta > 0 )
    910         {
    911           if( degree( Db, 1 ) <= delta )
    912             return true;
    913         }
    914         else
    915           return true;
    916       }
    917     }
    918     if (k == 0)
    919       k++;
    920     b.nextpoint(k);
    921     l++;
    922     if (l > bound)
    923     {
    924       l= 1;
    925       k++;
    926       if (k > tmax (F.level(), G.level()) - 1)
    927         return false;
    928       b.nextpoint (k);
    929     }
    930     if( count++ > maxeval )
    931       return false;
    932   }
    933 }
    934 
    935796// parameters for heuristic
    936797static int maxNumEval= 200;
     
    938799
    939800/// Extended Zassenhaus GCD for finite fields.
    940 /// In case things become too dense we switch to a modular algorithm
     801/// In case things become too dense we switch to a modular algorithm.
    941802CanonicalForm EZGCD_P( const CanonicalForm & FF, const CanonicalForm & GG )
    942803{
     
    11541015  {
    11551016    TIMING_START (ez_p_eval);
    1156     if( !findeval_P( F, G, Fb, Gb, Db, b, delta, degF, degG, maxeval, count, o,
     1017    if( !findeval( F, G, Fb, Gb, Db, b, delta, degF, degG, maxeval, count, o,
    11571018         maxeval/maxNumVars, t ))
    11581019    { // too many eval. used --> try another method
     
    12481109      bt = b;
    12491110      TIMING_START (ez_p_eval);
    1250       if( !findeval_P(F,G,Fbt,Gbt,Dbt, bt, delta, degF, degG, maxeval, count, o,
     1111      if( !findeval(F,G,Fbt,Gbt,Dbt, bt, delta, degF, degG, maxeval, count, o,
    12511112           maxeval/maxNumVars, t ))
    12521113      { // too many eval. used --> try another method
     
    14531314
    14541315      TIMING_START (ez_p_hensel_lift);
    1455       gcdfound= Hensel_P (B*lcD, DD, b, lcDD);
     1316      gcdfound= Hensel (B*lcD, DD, b, lcDD);
    14561317      TIMING_END_AND_PRINT (ez_p_hensel_lift, "time for Hensel lift in EZ_P: ");
    14571318
  • factory/cfGcdUtil.cc

    reb7c6b r3b6f1b  
    1414#endif
    1515
    16 /// coprimality check
     16/// Coprimality Check. f and g are assumed to have the same level. If swap is
     17/// true, the main variables of f and g are swapped with Variable(1). If the
     18/// result is false, d is set to the degree of the gcd of f and g evaluated at a
     19/// random point in K^n-1. This gcd is a gcd of univariate polynomials.
    1720bool
    1821gcd_test_one ( const CanonicalForm & f, const CanonicalForm & g, bool swap, int & d )
     
    217220}
    218221
     222/**
     223 * same as balance_p ( const CanonicalForm & f, const CanonicalForm & q )
     224 * but qh= q/2 is provided, too.
     225**/
     226CanonicalForm
     227balance_p ( const CanonicalForm & f, const CanonicalForm & q, const CanonicalForm & qh )
     228{
     229    Variable x = f.mvar();
     230    CanonicalForm result = 0;
     231    CanonicalForm c;
     232    CFIterator i;
     233    for ( i = f; i.hasTerms(); i++ )
     234    {
     235        c = i.coeff();
     236        if ( c.inCoeffDomain())
     237        {
     238          if ( c > qh )
     239            result += power( x, i.exp() ) * (c - q);
     240          else
     241            result += power( x, i.exp() ) * c;
     242        }
     243        else
     244          result += power( x, i.exp() ) * balance_p(c,q,qh);
     245    }
     246    return result;
     247}
     248
    219249/** static CanonicalForm balance_p ( const CanonicalForm & f, const CanonicalForm & q )
    220250 *
     
    227257**/
    228258CanonicalForm
    229 balance_p ( const CanonicalForm & f, const CanonicalForm & q, const CanonicalForm & qh )
    230 {
    231     Variable x = f.mvar();
    232     CanonicalForm result = 0;
    233     CanonicalForm c;
    234     CFIterator i;
    235     for ( i = f; i.hasTerms(); i++ )
    236     {
    237         c = i.coeff();
    238         if ( c.inCoeffDomain())
    239         {
    240           if ( c > qh )
    241             result += power( x, i.exp() ) * (c - q);
    242           else
    243             result += power( x, i.exp() ) * c;
    244         }
    245         else
    246           result += power( x, i.exp() ) * balance_p(c,q,qh);
    247     }
    248     return result;
    249 }
    250 
    251 CanonicalForm
    252259balance_p ( const CanonicalForm & f, const CanonicalForm & q )
    253260{
  • factory/cfModGcd.h

    reb7c6b r3b6f1b  
    2222
    2323CanonicalForm modGCDFq (const CanonicalForm& F, const CanonicalForm& G,
    24                   Variable & alpha, CFList& l, bool& top_level);
     24                        Variable & alpha, CFList& l, bool& top_level);
    2525
    2626/// GCD of A and B over \f$ F_{p}(\alpha ) \f$
    27 static inline CanonicalForm modGCDFq (const CanonicalForm& A, const CanonicalForm& B,
    28                                 Variable & alpha)
     27static inline
     28CanonicalForm modGCDFq (const CanonicalForm& A, ///<[in] poly over F_q
     29                        const CanonicalForm& B, ///<[in] poly over F_q
     30                        Variable & alpha        ///<[in] algebraic variable
     31                       )
    2932{
    3033  CFList list;
     
    3437
    3538
    36 CanonicalForm modGCDFp (const CanonicalForm& F, const CanonicalForm&  G,
    37                            bool& top_level, CFList& l);
     39CanonicalForm
     40modGCDFp (const CanonicalForm& F, const CanonicalForm& G, bool& top_level,
     41          CFList& l);
    3842
    39 CanonicalForm modGCDFp (const CanonicalForm& F, const CanonicalForm&  G, CanonicalForm& coF, CanonicalForm& coG,
    40                            bool& topLevel, CFList& l);
     43CanonicalForm
     44modGCDFp (const CanonicalForm& F, const CanonicalForm& G,
     45          CanonicalForm& coF, CanonicalForm& coG,
     46          bool& topLevel, CFList& l);
    4147
    4248///GCD of A and B over \f$ F_{p} \f$
    43 static inline CanonicalForm modGCDFp (const CanonicalForm& A, const CanonicalForm& B)
     49static inline
     50CanonicalForm modGCDFp (const CanonicalForm& A, ///<[in] poly over F_p
     51                        const CanonicalForm& B  ///<[in] poly over F_p
     52                       )
    4453{
    4554  CFList list;
     
    4857}
    4958
    50 static inline CanonicalForm modGCDFp (const CanonicalForm& A, const CanonicalForm& B, CanonicalForm& coA, CanonicalForm& coB)
     59static inline
     60CanonicalForm modGCDFp (const CanonicalForm& A, const CanonicalForm& B,
     61                        CanonicalForm& coA, CanonicalForm& coB)
    5162{
    5263  CFList list;
     
    5566}
    5667
    57 CanonicalForm modGCDGF (const CanonicalForm& F, const CanonicalForm& G, CFList& l,
    58         bool& top_level);
     68CanonicalForm
     69modGCDGF (const CanonicalForm& F, const CanonicalForm& G, CFList& l,
     70          bool& top_level);
    5971
    6072/// GCD of A and B over GF
    61 static inline CanonicalForm modGCDGF (const CanonicalForm& A, const CanonicalForm& B)
     73static inline
     74CanonicalForm modGCDGF (const CanonicalForm& A, ///<[in] poly over GF
     75                        const CanonicalForm& B  ///<[in] poly over GF
     76                       )
    6277{
    6378  ASSERT (CFFactory::gettype() == GaloisFieldDomain,
     
    7388/// Zippel's sparse GCD over Fp
    7489static inline
    75 CanonicalForm sparseGCDFp (const CanonicalForm& A, const CanonicalForm& B)
     90CanonicalForm sparseGCDFp (const CanonicalForm& A, ///<[in] poly over F_p
     91                           const CanonicalForm& B  ///<[in] poly over F_p
     92                          )
    7693{
    7794  ASSERT (CFFactory::gettype() == FiniteFieldDomain,
     
    8299}
    83100
    84 /// Zippel's sparse GCD over Fq
     101
    85102CanonicalForm
    86103sparseGCDFq (const CanonicalForm& F, const CanonicalForm& G,
    87104             const Variable& alpha, CFList& l, bool& topLevel);
    88105
     106/// Zippel's sparse GCD over Fq
    89107static inline
    90 CanonicalForm sparseGCDFq (const CanonicalForm& A, const CanonicalForm& B,
    91                            const Variable& alpha)
     108CanonicalForm sparseGCDFq (const CanonicalForm& A, ///<[in] poly over F_q
     109                           const CanonicalForm& B, ///<[in] poly over F_q
     110                           const Variable& alpha   ///<[in] algebraic variable
     111                          )
    92112{
    93113  CFList list;
     
    96116}
    97117
     118/// extract monomials of F, parts in algebraic variable are considered
     119/// coefficients
    98120CFArray
    99 getMonoms (const CanonicalForm& F);
     121getMonoms (const CanonicalForm& F ///<[in] some poly
     122          );
    100123
    101124bool
     
    104127                 const CanonicalForm& cand);
    105128
    106 CanonicalForm modGCDZ ( const CanonicalForm & FF, const CanonicalForm & GG );
     129/// modular GCD over Z
     130CanonicalForm modGCDZ (const CanonicalForm & FF, ///<[in] poly over Z
     131                       const CanonicalForm & GG  ///<[in] poly over Z
     132                      );
    107133#endif
  • factory/cfModResultant.cc

    reb7c6b r3b6f1b  
    640640    }
    641641
    642     ASSERT (i >= 0, "ran out of primes"); //sic
     642    if (i <= 0)
     643      return resultant (A, B, x);
    643644
    644645    setCharacteristic (p);
  • factory/cf_cyclo.cc

    reb7c6b r3b6f1b  
    2626#endif
    2727
    28 
    29 /// integer factorization using table look-ups,
    30 /// function may fail if integer contains primes which exceed the largest prime
    31 /// in our table
    3228int* integerFactorizer (const long integer, int& length, bool& fail)
    3329{
     
    110106}
    111107
    112 /// compute the n-th cyclotomic polynomial,
    113 /// function may fail if integer_factorizer fails to factorize n
    114108CanonicalForm cyclotomicPoly (int n, bool& fail)
    115109{
     
    138132
    139133#ifdef HAVE_NTL
    140 /// checks if alpha is a primitive element, alpha is assumed to be an algebraic
    141 /// variable over some finite prime field
    142134bool isPrimitive (const Variable& alpha, bool& fail)
    143135{
  • factory/cf_cyclo.h

    reb7c6b r3b6f1b  
    1717// #include "config.h"
    1818
    19 int* integerFactorizer (const long integer, int& length, bool& fail);
    20 CanonicalForm cyclotomicPoly (int n, bool& fail);
    21 bool isPrimitive (const Variable& alpha, bool& fail);
     19/// integer factorization using table look-ups,
     20/// function may fail if integer contains primes which exceed the largest prime
     21/// in our table
     22int* integerFactorizer (const long integer, ///< [in] some integer
     23                        int& length,        ///< [in,out] number of factors
     24                        bool& fail          ///< [in,out] failure?
     25                       );
     26
     27/// compute the n-th cyclotomic polynomial,
     28/// function may fail if integer_factorizer fails to factorize n
     29CanonicalForm
     30cyclotomicPoly (int n,     ///< [in] some integer
     31                bool& fail ///< [in,out] failure?
     32               );
     33
     34/// checks if alpha is a primitive element, alpha is assumed to be an algebraic
     35/// variable over some finite prime field
     36bool isPrimitive (const Variable& alpha, ///< [in] some algebraic variable
     37                  bool& fail             ///< [in,out] failure?
     38                 );
    2239
    2340#endif
  • factory/cf_map_ext.cc

    reb7c6b r3b6f1b  
    160160}
    161161
    162 /// changes representation by primitive element to representation by residue
    163 /// classes modulo a Conway polynomial
    164162CanonicalForm GF2FalphaRep (const CanonicalForm& F, const Variable& alpha)
    165163{
     
    170168}
    171169
    172 /// change representation by residue classes modulo a Conway polynomial
    173 /// to representation by primitive element
    174170CanonicalForm Falpha2GFRep (const CanonicalForm& F)
    175171{
     
    209205}
    210206
    211 /// maps a polynomial over \f$ GF(p^{k}) \f$ to a polynomial over
    212 /// \f$ GF(p^{d}) \f$ , d needs to be a multiple of k
    213207CanonicalForm GFMapUp (const CanonicalForm & F, int k)
    214208{
     
    247241}
    248242
    249 /// maps a polynomial over \f$ GF(p^{d}) \f$ to a polynomial over
    250 /// \f$ GF(p^{k})\f$ , d needs to be a multiple of k
    251243CanonicalForm GFMapDown (const CanonicalForm & F, int k)
    252244{
     
    260252}
    261253
     254/// map F in \f$ F_{p} (\alpha ) \f$ which is generated by G into some
     255/// \f$ F_{p}(\beta ) \f$ which is generated by H
    262256static inline
    263257CanonicalForm mapUp (const CanonicalForm& F, const CanonicalForm& G,
     
    313307
    314308#ifdef HAVE_NTL
    315 /// determine a primitive element of \f$ F_{p} (\alpha ) \f$,
    316 /// \f$ \beta \f$ is a primitive element of a field which is isomorphic to
    317 /// \f$ F_{p}(\alpha ) \f$
    318 CanonicalForm
    319 primitiveElement (const Variable& alpha, Variable& beta, bool fail)
     309CanonicalForm
     310primitiveElement (const Variable& alpha, Variable& beta, bool& fail)
    320311{
    321312  bool primitive= false;
  • factory/cf_map_ext.h

    reb7c6b r3b6f1b  
    2222CanonicalForm getItem (const CFList& list, const int& pos);
    2323
     24/// maps a polynomial over \f$ GF(p^{k}) \f$ to a polynomial over
     25/// \f$ GF(p^{d}) \f$ , d needs to be a multiple of k
    2426CanonicalForm GFMapUp (const CanonicalForm & F, int k);
    2527
     28/// maps a polynomial over \f$ GF(p^{d}) \f$ to a polynomial over
     29/// \f$ GF(p^{k})\f$ , d needs to be a multiple of k
    2630CanonicalForm GFMapDown (const CanonicalForm & F, int k);
    2731
     32/// map F from \f$ F_{p} (\alpha ) \f$ to \f$ F_{p}(\beta ) \f$.
     33/// We assume \f$ F_{p} (\alpha ) \subset F_{p}(\beta ) \f$.
    2834CanonicalForm
    29 mapUp (const CanonicalForm& F, const Variable& alpha, const Variable& beta,
    30         const CanonicalForm& prim_elem, const CanonicalForm& im_prim_elem,
    31         CFList& source, CFList& dest);
     35mapUp (const CanonicalForm& F,           ///<[in] poly over \f$ F_{p} (\alpha ) \f$
     36       const Variable& alpha,            ///<[in] alg. variable
     37       const Variable& beta,             ///<[in] alg. variable
     38       const CanonicalForm& prim_elem,   ///<[in] primitive element of \f$ F_{p} (\alpha ) \f$
     39       const CanonicalForm& im_prim_elem,///<[in] image of prim_elem in \f$ F_{p} (\beta ) \f$
     40       CFList& source,                   ///<[in,out] look up lists
     41       CFList& dest                      ///<[in,out] look up lists
     42      );
    3243
     44/// map F from \f$ F_{p} (\beta ) \f$ to \f$ F_{p}(\alpha ) \f$.
     45/// We assume \f$ F_{p} (\alpha ) \subset F_{p}(\beta ) \f$ and F in
     46/// \f$ F_{p}(\alpha ) \f$.
    3347CanonicalForm
    34 mapDown (const CanonicalForm& F, const CanonicalForm& prim_elem, const
    35           CanonicalForm& im_prim_elem, const Variable& alpha, CFList& source,
    36           CFList& dest);
     48mapDown (const CanonicalForm& F,           ///<[in] poly over \f$ F_{p} (\beta ) \f$
     49         const CanonicalForm& prim_elem,   ///<[in] primitive element of \f$ F_{p} (\alpha ) \f$
     50         const CanonicalForm& im_prim_elem,///<[in] image of prim_elem in \f$ F_{p} (\beta ) \f$
     51         const Variable& alpha,            ///<[in] alg. variable
     52         CFList& source,                   ///<[in,out] look up lists
     53         CFList& dest                      ///<[in,out] look up lists
     54        );
    3755
     56/// determine a primitive element of \f$ F_{p} (\alpha ) \f$,
     57/// \f$ \beta \f$ is a primitive element of a field which is isomorphic to
     58/// \f$ F_{p}(\alpha ) \f$
    3859CanonicalForm
    39 primitiveElement (const Variable& alpha, Variable& beta, bool fail);
     60primitiveElement (const Variable& alpha, ///< [in] some algebraic variable
     61                  Variable& beta,        ///< [in,out] s.a.
     62                  bool& fail             ///< [in,out] failure due to integer
     63                                         ///< factorization failure?
     64                 );
    4065
     66/// compute the image of a primitive element of \f$ F_{p} (\alpha ) \f$
     67/// in \f$ F_{p}(\beta ) \f$.
     68/// We assume \f$ F_{p} (\alpha ) \subset F_{p}(\beta ) \f$.
    4169CanonicalForm
    42 mapPrimElem (const CanonicalForm& prim_elem, const Variable& alpha,
    43              const Variable& beta);
     70mapPrimElem (const CanonicalForm& prim_elem, ///< [in] primitive element
     71             const Variable& alpha,          ///< [in] algebraic variable
     72             const Variable& beta            ///< [in] algebraic variable
     73            );
    4474
    45 CanonicalForm GF2FalphaRep (const CanonicalForm& F, const Variable& alpha);
     75/// changes representation by primitive element to representation by residue
     76/// classes modulo a Conway polynomial
     77CanonicalForm GF2FalphaRep (const CanonicalForm& F, ///< [in] some poly over GF
     78                            const Variable& alpha   ///< [in] root of a Conway
     79                                                    ///< poly
     80                           );
    4681
    47 CanonicalForm Falpha2GFRep (const CanonicalForm& F);
     82/// change representation by residue classes modulo a Conway polynomial
     83/// to representation by primitive element
     84CanonicalForm Falpha2GFRep (const CanonicalForm& F ///<[in] some poly over
     85                                                   ///< F_p(alpha) where alpha
     86                                                   ///< is a root of a Conway
     87                                                   ///< poly
     88                           );
    4889
    49 /// map from \f$ F_p(\alpha) \f$ to \f$ F_p(\beta) \f$ such that 
     90/// map from \f$ F_p(\alpha) \f$ to \f$ F_p(\beta) \f$ such that
    5091/// \f$ F\in F_p(\alpha) \f$ is mapped onto \f$ \beta \f$
    5192///
    52 /// @return @a map returns the image of @a primElem such that the above 
     93/// @return @a map returns the image of @a primElem such that the above
    5394/// described properties hold
    5495CanonicalForm
    55 map (const CanonicalForm& primElem,///< [in] primitive element of 
     96map (const CanonicalForm& primElem,///< [in] primitive element of
    5697                                   ///< \f$ F_p (\alpha) \f$
    5798     const Variable& alpha,        ///< [in] algebraic variable
     
    68109/// @return @a findMinPoly computes the minimal polynomial of F
    69110CanonicalForm
    70 findMinPoly (const CanonicalForm& F, ///< [in] an element of 
     111findMinPoly (const CanonicalForm& F, ///< [in] an element of
    71112                                     ///< \f$ F_p(\alpha)\backslash F_p \f$
    72113             const Variable& alpha   ///< [in] algebraic variable
  • factory/facAbsFact.cc

    reb7c6b r3b6f1b  
    239239    iter++;
    240240    CanonicalForm contentx= content (iter.getItem(), x);
     241    if (degree (contentx) > 0)
     242    {
     243      result= CFList();
     244      eval= CFList();
     245      LCFeval= CFList();
     246      E.nextpoint();
     247      continue;
     248    }
     249    contentx= content (iter.getItem());
    241250    if (degree (contentx) > 0)
    242251    {
  • factory/facBivar.h

    reb7c6b r3b6f1b  
    281281            );
    282282
     283/// compute p^k larger than the bound on the coefficients of a factor of @a f
     284/// over Q (mipo)
    283285modpk
    284 coeffBound ( const CanonicalForm & f, int p, const CanonicalForm& mipo );
    285 
    286 void findGoodPrime(const CanonicalForm &f, int &start);
    287 
     286coeffBound (const CanonicalForm & f,  ///< [in] poly over Z[a]
     287            int p,                    ///< [in] some positive integer
     288            const CanonicalForm& mipo ///< [in] minimal polynomial with
     289                                      ///< denominator 1
     290           );
     291
     292/// find a big prime p from our tables such that no term of f vanishes mod p
     293void findGoodPrime(const CanonicalForm &f, ///< [in] poly over Z or Z[a]
     294                   int &start              ///< [in,out] index of big prime in
     295                                           /// cf_primetab.h
     296                  );
     297
     298/// compute p^k larger than the bound on the coefficients of a factor of @a f
     299/// over Z
    288300modpk
    289 coeffBound ( const CanonicalForm & f, int p );
     301coeffBound (const CanonicalForm & f, ///< [in] poly over Z
     302            int p                    ///< [in] some positive integer
     303           );
    290304
    291305#endif
  • factory/facFqSquarefree.cc

    reb7c6b r3b6f1b  
    3535static inline
    3636CanonicalForm
    37 pthRoot (const CanonicalForm & F, const int & q)
     37pthRoot (const CanonicalForm & F, int q)
    3838{
    3939  CanonicalForm A= F;
     
    125125
    126126CanonicalForm
    127 maxpthRoot (const CanonicalForm & F, const int & q, int& l)
     127maxpthRoot (const CanonicalForm & F, int q, int& l)
    128128{
    129129  CanonicalForm result= F;
  • factory/facFqSquarefree.h

    reb7c6b r3b6f1b  
    141141CanonicalForm
    142142maxpthRoot (const CanonicalForm & F, ///< [in] a poly which is a pth power
    143             const int & q,           ///< [in] size of the field
     143            int q,                   ///< [in] size of the field
    144144            int& l                   ///< [in,out] @a l maximal, s.t. @a F is
    145145                                     ///< a p^l-th power
  • factory/facMul.cc

    reb7c6b r3b6f1b  
    55 *
    66 * This file implements functions for fast multiplication and division with
    7  * remainder
     7 * remainder.
     8 *
     9 * Nomenclature rules: kronSub* -> plain Kronecker substitution
     10 *                     reverseSubst* -> reverse Kronecker substitution
     11 *                     kronSubRecipro* -> reciprocal Kronecker substitution as
     12 *                                        described in D. Harvey "Faster
     13 *                                        polynomial multiplication via
     14 *                                        multipoint Kronecker substitution"
    815 *
    916 * @author Martin Lee
     
    3340
    3441#ifdef HAVE_FLINT
    35 void kronSub (fmpz_poly_t result, const CanonicalForm& A, int d)
     42void kronSubQa (fmpz_poly_t result, const CanonicalForm& A, int d)
    3643{
    3744  int degAy= degree (A);
     
    106113
    107114  fmpz_poly_t FLINTA,FLINTB;
    108   kronSub (FLINTA, A, d);
    109   kronSub (FLINTB, B, d);
     115  kronSubQa (FLINTA, A, d);
     116  kronSubQa (FLINTB, B, d);
    110117
    111118  fmpz_poly_mul (FLINTA, FLINTA, FLINTB);
     
    214221
    215222  fmpz_poly_t FLINTA,FLINTB;
    216   kronSub (FLINTA, A, d);
    217   kronSub (FLINTB, B, d);
     223  kronSubQa (FLINTA, A, d);
     224  kronSubQa (FLINTB, B, d);
    218225
    219226  int k= d*m;
     
    21462153
    21472154  fmpz_poly_t FLINTA, FLINTB;
    2148   kronSub (FLINTA, A, d1);
    2149   kronSub (FLINTB, B, d1);
     2155  kronSubQa (FLINTA, A, d1);
     2156  kronSubQa (FLINTB, B, d1);
    21502157  int k= d1*degree (M);
    21512158
  • factory/facMul.h

    reb7c6b r3b6f1b  
    1919
    2020#ifdef HAVE_NTL
    21 /// multiplication of univariate polys over a finite field using NTL, if we are
    22 /// in GF factory's default multiplication is used.
     21/// multiplication of univariate polys using FLINT/NTL over F_p, F_q, Z/p^k,
     22/// Z/p^k[t]/(f), Z, Q, Q(a), if we are in GF factory's default multiplication
     23/// is used. If @a b!= 0 and getCharacteristic() == 0 the input will be
     24/// considered as elements over Z/p^k or Z/p^k[t]/(f).
    2325///
    2426/// @return @a mulNTL returns F*G
     
    2931       );
    3032
    31 /// mod of univariate polys over a finite field using NTL, if we are
    32 /// in GF factory's default mod is used.
     33/// mod of univariate polys using FLINT/NTL over F_p, F_q, Z/p^k,
     34/// Z/p^k[t]/(f), Z, Q, Q(a), if we are in GF factory's default multiplication
     35/// is used. If @a b!= 0 and getCharacteristic() == 0 the input will be
     36/// considered as elements over Z/p^k or Z/p^k[t]/(f); in this case invertiblity
     37/// of Lc(G) is not checked
    3338///
    3439/// @return @a modNTL returns F mod G
     
    3944       );
    4045
    41 /// division of univariate polys over a finite field using NTL, if we are
    42 /// in GF factory's default division is used.
     46/// division of univariate polys using FLINT/NTL over F_p, F_q, Z/p^k,
     47/// Z/p^k[t]/(f), Z, Q, Q(a), if we are in GF factory's default multiplication
     48/// is used. If @a b!= 0 and getCharacteristic() == 0 the input will be
     49/// considered as elements over Z/p^k or Z/p^k[t]/(f); in this case invertiblity
     50/// of Lc(G) is not checked
    4351///
    4452/// @return @a divNTL returns F/G
     
    4957       );
    5058
    51 /// division with remainder of @a F by
    52 /// @a G wrt Variable (1) modulo @a M.
     59/// division with remainder of @a F by @a G wrt Variable (1) modulo @a M.
     60/// Uses an algorithm based on Burnikel, Ziegler "Fast recursive division".
    5361///
    5462/// @return @a Q returns the dividend, @a R returns the remainder.
     
    6270             );
    6371
    64 /// division with remainder of @a F by
    65 /// @a G wrt Variable (1) modulo @a MOD.
     72/// division with remainder of @a F by @a G wrt Variable (1) modulo @a MOD.
     73/// Uses an algorithm based on Burnikel, Ziegler "Fast recursive division".
    6674///
    6775/// @sa divrem2()
  • factory/ftmpl_inst.cc

    reb7c6b r3b6f1b  
    151151
    152152//
     153template int operator== (const List<CanonicalForm> &, const List<CanonicalForm> &);
    153154template List<CanonicalForm> Union ( const List<CanonicalForm> &, const List<CanonicalForm> & );
     155template List<CFList> Union ( const List<CFList>&, const List<CFList>&);
    154156template List<CanonicalForm> Difference ( const List<CanonicalForm> &, const List<CanonicalForm> & );
     157template List<List<CanonicalForm> > Difference ( const List<List<CanonicalForm> >&, const List<List<CanonicalForm> >&);
     158template List<List<CanonicalForm> > Difference ( const List<List<CanonicalForm> >&, const List<CanonicalForm>&);
     159
    155160template CanonicalForm prod ( const List<CanonicalForm> & );
    156161template bool find ( const List<CanonicalForm> &, const CanonicalForm&);
     162template bool find ( const List<List<CanonicalForm> >&, const List<CanonicalForm>&);
    157163// place here your own template stuff, not yet instantiated by factory
    158164//
  • factory/include/factory/templates/ftmpl_list.h

    reb7c6b r3b6f1b  
    112112
    113113template <class T>
     114int operator== (const List<T>&, const List<T>& );
     115
     116template <class T>
    114117List<T> Union ( const List<T>&, const List<T>& );
    115118
    116119template <class T>
    117120List<T> Difference ( const List<T>&, const List<T>& );
     121
     122template <class T>
     123List<T> Union ( const List<T> &, const List<T> & , int (*ecmpf)( const T&, const T& ));
     124
     125template <class T>
     126List<T> Difference ( const List<T> &, const List<T> & , int (*ecmpf)( const T&, const T& ));
     127
     128template <class T>
     129List<T> Difference ( const List<T> & F, const T & G);
     130
     131template <class T>
     132List<T> Difference ( const List<T> & F, const T & G, int (*ecmpf)( const T&, const T& ));
    118133
    119134template <class T>
     
    126141bool find (const List<T>&, const T& t);
    127142
     143template <class T>
     144bool find (const List<T> & F, const T& t, int (*ecmpf)( const T&, const T& ));
    128145#endif /* ! INCL_LIST_H */
  • factory/templates/ftmpl_list.cc

    reb7c6b r3b6f1b  
    101101        cur = cur->prev;
    102102        while ( cur )
    103         {
     103        {
    104104            first = new ListItem<T>( *(cur->item), first, 0 );
    105105            first->next->prev = first;
     
    144144        ListItem<T> *dummy;
    145145        while ( first )
    146         {
     146        {
    147147            dummy = first;
    148148            first = first->next;
     
    151151        ListItem<T>* cur = l.last;
    152152        if ( cur )
    153         {
     153        {
    154154            first = new ListItem<T>( *(cur->item), 0, 0 );
    155155            last = first;
    156156            cur = cur->prev;
    157157            while ( cur )
    158             {
     158            {
    159159                first = new ListItem<T>( *(cur->item), first, 0 );
    160160                first->next->prev = first;
     
    164164        }
    165165        else
    166         {
     166        {
    167167            first = last = 0;
    168168            _length = 0;
     
    171171    }
    172172    return *this;
     173}
     174
     175template <class T>
     176int operator== ( const List<T>& l1, const List<T>& l2 )
     177{
     178    if (l1.length() != l2.length())
     179      return 0;
     180    ListIterator<T> iter2= l2;
     181    for (ListIterator<T> iter1= l1; iter1.hasItem(); iter1++)
     182    {
     183      if (!(iter1.getItem() == iter2.getItem()))
     184        return 0;
     185      iter2++;
     186    }
     187
     188    return 1;
    173189}
    174190
     
    201217            *cursor->item = t;
    202218        else
    203         {
     219        {
    204220            cursor = cursor->prev;
    205221            cursor->next = new ListItem<T>( t, cursor->next, cursor );
     
    227243            insf( *cursor->item, t );
    228244        else
    229         {
     245        {
    230246            cursor = cursor->prev;
    231247            cursor->next = new ListItem<T>( t, cursor->next, cursor );
     
    275291        _length--;
    276292        if ( first == last )
    277         {
     293        {
    278294            delete first;
    279295            first = last = 0;
    280296        }
    281297        else
    282         {
     298        {
    283299            ListItem<T> *dummy = first;
    284300            first->next->prev = 0;
     
    305321        _length--;
    306322        if ( first == last )
    307         {
     323        {
    308324            delete last;
    309325            first = last = 0;
    310326        }
    311327        else
    312         {
     328        {
    313329            ListItem<T> *dummy = last;
    314330            last->prev->next = 0;
     
    327343        int swap;
    328344        do
    329         {
     345        {
    330346            swap = 0;
    331347            ListItem<T> *cur = first;
    332348            while ( cur->next )
    333             {
     349            {
    334350                if ( swapit( *(cur->item), *(cur->next->item) ) )
    335                 {
     351                {
    336352                    T* dummy = cur->item;
    337353                    cur->item = cur->next->item;
     
    481497            theList->insert( t );
    482498        else
    483         {
     499        {
    484500            current->prev = new ListItem<T>( t, current, current->prev );
    485501            current->prev->prev->next = current->prev;
     
    498514            theList->append( t );
    499515        else
    500         {
     516        {
    501517            current->next = new ListItem<T>( t, current->next, current );
    502518            current->next->next->prev = current->next;
     
    514530        ListItem <T>*dummynext = current->next, *dummyprev = current->prev;
    515531        if ( current->prev )
    516         {
     532        {
    517533            current->prev->next = current->next;
    518534            if ( current->next )
     
    524540        }
    525541        else
    526         {
     542        {
    527543            if ( current->next )
    528544                current->next->prev = 0;
     
    558574        j = G;
    559575        while ( ( ! iselt ) && j.hasItem() )
    560         {
     576        {
    561577            iselt =  f == j.getItem();
    562578            j++;
     
    576592    for ( i = F; i.hasItem(); ++i )
    577593        L.insert( i.getItem(), cmpf, insf );
     594    return L;
     595}
     596
     597template <class T>
     598List<T> Union ( const List<T> & F, const List<T> & G, int (*ecmpf)( const T&, const T& ))
     599{
     600    List<T> L = G;
     601    ListIterator<T> i, j;
     602    T f;
     603    bool iselt;
     604
     605    for ( i = F; i.hasItem(); i++ )
     606    {
     607        f = i.getItem();
     608        iselt = false;
     609        j = G;
     610        while ( ( ! iselt ) && j.hasItem() )
     611        {
     612            iselt =  ecmpf (f, j.getItem());
     613            j++;
     614        }
     615        if ( ! iselt )
     616            L.append( f );
     617    }
    578618    return L;
    579619}
     
    594634        if ( ! found )
    595635            L.append( f );
     636    }
     637    return L;
     638}
     639
     640template <class T>
     641List<T> Difference ( const List<T> & F, const List<T> & G, int (*ecmpf)( const T&, const T& ))
     642{
     643    List<T> L;
     644    ListIterator<T> i, j;
     645    T f;
     646    int found;
     647    for ( i = F; i.hasItem(); ++i )
     648    {
     649        f = i.getItem();
     650        found = 0;
     651        for ( j = G; j.hasItem() && (!found); ++j )
     652            found = ecmpf (f, j.getItem());
     653        if ( ! found )
     654            L.append( f );
     655    }
     656    return L;
     657}
     658
     659template <class T>
     660List<T> Difference ( const List<T> & F, const T & G, int (*ecmpf)( const T&, const T& ))
     661{
     662    List<T> L;
     663    ListIterator<T> i;
     664    int found;
     665    for ( i = F; i.hasItem(); ++i )
     666    {
     667        found = ecmpf (G, i.getItem());
     668        if ( ! found )
     669            L.append( i.getItem() );
     670    }
     671    return L;
     672}
     673
     674template <class T>
     675List<T> Difference ( const List<T> & F, const T & G)
     676{
     677    List<T> L;
     678    ListIterator<T> i;
     679    int found;
     680    for ( i = F; i.hasItem(); ++i )
     681    {
     682        found = G == i.getItem();
     683        if ( ! found )
     684            L.append( i.getItem() );
    596685    }
    597686    return L;
     
    621710  return false;
    622711}
     712
     713template <class T>
     714bool find (const List<T> & F, const T& t, int (*ecmpf)( const T&, const T& ))
     715{
     716  if (F.length() == 0) return false;
     717  ListIterator<T> J= F;
     718  while (J.hasItem())
     719  {
     720    if (ecmpf (J.getItem(), t))
     721      return true;
     722    J++;
     723  }
     724  return false;
     725}
     726
  • libsingular-config.in

    r5ce0932 r3b6f1b  
    4242{
    4343    cat <<EOF
    44 Usage: libpolys-config [OPTION]
     44Usage: libsingular-config [OPTION]
    4545
    4646Known values for OPTION are:
    4747
    48   --prefix              show libpolys installation prefix
     48  --prefix              show libsingular installation prefix
    4949  --libs                print library linking information
    5050  --cflags              print pre-processor and compiler flags
  • xalloc/omalloc.h

    r5ce0932 r3b6f1b  
    7171static inline void * omAlloc0(size_t s)
    7272{ void *d=omAlloc(s);memset(d,0,s); return d; }
     73static inline void * omalloc0(size_t s)
     74{ if (s!=0) { void *d=omAlloc(s);memset(d,0,s); return d;} else return NULL; }
    7375
    7476static inline void *omRealloc(void *d, size_t ns)
Note: See TracChangeset for help on using the changeset viewer.