#- #: SmallSize 10000000 #: LargeSize 25000000 #: WorkSpace 1000000 #: TermsInSmall 200000 #: ScratchSize 15000000 * * Above settings will keep all inside memory (provided there is enough of it). * #define SIZE "7" * * Program for the evaluation of weight 7 harmonic series at infinity. * For the method, see the commentary at the beginning of bf2.frm * #include nndecl.h #include bfn.h .global * * Construct the expression FF that will contain the final result. * It will contain 2*3^(w-1) objects. * L FF = #do i1 = -1,1,2 #do i2 = -1,1 #do i3 = -1,1 #do i4 = -1,1 #do i5 = -1,1 #do i6 = -1,1 #do i7 = -1,1 +E(`i7',`i6',`i5',`i4',`i3',`i2',`i1') #enddo #enddo #enddo #enddo #enddo #enddo #enddo ; id E(?a)=E(?a)*S(?a); * * If we like to indicate some constants as fixed, we can give them here * a different name. This is done for S(R(3),inf) -> z3, S(R(5),inf) -> z5, * S(R(-1,1,1,1),inf) -> -Li4(1/2) etc. * S(R(-5,1,1),inf) -> s7a and S(R(5,-1,-1),inf) -> s7b seem good choices. * If we do not know which or how many to choose, let the program * run and change this afterwards to something that looks convenient. * #call subconst(`SIZE') * * The bracket is essential! * B E; .sort * * $count will tell what is the number of the identity we are constructing * $dcount tell how many S-function have not been eliminated yet. * #$count = 1; #$dcount = 2*3^{`SIZE'-1}; * * Equations based on the shuffle algebra. * These identities are built up with the procedure basis * See procedure solve1 in dfn.h * We start with the equations based on 1+6 indices * Then we do the equations based on 2+5 indices * Then we do the equations based on 3+4 indices * #do i1 = -1,1,2 #do j1 = -1,1,2 #do j2 = {0,1,-1} #do j3 = {0,1,-1} #do j4 = {0,1,-1} #do j5 = {0,1,-1} #do j6 = {0,1,-1} Skip; L F = - EE(`i1')* EE(`j6',`j5',`j4',`j3',`j2',`j1'); #call solve1 #$count = $count+1; #enddo #enddo #enddo #enddo #enddo #enddo #enddo * * 2+5 * #do i1 = -1,1,2 #do i2 = {0,1,-1} #do j1 = -1,1,2 #do j2 = {0,1,-1} #do j3 = {0,1,-1} #do j4 = {0,1,-1} #do j5 = {0,1,-1} Skip; L F = - EE(`i2',`i1')* EE(`j5',`j4',`j3',`j2',`j1'); #call solve1 #$count = $count+1; #enddo #enddo #enddo #enddo #enddo #enddo #enddo * * 3+4 * #do i1 = -1,1,2 #do i2 = {0,1,-1} #do i3 = {0,1,-1} #do j1 = -1,1,2 #do j2 = {0,1,-1} #do j3 = {0,1,-1} #do j4 = {0,1,-1} Skip; L F = - EE(`i3',`i2',`i1')* EE(`j4',`j3',`j2',`j1'); #call solve1 #$count = $count+1; #enddo #enddo #enddo #enddo #enddo #enddo #enddo * * Now the equations based on the theorem. * First do equations with 1+6 indices. * Then do the quations based on 2+5 indices * Then do the quations based on 3+4 indices * Note the rejection of both i1 and j6 being 1. * The exact procedure is explained in solve2 which is in bfn.h * #do i1 = -1,1,2 #do j1 = -1,1,2 #do j2 = {0,1,-1} #do j3 = {0,1,-1} #do j4 = {0,1,-1} #do j5 = {0,1,-1} #do j6 = {0,1,-1} #if ( ( `i1' != 1 ) || ( `j6' != 1 ) ) Skip; L F = - EEE(`i1')* EEE(`j6',`j5',`j4',`j3',`j2',`j1'); #call solve2 #$count = $count+1; #endif #enddo #enddo #enddo #enddo #enddo #enddo #enddo * * 2+5 * #do i1 = -1,1,2 #do i2 = {0,1,-1} #do j1 = -1,1,2 #do j2 = {0,1,-1} #do j3 = {0,1,-1} #do j4 = {0,1,-1} #do j5 = {0,1,-1} #if ( ( `i2' != 1 ) || ( `j5' != 1 ) ) Skip; L F = -EEE(`i2',`i1')*EEE(`j5',`j4',`j3',`j2',`j1'); #call solve2 #$count = $count+1; #endif #enddo #enddo #enddo #enddo #enddo #enddo #enddo * * 3+4 * #do i1 = -1,1,2 #do i2 = {0,1,-1} #do i3 = {0,1,-1} #do j1 = -1,1,2 #do j2 = {0,1,-1} #do j3 = {0,1,-1} #do j4 = {0,1,-1} #if ( ( `i3' != 1 ) || ( `j4' != 1 ) ) Skip; L F = -EEE(`i3',`i2',`i1')*EEE(`j4',`j3',`j2',`j1'); #call solve2 #$count = $count+1; #endif #enddo #enddo #enddo #enddo #enddo #enddo #enddo Drop; NDrop FF; * * In the output the bracket indicates the S-function and the contents of * the bracket what it is equal to. * The remaining S functions are renamed as SS. This way they can be * found easily in an editor. * id S(?a) = SS(?a); id E(?a) = S(R(?a),inf); B S; Print +f; .end