function GenWscript( FnName, FnType, Variant, NumOpers, OperInfo, author, email ){ var str="", notfirst=0, i; FnName = FnName.replace( /([^\\])\_/gi,"$1\\_"); str += "
\n";

  str += LWHeader( FnName, FnType, Variant, NumOpers, OperInfo );

  str += LInvariant( FnName, FnType, Variant, NumOpers, OperInfo );

  str += LGuard( FnName, FnType, Variant, NumOpers, OperInfo );

  str += LPartition( FnName, FnType, Variant, NumOpers, OperInfo );

  str += LRepartition( FnName, FnType, Variant, NumOpers, OperInfo );

  str += LContinue( FnName, FnType, Variant, NumOpers, OperInfo );

  str += LAfterRepartition( FnName, FnType, Variant, NumOpers, OperInfo );

  str += LBeforeContinue( FnName, FnType, Variant, NumOpers, OperInfo );

  str += LUpdate( FnName, FnType, Variant, NumOpers, OperInfo );

  str += "\n\n
"; with (parent.frames[1].document){ open(); writeln( str ); close(); } return false; } function GenAscript( FnName, FnType, Variant, NumOpers, OperInfo, author, email ){ var str="", notfirst=0, i; FnName = FnName.replace( /([^\\])\_/gi,"$1\\_"); str += "
\n";

  str += LAHeader( FnName, FnType, Variant, NumOpers, OperInfo );

  str += LGuard( FnName, FnType, Variant, NumOpers, OperInfo );

  str += LPartition_Alg( FnName, FnType, Variant, NumOpers, OperInfo );

  str += LRepartition_Alg( FnName, FnType, Variant, NumOpers, OperInfo );

  str += LContinue_Alg( FnName, FnType, Variant, NumOpers, OperInfo );

  str += LUpdate( FnName, FnType, Variant, NumOpers, OperInfo );

  str += "\n\n
"; with (parent.frames[1].document){ open(); writeln( str ); close(); } return false; } function LWHeader( FnName, FnType, Variant, NumOpers, OperInfo ){ var str="", c=""; var i; var firsttime = 1; str += "\\resetsteps % Reset all the commands to create a blank worksheet \n" str += "\n" str += "% Define the operation to be computed\n\n" str += "\\renewcommand{\\operation}{ \\left[ "; for ( i=0; i 2 ){ str += "\\\\ \n"; countperline = 0; } */ switch( OperInfo[ i ][ 2 ] ){ case '1': case '2': case '3': case '4': if ( OperInfo[ i ][ OPERAND_TYPE ] == '2' ){ str += indent+"$\n"+indent; str += c+" \\rightarrow\n"; str += indent+"\\FlaTwoByTwo{"+c+"_{TL}}{"+c+"_{TR}}\n"; str += indent+" {"+c+"_{BL}}{"+c+"_{BR}}\n"; str += indent+"$\n"; whle += "$ "+c+"_{"+ DirChoicesBeforeShort[ OperInfo[ i ][ 2 ] ]+"} $ is " whle += "$ 0 \\times 0 $" } else{ str += "Cannot split non-matrix into four quadrants\n"; return str; } break; case '5': case '6': str += indent+"$\n"+indent; str += c+" \\rightarrow\n"; str += indent+"\\FlaOneByTwo{" str += c+"_L" if ( OperInfo[ i ][ OPERAND_TYPE ] == '1' ) str += "^T"; str += "}{" str += c+"_R" if ( OperInfo[ i ][ OPERAND_TYPE ] == '1' ) str += "^T"; str += "}\n"; str += indent+"$\n"; whle += "$ "+c+"_"+ DirChoicesBeforeShort[ OperInfo[ i ][ 2 ] ] if ( OperInfo[ i ][ OPERAND_TYPE ] == '1' ) whle += "^T"; whle += " $ has " whle += "$ 0 $ columns" break; case '7': case '8': str += indent+"$\n"+indent; str += c+" \\rightarrow\n"; str += indent+"\\FlaTwoByOne{"+c+"_{T}}\n"; str += indent+" {"+c+"_{B}}\n"; str += indent+"$\n"; whle += "$ "+c+"_"+ DirChoicesBeforeShort[ OperInfo[ i ][ 2 ] ]+" $ has " whle += "$ 0 $ rows" break; } } } str += "}\n\n" whle += "\n}\n\n" str = str+whle return str; } function LPartition_Alg( FnName, FnType, Variant, NumOpers, OperInfo ){ var str=""; var whle=""; var i,j; var c; var firsttime=1; var countperline=0; str += "% Step 4: Define Initialize \n\n" str += "\\renewcommand{\\partitionings}{\n" whle += "\\renewcommand{\\partitionsizes}{\n" for (i=0; i 2 ){ str += "\\\\ \n"; countperline = 0; } */ switch( OperInfo[ i ][ 2 ] ){ case '1': case '2': case '3': case '4': if ( OperInfo[ i ][ OPERAND_TYPE ] == '2' ){ str += indent+"$\n"+indent; str += c+" \\rightarrow\n"; str += indent+"\\FlaTwoByTwo{"+c+"_{TL}}{"+c+"_{TR}}\n"; str += indent+" {"+c+"_{BL}}{"+c+"_{BR}}\n"; str += indent+"$\n"; whle += "$ "+c+"_{"+ DirChoicesBeforeShort[ OperInfo[ i ][ 2 ] ]+"} $ is " whle += "$ 0 \\times 0 $" } else{ str += "Cannot split non-matrix into four quadrants\n"; return str; } break; case '5': case '6': str += indent+"$\n"+indent; str += c+" \\rightarrow\n"; str += indent+"\\FlaOneByTwo{" str += c+"_L" if ( OperInfo[ i ][ OPERAND_TYPE ] == '1' ) str += "^T"; str += "}{" str += c+"_R" if ( OperInfo[ i ][ OPERAND_TYPE ] == '1' ) str += "^T"; str += "}\n"; str += indent+"$\n"; whle += "$ "+c+"_"+ DirChoicesBeforeShort[ OperInfo[ i ][ 2 ] ] if ( OperInfo[ i ][ OPERAND_TYPE ] == '1' ) whle += "^T"; whle += " $ has " whle += "$ 0 $ columns" break; case '7': case '8': str += indent+"$\n"+indent; str += c+" \\rightarrow\n"; str += indent+"\\FlaTwoByOne{"+c+"_{T}}\n"; str += indent+" {"+c+"_{B}}\n"; str += indent+"$\n"; whle += "$ "+c+"_{"+ DirChoicesBeforeShort[ OperInfo[ i ][ 2 ] ]+"} $ has " whle += "$ 0 $ rows" break; } } } str += "}\n\n" whle += "\n}\n\n" str = str+whle return str; } function LRepartition( FnName, FnType, Variant, NumOpers, OperInfo ){ var str=""; var i, j; var c, v, s, t, tpadding, spadding; var b="", whre=""; var firsttime=1, countperline=0; str += "% Step 5a: Repartition the operands \n\n" if ( FnType != '0' ){ /* Determine Block Size */ str += "\\renewcommand{\\blocksize}{b}\n\n" b = "b" } str += "\\renewcommand{\\repartitionings}{\n" whre += "\\renewcommand{\\repartitionsizes}{\n" for (i=0; i 2 ){ str += "\\\\ \n"; countperline = 0; } str += "$\n"; */ str += "$"; switch( OperInfo[ i ][ 2 ] ){ case '1': case '2': case '3': case '4': if ( FnType == '0' ){ s = LAllChoices[ 0 ][ OperInfo[ i ][ OPERAND_NAME ] ]; v = LAllChoices[ 1 ][ OperInfo[ i ][ OPERAND_NAME ] ]; t = "^T"; b = "1"; } else{ s = LAllChoices[ OperInfo[ i ][ OPERAND_TYPE ] ][ OperInfo[ i ][ OPERAND_NAME ] ]; v = LAllChoices[ OperInfo[ i ][ OPERAND_TYPE ] ][ OperInfo[ i ][ OPERAND_NAME ] ]; t = ""; b = "b"; } if ( j == 1 ){ if ( OperInfo[ i ][ 3 ] == '2' ) s = "\\widehat{"+s+"}" v = "\\widehat{"+v+"}" } if ( OperInfo[ i ][ OPERAND_TYPE ] == '2' ){ str += indent+"\\FlaTwoByTwo{"+c+"_{TL}}{"+c+"_{TR}}\n"; str += indent+" {"+c+"_{BL}}{"+c+"_{BR}}\n"; str += indent+"\\rightarrow\n"; str += indent+"\\FlaThreeByThree"+ DirChoicesAfterShort[ OperInfo[ i ][ 2 ] ]; str += "{"+c+"_{00}}{"+v+"_{01}}{"+c+"_{02}}\n"; str += indent+" "; str += "{"+v+"_{10}"+t+"}{"+s+"_{11}}{"+v+"_{12}"+t+"}\n"; str += indent+" "; str += "{"+c+"_{20}}{"+v+"_{21}}{"+c+"_{22}}\n$"; whre += indent+"$ "+s+"_{11} $ is $ "+b+" \\times "+b+" $"; } else{ str += "Cannot split non-matrix into four quadrants\n"; return str; } break; case '5': case '6': if ( FnType == '0' ){ v = LAllChoices[ OperInfo[ i ][ OPERAND_TYPE ]-1 ][ OperInfo[ i ][ OPERAND_NAME ] ]; b = "1"; } else{ v = LAllChoices[ OperInfo[ i ][ OPERAND_TYPE ] ][ OperInfo[ i ][ OPERAND_NAME ] ]; b = "b"; } if ( OperInfo[ i ][ OPERAND_TYPE ] == '1' ){ t = "^T"; } else{ t = "" } if ( j == 1 ) v = "\\widehat{"+v+"}" if ( OperInfo[ i ][ OPERAND_TYPE ] != '0' ){ str += indent+"\\FlaOneByTwo{"+c+"_L"+t+"}{"+c+"_R"+t+"}\n"; str += "\\rightarrow"; str += indent+"\\FlaOneByThree"; str += DirChoicesAfterShort[ OperInfo[ i ][ 2 ] ]; str += "{"+c+"_0"+t+"}{"+v+"_1"; if ( FnType != '0' ) str += t; str += "}{"+c+"_2"+t+"}\n$\n"; whre += "$ "+v+"_1"; if ( FnType != '0' ) whre += t; whre += " $ has $ "+b+" $ column"; if ( b == 'b' ) whre += "s"; } else{ str += "Cannot split scalar\n"; return str; } break; case '7': case '8': if ( FnType == '0' ){ v = LAllChoices[ OperInfo[ i ][ OPERAND_TYPE ]-1 ][ OperInfo[ i ][ OPERAND_NAME ] ]; b = "1"; if ( OperInfo[ i ][ OPERAND_TYPE ] == '2' ) t = "^T"; else t = ""; } else{ v = LAllChoices[ OperInfo[ i ][ OPERAND_TYPE ] ][ OperInfo[ i ][ OPERAND_NAME ] ]; b = "b"; t = "" } tpadding = repeat( t.length, ' ' ); if ( j == 1 ) v = "\\widehat{"+v+"}" if ( OperInfo[ i ][ OPERAND_TYPE ] != '0' ){ str += indent+"\\FlaTwoByOne{ "+c+"_T }\n"; str += indent+" { "+c+"_B }\n"; str += "\\rightarrow\n"; str += indent+"\\FlaThreeByOne"; str += DirChoicesAfterShort[ OperInfo[ i ][ 2 ] ]; str += "{"+c+"_0}\n"; str += indent+" "; str += "{"+v+"_1"+t+"}\n"; str += indent+" "; str += "{"+c+"_2}\n$\n"; whre += "$ "+v+"_1 $ has $ "+b+" $ row"; if ( b == 'b' ) whre += "s"; } else{ str += "Cannot split scalar\n"; return str; } break; } } } str = str+"}\n\n"+whre+"}\n\n"; return str; } function LRepartition_Alg( FnName, FnType, Variant, NumOpers, OperInfo ){ var str=""; var i, j; var c, v, s, t, tpadding, spadding; var b="", whre=""; var firsttime=1, countperline=0; str += "% Step 5a: Repartition the operands \n\n" if ( FnType != '0' ){ /* Determine Block Size */ str += "\\renewcommand{\\blocksize}{b}\n\n" b = "b" } str += "\\renewcommand{\\repartitionings}{\n" whre += "\\renewcommand{\\repartitionsizes}{\n" for (i=0; i 2 ){ str += "\\\\ \n"; countperline = 0; } str += "$\n"; */ str += "$"; switch( OperInfo[ i ][ 2 ] ){ case '1': case '2': case '3': case '4': if ( FnType == '0' ){ s = LAllChoices[ 0 ][ OperInfo[ i ][ OPERAND_NAME ] ]; v = LAllChoices[ 1 ][ OperInfo[ i ][ OPERAND_NAME ] ]; t = "^T"; b = "1"; } else{ s = LAllChoices[ OperInfo[ i ][ OPERAND_TYPE ] ][ OperInfo[ i ][ OPERAND_NAME ] ]; v = LAllChoices[ OperInfo[ i ][ OPERAND_TYPE ] ][ OperInfo[ i ][ OPERAND_NAME ] ]; t = ""; b = "b"; } if ( j == 1 ){ if ( OperInfo[ i ][ 3 ] == '2' ) s = "\\widehat{"+s+"}" v = "\\widehat{"+v+"}" } if ( OperInfo[ i ][ OPERAND_TYPE ] == '2' ){ str += indent+"\\FlaTwoByTwo{"+c+"_{TL}}{"+c+"_{TR}}\n"; str += indent+" {"+c+"_{BL}}{"+c+"_{BR}}\n"; str += indent+"\\rightarrow\n"; str += indent+"\\FlaThreeByThree"+ DirChoicesAfterShort[ OperInfo[ i ][ 2 ] ]; str += "{"+c+"_{00}}{"+v+"_{01}}{"+c+"_{02}}\n"; str += indent+" "; str += "{"+v+"_{10}"+t+"}{"+s+"_{11}}{"+v+"_{12}"+t+"}\n"; str += indent+" "; str += "{"+c+"_{20}}{"+v+"_{21}}{"+c+"_{22}}\n$"; whre += indent+"$ "+s+"_{11} $ is $ "+b+" \\times "+b+" $"; } else{ str += "Cannot split non-matrix into four quadrants\n"; return str; } break; case '5': case '6': if ( FnType == '0' ){ v = LAllChoices[ OperInfo[ i ][ OPERAND_TYPE ]-1 ][ OperInfo[ i ][ OPERAND_NAME ] ]; b = "1"; } else{ v = LAllChoices[ OperInfo[ i ][ OPERAND_TYPE ] ][ OperInfo[ i ][ OPERAND_NAME ] ]; b = "b"; } if ( OperInfo[ i ][ OPERAND_TYPE ] == '1' ){ t = "^T"; } else{ t = "" } if ( j == 1 ) v = "\\widehat{"+v+"}" if ( OperInfo[ i ][ OPERAND_TYPE ] != '0' ){ str += indent+"\\FlaOneByTwo{"+c+"_L"+t+"}{"+c+"_R"+t+"}\n"; str += "\\rightarrow"; str += indent+"\\FlaOneByThree"; str += DirChoicesAfterShort[ OperInfo[ i ][ 2 ] ]; str += "{"+c+"_0"+t+"}{"+v+"_1"; if ( FnType != '0' ) str += t; str += "}{"+c+"_2"+t+"}\n$\n"; whre += indent+"$ "+v+"_1"; if ( FnType != '0' ) whre += t; whre += " $ has $"+b+"$ column"; if ( b == 'b' ) whre += "s"; } else{ str += "Cannot split scalar\n"; return str; } break; case '7': case '8': if ( FnType == '0' ){ v = LAllChoices[ OperInfo[ i ][ OPERAND_TYPE ]-1 ][ OperInfo[ i ][ OPERAND_NAME ] ]; b = "1"; if ( OperInfo[ i ][ OPERAND_TYPE ] == '2' ) t = "^T"; else t = ""; } else{ v = LAllChoices[ OperInfo[ i ][ OPERAND_TYPE ] ][ OperInfo[ i ][ OPERAND_NAME ] ]; b = "b"; t = "" } tpadding = repeat( t.length, ' ' ); if ( j == 1 ) v = "\\widehat{"+v+"}" if ( OperInfo[ i ][ OPERAND_TYPE ] != '0' ){ str += indent+"\\FlaTwoByOne{ "+c+"_T }\n"; str += indent+" { "+c+"_B }\n"; str += "\\rightarrow\n"; str += indent+"\\FlaThreeByOne"; str += DirChoicesAfterShort[ OperInfo[ i ][ 2 ] ]; str += "{"+c+"_0}\n"; str += indent+" "; str += "{"+v+"_1"+t+"}\n"; str += indent+" "; str += "{"+c+"_2}\n$\n"; whre += indent+"$ "+v+"_1 $ has $ "+b+" $ row"; if ( b == 'b' ) whre += "s"; } else{ str += "Cannot split scalar\n"; return str; } break; } } } str = str+"}\n\n"+whre+"}\n\n"; return str; } function LContinue( FnName, FnType, Variant, NumOpers, OperInfo ){ var str=""; var i, j; var c, v, s, t, tpadding, spadding; var b=""; var firsttime=1, countperline=0; str += "% Step 5b: Move the double lines \n\n" str += "\\renewcommand{\\moveboundaries}{\n" for (i=0; i 2 ){ str += "\\\\ \n"; countperline = 0; } str += "$\n"; */ str += "$"; switch( OperInfo[ i ][ 2 ] ){ case '1': case '2': case '3': case '4': if ( FnType == '0' ){ s = LAllChoices[ 0 ][ OperInfo[ i ][ OPERAND_NAME ] ]; v = LAllChoices[ 1 ][ OperInfo[ i ][ OPERAND_NAME ] ]; t = "^T"; b = "1"; } else{ s = LAllChoices[ OperInfo[ i ][ OPERAND_TYPE ] ][ OperInfo[ i ][ OPERAND_NAME ] ]; v = LAllChoices[ OperInfo[ i ][ OPERAND_TYPE ] ][ OperInfo[ i ][ OPERAND_NAME ] ]; t = ""; b = "b"; } if ( j == 1 ){ if ( OperInfo[ i ][ 3 ] == '2' ) s = "\\widehat{"+s+"}" v = "\\widehat{"+v+"}" } if ( OperInfo[ i ][ OPERAND_TYPE ] == '2' ){ str += indent+"\\FlaTwoByTwo{"+c+"_{TL}}{"+c+"_{TR}}\n"; str += indent+" {"+c+"_{BL}}{"+c+"_{BR}}\n"; str += indent+"\\leftarrow\n"; str += indent+"\\FlaThreeByThree"+ DirChoicesBeforeShort[ OperInfo[ i ][ 2 ] ]; str += "{"+c+"_{00}}{"+v+"_{01}}{"+c+"_{02}}\n"; str += indent+" "; str += "{"+v+"_{10}"+t+"}{"+s+"_{11}}{"+v+"_{12}"+t+"}\n"; str += indent+" "; str += "{"+c+"_{20}}{"+v+"_{21}}{"+c+"_{22}}\n$"; } else{ str += "Cannot split non-matrix into four quadrants\n"; return str; } break; case '5': case '6': if ( FnType == '0' ){ v = LAllChoices[ OperInfo[ i ][ OPERAND_TYPE ]-1 ][ OperInfo[ i ][ OPERAND_NAME ] ]; b = "1"; } else{ v = LAllChoices[ OperInfo[ i ][ OPERAND_TYPE ] ][ OperInfo[ i ][ OPERAND_NAME ] ]; b = "b"; } if ( OperInfo[ i ][ OPERAND_TYPE ] == '1' ){ t = "^T"; } else{ t = "" } if ( j == 1 ) v = "\\widehat{"+v+"}" if ( OperInfo[ i ][ OPERAND_TYPE ] != '0' ){ str += indent+"\\FlaOneByTwo{"+c+"_L"+t+"}{"+c+"_R"+t+"}\n"; str += "\\leftarrow"; str += indent+"\\FlaOneByThree"; str += DirChoicesBeforeShort[ OperInfo[ i ][ 2 ] ]; str += "{"+c+"_0"+t+"}{"+v+"_1"; if ( FnType != '0' ) str += t; str += "}{"+c+"_2"+t+"}\n$\n"; } else{ str += "Cannot split scalar\n"; return str; } break; case '7': case '8': if ( FnType == '0' ){ v = LAllChoices[ OperInfo[ i ][ OPERAND_TYPE ]-1 ][ OperInfo[ i ][ OPERAND_NAME ] ]; b = "1"; if ( OperInfo[ i ][ OPERAND_TYPE ] == '2' ) t = "^T"; else t = ""; } else{ v = LAllChoices[ OperInfo[ i ][ OPERAND_TYPE ] ][ OperInfo[ i ][ OPERAND_NAME ] ]; b = "b"; t = "" } tpadding = repeat( t.length, ' ' ); if ( j == 1 ) v = "\\widehat{"+v+"}" if ( OperInfo[ i ][ OPERAND_TYPE ] != '0' ){ str += indent+"\\FlaTwoByOne{ "+c+"_T }\n"; str += indent+" { "+c+"_B }\n"; str += "\\leftarrow\n"; str += indent+"\\FlaThreeByOne"; str += DirChoicesBeforeShort[ OperInfo[ i ][ 2 ] ]; str += "{"+c+"_0}\n"; str += indent+" "; str += "{"+v+"_1"+t+"}\n"; str += indent+" "; str += "{"+c+"_2}\n$\n"; } else{ str += "Cannot split scalar\n"; return str; } break; } } } str = str+"}\n\n"; return str; } function LContinue_Alg( FnName, FnType, Variant, NumOpers, OperInfo ){ var str=""; var i, j; var c, v, s, t, tpadding, spadding; var b=""; var firsttime=1, countperline=0; str += "% Step 5b: Move the double lines \n\n" str += "\\renewcommand{\\moveboundaries}{\n" for (i=0; i 2 ){ str += "\\\\ \n"; countperline = 0; } str += "$\n"; */ str += "$"; switch( OperInfo[ i ][ 2 ] ){ case '1': case '2': case '3': case '4': if ( FnType == '0' ){ s = LAllChoices[ 0 ][ OperInfo[ i ][ OPERAND_NAME ] ]; v = LAllChoices[ 1 ][ OperInfo[ i ][ OPERAND_NAME ] ]; t = "^T"; b = "1"; } else{ s = LAllChoices[ OperInfo[ i ][ OPERAND_TYPE ] ][ OperInfo[ i ][ OPERAND_NAME ] ]; v = LAllChoices[ OperInfo[ i ][ OPERAND_TYPE ] ][ OperInfo[ i ][ OPERAND_NAME ] ]; t = ""; b = "b"; } if ( j == 1 ){ if ( OperInfo[ i ][ 3 ] == '2' ) s = "\\widehat{"+s+"}" v = "\\widehat{"+v+"}" } if ( OperInfo[ i ][ OPERAND_TYPE ] == '2' ){ str += indent+"\\FlaTwoByTwo{"+c+"_{TL}}{"+c+"_{TR}}\n"; str += indent+" {"+c+"_{BL}}{"+c+"_{BR}}\n"; str += indent+"\\leftarrow\n"; str += indent+"\\FlaThreeByThree"+ DirChoicesBeforeShort[ OperInfo[ i ][ 2 ] ]; str += "{"+c+"_{00}}{"+v+"_{01}}{"+c+"_{02}}\n"; str += indent+" "; str += "{"+v+"_{10}"+t+"}{"+s+"_{11}}{"+v+"_{12}"+t+"}\n"; str += indent+" "; str += "{"+c+"_{20}}{"+v+"_{21}}{"+c+"_{22}}\n$"; } else{ str += "Cannot split non-matrix into four quadrants\n"; return str; } break; case '5': case '6': if ( FnType == '0' ){ v = LAllChoices[ OperInfo[ i ][ OPERAND_TYPE ]-1 ][ OperInfo[ i ][ OPERAND_NAME ] ]; b = "1"; } else{ v = LAllChoices[ OperInfo[ i ][ OPERAND_TYPE ] ][ OperInfo[ i ][ OPERAND_NAME ] ]; b = "b"; } if ( OperInfo[ i ][ OPERAND_TYPE ] == '1' ){ t = "^T"; } else{ t = "" } if ( j == 1 ) v = "\\widehat{"+v+"}" if ( OperInfo[ i ][ OPERAND_TYPE ] != '0' ){ str += indent+"\\FlaOneByTwo{"+c+"_L"+t+"}{"+c+"_R"+t+"}\n"; str += "\\leftarrow"; str += indent+"\\FlaOneByThree"; str += DirChoicesBeforeShort[ OperInfo[ i ][ 2 ] ]; str += "{"+c+"_0"+t+"}{"+v+"_1"; if ( FnType != '0' ) str += t; str += "}{"+c+"_2"+t+"}\n$\n"; } else{ str += "Cannot split scalar\n"; return str; } break; case '7': case '8': if ( FnType == '0' ){ v = LAllChoices[ OperInfo[ i ][ OPERAND_TYPE ]-1 ][ OperInfo[ i ][ OPERAND_NAME ] ]; b = "1"; if ( OperInfo[ i ][ OPERAND_TYPE ] == '2' ) t = "^T"; else t = ""; } else{ v = LAllChoices[ OperInfo[ i ][ OPERAND_TYPE ] ][ OperInfo[ i ][ OPERAND_NAME ] ]; b = "b"; t = "" } tpadding = repeat( t.length, ' ' ); if ( j == 1 ) v = "\\widehat{"+v+"}" if ( OperInfo[ i ][ OPERAND_TYPE ] != '0' ){ str += indent+"\\FlaTwoByOne{ "+c+"_T }\n"; str += indent+" { "+c+"_B }\n"; str += "\\leftarrow\n"; str += indent+"\\FlaThreeByOne"; str += DirChoicesBeforeShort[ OperInfo[ i ][ 2 ] ]; str += "{"+c+"_0}\n"; str += indent+" "; str += "{"+v+"_1"+t+"}\n"; str += indent+" "; str += "{"+c+"_2}\n$\n"; } else{ str += "Cannot split scalar\n"; return str; } break; } } } str = str+"}\n\n"; return str; } function LAfterRepartition( FnName, FnType, Variant, NumOpers, OperInfo ){ var str=""; var i, j; var c, v, s, t, tpadding, spadding; var b="", whre=""; var firsttime=1; str += "% Step 6: State after repartitioning\n" str += "% Note: The below needs editing!!!\n\n" str += "\\renewcommand{\\beforeupdate}{\n" for (i=0; i