diff --git a/benchmarks/compile_and_run_benchmarks_mpi.sh b/benchmarks/compile_and_run_benchmarks_mpi.sh index 29658854a..5cb1b857f 100755 --- a/benchmarks/compile_and_run_benchmarks_mpi.sh +++ b/benchmarks/compile_and_run_benchmarks_mpi.sh @@ -1,9 +1,8 @@ #!/bin/bash # Machine specific directories -MPIINCLUDE="-I/gscratch/sw/intel-2020u1/compilers_and_libraries_2020.1.217/linux/mpi/intel64/include" -MPILIB="-L/gscratch/sw/intel-2020u1/compilers_and_libraries_2020.1.217/linux/mpi/intel64/lib -L/gscratch/sw/intel-2020u1/compilers_and_libraries_2020.1.217/linux/mpi/intel64/lib/release" - +MPIINCLUDE="-I/opt/ohpc/pub/compiler/intel/compilers_and_libraries_2019.4.243/linux/mpi/intel64/include" +MPILIB="-L/opt/ohpc/pub/compiler/intel/compilers_and_libraries_2019.4.243/linux/mpi/intel64/lib" CXX="mpicxx -DWITH_MPI" DXX="mpicxx -DWITH_MPI" @@ -23,9 +22,11 @@ KERNEL_FOLDER=$1 KERNEL=$2 source configure_paths.sh -CXXFLAGS="-std=c++11 -O3 -fno-rtti -mavx2 -m64 $MPIINCLUDE $MPILIB -lmpi" -CORES=128 -#CORES=2 +CXXFLAGS="-std=c++11 -O3 -fno-rtti -mavx512f -m64 $MPIINCLUDE $MPILIB -lmpi" +#CORES=128 +#CORES=216 +#CORES=1 +CORES=8 # Compile options # - Make ${CXX} dump generated assembly @@ -74,7 +75,7 @@ echo "Running ${KERNEL} wrapper" #VTUNE_METRIC=memory-access #PROFILING_COMMAND="amplxe-cl -collect ${VTUNE_METRIC} -result-dir vtune_results -quiet" #rm -rf vtune_results -RUN_REF=1 RUN_TIRAMISU=1 HL_NUM_THREADS=$CORES LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${HALIDE_LIB_DIRECTORY}:${ISL_LIB_DIRECTORY}:${TIRAMISU_ROOT}/build/:${MKL_PREFIX}/lib/${MKL_LIB_PATH_SUFFIX} DYLD_LIBRARY_PATH=${DYLD_LIBRARY_PATH}:${HALIDE_LIB_DIRECTORY}:${TIRAMISU_ROOT}/build/:${MKL_PREFIX}/lib/${MKL_LIB_PATH_SUFFIX} ${PROFILING_COMMAND} mpirun -np ${CORES} ./${KERNEL}_wrapper +#RUN_REF=1 RUN_TIRAMISU=1 HL_NUM_THREADS=$CORES LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${HALIDE_LIB_DIRECTORY}:${ISL_LIB_DIRECTORY}:${TIRAMISU_ROOT}/build/:${MKL_PREFIX}/lib/${MKL_LIB_PATH_SUFFIX} DYLD_LIBRARY_PATH=${DYLD_LIBRARY_PATH}:${HALIDE_LIB_DIRECTORY}:${TIRAMISU_ROOT}/build/:${MKL_PREFIX}/lib/${MKL_LIB_PATH_SUFFIX} ${PROFILING_COMMAND} mpirun -np ${CORES} ./${KERNEL}_wrapper #rm -rf ${KERNEL}_generator ${KERNEL}_wrapper generated_${KERNEL}.o generated_${KERNEL}.o.h diff --git a/benchmarks/run_benchmarks_mpi.sh b/benchmarks/run_benchmarks_mpi.sh new file mode 100755 index 000000000..3bc1cb597 --- /dev/null +++ b/benchmarks/run_benchmarks_mpi.sh @@ -0,0 +1,70 @@ +#!/bin/bash + +# Machine specific directories +MPIINCLUDE="-I/opt/ohpc/pub/compiler/intel/compilers_and_libraries_2019.4.243/linux/mpi/intel64/include" +MPILIB="-L/opt/ohpc/pub/compiler/intel/compilers_and_libraries_2019.4.243/linux/mpi/intel64/lib" + +CXX="mpicxx -DWITH_MPI" +DXX="mpicxx -DWITH_MPI" + +set -x + +if [ $# -eq 0 ]; then + echo "Usage: TIRAMISU_SMALL=1 script.sh " + echo "Example: script.sh level1/axpy axpy" + exit +fi + +# Define data sizes, possible value: -DTIRAMISU_XLARGE, -DTIRAMISU_LARGE, -DTIRAMISU_MEDIUM, -DTIRAMISU_SMALL +DEFINED_SIZE="-DTIRAMISU_LARGE" + +KERNEL_FOLDER=$1 +KERNEL=$2 +source configure_paths.sh + +CXXFLAGS="-m64 -std=c++11 -O3 -fno-rtti -mavx2 $MPIINCLUDE $MPILIB -lmpi" +CORES=8 + +# Compile options +# - Make ${CXX} dump generated assembly +# CXXFLAGS: -g -Wa,-alh +# - Get info about ${CXX} vectorization +# CXXFLAGS -fopt-info-vec +# - Pass options to the llvm compiler +# HL_LLVM_ARGS="-help" +# - Set thread number for Halide +# HL_NUM_THREADS=32 +# - Execution env variables +# OMP_NUM_THREADS=48 +# to set the number of threads to use by OpenMP. +# - Command to run Vtune +# source /data/scratch/yunming/intel_parallel_studio_cluster/parallel_studio_xe_2017/install/vtune_amplifier_xe/amplxe-vars.sh +# amplxe-cl -collect hpc-performance -result-dir vtune_results -quiet ./binary +# Guide: https://software.intel.com/en-us/vtune-amplifier-help-amplxe-cl-command-syntax + +INCLUDES="-I${MKL_PREFIX}/include/ -I${TIRAMISU_ROOT}/include/ -I${HALIDE_SOURCE_DIRECTORY}/include/ -I${ISL_INCLUDE_DIRECTORY} -I${TIRAMISU_ROOT}/benchmarks/" +LIBRARIES="-ltiramisu ${MKL_FLAGS} -lHalide -lisl -lz -lpthread -ldl ${EXTRA_LIBRARIES}" +LIBRARIES_DIR="-L${MKL_PREFIX}/lib/${MKL_LIB_PATH_SUFFIX} -L${HALIDE_LIB_DIRECTORY}/ -L${ISL_LIB_DIRECTORY}/ -L${TIRAMISU_ROOT}/build/" + +echo "Compiling ${KERNEL}" + +cd ${KERNEL_FOLDER} + +echo "Compiling ${KERNEL} wrapper" +${DXX} ${LANKA_OPTIONS} $CXXFLAGS ${INCLUDES} ${DEFINED_SIZE} ${KERNEL}_wrapper.cpp ${LIBRARIES_DIR} ${LIBRARIES} generated_${KERNEL}.o ${LIBRARIES} -o ${KERNEL}_wrapper + +echo "Running ${KERNEL} wrapper" +# To enable profiling: +## Perf: +#PROFILING_COMMAND="perf stat -e cycles,instructions,cache-misses,L1-icache-load-misses,LLC-load-misses,dTLB-load-misses,cpu-migrations,context-switches,bus-cycles,cache-references,minor-faults" +## Vtune: +#VTUNE_METRIC=hpc-performance +#VTUNE_METRIC=memory-access +#PROFILING_COMMAND="amplxe-cl -collect ${VTUNE_METRIC} -result-dir vtune_results -quiet" +#rm -rf vtune_results + +RUN_REF=1 RUN_TIRAMISU=1 HL_NUM_THREADS=$CORES LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${HALIDE_LIB_DIRECTORY}:${ISL_LIB_DIRECTORY}:${TIRAMISU_ROOT}/build/:${MKL_PREFIX}/lib/${MKL_LIB_PATH_SUFFIX} DYLD_LIBRARY_PATH=${DYLD_LIBRARY_PATH}:${HALIDE_LIB_DIRECTORY}:${TIRAMISU_ROOT}/build/:${MKL_PREFIX}/lib/${MKL_LIB_PATH_SUFFIX} ${PROFILING_COMMAND} srun -n ${CORES} --mpi=pmi2 ./${KERNEL}_wrapper + +#rm -rf ${KERNEL}_generator ${KERNEL}_wrapper generated_${KERNEL}.o generated_${KERNEL}.o.h + +cd - diff --git a/benchmarks/tensors/baryon/tiramisu_make_fused_baryon_blocks_correlator/tiramisu_make_fused_baryon_blocks_correlator_generator.cpp b/benchmarks/tensors/baryon/tiramisu_make_fused_baryon_blocks_correlator/tiramisu_make_fused_baryon_blocks_correlator_generator.cpp index 8819cf0c3..cc5252d85 100644 --- a/benchmarks/tensors/baryon/tiramisu_make_fused_baryon_blocks_correlator/tiramisu_make_fused_baryon_blocks_correlator_generator.cpp +++ b/benchmarks/tensors/baryon/tiramisu_make_fused_baryon_blocks_correlator/tiramisu_make_fused_baryon_blocks_correlator_generator.cpp @@ -26,6 +26,8 @@ void generate_function(std::string name) y("y", 0, Vsrc), m("m", 0, NsrcHex), n("n", 0, NsnkHex), + msc("msc", 0, NsrcSC), + nsc("nsc", 0, NsnkSC), tri("tri", 0, Nq), iCprime("iCprime", 0, Nc), iSprime("iSprime", 0, Ns), @@ -34,20 +36,20 @@ void generate_function(std::string name) kCprime("kCprime", 0, Nc), kSprime("kSprime", 0, Ns); - input C_r("C_r", {t, x_out, rp, m, r, n}, p_float64); - input C_i("C_i", {t, x_out, rp, m, r, n}, p_float64); + input C_r("C_r", {t, x_out, rp, msc, m, r, nsc, n}, p_float64); + input C_i("C_i", {t, x_out, rp, msc, m, r, nsc, n}, p_float64); input B1_prop_r("B1_prop_r", {tri, t, iCprime, iSprime, jCprime, jSprime, x, y}, p_float64); input B1_prop_i("B1_prop_i", {tri, t, iCprime, iSprime, jCprime, jSprime, x, y}, p_float64); input src_psi_B1_r("src_psi_B1_r", {y, m}, p_float64); input src_psi_B1_i("src_psi_B1_i", {y, m}, p_float64); input snk_psi_r("snk_psi_r", {x, n}, p_float64); input snk_psi_i("snk_psi_i", {x, n}, p_float64); - input src_color_weights("src_color_weights", {rp, wnum, q}, p_int32); - input src_spin_weights("src_spin_weights", {rp, wnum, q}, p_int32); - input src_weights("src_weights", {rp, wnum}, p_float64); - input snk_color_weights("snk_color_weights", {r, nperm, wnum, q}, p_int32); - input snk_spin_weights("snk_spin_weights", {r, nperm, wnum, q}, p_int32); - input snk_weights("snk_weights", {r, wnum}, p_float64); + input src_color_weights("src_color_weights", {rp, msc, wnum, q}, p_int32); + input src_spin_weights("src_spin_weights", {rp, msc, wnum, q}, p_int32); + input src_weights("src_weights", {rp, msc, wnum}, p_float64); + input snk_color_weights("snk_color_weights", {r, nsc, nperm, wnum, q}, p_int32); + input snk_spin_weights("snk_spin_weights", {r, nsc, nperm, wnum, q}, p_int32); + input snk_weights("snk_weights", {r, nsc, wnum}, p_float64); input src_spins("src_spins", {rp}, p_int32); input sigs("sigs", {nperm}, p_int32); @@ -59,16 +61,16 @@ void generate_function(std::string name) * Computing B1_Blocal_r1 */ - computation B1_Blocal_r1_r_init("B1_Blocal_r1_r_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B1_Blocal_r1_i_init("B1_Blocal_r1_i_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B1_Blocal_r1_r_init("B1_Blocal_r1_r_init", {t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B1_Blocal_r1_i_init("B1_Blocal_r1_i_init", {t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); complex_computation B1_Blocal_r1_init(&B1_Blocal_r1_r_init, &B1_Blocal_r1_i_init); - complex_expr B1_r1_prop_0 = B1_prop(0, t, iCprime, iSprime, src_color_weights(0, wnumBlock, 0), src_spin_weights(0, wnumBlock, 0), x_out*sites_per_rank+x_in, y); - complex_expr B1_r1_prop_2 = B1_prop(2, t, kCprime, kSprime, src_color_weights(0, wnumBlock, 2), src_spin_weights(0, wnumBlock, 2), x_out*sites_per_rank+x_in, y); - complex_expr B1_r1_prop_1 = B1_prop(1, t, jCprime, jSprime, src_color_weights(0, wnumBlock, 1), src_spin_weights(0, wnumBlock, 1), x_out*sites_per_rank+x_in, y); + complex_expr B1_r1_prop_0 = B1_prop(0, t, iCprime, iSprime, src_color_weights(0, msc, wnumBlock, 0), src_spin_weights(0, msc, wnumBlock, 0), x_out*sites_per_rank+x_in, y); + complex_expr B1_r1_prop_2 = B1_prop(2, t, kCprime, kSprime, src_color_weights(0, msc, wnumBlock, 2), src_spin_weights(0, msc, wnumBlock, 2), x_out*sites_per_rank+x_in, y); + complex_expr B1_r1_prop_1 = B1_prop(1, t, jCprime, jSprime, src_color_weights(0, msc, wnumBlock, 1), src_spin_weights(0, msc, wnumBlock, 1), x_out*sites_per_rank+x_in, y); - complex_expr B1_r1_diquark = ( B1_r1_prop_0 * B1_r1_prop_2 ) * src_weights(0, wnumBlock); + complex_expr B1_r1_diquark = ( B1_r1_prop_0 * B1_r1_prop_2 ) * src_weights(0, msc, wnumBlock); /*complex_expr B1_r1_prop_0s = B1_prop(2, t, iCprime, iSprime, src_color_weights(0, wnumBlock, 2), src_spin_weights(0, wnumBlock, 2), x_out*sites_per_rank+x_in, y); complex_expr B1_r1_prop_2s = B1_prop(0, t, kCprime, kSprime, src_color_weights(0, wnumBlock, 0), src_spin_weights(0, wnumBlock, 0), x_out*sites_per_rank+x_in, y); @@ -77,96 +79,96 @@ void generate_function(std::string name) complex_expr B1_r1_diquark = ( B1_r1_prop_0 * B1_r1_prop_2 - B1_r1_prop_0s * B1_r1_prop_2s ) * src_weights(0, wnumBlock); */ - computation B1_Blocal_r1_r_props_init("B1_Blocal_r1_r_props_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B1_Blocal_r1_i_props_init("B1_Blocal_r1_i_props_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B1_Blocal_r1_r_props_init("B1_Blocal_r1_r_props_init", {t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B1_Blocal_r1_i_props_init("B1_Blocal_r1_i_props_init", {t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B1_Blocal_r1_r_diquark("B1_Blocal_r1_r_diquark", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, B1_r1_diquark.get_real()); - computation B1_Blocal_r1_i_diquark("B1_Blocal_r1_i_diquark", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, B1_r1_diquark.get_imag()); + computation B1_Blocal_r1_r_diquark("B1_Blocal_r1_r_diquark", {t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, B1_r1_diquark.get_real()); + computation B1_Blocal_r1_i_diquark("B1_Blocal_r1_i_diquark", {t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, B1_r1_diquark.get_imag()); complex_computation B1_Blocal_r1_diquark(&B1_Blocal_r1_r_diquark, &B1_Blocal_r1_i_diquark); - complex_expr B1_r1_props = B1_r1_prop_1 * B1_Blocal_r1_diquark(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); + complex_expr B1_r1_props = B1_r1_prop_1 * B1_Blocal_r1_diquark(t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); - computation B1_Blocal_r1_r_props("B1_Blocal_r1_r_props", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Blocal_r1_r_props_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + B1_r1_props.get_real()); - computation B1_Blocal_r1_i_props("B1_Blocal_r1_i_props", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Blocal_r1_i_props_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + B1_r1_props.get_imag()); + computation B1_Blocal_r1_r_props("B1_Blocal_r1_r_props", {t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Blocal_r1_r_props_init(t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + B1_r1_props.get_real()); + computation B1_Blocal_r1_i_props("B1_Blocal_r1_i_props", {t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Blocal_r1_i_props_init(t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + B1_r1_props.get_imag()); complex_computation B1_Blocal_r1_props(&B1_Blocal_r1_r_props, &B1_Blocal_r1_i_props); - complex_expr B1_r1 = src_psi_B1 * B1_Blocal_r1_props(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr B1_r1 = src_psi_B1 * B1_Blocal_r1_props(t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - computation B1_Blocal_r1_r_update("B1_Blocal_r1_r_update", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Blocal_r1_r_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + B1_r1.get_real()); - computation B1_Blocal_r1_i_update("B1_Blocal_r1_i_update", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Blocal_r1_i_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + B1_r1.get_imag()); + computation B1_Blocal_r1_r_update("B1_Blocal_r1_r_update", {t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Blocal_r1_r_init(t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + B1_r1.get_real()); + computation B1_Blocal_r1_i_update("B1_Blocal_r1_i_update", {t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Blocal_r1_i_init(t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + B1_r1.get_imag()); /* * Computing B1_Blocal_r2 */ - computation B1_Blocal_r2_r_init("B1_Blocal_r2_r_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B1_Blocal_r2_i_init("B1_Blocal_r2_i_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B1_Blocal_r2_r_init("B1_Blocal_r2_r_init", {t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B1_Blocal_r2_i_init("B1_Blocal_r2_i_init", {t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); complex_computation B1_Blocal_r2_init(&B1_Blocal_r2_r_init, &B1_Blocal_r2_i_init); - complex_expr B1_r2_prop_0 = B1_prop(0, t, iCprime, iSprime, src_color_weights(1, wnumBlock, 0), src_spin_weights(1, wnumBlock, 0), x_out*sites_per_rank+x_in, y); - complex_expr B1_r2_prop_2 = B1_prop(2, t, kCprime, kSprime, src_color_weights(1, wnumBlock, 2), src_spin_weights(1, wnumBlock, 2), x_out*sites_per_rank+x_in, y); - complex_expr B1_r2_prop_0p = B1_prop(0, t, kCprime, kSprime, src_color_weights(1, wnumBlock, 0), src_spin_weights(1, wnumBlock, 0), x_out*sites_per_rank+x_in, y); - complex_expr B1_r2_prop_2p = B1_prop(2, t, iCprime, iSprime, src_color_weights(1, wnumBlock, 2), src_spin_weights(1, wnumBlock, 2), x_out*sites_per_rank+x_in, y); - complex_expr B1_r2_prop_1 = B1_prop(1, t, jCprime, jSprime, src_color_weights(1, wnumBlock, 1), src_spin_weights(1, wnumBlock, 1), x_out*sites_per_rank+x_in, y); + complex_expr B1_r2_prop_0 = B1_prop(0, t, iCprime, iSprime, src_color_weights(1, msc, wnumBlock, 0), src_spin_weights(1, msc, wnumBlock, 0), x_out*sites_per_rank+x_in, y); + complex_expr B1_r2_prop_2 = B1_prop(2, t, kCprime, kSprime, src_color_weights(1, msc, wnumBlock, 2), src_spin_weights(1, msc, wnumBlock, 2), x_out*sites_per_rank+x_in, y); + complex_expr B1_r2_prop_0p = B1_prop(0, t, kCprime, kSprime, src_color_weights(1, msc, wnumBlock, 0), src_spin_weights(1, msc, wnumBlock, 0), x_out*sites_per_rank+x_in, y); + complex_expr B1_r2_prop_2p = B1_prop(2, t, iCprime, iSprime, src_color_weights(1, msc, wnumBlock, 2), src_spin_weights(1, msc, wnumBlock, 2), x_out*sites_per_rank+x_in, y); + complex_expr B1_r2_prop_1 = B1_prop(1, t, jCprime, jSprime, src_color_weights(1, msc, wnumBlock, 1), src_spin_weights(1, msc, wnumBlock, 1), x_out*sites_per_rank+x_in, y); - complex_expr B1_r2_diquark = ( B1_r2_prop_0 * B1_r2_prop_2 ) * src_weights(1, wnumBlock); + complex_expr B1_r2_diquark = ( B1_r2_prop_0 * B1_r2_prop_2 ) * src_weights(1, msc, wnumBlock); - computation B1_Blocal_r2_r_props_init("B1_Blocal_r2_r_props_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B1_Blocal_r2_i_props_init("B1_Blocal_r2_i_props_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B1_Blocal_r2_r_props_init("B1_Blocal_r2_r_props_init", {t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B1_Blocal_r2_i_props_init("B1_Blocal_r2_i_props_init", {t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B1_Blocal_r2_r_diquark("B1_Blocal_r2_r_diquark", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, B1_r2_diquark.get_real()); - computation B1_Blocal_r2_i_diquark("B1_Blocal_r2_i_diquark", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, B1_r2_diquark.get_imag()); + computation B1_Blocal_r2_r_diquark("B1_Blocal_r2_r_diquark", {t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, B1_r2_diquark.get_real()); + computation B1_Blocal_r2_i_diquark("B1_Blocal_r2_i_diquark", {t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, B1_r2_diquark.get_imag()); complex_computation B1_Blocal_r2_diquark(&B1_Blocal_r2_r_diquark, &B1_Blocal_r2_i_diquark); - complex_expr B1_r2_props = B1_r2_prop_1 * B1_Blocal_r2_diquark(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); + complex_expr B1_r2_props = B1_r2_prop_1 * B1_Blocal_r2_diquark(t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); - computation B1_Blocal_r2_r_props("B1_Blocal_r2_r_props", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Blocal_r2_r_props_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + B1_r2_props.get_real()); - computation B1_Blocal_r2_i_props("B1_Blocal_r2_i_props", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Blocal_r2_i_props_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + B1_r2_props.get_imag()); + computation B1_Blocal_r2_r_props("B1_Blocal_r2_r_props", {t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Blocal_r2_r_props_init(t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + B1_r2_props.get_real()); + computation B1_Blocal_r2_i_props("B1_Blocal_r2_i_props", {t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Blocal_r2_i_props_init(t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + B1_r2_props.get_imag()); complex_computation B1_Blocal_r2_props(&B1_Blocal_r2_r_props, &B1_Blocal_r2_i_props); - complex_expr B1_r2 = src_psi_B1 * B1_Blocal_r2_props(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr B1_r2 = src_psi_B1 * B1_Blocal_r2_props(t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - computation B1_Blocal_r2_r_update("B1_Blocal_r2_r_update", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Blocal_r2_r_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + B1_r2.get_real()); - computation B1_Blocal_r2_i_update("B1_Blocal_r2_i_update", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Blocal_r2_i_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + B1_r2.get_imag()); + computation B1_Blocal_r2_r_update("B1_Blocal_r2_r_update", {t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Blocal_r2_r_init(t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + B1_r2.get_real()); + computation B1_Blocal_r2_i_update("B1_Blocal_r2_i_update", {t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Blocal_r2_i_init(t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + B1_r2.get_imag()); /* Correlator */ - computation C_init_r("C_init_r", {t, x_out, rp, m, r, n}, expr((double) 0)); - computation C_init_i("C_init_i", {t, x_out, rp, m, r, n}, expr((double) 0)); + computation C_init_r("C_init_r", {t, x_out, msc, rp, m, r, nsc, n}, expr((double) 0)); + computation C_init_i("C_init_i", {t, x_out, msc, rp, m, r, nsc, n}, expr((double) 0)); - computation C_prop_init_r("C_prop_init_r", {t, x_out, x_in, rp, m, r}, expr((double) 0)); - computation C_prop_init_i("C_prop_init_i", {t, x_out, x_in, rp, m, r}, expr((double) 0)); + computation C_prop_init_r("C_prop_init_r", {t, x_out, x_in, msc, rp, m, r, nsc}, expr((double) 0)); + computation C_prop_init_i("C_prop_init_i", {t, x_out, x_in, msc, rp, m, r, nsc}, expr((double) 0)); int b=0; /* r1, b = 0 */ - complex_computation new_term_0_r1_b1("new_term_0_r1_b1", {t, x_out, x_in, rp, m, r, nperm, wnum}, B1_Blocal_r1_init(t, x_out, x_in, snk_color_weights(r, nperm, wnum, 0), snk_spin_weights(r, nperm, wnum, 0), snk_color_weights(r, nperm, wnum, 2), snk_spin_weights(r, nperm, wnum, 2), snk_color_weights(r, nperm, wnum, 1), snk_spin_weights(r, nperm, wnum, 1), m)); + complex_computation new_term_0_r1_b1("new_term_0_r1_b1", {t, x_out, x_in, msc, rp, m, r, nsc, nperm, wnum}, B1_Blocal_r1_init(t, x_out, x_in, msc, snk_color_weights(r, nsc, nperm, wnum, 0), snk_spin_weights(r, nsc, nperm, wnum, 0), snk_color_weights(r, nsc, nperm, wnum, 2), snk_spin_weights(r, nsc, nperm, wnum, 2), snk_color_weights(r, nsc, nperm, wnum, 1), snk_spin_weights(r, nsc, nperm, wnum, 1), m)); new_term_0_r1_b1.add_predicate(src_spins(rp) == 1); /* r2, b = 0 */ - complex_computation new_term_0_r2_b1("new_term_0_r2_b1", {t, x_out, x_in, rp, m, r, nperm, wnum}, B1_Blocal_r2_init(t, x_out, x_in, snk_color_weights(r, nperm, wnum, 0), snk_spin_weights(r, nperm, wnum, 0), snk_color_weights(r, nperm, wnum, 2), snk_spin_weights(r, nperm, wnum, 2), snk_color_weights(r, nperm, wnum, 1), snk_spin_weights(r, nperm, wnum, 1), m)); + complex_computation new_term_0_r2_b1("new_term_0_r2_b1", {t, x_out, x_in, msc, rp, m, r, nsc, nperm, wnum}, B1_Blocal_r2_init(t, x_out, x_in, msc, snk_color_weights(r, nsc, nperm, wnum, 0), snk_spin_weights(r, nsc, nperm, wnum, 0), snk_color_weights(r, nsc, nperm, wnum, 2), snk_spin_weights(r, nsc, nperm, wnum, 2), snk_color_weights(r, nsc, nperm, wnum, 1), snk_spin_weights(r, nsc, nperm, wnum, 1), m)); new_term_0_r2_b1.add_predicate(src_spins(rp) == 2); - complex_expr prefactor(cast(p_float64, snk_weights(r, wnum))*cast(p_float64, sigs(nperm)), 0.0); + complex_expr prefactor(cast(p_float64, snk_weights(r, nsc, wnum))*cast(p_float64, sigs(nperm)), 0.0); - complex_expr term_res_b1 = new_term_0_r1_b1(t, x_out, x_in, rp, m, r, nperm, wnum); + complex_expr term_res_b1 = new_term_0_r1_b1(t, x_out, x_in, msc, rp, m, r, nsc, nperm, wnum); complex_expr snk_psi(snk_psi_r(x_out*sites_per_rank+x_in, n), snk_psi_i(x_out*sites_per_rank+x_in, n)); complex_expr term_res = prefactor * term_res_b1; - computation C_prop_update_r("C_prop_update_r", {t, x_out, x_in, rp, m, r, nperm, wnum}, C_prop_init_r(t, x_out, x_in, rp, m, r) + term_res.get_real()); - computation C_prop_update_i("C_prop_update_i", {t, x_out, x_in, rp, m, r, nperm, wnum}, C_prop_init_i(t, x_out, x_in, rp, m, r) + term_res.get_imag()); + computation C_prop_update_r("C_prop_update_r", {t, x_out, x_in, msc, rp, m, r, nsc, nperm, wnum}, C_prop_init_r(t, x_out, x_in, msc, rp, m, r, nsc) + term_res.get_real()); + computation C_prop_update_i("C_prop_update_i", {t, x_out, x_in, msc, rp, m, r, nsc, nperm, wnum}, C_prop_init_i(t, x_out, x_in, msc, rp, m, r, nsc) + term_res.get_imag()); complex_computation C_prop_update(&C_prop_update_r, &C_prop_update_i); - complex_expr term = C_prop_update(t, x_out, x_in, rp, m, r, B1Nperms-1, Nw-1) * snk_psi; + complex_expr term = C_prop_update(t, x_out, x_in, msc, rp, m, r, nsc, B1Nperms-1, Nw-1) * snk_psi; - computation C_update_r("C_update_r", {t, x_out, x_in, rp, m, r, n}, C_init_r(t, x_out, rp, m, r, n) + term.get_real()); - computation C_update_i("C_update_i", {t, x_out, x_in, rp, m, r, n}, C_init_i(t, x_out, rp, m, r, n) + term.get_imag()); + computation C_update_r("C_update_r", {t, x_out, x_in, msc, rp, m, r, nsc, n}, C_init_r(t, x_out, msc, rp, m, r, nsc, n) + term.get_real()); + computation C_update_i("C_update_i", {t, x_out, x_in, msc, rp, m, r, nsc, n}, C_init_i(t, x_out, msc, rp, m, r, nsc, n) + term.get_imag()); // ------------------------------------------------------- // Layer II @@ -180,7 +182,7 @@ void generate_function(std::string name) handle = &(handle ->then(B1_Blocal_r1_r_init, t) .then(B1_Blocal_r1_i_init, jSprime) - .then(B1_Blocal_r1_r_props_init, x_in) + .then(B1_Blocal_r1_r_props_init, msc) .then(B1_Blocal_r1_i_props_init, jSprime) .then(B1_Blocal_r1_r_diquark, y) .then(B1_Blocal_r1_i_diquark, wnumBlock) @@ -188,9 +190,9 @@ void generate_function(std::string name) .then(B1_Blocal_r1_i_props, jSprime) .then(B1_Blocal_r1_r_update, y) .then(B1_Blocal_r1_i_update, m) - .then(B1_Blocal_r2_r_init, x_in) + .then(B1_Blocal_r2_r_init, msc) .then(B1_Blocal_r2_i_init, jSprime) - .then(B1_Blocal_r2_r_props_init, x_in) + .then(B1_Blocal_r2_r_props_init, msc) .then(B1_Blocal_r2_i_props_init, jSprime) .then(B1_Blocal_r2_r_diquark, y) .then(B1_Blocal_r2_i_diquark, wnumBlock) @@ -200,15 +202,15 @@ void generate_function(std::string name) .then(B1_Blocal_r2_i_update, m)); handle = &(handle - ->then(C_prop_init_r, x_in) - .then(C_prop_init_i, r) - .then( *(new_term_0_r1_b1.get_real()), r) + ->then(C_prop_init_r, msc) + .then(C_prop_init_i, nsc) + .then( *(new_term_0_r1_b1.get_real()), nsc) .then( *(new_term_0_r1_b1.get_imag()), wnum) .then( *(new_term_0_r2_b1.get_real()), wnum) .then( *(new_term_0_r2_b1.get_imag()), wnum) .then(C_prop_update_r, wnum) .then(C_prop_update_i, wnum) - .then(C_update_r, r) + .then(C_update_r, nsc) .then(C_update_i, n)); #if VECTORIZED @@ -266,8 +268,8 @@ void generate_function(std::string name) /* Correlator */ - buffer buf_C_r("buf_C_r", {Lt, Vsnk/sites_per_rank, B1Nrows, NsrcHex, B1Nrows, NsnkHex}, p_float64, a_input); - buffer buf_C_i("buf_C_i", {Lt, Vsnk/sites_per_rank, B1Nrows, NsrcHex, B1Nrows, NsnkHex}, p_float64, a_input); + buffer buf_C_r("buf_C_r", {Lt, Vsnk/sites_per_rank, B1Nrows, NsrcSC, NsrcHex, B1Nrows, NsnkSC, NsnkHex}, p_float64, a_input); + buffer buf_C_i("buf_C_i", {Lt, Vsnk/sites_per_rank, B1Nrows, NsrcSC, NsrcHex, B1Nrows, NsnkSC, NsnkHex}, p_float64, a_input); C_r.store_in(&buf_C_r); C_i.store_in(&buf_C_i); @@ -290,10 +292,10 @@ void generate_function(std::string name) C_prop_update_r.store_in(&buf_C_prop_r, {0}); C_prop_update_i.store_in(&buf_C_prop_i, {0}); - C_init_r.store_in(&buf_C_r, {t, x_out, rp, m, r, n}); - C_init_i.store_in(&buf_C_i, {t, x_out, rp, m, r, n}); - C_update_r.store_in(&buf_C_r, {t, x_out, rp, m, r, n}); - C_update_i.store_in(&buf_C_i, {t, x_out, rp, m, r, n}); + C_init_r.store_in(&buf_C_r, {t, x_out, rp, msc, m, r, nsc, n}); + C_init_i.store_in(&buf_C_i, {t, x_out, rp, msc, m, r, nsc, n}); + C_update_r.store_in(&buf_C_r, {t, x_out, rp, msc, m, r, nsc, n}); + C_update_i.store_in(&buf_C_i, {t, x_out, rp, msc, m, r, nsc, n}); // ------------------------------------------------------- // Code Generation diff --git a/benchmarks/tensors/baryon/tiramisu_make_fused_baryon_blocks_correlator/tiramisu_make_fused_baryon_blocks_correlator_wrapper.cpp b/benchmarks/tensors/baryon/tiramisu_make_fused_baryon_blocks_correlator/tiramisu_make_fused_baryon_blocks_correlator_wrapper.cpp index 2d93a512c..b8e95f038 100644 --- a/benchmarks/tensors/baryon/tiramisu_make_fused_baryon_blocks_correlator/tiramisu_make_fused_baryon_blocks_correlator_wrapper.cpp +++ b/benchmarks/tensors/baryon/tiramisu_make_fused_baryon_blocks_correlator/tiramisu_make_fused_baryon_blocks_correlator_wrapper.cpp @@ -38,7 +38,7 @@ void tiramisu_make_nucleon_2pt(double* C_re, double* snk_psi_B1_im) { - int q, t, iC, iS, jC, jS, y, x, x1, x2, m, n, k, wnum, b, rp, r; + int q, t, iC, iS, jC, jS, y, x, x1, x2, msc, nsc, m, n, k, wnum, b, rp, r; int iC1, iS1, iC2, iS2, jC1, jS1, jC2, jS2, kC1, kS1, kC2, kS2; int rank = 0; @@ -69,17 +69,17 @@ void tiramisu_make_nucleon_2pt(double* C_re, } // Halide buffers - Halide::Buffer b_C_r(NsnkHex, B1Nrows, NsrcHex, B1Nrows, Vsnk/sites_per_rank, Lt, "C_r"); - Halide::Buffer b_C_i(NsnkHex, B1Nrows, NsrcHex, B1Nrows, Vsnk/sites_per_rank, Lt, "C_i"); + Halide::Buffer b_C_r(NsnkHex, NsnkSC, B1Nrows, NsrcHex, NsrcSC, B1Nrows, Vsnk/sites_per_rank, Lt, "C_r"); + Halide::Buffer b_C_i(NsnkHex, NsnkSC, B1Nrows, NsrcHex, NsrcSC, B1Nrows, Vsnk/sites_per_rank, Lt, "C_i"); - Halide::Buffer b_src_color_weights(Nq, Nw, B1Nrows, "src_color_weights"); - Halide::Buffer b_src_spin_weights(Nq, Nw, B1Nrows, "src_spin_weights"); - Halide::Buffer b_src_weights(Nw, B1Nrows, "src_weights"); + Halide::Buffer b_src_color_weights(Nq, Nw, NsrcSC, B1Nrows, "src_color_weights"); + Halide::Buffer b_src_spin_weights(Nq, Nw, NsrcSC, B1Nrows, "src_spin_weights"); + Halide::Buffer b_src_weights(Nw, NsrcSC, B1Nrows, "src_weights"); Halide::Buffer b_src_spins(B1Nrows, "src_spins"); - Halide::Buffer b_snk_color_weights(Nq, Nw, B1Nperms, B1Nrows, "snk_color_weights"); - Halide::Buffer b_snk_spin_weights(Nq, Nw, B1Nperms, B1Nrows, "snk_spin_weights"); - Halide::Buffer b_snk_weights(Nw, B1Nrows, "snk_weights"); + Halide::Buffer b_snk_color_weights(Nq, Nw, B1Nperms, NsnkSC, B1Nrows, "snk_color_weights"); + Halide::Buffer b_snk_spin_weights(Nq, Nw, B1Nperms, NsnkSC, B1Nrows, "snk_spin_weights"); + Halide::Buffer b_snk_weights(Nw, NsnkSC, B1Nrows, "snk_weights"); // prop Halide::Buffer b_B1_prop_r((double *)B1_prop_re, {Vsrc, Vsnk, Ns, Nc, Ns, Nc, Lt, Nq}); @@ -98,22 +98,23 @@ void tiramisu_make_nucleon_2pt(double* C_re, // Weights - int* snk_color_weights_r1 = (int *) malloc(Nw * Nq * sizeof (int)); - int* snk_color_weights_r2 = (int *) malloc(Nw * Nq * sizeof (int)); - int* snk_spin_weights_r1 = (int *) malloc(Nw * Nq * sizeof (int)); - int* snk_spin_weights_r2 = (int *) malloc(Nw * Nq * sizeof (int)); + int* snk_color_weights_r1 = (int *) malloc(Nw * NsnkSC * Nq * sizeof (int)); + int* snk_color_weights_r2 = (int *) malloc(Nw * NsnkSC * Nq * sizeof (int)); + int* snk_spin_weights_r1 = (int *) malloc(Nw * NsnkSC * Nq * sizeof (int)); + int* snk_spin_weights_r2 = (int *) malloc(Nw * NsnkSC * Nq * sizeof (int)); + for (int nsc=0; nsc> duration_vector_1; std::vector> duration_vector_2; - int q, t, iC, iS, jC, jS, y, x, x1, x2, m, n, k, wnum, rp, r; + int q, t, iC, iS, jC, jS, y, x, x1, x2, msc, nsc, m, n, k, wnum, rp, r; int iC1, iS1, iC2, iS2, jC1, jS1, jC2, jS2, kC1, kS1, kC2, kS2; // Initialization @@ -338,48 +350,54 @@ int main(int, char **) static int src_spin_weights_r2_P[Nw][Nq] = { {0,1,1}, {0,1,1}, {0,1,1}, {0,1,1}, {0,1,1}, {0,1,1}, {1,0,1}, {1,0,1}, {1,0,1}, {1,0,1}, {1,0,1}, {1,0,1} }; static double src_weights_r2_P[Nw] = {-1/ sqrt(2), 1/sqrt(2), 1/sqrt(2), -1/sqrt(2), 1/sqrt(2), -1/sqrt(2), 1/ sqrt(2), -1/sqrt(2), -1/sqrt(2), 1/sqrt(2), -1/sqrt(2), 1/sqrt(2)}; - int* src_color_weights_r1 = (int *) malloc(Nw * Nq * sizeof (int)); - int* src_color_weights_r2 = (int *) malloc(Nw * Nq * sizeof (int)); - int* src_spin_weights_r1 = (int *) malloc(Nw * Nq * sizeof (int)); - int* src_spin_weights_r2 = (int *) malloc(Nw * Nq * sizeof (int)); - double src_weights_r1[Nw]; - double src_weights_r2[Nw]; + int* src_color_weights_r1 = (int *) malloc(NsrcSC * Nw * Nq * sizeof (int)); + int* src_color_weights_r2 = (int *) malloc(NsrcSC * Nw * Nq * sizeof (int)); + int* src_spin_weights_r1 = (int *) malloc(NsrcSC * Nw * Nq * sizeof (int)); + int* src_spin_weights_r2 = (int *) malloc(NsrcSC * Nw * Nq * sizeof (int)); + double* src_weights_r1 = (double *) malloc(NsrcSC * Nw * sizeof (double)); + double* src_weights_r2 = (double *) malloc(NsrcSC * Nw * sizeof (double)); + for (msc = 0; msc < NsrcSC; msc++) for (wnum = 0; wnum < Nw; wnum++) { for (q = 0; q < Nq; q++) { - src_color_weights_r1[index_2d(wnum,q ,Nq)] = src_color_weights_r1_P[wnum][q]; - src_color_weights_r2[index_2d(wnum,q ,Nq)] = src_color_weights_r2_P[wnum][q]; - src_spin_weights_r1[index_2d(wnum,q ,Nq)] = src_spin_weights_r1_P[wnum][q]; - src_spin_weights_r2[index_2d(wnum,q ,Nq)] = src_spin_weights_r2_P[wnum][q]; + src_color_weights_r1[index_3d(msc,wnum,q ,Nw,Nq)] = src_color_weights_r1_P[wnum][q]; + src_color_weights_r2[index_3d(msc,wnum,q ,Nw,Nq)] = src_color_weights_r2_P[wnum][q]; + src_spin_weights_r1[index_3d(msc,wnum,q ,Nw,Nq)] = src_spin_weights_r1_P[wnum][q]; + src_spin_weights_r2[index_3d(msc,wnum,q ,Nw,Nq)] = src_spin_weights_r2_P[wnum][q]; } - src_weights_r1[wnum] = src_weights_r1_P[wnum]; - src_weights_r2[wnum] = src_weights_r2_P[wnum]; + src_weights_r1[index_2d(msc,wnum ,Nw)] = src_weights_r1_P[wnum]; + src_weights_r2[index_2d(msc,wnum ,Nw)] = src_weights_r2_P[wnum]; } int perms_array[2][3] = { {1,2,3}, {3,2,1} }; int sigs_array[2] = {1,-1}; + //int perms_array[1][3] = { {1,2,3} }; + //int sigs_array[1] = {1}; int* perms = (int *) malloc(B1Nperms * Nq * sizeof (int)); int sigs[B1Nperms]; - int permnum = 0; for (int i = 0; i < B1Nperms; i++) { for (int q = 0; q < Nq; q++) { - perms[index_2d(permnum,q ,Nq)] = perms_array[i][q]; + perms[index_2d(i,q ,Nq)] = perms_array[i][q]; } - sigs[permnum] = sigs_array[i]; - permnum += 1; + sigs[i] = sigs_array[i]; } // Correlators double* C_re = (double *) malloc(B1Nrows * B1Nrows * (NsrcHex) * (NsnkHex) * Lt * sizeof (double)); double* C_im = (double *) malloc(B1Nrows * B1Nrows * (NsrcHex) * (NsnkHex) * Lt * sizeof (double)); - double* t_C_re = (double *) malloc(B1Nrows * B1Nrows * (NsrcHex) * (NsnkHex) * Lt * sizeof (double)); - double* t_C_im = (double *) malloc(B1Nrows * B1Nrows * (NsrcHex) * (NsnkHex) * Lt * sizeof (double)); + double* t_C_re = (double *) malloc(B1Nrows * B1Nrows * (NsrcSC*NsrcHex) * (NsnkSC*NsnkHex) * Lt * sizeof (double)); + double* t_C_im = (double *) malloc(B1Nrows * B1Nrows * (NsrcSC*NsrcHex) * (NsnkSC*NsnkHex) * Lt * sizeof (double)); for (rp=0; rp= 0.01*Vsnk*Vsnk) || - (std::abs(C_im[index_5d(rp,m,r,n,t, NsrcHex,B1Nrows,NsnkHex,Lt)] - t_C_im[index_5d(rp,m,r,n,t, NsrcHex,B1Nrows,NsnkHex,Lt)]) >= 0.01*Vsnk*Vsnk)) + if ((std::abs(C_re[index_5d(rp,m,r,n,t, NsrcHex,B1Nrows,NsnkHex,Lt)] - t_C_re[index_5d(rp,m*NsrcSC+msc,r,n*NsrcSC+nsc,t, NsrcSC*NsrcHex,B1Nrows,NsnkSC*NsnkHex,Lt)]) >= 0.00001*Vsnk*Vsnk) || + (std::abs(C_im[index_5d(rp,m,r,n,t, NsrcHex,B1Nrows,NsnkHex,Lt)] - t_C_im[index_5d(rp,m*NsrcSC+msc,r,n*NsnkSC+nsc,t, NsrcSC*NsrcHex,B1Nrows,NsnkSC*NsnkHex,Lt)]) >= 0.00001*Vsnk*Vsnk)) { - printf("rp=%d, m=%d, n=%d, t=%d: %4.1f + I (%4.1f) vs %4.1f + I (%4.1f) \n", rp, m, n, t, C_re[index_5d(rp,m,r,n,t, NsrcHex,B1Nrows,NsnkHex,Lt)], C_im[index_5d(rp,m,r,n,t, NsrcHex,B1Nrows,NsnkHex,Lt)], t_C_re[index_5d(rp,m,r,n,t, NsrcHex,B1Nrows,NsnkHex,Lt)], t_C_im[index_5d(rp,m,r,n,t, NsrcHex,B1Nrows,NsnkHex,Lt)]); + printf("rp=%d, msc=%d, m=%d, nsc=%d, n=%d, t=%d: %4.1f + I (%4.1f) vs %4.1f + I (%4.1f) \n", rp, msc, m, nsc, n, t, C_re[index_5d(rp,m,r,n,t, NsrcHex,B1Nrows,NsnkHex,Lt)], C_im[index_5d(rp,m,r,n,t, NsrcHex,B1Nrows,NsnkHex,Lt)], t_C_re[index_5d(rp,m*NsrcSC+msc,r,n*NsnkSC+nsc,t, NsrcSC*NsrcHex,B1Nrows,NsnkSC*NsnkHex,Lt)], t_C_im[index_5d(rp,m*NsrcSC+msc,r,n*NsnkSC+nsc,t, NsrcSC*NsrcHex,B1Nrows,NsnkSC*NsnkHex,Lt)]); std::cout << "Error: different computed values for C_r or C_i!" << std::endl; exit(1); } diff --git a/benchmarks/tensors/baryon/tiramisu_make_fused_baryon_blocks_correlator/tiramisu_make_fused_baryon_blocks_correlator_wrapper.h b/benchmarks/tensors/baryon/tiramisu_make_fused_baryon_blocks_correlator/tiramisu_make_fused_baryon_blocks_correlator_wrapper.h index dccbc0a93..c6738d898 100644 --- a/benchmarks/tensors/baryon/tiramisu_make_fused_baryon_blocks_correlator/tiramisu_make_fused_baryon_blocks_correlator_wrapper.h +++ b/benchmarks/tensors/baryon/tiramisu_make_fused_baryon_blocks_correlator/tiramisu_make_fused_baryon_blocks_correlator_wrapper.h @@ -16,6 +16,8 @@ #define Vsnk P_Vsnk #define Nsrc P_Nsrc #define Nsnk P_Nsnk +#define NsrcSC P_B1Nweights +#define NsnkSC P_B1Nweights #define NsrcHex P_NsrcHex #define NsnkHex P_NsnkHex #define mq P_mq diff --git a/benchmarks/tensors/baryon/tiramisu_make_fused_baryon_blocks_correlator/tiramisu_make_fused_identical_baryon_blocks_correlator_generator.cpp b/benchmarks/tensors/baryon/tiramisu_make_fused_baryon_blocks_correlator/tiramisu_make_fused_identical_baryon_blocks_correlator_generator.cpp index 546fc9c1b..f339f0a87 100644 --- a/benchmarks/tensors/baryon/tiramisu_make_fused_baryon_blocks_correlator/tiramisu_make_fused_identical_baryon_blocks_correlator_generator.cpp +++ b/benchmarks/tensors/baryon/tiramisu_make_fused_baryon_blocks_correlator/tiramisu_make_fused_identical_baryon_blocks_correlator_generator.cpp @@ -7,7 +7,7 @@ using namespace tiramisu; #define VECTORIZED 1 -#define PARALLEL 1 +#define PARALLEL 0 void generate_function(std::string name) { @@ -26,6 +26,8 @@ void generate_function(std::string name) y("y", 0, Vsrc), m("m", 0, NsrcHex), n("n", 0, NsnkHex), + msc("msc", 0, NsrcSC), + nsc("nsc", 0, NsnkSC), iCprime("iCprime", 0, Nc), iSprime("iSprime", 0, Ns), jCprime("jCprime", 0, Nc), @@ -33,20 +35,20 @@ void generate_function(std::string name) kCprime("kCprime", 0, Nc), kSprime("kSprime", 0, Ns); - input C_r("C_r", {t, x_out, rp, m, r, n}, p_float64); - input C_i("C_i", {t, x_out, rp, m, r, n}, p_float64); + input C_r("C_r", {t, x_out, rp, msc, m, r, nsc, n}, p_float64); + input C_i("C_i", {t, x_out, rp, msc, m, r, nsc, n}, p_float64); input B1_prop_r("B1_prop_r", {t, iCprime, iSprime, jCprime, jSprime, x, y}, p_float64); input B1_prop_i("B1_prop_i", {t, iCprime, iSprime, jCprime, jSprime, x, y}, p_float64); input src_psi_B1_r("src_psi_B1_r", {y, m}, p_float64); input src_psi_B1_i("src_psi_B1_i", {y, m}, p_float64); input snk_psi_r("snk_psi_r", {x, n}, p_float64); input snk_psi_i("snk_psi_i", {x, n}, p_float64); - input src_color_weights("src_color_weights", {rp, wnum, q}, p_int32); - input src_spin_weights("src_spin_weights", {rp, wnum, q}, p_int32); - input src_weights("src_weights", {rp, wnum}, p_float64); - input snk_color_weights("snk_color_weights", {r, nperm, wnum, q}, p_int32); - input snk_spin_weights("snk_spin_weights", {r, nperm, wnum, q}, p_int32); - input snk_weights("snk_weights", {r, wnum}, p_float64); + input src_color_weights("src_color_weights", {rp, msc, wnum, q}, p_int32); + input src_spin_weights("src_spin_weights", {rp, msc, wnum, q}, p_int32); + input src_weights("src_weights", {rp, msc, wnum}, p_float64); + input snk_color_weights("snk_color_weights", {r, nsc, nperm, wnum, q}, p_int32); + input snk_spin_weights("snk_spin_weights", {r, nsc, nperm, wnum, q}, p_int32); + input snk_weights("snk_weights", {r, nsc, wnum}, p_float64); input src_spins("src_spins", {rp}, p_int32); input sigs("sigs", {nperm}, p_int32); @@ -58,16 +60,16 @@ void generate_function(std::string name) * Computing B1_Blocal_r1 */ - computation B1_Blocal_r1_r_init("B1_Blocal_r1_r_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B1_Blocal_r1_i_init("B1_Blocal_r1_i_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B1_Blocal_r1_r_init("B1_Blocal_r1_r_init", {t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B1_Blocal_r1_i_init("B1_Blocal_r1_i_init", {t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); complex_computation B1_Blocal_r1_init(&B1_Blocal_r1_r_init, &B1_Blocal_r1_i_init); - complex_expr B1_r1_prop_0 = B1_prop(t, iCprime, iSprime, src_color_weights(0, wnumBlock, 0), src_spin_weights(0, wnumBlock, 0), x_out*sites_per_rank+x_in, y); - complex_expr B1_r1_prop_2 = B1_prop(t, kCprime, kSprime, src_color_weights(0, wnumBlock, 2), src_spin_weights(0, wnumBlock, 2), x_out*sites_per_rank+x_in, y); - complex_expr B1_r1_prop_1 = B1_prop(t, jCprime, jSprime, src_color_weights(0, wnumBlock, 1), src_spin_weights(0, wnumBlock, 1), x_out*sites_per_rank+x_in, y); + complex_expr B1_r1_prop_0 = B1_prop(t, iCprime, iSprime, src_color_weights(0, msc, wnumBlock, 0), src_spin_weights(0, msc, wnumBlock, 0), x_out*sites_per_rank+x_in, y); + complex_expr B1_r1_prop_2 = B1_prop(t, kCprime, kSprime, src_color_weights(0, msc, wnumBlock, 2), src_spin_weights(0, msc, wnumBlock, 2), x_out*sites_per_rank+x_in, y); + complex_expr B1_r1_prop_1 = B1_prop(t, jCprime, jSprime, src_color_weights(0, msc, wnumBlock, 1), src_spin_weights(0, msc, wnumBlock, 1), x_out*sites_per_rank+x_in, y); - complex_expr B1_r1_diquark = ( B1_r1_prop_0 * B1_r1_prop_2 ) * src_weights(0, wnumBlock); + complex_expr B1_r1_diquark = ( B1_r1_prop_0 * B1_r1_prop_2 ) * src_weights(0, msc, wnumBlock); /*complex_expr B1_r1_prop_0s = B1_prop(2, t, iCprime, iSprime, src_color_weights(0, wnumBlock, 2), src_spin_weights(0, wnumBlock, 2), x_out*sites_per_rank+x_in, y); complex_expr B1_r1_prop_2s = B1_prop(0, t, kCprime, kSprime, src_color_weights(0, wnumBlock, 0), src_spin_weights(0, wnumBlock, 0), x_out*sites_per_rank+x_in, y); @@ -76,96 +78,96 @@ void generate_function(std::string name) complex_expr B1_r1_diquark = ( B1_r1_prop_0 * B1_r1_prop_2 - B1_r1_prop_0s * B1_r1_prop_2s ) * src_weights(0, wnumBlock); */ - computation B1_Blocal_r1_r_props_init("B1_Blocal_r1_r_props_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B1_Blocal_r1_i_props_init("B1_Blocal_r1_i_props_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B1_Blocal_r1_r_props_init("B1_Blocal_r1_r_props_init", {t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B1_Blocal_r1_i_props_init("B1_Blocal_r1_i_props_init", {t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B1_Blocal_r1_r_diquark("B1_Blocal_r1_r_diquark", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, B1_r1_diquark.get_real()); - computation B1_Blocal_r1_i_diquark("B1_Blocal_r1_i_diquark", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, B1_r1_diquark.get_imag()); + computation B1_Blocal_r1_r_diquark("B1_Blocal_r1_r_diquark", {t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, B1_r1_diquark.get_real()); + computation B1_Blocal_r1_i_diquark("B1_Blocal_r1_i_diquark", {t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, B1_r1_diquark.get_imag()); complex_computation B1_Blocal_r1_diquark(&B1_Blocal_r1_r_diquark, &B1_Blocal_r1_i_diquark); - complex_expr B1_r1_props = B1_r1_prop_1 * B1_Blocal_r1_diquark(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); + complex_expr B1_r1_props = B1_r1_prop_1 * B1_Blocal_r1_diquark(t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); - computation B1_Blocal_r1_r_props("B1_Blocal_r1_r_props", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Blocal_r1_r_props_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + B1_r1_props.get_real()); - computation B1_Blocal_r1_i_props("B1_Blocal_r1_i_props", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Blocal_r1_i_props_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + B1_r1_props.get_imag()); + computation B1_Blocal_r1_r_props("B1_Blocal_r1_r_props", {t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Blocal_r1_r_props_init(t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + B1_r1_props.get_real()); + computation B1_Blocal_r1_i_props("B1_Blocal_r1_i_props", {t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Blocal_r1_i_props_init(t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + B1_r1_props.get_imag()); complex_computation B1_Blocal_r1_props(&B1_Blocal_r1_r_props, &B1_Blocal_r1_i_props); - complex_expr B1_r1 = src_psi_B1 * B1_Blocal_r1_props(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr B1_r1 = src_psi_B1 * B1_Blocal_r1_props(t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - computation B1_Blocal_r1_r_update("B1_Blocal_r1_r_update", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Blocal_r1_r_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + B1_r1.get_real()); - computation B1_Blocal_r1_i_update("B1_Blocal_r1_i_update", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Blocal_r1_i_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + B1_r1.get_imag()); + computation B1_Blocal_r1_r_update("B1_Blocal_r1_r_update", {t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Blocal_r1_r_init(t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + B1_r1.get_real()); + computation B1_Blocal_r1_i_update("B1_Blocal_r1_i_update", {t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Blocal_r1_i_init(t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + B1_r1.get_imag()); /* * Computing B1_Blocal_r2 */ - computation B1_Blocal_r2_r_init("B1_Blocal_r2_r_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B1_Blocal_r2_i_init("B1_Blocal_r2_i_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B1_Blocal_r2_r_init("B1_Blocal_r2_r_init", {t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B1_Blocal_r2_i_init("B1_Blocal_r2_i_init", {t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); complex_computation B1_Blocal_r2_init(&B1_Blocal_r2_r_init, &B1_Blocal_r2_i_init); - complex_expr B1_r2_prop_0 = B1_prop(t, iCprime, iSprime, src_color_weights(1, wnumBlock, 0), src_spin_weights(1, wnumBlock, 0), x_out*sites_per_rank+x_in, y); - complex_expr B1_r2_prop_2 = B1_prop(t, kCprime, kSprime, src_color_weights(1, wnumBlock, 2), src_spin_weights(1, wnumBlock, 2), x_out*sites_per_rank+x_in, y); - complex_expr B1_r2_prop_0p = B1_prop(t, kCprime, kSprime, src_color_weights(1, wnumBlock, 0), src_spin_weights(1, wnumBlock, 0), x_out*sites_per_rank+x_in, y); - complex_expr B1_r2_prop_2p = B1_prop(t, iCprime, iSprime, src_color_weights(1, wnumBlock, 2), src_spin_weights(1, wnumBlock, 2), x_out*sites_per_rank+x_in, y); - complex_expr B1_r2_prop_1 = B1_prop(t, jCprime, jSprime, src_color_weights(1, wnumBlock, 1), src_spin_weights(1, wnumBlock, 1), x_out*sites_per_rank+x_in, y); + complex_expr B1_r2_prop_0 = B1_prop(t, iCprime, iSprime, src_color_weights(1, msc, wnumBlock, 0), src_spin_weights(1, msc, wnumBlock, 0), x_out*sites_per_rank+x_in, y); + complex_expr B1_r2_prop_2 = B1_prop(t, kCprime, kSprime, src_color_weights(1, msc, wnumBlock, 2), src_spin_weights(1, msc, wnumBlock, 2), x_out*sites_per_rank+x_in, y); + complex_expr B1_r2_prop_0p = B1_prop(t, kCprime, kSprime, src_color_weights(1, msc, wnumBlock, 0), src_spin_weights(1, msc, wnumBlock, 0), x_out*sites_per_rank+x_in, y); + complex_expr B1_r2_prop_2p = B1_prop(t, iCprime, iSprime, src_color_weights(1, msc, wnumBlock, 2), src_spin_weights(1, msc, wnumBlock, 2), x_out*sites_per_rank+x_in, y); + complex_expr B1_r2_prop_1 = B1_prop(t, jCprime, jSprime, src_color_weights(1, msc, wnumBlock, 1), src_spin_weights(1, msc, wnumBlock, 1), x_out*sites_per_rank+x_in, y); - complex_expr B1_r2_diquark = ( B1_r2_prop_0 * B1_r2_prop_2 ) * src_weights(1, wnumBlock); + complex_expr B1_r2_diquark = ( B1_r2_prop_0 * B1_r2_prop_2 ) * src_weights(1, msc, wnumBlock); - computation B1_Blocal_r2_r_props_init("B1_Blocal_r2_r_props_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B1_Blocal_r2_i_props_init("B1_Blocal_r2_i_props_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B1_Blocal_r2_r_props_init("B1_Blocal_r2_r_props_init", {t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B1_Blocal_r2_i_props_init("B1_Blocal_r2_i_props_init", {t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B1_Blocal_r2_r_diquark("B1_Blocal_r2_r_diquark", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, B1_r2_diquark.get_real()); - computation B1_Blocal_r2_i_diquark("B1_Blocal_r2_i_diquark", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, B1_r2_diquark.get_imag()); + computation B1_Blocal_r2_r_diquark("B1_Blocal_r2_r_diquark", {t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, B1_r2_diquark.get_real()); + computation B1_Blocal_r2_i_diquark("B1_Blocal_r2_i_diquark", {t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, B1_r2_diquark.get_imag()); complex_computation B1_Blocal_r2_diquark(&B1_Blocal_r2_r_diquark, &B1_Blocal_r2_i_diquark); - complex_expr B1_r2_props = B1_r2_prop_1 * B1_Blocal_r2_diquark(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); + complex_expr B1_r2_props = B1_r2_prop_1 * B1_Blocal_r2_diquark(t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); - computation B1_Blocal_r2_r_props("B1_Blocal_r2_r_props", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Blocal_r2_r_props_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + B1_r2_props.get_real()); - computation B1_Blocal_r2_i_props("B1_Blocal_r2_i_props", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Blocal_r2_i_props_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + B1_r2_props.get_imag()); + computation B1_Blocal_r2_r_props("B1_Blocal_r2_r_props", {t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Blocal_r2_r_props_init(t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + B1_r2_props.get_real()); + computation B1_Blocal_r2_i_props("B1_Blocal_r2_i_props", {t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Blocal_r2_i_props_init(t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + B1_r2_props.get_imag()); complex_computation B1_Blocal_r2_props(&B1_Blocal_r2_r_props, &B1_Blocal_r2_i_props); - complex_expr B1_r2 = src_psi_B1 * B1_Blocal_r2_props(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr B1_r2 = src_psi_B1 * B1_Blocal_r2_props(t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - computation B1_Blocal_r2_r_update("B1_Blocal_r2_r_update", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Blocal_r2_r_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + B1_r2.get_real()); - computation B1_Blocal_r2_i_update("B1_Blocal_r2_i_update", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Blocal_r2_i_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + B1_r2.get_imag()); + computation B1_Blocal_r2_r_update("B1_Blocal_r2_r_update", {t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Blocal_r2_r_init(t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + B1_r2.get_real()); + computation B1_Blocal_r2_i_update("B1_Blocal_r2_i_update", {t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Blocal_r2_i_init(t, x_out, x_in, msc, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + B1_r2.get_imag()); /* Correlator */ - computation C_init_r("C_init_r", {t, x_out, rp, m, r, n}, expr((double) 0)); - computation C_init_i("C_init_i", {t, x_out, rp, m, r, n}, expr((double) 0)); + computation C_init_r("C_init_r", {t, x_out, msc, rp, m, r, nsc, n}, expr((double) 0)); + computation C_init_i("C_init_i", {t, x_out, msc, rp, m, r, nsc, n}, expr((double) 0)); - computation C_prop_init_r("C_prop_init_r", {t, x_out, x_in, rp, m, r}, expr((double) 0)); - computation C_prop_init_i("C_prop_init_i", {t, x_out, x_in, rp, m, r}, expr((double) 0)); + computation C_prop_init_r("C_prop_init_r", {t, x_out, x_in, msc, rp, m, r, nsc}, expr((double) 0)); + computation C_prop_init_i("C_prop_init_i", {t, x_out, x_in, msc, rp, m, r, nsc}, expr((double) 0)); int b=0; /* r1, b = 0 */ - complex_computation new_term_0_r1_b1("new_term_0_r1_b1", {t, x_out, x_in, rp, m, r, nperm, wnum}, B1_Blocal_r1_init(t, x_out, x_in, snk_color_weights(r, nperm, wnum, 0), snk_spin_weights(r, nperm, wnum, 0), snk_color_weights(r, nperm, wnum, 2), snk_spin_weights(r, nperm, wnum, 2), snk_color_weights(r, nperm, wnum, 1), snk_spin_weights(r, nperm, wnum, 1), m)); + complex_computation new_term_0_r1_b1("new_term_0_r1_b1", {t, x_out, x_in, msc, rp, m, r, nsc, nperm, wnum}, B1_Blocal_r1_init(t, x_out, x_in, msc, snk_color_weights(r, nsc, nperm, wnum, 0), snk_spin_weights(r, nsc, nperm, wnum, 0), snk_color_weights(r, nsc, nperm, wnum, 2), snk_spin_weights(r, nsc, nperm, wnum, 2), snk_color_weights(r, nsc, nperm, wnum, 1), snk_spin_weights(r, nsc, nperm, wnum, 1), m)); new_term_0_r1_b1.add_predicate(src_spins(rp) == 1); /* r2, b = 0 */ - complex_computation new_term_0_r2_b1("new_term_0_r2_b1", {t, x_out, x_in, rp, m, r, nperm, wnum}, B1_Blocal_r2_init(t, x_out, x_in, snk_color_weights(r, nperm, wnum, 0), snk_spin_weights(r, nperm, wnum, 0), snk_color_weights(r, nperm, wnum, 2), snk_spin_weights(r, nperm, wnum, 2), snk_color_weights(r, nperm, wnum, 1), snk_spin_weights(r, nperm, wnum, 1), m)); + complex_computation new_term_0_r2_b1("new_term_0_r2_b1", {t, x_out, x_in, msc, rp, m, r, nsc, nperm, wnum}, B1_Blocal_r2_init(t, x_out, x_in, msc, snk_color_weights(r, nsc, nperm, wnum, 0), snk_spin_weights(r, nsc, nperm, wnum, 0), snk_color_weights(r, nsc, nperm, wnum, 2), snk_spin_weights(r, nsc, nperm, wnum, 2), snk_color_weights(r, nsc, nperm, wnum, 1), snk_spin_weights(r, nsc, nperm, wnum, 1), m)); new_term_0_r2_b1.add_predicate(src_spins(rp) == 2); - complex_expr prefactor(cast(p_float64, snk_weights(r, wnum))*cast(p_float64, sigs(nperm)), 0.0); + complex_expr prefactor(cast(p_float64, snk_weights(r, nsc, wnum))*cast(p_float64, sigs(nperm)), 0.0); - complex_expr term_res_b1 = new_term_0_r1_b1(t, x_out, x_in, rp, m, r, nperm, wnum); + complex_expr term_res_b1 = new_term_0_r1_b1(t, x_out, x_in, msc, rp, m, r, nsc, nperm, wnum); complex_expr snk_psi(snk_psi_r(x_out*sites_per_rank+x_in, n), snk_psi_i(x_out*sites_per_rank+x_in, n)); complex_expr term_res = prefactor * term_res_b1; - computation C_prop_update_r("C_prop_update_r", {t, x_out, x_in, rp, m, r, nperm, wnum}, C_prop_init_r(t, x_out, x_in, rp, m, r) + term_res.get_real()); - computation C_prop_update_i("C_prop_update_i", {t, x_out, x_in, rp, m, r, nperm, wnum}, C_prop_init_i(t, x_out, x_in, rp, m, r) + term_res.get_imag()); + computation C_prop_update_r("C_prop_update_r", {t, x_out, x_in, msc, rp, m, r, nsc, nperm, wnum}, C_prop_init_r(t, x_out, x_in, msc, rp, m, r, nsc) + term_res.get_real()); + computation C_prop_update_i("C_prop_update_i", {t, x_out, x_in, msc, rp, m, r, nsc, nperm, wnum}, C_prop_init_i(t, x_out, x_in, msc, rp, m, r, nsc) + term_res.get_imag()); complex_computation C_prop_update(&C_prop_update_r, &C_prop_update_i); - complex_expr term = C_prop_update(t, x_out, x_in, rp, m, r, B1Nperms-1, Nw-1) * snk_psi; + complex_expr term = C_prop_update(t, x_out, x_in, msc, rp, m, r, nsc, B1Nperms-1, Nw-1) * snk_psi; - computation C_update_r("C_update_r", {t, x_out, x_in, rp, m, r, n}, C_init_r(t, x_out, rp, m, r, n) + term.get_real()); - computation C_update_i("C_update_i", {t, x_out, x_in, rp, m, r, n}, C_init_i(t, x_out, rp, m, r, n) + term.get_imag()); + computation C_update_r("C_update_r", {t, x_out, x_in, msc, rp, m, r, nsc, n}, C_init_r(t, x_out, msc, rp, m, r, nsc, n) + term.get_real()); + computation C_update_i("C_update_i", {t, x_out, x_in, msc, rp, m, r, nsc, n}, C_init_i(t, x_out, msc, rp, m, r, nsc, n) + term.get_imag()); // ------------------------------------------------------- // Layer II @@ -179,7 +181,7 @@ void generate_function(std::string name) handle = &(handle ->then(B1_Blocal_r1_r_init, t) .then(B1_Blocal_r1_i_init, jSprime) - .then(B1_Blocal_r1_r_props_init, x_in) + .then(B1_Blocal_r1_r_props_init, msc) .then(B1_Blocal_r1_i_props_init, jSprime) .then(B1_Blocal_r1_r_diquark, y) .then(B1_Blocal_r1_i_diquark, wnumBlock) @@ -187,9 +189,9 @@ void generate_function(std::string name) .then(B1_Blocal_r1_i_props, jSprime) .then(B1_Blocal_r1_r_update, y) .then(B1_Blocal_r1_i_update, m) - .then(B1_Blocal_r2_r_init, x_in) + .then(B1_Blocal_r2_r_init, msc) .then(B1_Blocal_r2_i_init, jSprime) - .then(B1_Blocal_r2_r_props_init, x_in) + .then(B1_Blocal_r2_r_props_init, msc) .then(B1_Blocal_r2_i_props_init, jSprime) .then(B1_Blocal_r2_r_diquark, y) .then(B1_Blocal_r2_i_diquark, wnumBlock) @@ -199,15 +201,15 @@ void generate_function(std::string name) .then(B1_Blocal_r2_i_update, m)); handle = &(handle - ->then(C_prop_init_r, x_in) - .then(C_prop_init_i, r) - .then( *(new_term_0_r1_b1.get_real()), r) + ->then(C_prop_init_r, msc) + .then(C_prop_init_i, nsc) + .then( *(new_term_0_r1_b1.get_real()), nsc) .then( *(new_term_0_r1_b1.get_imag()), wnum) .then( *(new_term_0_r2_b1.get_real()), wnum) .then( *(new_term_0_r2_b1.get_imag()), wnum) .then(C_prop_update_r, wnum) .then(C_prop_update_i, wnum) - .then(C_update_r, r) + .then(C_update_r, nsc) .then(C_update_i, n)); #if VECTORIZED @@ -265,8 +267,8 @@ void generate_function(std::string name) /* Correlator */ - buffer buf_C_r("buf_C_r", {Lt, Vsnk/sites_per_rank, B1Nrows, NsrcHex, B1Nrows, NsnkHex}, p_float64, a_input); - buffer buf_C_i("buf_C_i", {Lt, Vsnk/sites_per_rank, B1Nrows, NsrcHex, B1Nrows, NsnkHex}, p_float64, a_input); + buffer buf_C_r("buf_C_r", {Lt, Vsnk/sites_per_rank, B1Nrows, NsrcSC, NsrcHex, B1Nrows, NsnkSC, NsnkHex}, p_float64, a_input); + buffer buf_C_i("buf_C_i", {Lt, Vsnk/sites_per_rank, B1Nrows, NsrcSC, NsrcHex, B1Nrows, NsnkSC, NsnkHex}, p_float64, a_input); C_r.store_in(&buf_C_r); C_i.store_in(&buf_C_i); @@ -289,10 +291,10 @@ void generate_function(std::string name) C_prop_update_r.store_in(&buf_C_prop_r, {0}); C_prop_update_i.store_in(&buf_C_prop_i, {0}); - C_init_r.store_in(&buf_C_r, {t, x_out, rp, m, r, n}); - C_init_i.store_in(&buf_C_i, {t, x_out, rp, m, r, n}); - C_update_r.store_in(&buf_C_r, {t, x_out, rp, m, r, n}); - C_update_i.store_in(&buf_C_i, {t, x_out, rp, m, r, n}); + C_init_r.store_in(&buf_C_r, {t, x_out, rp, msc, m, r, nsc, n}); + C_init_i.store_in(&buf_C_i, {t, x_out, rp, msc, m, r, nsc, n}); + C_update_r.store_in(&buf_C_r, {t, x_out, rp, msc, m, r, nsc, n}); + C_update_i.store_in(&buf_C_i, {t, x_out, rp, msc, m, r, nsc, n}); // ------------------------------------------------------- // Code Generation diff --git a/benchmarks/tensors/baryon/tiramisu_make_fused_baryon_blocks_correlator/tiramisu_make_fused_identical_baryon_blocks_correlator_wrapper.cpp b/benchmarks/tensors/baryon/tiramisu_make_fused_baryon_blocks_correlator/tiramisu_make_fused_identical_baryon_blocks_correlator_wrapper.cpp index 65afc41d1..1df73973c 100644 --- a/benchmarks/tensors/baryon/tiramisu_make_fused_baryon_blocks_correlator/tiramisu_make_fused_identical_baryon_blocks_correlator_wrapper.cpp +++ b/benchmarks/tensors/baryon/tiramisu_make_fused_baryon_blocks_correlator/tiramisu_make_fused_identical_baryon_blocks_correlator_wrapper.cpp @@ -13,10 +13,10 @@ extern "C" { #include "tiramisu_make_fused_identical_baryon_blocks_correlator_wrapper.h" #include "tiramisu_make_fused_baryon_blocks_correlator_ref.cpp" -#define RUN_REFERENCE 0 -#define RUN_CHECK 0 +#define RUN_REFERENCE 1 +#define RUN_CHECK 1 int nb_tests = 1; -int randommode = 0; +int randommode = 1; @@ -38,7 +38,7 @@ void tiramisu_make_identical_nucleon_2pt(double* C_re, double* snk_psi_B1_im) { - int q, t, iC, iS, jC, jS, y, x, x1, x2, m, n, k, wnum, b, rp, r; + int q, t, iC, iS, jC, jS, y, x, x1, x2, msc, nsc, m, n, k, wnum, b, rp, r; int iC1, iS1, iC2, iS2, jC1, jS1, jC2, jS2, kC1, kS1, kC2, kS2; int rank = 0; @@ -69,17 +69,17 @@ void tiramisu_make_identical_nucleon_2pt(double* C_re, } // Halide buffers - Halide::Buffer b_C_r(NsnkHex, B1Nrows, NsrcHex, B1Nrows, Vsnk/sites_per_rank, Lt, "C_r"); - Halide::Buffer b_C_i(NsnkHex, B1Nrows, NsrcHex, B1Nrows, Vsnk/sites_per_rank, Lt, "C_i"); + Halide::Buffer b_C_r(NsnkHex, NsnkSC, B1Nrows, NsrcHex, NsrcSC, B1Nrows, Vsnk/sites_per_rank, Lt, "C_r"); + Halide::Buffer b_C_i(NsnkHex, NsnkSC, B1Nrows, NsrcHex, NsrcSC, B1Nrows, Vsnk/sites_per_rank, Lt, "C_i"); - Halide::Buffer b_src_color_weights(Nq, Nw, B1Nrows, "src_color_weights"); - Halide::Buffer b_src_spin_weights(Nq, Nw, B1Nrows, "src_spin_weights"); - Halide::Buffer b_src_weights(Nw, B1Nrows, "src_weights"); + Halide::Buffer b_src_color_weights(Nq, Nw, NsrcSC, B1Nrows, "src_color_weights"); + Halide::Buffer b_src_spin_weights(Nq, Nw, NsrcSC, B1Nrows, "src_spin_weights"); + Halide::Buffer b_src_weights(Nw, NsrcSC, B1Nrows, "src_weights"); Halide::Buffer b_src_spins(B1Nrows, "src_spins"); - Halide::Buffer b_snk_color_weights(Nq, Nw, B1Nperms, B1Nrows, "snk_color_weights"); - Halide::Buffer b_snk_spin_weights(Nq, Nw, B1Nperms, B1Nrows, "snk_spin_weights"); - Halide::Buffer b_snk_weights(Nw, B1Nrows, "snk_weights"); + Halide::Buffer b_snk_color_weights(Nq, Nw, B1Nperms, NsnkSC, B1Nrows, "snk_color_weights"); + Halide::Buffer b_snk_spin_weights(Nq, Nw, B1Nperms, NsnkSC, B1Nrows, "snk_spin_weights"); + Halide::Buffer b_snk_weights(Nw, NsnkSC, B1Nrows, "snk_weights"); // prop Halide::Buffer b_B1_prop_r((double *)B1_prop_re, {Vsrc, Vsnk, Ns, Nc, Ns, Nc, Lt}); @@ -98,22 +98,23 @@ void tiramisu_make_identical_nucleon_2pt(double* C_re, // Weights - int* snk_color_weights_r1 = (int *) malloc(Nw * Nq * sizeof (int)); - int* snk_color_weights_r2 = (int *) malloc(Nw * Nq * sizeof (int)); - int* snk_spin_weights_r1 = (int *) malloc(Nw * Nq * sizeof (int)); - int* snk_spin_weights_r2 = (int *) malloc(Nw * Nq * sizeof (int)); + int* snk_color_weights_r1 = (int *) malloc(Nw * NsnkSC * Nq * sizeof (int)); + int* snk_color_weights_r2 = (int *) malloc(Nw * NsnkSC * Nq * sizeof (int)); + int* snk_spin_weights_r1 = (int *) malloc(Nw * NsnkSC * Nq * sizeof (int)); + int* snk_spin_weights_r2 = (int *) malloc(Nw * NsnkSC * Nq * sizeof (int)); + for (int nsc=0; nsc> duration_vector_1; std::vector> duration_vector_2; - int q, t, iC, iS, jC, jS, y, x, x1, x2, m, n, k, wnum, rp, r; + int q, t, iC, iS, jC, jS, y, x, x1, x2, msc, nsc, m, n, k, wnum, rp, r; int iC1, iS1, iC2, iS2, jC1, jS1, jC2, jS2, kC1, kS1, kC2, kS2; // Initialization @@ -354,48 +366,54 @@ int main(int, char **) static int src_spin_weights_r2_P[Nw][Nq] = { {0,1,1}, {0,1,1}, {0,1,1}, {0,1,1}, {0,1,1}, {0,1,1}, {1,0,1}, {1,0,1}, {1,0,1}, {1,0,1}, {1,0,1}, {1,0,1} }; static double src_weights_r2_P[Nw] = {-1/ sqrt(2), 1/sqrt(2), 1/sqrt(2), -1/sqrt(2), 1/sqrt(2), -1/sqrt(2), 1/ sqrt(2), -1/sqrt(2), -1/sqrt(2), 1/sqrt(2), -1/sqrt(2), 1/sqrt(2)}; - int* src_color_weights_r1 = (int *) malloc(Nw * Nq * sizeof (int)); - int* src_color_weights_r2 = (int *) malloc(Nw * Nq * sizeof (int)); - int* src_spin_weights_r1 = (int *) malloc(Nw * Nq * sizeof (int)); - int* src_spin_weights_r2 = (int *) malloc(Nw * Nq * sizeof (int)); - double src_weights_r1[Nw]; - double src_weights_r2[Nw]; + int* src_color_weights_r1 = (int *) malloc(NsrcSC * Nw * Nq * sizeof (int)); + int* src_color_weights_r2 = (int *) malloc(NsrcSC * Nw * Nq * sizeof (int)); + int* src_spin_weights_r1 = (int *) malloc(NsrcSC * Nw * Nq * sizeof (int)); + int* src_spin_weights_r2 = (int *) malloc(NsrcSC * Nw * Nq * sizeof (int)); + double* src_weights_r1 = (double *) malloc(NsrcSC * Nw * sizeof (double)); + double* src_weights_r2 = (double *) malloc(NsrcSC * Nw * sizeof (double)); + for (msc = 0; msc < NsrcSC; msc++) for (wnum = 0; wnum < Nw; wnum++) { for (q = 0; q < Nq; q++) { - src_color_weights_r1[index_2d(wnum,q ,Nq)] = src_color_weights_r1_P[wnum][q]; - src_color_weights_r2[index_2d(wnum,q ,Nq)] = src_color_weights_r2_P[wnum][q]; - src_spin_weights_r1[index_2d(wnum,q ,Nq)] = src_spin_weights_r1_P[wnum][q]; - src_spin_weights_r2[index_2d(wnum,q ,Nq)] = src_spin_weights_r2_P[wnum][q]; + src_color_weights_r1[index_3d(msc,wnum,q ,Nw,Nq)] = src_color_weights_r1_P[wnum][q]; + src_color_weights_r2[index_3d(msc,wnum,q ,Nw,Nq)] = src_color_weights_r2_P[wnum][q]; + src_spin_weights_r1[index_3d(msc,wnum,q ,Nw,Nq)] = src_spin_weights_r1_P[wnum][q]; + src_spin_weights_r2[index_3d(msc,wnum,q ,Nw,Nq)] = src_spin_weights_r2_P[wnum][q]; } - src_weights_r1[wnum] = src_weights_r1_P[wnum]; - src_weights_r2[wnum] = src_weights_r2_P[wnum]; + src_weights_r1[index_2d(msc,wnum ,Nw)] = src_weights_r1_P[wnum]; + src_weights_r2[index_2d(msc,wnum ,Nw)] = src_weights_r2_P[wnum]; } int perms_array[2][3] = { {1,2,3}, {3,2,1} }; int sigs_array[2] = {1,-1}; + //int perms_array[1][3] = { {1,2,3} }; + //int sigs_array[1] = {1}; int* perms = (int *) malloc(B1Nperms * Nq * sizeof (int)); int sigs[B1Nperms]; - int permnum = 0; for (int i = 0; i < B1Nperms; i++) { for (int q = 0; q < Nq; q++) { - perms[index_2d(permnum,q ,Nq)] = perms_array[i][q]; + perms[index_2d(i,q ,Nq)] = perms_array[i][q]; } - sigs[permnum] = sigs_array[i]; - permnum += 1; + sigs[i] = sigs_array[i]; } // Correlators double* C_re = (double *) malloc(B1Nrows * B1Nrows * (NsrcHex) * (NsnkHex) * Lt * sizeof (double)); double* C_im = (double *) malloc(B1Nrows * B1Nrows * (NsrcHex) * (NsnkHex) * Lt * sizeof (double)); - double* t_C_re = (double *) malloc(B1Nrows * B1Nrows * (NsrcHex) * (NsnkHex) * Lt * sizeof (double)); - double* t_C_im = (double *) malloc(B1Nrows * B1Nrows * (NsrcHex) * (NsnkHex) * Lt * sizeof (double)); + double* t_C_re = (double *) malloc(B1Nrows * B1Nrows * (NsrcSC*NsrcHex) * (NsnkSC*NsnkHex) * Lt * sizeof (double)); + double* t_C_im = (double *) malloc(B1Nrows * B1Nrows * (NsrcSC*NsrcHex) * (NsnkSC*NsnkHex) * Lt * sizeof (double)); for (rp=0; rp= 0.01*Vsnk*Vsnk) || - (std::abs(C_im[index_5d(rp,m,r,n,t, NsrcHex,B1Nrows,NsnkHex,Lt)] - t_C_im[index_5d(rp,m,r,n,t, NsrcHex,B1Nrows,NsnkHex,Lt)]) >= 0.01*Vsnk*Vsnk)) + if ((std::abs(C_re[index_5d(rp,m,r,n,t, NsrcHex,B1Nrows,NsnkHex,Lt)] - t_C_re[index_5d(rp,m*NsrcSC+msc,r,n*NsrcSC+nsc,t, NsrcSC*NsrcHex,B1Nrows,NsnkSC*NsnkHex,Lt)]) >= 0.00001*Vsnk*Vsnk) || + (std::abs(C_im[index_5d(rp,m,r,n,t, NsrcHex,B1Nrows,NsnkHex,Lt)] - t_C_im[index_5d(rp,m*NsrcSC+msc,r,n*NsnkSC+nsc,t, NsrcSC*NsrcHex,B1Nrows,NsnkSC*NsnkHex,Lt)]) >= 0.00001*Vsnk*Vsnk)) { - printf("rp=%d, m=%d, n=%d, t=%d: %4.1f + I (%4.1f) vs %4.1f + I (%4.1f) \n", rp, m, n, t, C_re[index_5d(rp,m,r,n,t, NsrcHex,B1Nrows,NsnkHex,Lt)], C_im[index_5d(rp,m,r,n,t, NsrcHex,B1Nrows,NsnkHex,Lt)], t_C_re[index_5d(rp,m,r,n,t, NsrcHex,B1Nrows,NsnkHex,Lt)], t_C_im[index_5d(rp,m,r,n,t, NsrcHex,B1Nrows,NsnkHex,Lt)]); + printf("rp=%d, msc=%d, m=%d, nsc=%d, n=%d, t=%d: %4.1f + I (%4.1f) vs %4.1f + I (%4.1f) \n", rp, msc, m, nsc, n, t, C_re[index_5d(rp,m,r,n,t, NsrcHex,B1Nrows,NsnkHex,Lt)], C_im[index_5d(rp,m,r,n,t, NsrcHex,B1Nrows,NsnkHex,Lt)], t_C_re[index_5d(rp,m*NsrcSC+msc,r,n*NsnkSC+nsc,t, NsrcSC*NsrcHex,B1Nrows,NsnkSC*NsnkHex,Lt)], t_C_im[index_5d(rp,m*NsrcSC+msc,r,n*NsnkSC+nsc,t, NsrcSC*NsrcHex,B1Nrows,NsnkSC*NsnkHex,Lt)]); std::cout << "Error: different computed values for C_r or C_i!" << std::endl; exit(1); } diff --git a/benchmarks/tensors/baryon/tiramisu_make_fused_baryon_blocks_correlator/tiramisu_make_fused_identical_baryon_blocks_correlator_wrapper.h b/benchmarks/tensors/baryon/tiramisu_make_fused_baryon_blocks_correlator/tiramisu_make_fused_identical_baryon_blocks_correlator_wrapper.h index fdd848a51..df613f1e0 100644 --- a/benchmarks/tensors/baryon/tiramisu_make_fused_baryon_blocks_correlator/tiramisu_make_fused_identical_baryon_blocks_correlator_wrapper.h +++ b/benchmarks/tensors/baryon/tiramisu_make_fused_baryon_blocks_correlator/tiramisu_make_fused_identical_baryon_blocks_correlator_wrapper.h @@ -16,6 +16,8 @@ #define Vsnk P_Vsnk #define Nsrc P_Nsrc #define Nsnk P_Nsnk +#define NsrcSC P_B1Nweights +#define NsnkSC P_B1Nweights #define NsrcHex P_NsrcHex #define NsnkHex P_NsnkHex #define mq P_mq @@ -30,7 +32,7 @@ ////////////////////////////////////////////////////////////////////////// // Define these values for each new test -#define TEST_NAME_STR "tiramisu_make_fused_identical_baryon_blocks_correaltor" +#define TEST_NAME_STR "tiramisu_make_fused_identical_baryon_blocks_correlator" #include diff --git a/benchmarks/tensors/dibaryon/tiramisu_make_fused_dibaryon_blocks_correlator/tiramisu_make_fused_dibaryon_blocks_correlator_generator.cpp b/benchmarks/tensors/dibaryon/tiramisu_make_fused_dibaryon_blocks_correlator/tiramisu_make_fused_dibaryon_blocks_correlator_generator.cpp index 0917c829f..58c9f82ab 100644 --- a/benchmarks/tensors/dibaryon/tiramisu_make_fused_dibaryon_blocks_correlator/tiramisu_make_fused_dibaryon_blocks_correlator_generator.cpp +++ b/benchmarks/tensors/dibaryon/tiramisu_make_fused_dibaryon_blocks_correlator/tiramisu_make_fused_dibaryon_blocks_correlator_generator.cpp @@ -14,8 +14,8 @@ void generate_function(std::string name) tiramisu::init(name); int b; - int NsrcTot = Nsrc+NsrcHex; - int NsnkTot = Nsnk+NsnkHex; + int NsrcTot = Nsrc*B1NsrcSC + NsrcHex*B2NsrcSC; + int NsnkTot = Nsnk*B1NsnkSC + NsnkHex*B2NsnkSC; var nperm("nperm", 0, Nperms), r("r", 0, B2Nrows), rp("rp", 0, B2Nrows), @@ -26,6 +26,7 @@ void generate_function(std::string name) wnumHex("wnumHex", 0, Nw2Hex), wnumHexHex("wnumHexHex", 0, Nw2Hex), wnumBlock("wnumBlock", 0, Nw), + tri("tri", 0, Nq), t("t", 0, Lt), x("x", 0, Vsnk), x_out("x_out", 0, Vsnk/sites_per_rank), @@ -38,11 +39,14 @@ void generate_function(std::string name) n("n", 0, Nsnk), ne("ne", 0, NEntangled), nue("nue", 0, Nsnk-NEntangled), + msc1("msc1", 0, B1NsrcSC), + nsc1("nsc1", 0, B1NsnkSC), + mscH("mscH", 0, B2NsrcSC), + nscH("nscH", 0, B2NsnkSC), mH("mH", 0, NsrcHex), nH("nH", 0, NsnkHex), mpmH("mpmH", 0, NsrcTot), npnH("npnH", 0, NsnkTot), - tri("tri", 0, Nq), iCprime("iCprime", 0, Nc), iSprime("iSprime", 0, Ns), jCprime("jCprime", 0, Nc), @@ -50,14 +54,17 @@ void generate_function(std::string name) kCprime("kCprime", 0, Nc), kSprime("kSprime", 0, Ns); + // correlator inputs (holder for outputs) input C_r("C_r", {t, x_out, rp, mpmH, r, npnH}, p_float64); input C_i("C_i", {t, x_out, rp, mpmH, r, npnH}, p_float64); + // propagator inputs input B1_prop_r("B1_prop_r", {tri, t, iCprime, iSprime, jCprime, jSprime, x, y}, p_float64); input B1_prop_i("B1_prop_i", {tri, t, iCprime, iSprime, jCprime, jSprime, x, y}, p_float64); input B2_prop_r("B2_prop_r", {tri, t, iCprime, iSprime, jCprime, jSprime, x, y}, p_float64); input B2_prop_i("B2_prop_i", {tri, t, iCprime, iSprime, jCprime, jSprime, x, y}, p_float64); + // wavefunction inputs input src_psi_B1_r("src_psi_B1_r", {y, m}, p_float64); input src_psi_B1_i("src_psi_B1_i", {y, m}, p_float64); input src_psi_B2_r("src_psi_B2_r", {y, m}, p_float64); @@ -73,22 +80,28 @@ void generate_function(std::string name) // computation is local in x1, only rank=x_out components of sink wavefunction stored input snk_psi_r("snk_psi_r", {x_in, x2, ne}, p_float64); input snk_psi_i("snk_psi_i", {x_in, x2, ne}, p_float64); - //input snk_psi_r("snk_psi_r", {x, x2, ne}, p_float64); - //input snk_psi_i("snk_psi_i", {x, x2, ne}, p_float64); + // spin-color weight inputs input src_spins("src_spins", {rp, s, to}, p_int32); input src_spin_block_weights("src_spin_block_weights", {rp, s}, p_float64); - input sigs("sigs", {nperm}, p_int32); - input snk_b("snk_b", {nperm, q, to}, p_int32); - input src_color_weights("src_color_weights", {r, wnumBlock, q}, p_int32); - input src_spin_weights("src_spin_weights", {r, wnumBlock, q}, p_int32); - input src_weights("src_weights", {r, wnumBlock}, p_float64); - input snk_color_weights("snk_color_weights", {r, nperm, wnum, q, to}, p_int32); - input snk_spin_weights("snk_spin_weights", {r, nperm, wnum, q, to}, p_int32); - input snk_weights("snk_weights", {r, wnum}, p_float64); - input hex_snk_color_weights("hex_snk_color_weights", {r, nperm, wnumHex, q, to}, p_int32); - input hex_snk_spin_weights("hex_snk_spin_weights", {r, nperm, wnumHex, q, to}, p_int32); - input hex_snk_weights("hex_snk_weights", {r, wnumHex}, p_float64); + input sigs("sigs", {nperm, msc1, nsc1}, p_int32); + input hex_sigs("hex_sigs", {nperm, msc1}, p_int32); + input hex_hex_sigs("hex_hex_sigs", {nperm}, p_int32); + input snk_b("snk_b", {nperm, msc1, nsc1, q, to}, p_int32); + input src_color_weights("src_color_weights", {to, s, msc1, wnumBlock, q}, p_int32); + input src_spin_weights("src_spin_weights", {to, s, msc1, wnumBlock, q}, p_int32); + input src_weights("src_weights", {to, s, msc1, wnumBlock}, p_float64); + input snk_color_weights("snk_color_weights", {r, nperm, msc1, nsc1, wnum, q, to}, p_int32); + input snk_spin_weights("snk_spin_weights", {r, nperm, msc1, nsc1, wnum, q, to}, p_int32); + input snk_weights("snk_weights", {r, nsc1, wnum}, p_float64); + input hex_snk_color_weights("hex_snk_color_weights", {r, nperm, msc1, nscH, wnumHex, q, to}, p_int32); + input hex_snk_spin_weights("hex_snk_spin_weights", {r, nperm, msc1, nscH, wnumHex, q, to}, p_int32); + input hex_snk_weights("hex_snk_weights", {r, nscH, wnumHex}, p_float64); + input hex_src_color_weights("hex_src_color_weights", {r, nperm, nsc1, mscH, wnumHex, q, to}, p_int32); + input hex_src_spin_weights("hex_src_spin_weights", {r, nperm, nsc1, mscH, wnumHex, q, to}, p_int32); + input hex_src_weights("hex_src_weights", {r, mscH, wnumHex}, p_float64); + input hex_hex_snk_color_weights("hex_hex_snk_color_weights", {r, nperm, nscH, wnumHex, q, to}, p_int32); + input hex_hex_snk_spin_weights("hex_hex_snk_spin_weights", {r, nperm, nscH, wnumHex, q, to}, p_int32); complex_computation B1_prop(&B1_prop_r, &B1_prop_i); complex_computation B2_prop(&B2_prop_r, &B2_prop_i); @@ -117,781 +130,779 @@ void generate_function(std::string name) // Computing B1_Blocal_r1, B1_Bsecond_r1, B1_Bfirst_r1 - computation B1_Blocal_r1_r_init("B1_Blocal_r1_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B1_Blocal_r1_i_init("B1_Blocal_r1_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B1_Bfirst_r1_r_init("B1_Bfirst_r1_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B1_Bfirst_r1_i_init("B1_Bfirst_r1_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B1_Bsecond_r1_r_init("B1_Bsecond_r1_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B1_Bsecond_r1_i_init("B1_Bsecond_r1_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B1_Bthird_r1_r_init("B1_Bthird_r1_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B1_Bthird_r1_i_init("B1_Bthird_r1_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B1_Blocal_r1_r_init("B1_Blocal_r1_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B1_Blocal_r1_i_init("B1_Blocal_r1_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B1_Bfirst_r1_r_init("B1_Bfirst_r1_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B1_Bfirst_r1_i_init("B1_Bfirst_r1_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B1_Bsecond_r1_r_init("B1_Bsecond_r1_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B1_Bsecond_r1_i_init("B1_Bsecond_r1_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B1_Bthird_r1_r_init("B1_Bthird_r1_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B1_Bthird_r1_i_init("B1_Bthird_r1_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); complex_computation B1_Blocal_r1_init(&B1_Blocal_r1_r_init, &B1_Blocal_r1_i_init); complex_computation B1_Bfirst_r1_init(&B1_Bfirst_r1_r_init, &B1_Bfirst_r1_i_init); complex_computation B1_Bsecond_r1_init(&B1_Bsecond_r1_r_init, &B1_Bsecond_r1_i_init); complex_computation B1_Bthird_r1_init(&B1_Bthird_r1_r_init, &B1_Bthird_r1_i_init); - computation flip_B1_Blocal_r1_r_init("flip_B1_Blocal_r1_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B1_Blocal_r1_i_init("flip_B1_Blocal_r1_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B1_Bfirst_r1_r_init("flip_B1_Bfirst_r1_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B1_Bfirst_r1_i_init("flip_B1_Bfirst_r1_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B1_Bsecond_r1_r_init("flip_B1_Bsecond_r1_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B1_Bsecond_r1_i_init("flip_B1_Bsecond_r1_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B1_Bthird_r1_r_init("flip_B1_Bthird_r1_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B1_Bthird_r1_i_init("flip_B1_Bthird_r1_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B1_Blocal_r1_r_init("flip_B1_Blocal_r1_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B1_Blocal_r1_i_init("flip_B1_Blocal_r1_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B1_Bfirst_r1_r_init("flip_B1_Bfirst_r1_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B1_Bfirst_r1_i_init("flip_B1_Bfirst_r1_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B1_Bsecond_r1_r_init("flip_B1_Bsecond_r1_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B1_Bsecond_r1_i_init("flip_B1_Bsecond_r1_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B1_Bthird_r1_r_init("flip_B1_Bthird_r1_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B1_Bthird_r1_i_init("flip_B1_Bthird_r1_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); complex_computation flip_B1_Blocal_r1_init(&flip_B1_Blocal_r1_r_init, &flip_B1_Blocal_r1_i_init); complex_computation flip_B1_Bfirst_r1_init(&flip_B1_Bfirst_r1_r_init, &flip_B1_Bfirst_r1_i_init); complex_computation flip_B1_Bsecond_r1_init(&flip_B1_Bsecond_r1_r_init, &flip_B1_Bsecond_r1_i_init); complex_computation flip_B1_Bthird_r1_init(&flip_B1_Bthird_r1_r_init, &flip_B1_Bthird_r1_i_init); - complex_expr B1_r1_prop_0 = B1_prop(0, t, iCprime, iSprime, src_color_weights(0, wnumBlock, 0), src_spin_weights(0, wnumBlock, 0), x_out*sites_per_rank+x_in, y); - complex_expr B1_r1_prop_1 = B1_prop(1, t, jCprime, jSprime, src_color_weights(0, wnumBlock, 1), src_spin_weights(0, wnumBlock, 1), x_out*sites_per_rank+x_in, y); - complex_expr B1_r1_prop_2 = B1_prop(2, t, kCprime, kSprime, src_color_weights(0, wnumBlock, 2), src_spin_weights(0, wnumBlock, 2), x_out*sites_per_rank+x_in, y); - complex_expr first_B1_r1_prop_0 = B1_prop(0, t, iCprime, iSprime, src_color_weights(0, wnumBlock, 0), src_spin_weights(0, wnumBlock, 0), x2, y); - complex_expr second_B1_r1_prop_1 = B1_prop(1, t, jCprime, jSprime, src_color_weights(0, wnumBlock, 1), src_spin_weights(0, wnumBlock, 1), x2, y); - complex_expr third_B1_r1_prop_2 = B1_prop(2, t, kCprime, kSprime, src_color_weights(0, wnumBlock, 2), src_spin_weights(0, wnumBlock, 2), x2, y); - - complex_expr B1_r1_diquark = ( B1_r1_prop_0 * B1_r1_prop_2 ) * src_weights(0, wnumBlock); - complex_expr first_B1_r1_diquark = ( first_B1_r1_prop_0 * B1_r1_prop_2 ) * src_weights(0, wnumBlock); - complex_expr third_B1_r1_diquark = ( B1_r1_prop_0 * third_B1_r1_prop_2 ) * src_weights(0, wnumBlock); - - computation B1_Blocal_r1_r_props_init("B1_Blocal_r1_r_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B1_Blocal_r1_i_props_init("B1_Blocal_r1_i_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B1_Bfirst_r1_r_props_init("B1_Bfirst_r1_r_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B1_Bfirst_r1_i_props_init("B1_Bfirst_r1_i_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B1_Bsecond_r1_r_props_init("B1_Bsecond_r1_r_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B1_Bsecond_r1_i_props_init("B1_Bsecond_r1_i_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B1_Bthird_r1_r_props_init("B1_Bthird_r1_r_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B1_Bthird_r1_i_props_init("B1_Bthird_r1_i_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - - computation B1_Blocal_r1_r_diquark("B1_Blocal_r1_r_diquark", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, B1_r1_diquark.get_real()); - computation B1_Blocal_r1_i_diquark("B1_Blocal_r1_i_diquark", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, B1_r1_diquark.get_imag()); - computation B1_Bfirst_r1_r_diquark("B1_Bfirst_r1_r_diquark", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, first_B1_r1_diquark.get_real()); - computation B1_Bfirst_r1_i_diquark("B1_Bfirst_r1_i_diquark", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, first_B1_r1_diquark.get_imag()); - computation B1_Bthird_r1_r_diquark("B1_Bthird_r1_r_diquark", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, third_B1_r1_diquark.get_real()); - computation B1_Bthird_r1_i_diquark("B1_Bthird_r1_i_diquark", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, third_B1_r1_diquark.get_imag()); + complex_expr B1_r1_prop_0 = B1_prop(0, t, iCprime, iSprime, src_color_weights(0, 0, msc1, wnumBlock, 0), src_spin_weights(0, 0, msc1, wnumBlock, 0), x_out*sites_per_rank+x_in, y); + complex_expr B1_r1_prop_1 = B1_prop(1, t, jCprime, jSprime, src_color_weights(0, 0, msc1, wnumBlock, 1), src_spin_weights(0, 0, msc1, wnumBlock, 1), x_out*sites_per_rank+x_in, y); + complex_expr B1_r1_prop_2 = B1_prop(2, t, kCprime, kSprime, src_color_weights(0, 0, msc1, wnumBlock, 2), src_spin_weights(0, 0, msc1, wnumBlock, 2), x_out*sites_per_rank+x_in, y); + complex_expr first_B1_r1_prop_0 = B1_prop(0, t, iCprime, iSprime, src_color_weights(0, 0, msc1, wnumBlock, 0), src_spin_weights(0, 0, msc1, wnumBlock, 0), x2, y); + complex_expr second_B1_r1_prop_1 = B1_prop(1, t, jCprime, jSprime, src_color_weights(0, 0, msc1, wnumBlock, 1), src_spin_weights(0, 0, msc1, wnumBlock, 1), x2, y); + complex_expr third_B1_r1_prop_2 = B1_prop(2, t, kCprime, kSprime, src_color_weights(0, 0, msc1, wnumBlock, 2), src_spin_weights(0, 0, msc1, wnumBlock, 2), x2, y); + + complex_expr B1_r1_diquark = ( B1_r1_prop_0 * B1_r1_prop_2 ) * src_weights(0, 0, msc1, wnumBlock); + complex_expr first_B1_r1_diquark = ( first_B1_r1_prop_0 * B1_r1_prop_2 ) * src_weights(0, 0, msc1, wnumBlock); + complex_expr third_B1_r1_diquark = ( B1_r1_prop_0 * third_B1_r1_prop_2 ) * src_weights(0, 0, msc1, wnumBlock); + + computation B1_Blocal_r1_r_props_init("B1_Blocal_r1_r_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B1_Blocal_r1_i_props_init("B1_Blocal_r1_i_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B1_Bfirst_r1_r_props_init("B1_Bfirst_r1_r_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B1_Bfirst_r1_i_props_init("B1_Bfirst_r1_i_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B1_Bsecond_r1_r_props_init("B1_Bsecond_r1_r_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B1_Bsecond_r1_i_props_init("B1_Bsecond_r1_i_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B1_Bthird_r1_r_props_init("B1_Bthird_r1_r_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B1_Bthird_r1_i_props_init("B1_Bthird_r1_i_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + + computation B1_Blocal_r1_r_diquark("B1_Blocal_r1_r_diquark", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, B1_r1_diquark.get_real()); + computation B1_Blocal_r1_i_diquark("B1_Blocal_r1_i_diquark", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, B1_r1_diquark.get_imag()); + computation B1_Bfirst_r1_r_diquark("B1_Bfirst_r1_r_diquark", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, first_B1_r1_diquark.get_real()); + computation B1_Bfirst_r1_i_diquark("B1_Bfirst_r1_i_diquark", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, first_B1_r1_diquark.get_imag()); + computation B1_Bthird_r1_r_diquark("B1_Bthird_r1_r_diquark", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, third_B1_r1_diquark.get_real()); + computation B1_Bthird_r1_i_diquark("B1_Bthird_r1_i_diquark", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, third_B1_r1_diquark.get_imag()); complex_computation B1_Blocal_r1_diquark(&B1_Blocal_r1_r_diquark, &B1_Blocal_r1_i_diquark); complex_computation B1_Bfirst_r1_diquark(&B1_Bfirst_r1_r_diquark, &B1_Bfirst_r1_i_diquark); complex_computation B1_Bthird_r1_diquark(&B1_Bthird_r1_r_diquark, &B1_Bthird_r1_i_diquark); - complex_expr B1_r1_props = B1_r1_prop_1 * B1_Blocal_r1_diquark(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); - complex_expr first_B1_r1_props = B1_r1_prop_1 * B1_Bfirst_r1_diquark(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); - complex_expr second_B1_r1_props = second_B1_r1_prop_1 * B1_Blocal_r1_diquark(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); - complex_expr third_B1_r1_props = B1_r1_prop_1 * B1_Bthird_r1_diquark(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); + complex_expr B1_r1_props = B1_r1_prop_1 * B1_Blocal_r1_diquark(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); + complex_expr first_B1_r1_props = B1_r1_prop_1 * B1_Bfirst_r1_diquark(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); + complex_expr second_B1_r1_props = second_B1_r1_prop_1 * B1_Blocal_r1_diquark(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); + complex_expr third_B1_r1_props = B1_r1_prop_1 * B1_Bthird_r1_diquark(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); - computation B1_Blocal_r1_r_props("B1_Blocal_r1_r_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Blocal_r1_r_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + B1_r1_props.get_real()); - computation B1_Blocal_r1_i_props("B1_Blocal_r1_i_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Blocal_r1_i_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + B1_r1_props.get_imag()); - computation B1_Bfirst_r1_r_props("B1_Bfirst_r1_r_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Bfirst_r1_r_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + first_B1_r1_props.get_real()); - computation B1_Bfirst_r1_i_props("B1_Bfirst_r1_i_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Bfirst_r1_i_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + first_B1_r1_props.get_imag()); - computation B1_Bsecond_r1_r_props("B1_Bsecond_r1_r_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Bsecond_r1_r_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + second_B1_r1_props.get_real()); - computation B1_Bsecond_r1_i_props("B1_Bsecond_r1_i_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Bsecond_r1_i_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + second_B1_r1_props.get_imag()); - computation B1_Bthird_r1_r_props("B1_Bthird_r1_r_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Bthird_r1_r_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + third_B1_r1_props.get_real()); - computation B1_Bthird_r1_i_props("B1_Bthird_r1_i_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Bthird_r1_i_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + third_B1_r1_props.get_imag()); + computation B1_Blocal_r1_r_props("B1_Blocal_r1_r_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Blocal_r1_r_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + B1_r1_props.get_real()); + computation B1_Blocal_r1_i_props("B1_Blocal_r1_i_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Blocal_r1_i_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + B1_r1_props.get_imag()); + computation B1_Bfirst_r1_r_props("B1_Bfirst_r1_r_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Bfirst_r1_r_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + first_B1_r1_props.get_real()); + computation B1_Bfirst_r1_i_props("B1_Bfirst_r1_i_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Bfirst_r1_i_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + first_B1_r1_props.get_imag()); + computation B1_Bsecond_r1_r_props("B1_Bsecond_r1_r_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Bsecond_r1_r_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + second_B1_r1_props.get_real()); + computation B1_Bsecond_r1_i_props("B1_Bsecond_r1_i_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Bsecond_r1_i_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + second_B1_r1_props.get_imag()); + computation B1_Bthird_r1_r_props("B1_Bthird_r1_r_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Bthird_r1_r_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + third_B1_r1_props.get_real()); + computation B1_Bthird_r1_i_props("B1_Bthird_r1_i_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Bthird_r1_i_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + third_B1_r1_props.get_imag()); complex_computation B1_Blocal_r1_props(&B1_Blocal_r1_r_props, &B1_Blocal_r1_i_props); complex_computation B1_Bfirst_r1_props(&B1_Bfirst_r1_r_props, &B1_Bfirst_r1_i_props); complex_computation B1_Bsecond_r1_props(&B1_Bsecond_r1_r_props, &B1_Bsecond_r1_i_props); complex_computation B1_Bthird_r1_props(&B1_Bthird_r1_r_props, &B1_Bthird_r1_i_props); - complex_expr B1_r1 = src_psi_B1 * B1_Blocal_r1_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - complex_expr first_B1_r1 = src_psi_B1 * B1_Bfirst_r1_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - complex_expr second_B1_r1 = src_psi_B1 * B1_Bsecond_r1_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - complex_expr third_B1_r1 = src_psi_B1 * B1_Bthird_r1_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - - computation B1_Blocal_r1_r_update("B1_Blocal_r1_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Blocal_r1_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + B1_r1.get_real()); - computation B1_Blocal_r1_i_update("B1_Blocal_r1_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Blocal_r1_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + B1_r1.get_imag()); - computation B1_Bfirst_r1_r_update("B1_Bfirst_r1_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Bfirst_r1_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + first_B1_r1.get_real()); - computation B1_Bfirst_r1_i_update("B1_Bfirst_r1_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Bfirst_r1_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + first_B1_r1.get_imag()); - computation B1_Bsecond_r1_r_update("B1_Bsecond_r1_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Bsecond_r1_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + second_B1_r1.get_real()); - computation B1_Bsecond_r1_i_update("B1_Bsecond_r1_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Bsecond_r1_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + second_B1_r1.get_imag()); - computation B1_Bthird_r1_r_update("B1_Bthird_r1_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Bthird_r1_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + third_B1_r1.get_real()); - computation B1_Bthird_r1_i_update("B1_Bthird_r1_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Bthird_r1_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + third_B1_r1.get_imag()); - - complex_expr flip_B1_r1 = src_psi_B2 * B1_Blocal_r1_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - complex_expr flip_first_B1_r1 = src_psi_B2 * B1_Bfirst_r1_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - complex_expr flip_second_B1_r1 = src_psi_B2 * B1_Bsecond_r1_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - complex_expr flip_third_B1_r1 = src_psi_B2 * B1_Bthird_r1_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - - computation flip_B1_Blocal_r1_r_update("flip_B1_Blocal_r1_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Blocal_r1_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_B1_r1.get_real()); - computation flip_B1_Blocal_r1_i_update("flip_B1_Blocal_r1_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Blocal_r1_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_B1_r1.get_imag()); - computation flip_B1_Bfirst_r1_r_update("flip_B1_Bfirst_r1_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Bfirst_r1_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_first_B1_r1.get_real()); - computation flip_B1_Bfirst_r1_i_update("flip_B1_Bfirst_r1_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Bfirst_r1_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_first_B1_r1.get_imag()); - computation flip_B1_Bsecond_r1_r_update("flip_B1_Bsecond_r1_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Bsecond_r1_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_second_B1_r1.get_real()); - computation flip_B1_Bsecond_r1_i_update("flip_B1_Bsecond_r1_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Bsecond_r1_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_second_B1_r1.get_imag()); - computation flip_B1_Bthird_r1_r_update("flip_B1_Bthird_r1_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Bthird_r1_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_third_B1_r1.get_real()); - computation flip_B1_Bthird_r1_i_update("flip_B1_Bthird_r1_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Bthird_r1_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_third_B1_r1.get_imag()); + complex_expr B1_r1 = src_psi_B1 * B1_Blocal_r1_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr first_B1_r1 = src_psi_B1 * B1_Bfirst_r1_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr second_B1_r1 = src_psi_B1 * B1_Bsecond_r1_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr third_B1_r1 = src_psi_B1 * B1_Bthird_r1_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + + computation B1_Blocal_r1_r_update("B1_Blocal_r1_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Blocal_r1_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + B1_r1.get_real()); + computation B1_Blocal_r1_i_update("B1_Blocal_r1_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Blocal_r1_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + B1_r1.get_imag()); + computation B1_Bfirst_r1_r_update("B1_Bfirst_r1_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Bfirst_r1_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + first_B1_r1.get_real()); + computation B1_Bfirst_r1_i_update("B1_Bfirst_r1_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Bfirst_r1_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + first_B1_r1.get_imag()); + computation B1_Bsecond_r1_r_update("B1_Bsecond_r1_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Bsecond_r1_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + second_B1_r1.get_real()); + computation B1_Bsecond_r1_i_update("B1_Bsecond_r1_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Bsecond_r1_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + second_B1_r1.get_imag()); + computation B1_Bthird_r1_r_update("B1_Bthird_r1_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Bthird_r1_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + third_B1_r1.get_real()); + computation B1_Bthird_r1_i_update("B1_Bthird_r1_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Bthird_r1_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + third_B1_r1.get_imag()); + + complex_expr flip_B1_r1 = src_psi_B2 * B1_Blocal_r1_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr flip_first_B1_r1 = src_psi_B2 * B1_Bfirst_r1_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr flip_second_B1_r1 = src_psi_B2 * B1_Bsecond_r1_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr flip_third_B1_r1 = src_psi_B2 * B1_Bthird_r1_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + + computation flip_B1_Blocal_r1_r_update("flip_B1_Blocal_r1_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Blocal_r1_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_B1_r1.get_real()); + computation flip_B1_Blocal_r1_i_update("flip_B1_Blocal_r1_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Blocal_r1_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_B1_r1.get_imag()); + computation flip_B1_Bfirst_r1_r_update("flip_B1_Bfirst_r1_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Bfirst_r1_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_first_B1_r1.get_real()); + computation flip_B1_Bfirst_r1_i_update("flip_B1_Bfirst_r1_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Bfirst_r1_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_first_B1_r1.get_imag()); + computation flip_B1_Bsecond_r1_r_update("flip_B1_Bsecond_r1_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Bsecond_r1_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_second_B1_r1.get_real()); + computation flip_B1_Bsecond_r1_i_update("flip_B1_Bsecond_r1_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Bsecond_r1_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_second_B1_r1.get_imag()); + computation flip_B1_Bthird_r1_r_update("flip_B1_Bthird_r1_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Bthird_r1_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_third_B1_r1.get_real()); + computation flip_B1_Bthird_r1_i_update("flip_B1_Bthird_r1_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Bthird_r1_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_third_B1_r1.get_imag()); // Computing B1_Blocal_r2, B1_Bsecond_r2, B1_Bfirst_r2 - computation B1_Blocal_r2_r_init("B1_Blocal_r2_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B1_Blocal_r2_i_init("B1_Blocal_r2_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B1_Bfirst_r2_r_init("B1_Bfirst_r2_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B1_Bfirst_r2_i_init("B1_Bfirst_r2_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B1_Bsecond_r2_r_init("B1_Bsecond_r2_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B1_Bsecond_r2_i_init("B1_Bsecond_r2_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B1_Bthird_r2_r_init("B1_Bthird_r2_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B1_Bthird_r2_i_init("B1_Bthird_r2_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B1_Blocal_r2_r_init("B1_Blocal_r2_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B1_Blocal_r2_i_init("B1_Blocal_r2_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B1_Bfirst_r2_r_init("B1_Bfirst_r2_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B1_Bfirst_r2_i_init("B1_Bfirst_r2_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B1_Bsecond_r2_r_init("B1_Bsecond_r2_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B1_Bsecond_r2_i_init("B1_Bsecond_r2_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B1_Bthird_r2_r_init("B1_Bthird_r2_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B1_Bthird_r2_i_init("B1_Bthird_r2_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); complex_computation B1_Blocal_r2_init(&B1_Blocal_r2_r_init, &B1_Blocal_r2_i_init); complex_computation B1_Bfirst_r2_init(&B1_Bfirst_r2_r_init, &B1_Bfirst_r2_i_init); complex_computation B1_Bsecond_r2_init(&B1_Bsecond_r2_r_init, &B1_Bsecond_r2_i_init); complex_computation B1_Bthird_r2_init(&B1_Bthird_r2_r_init, &B1_Bthird_r2_i_init); - computation flip_B1_Blocal_r2_r_init("flip_B1_Blocal_r2_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B1_Blocal_r2_i_init("flip_B1_Blocal_r2_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B1_Bfirst_r2_r_init("flip_B1_Bfirst_r2_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B1_Bfirst_r2_i_init("flip_B1_Bfirst_r2_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B1_Bsecond_r2_r_init("flip_B1_Bsecond_r2_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B1_Bsecond_r2_i_init("flip_B1_Bsecond_r2_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B1_Bthird_r2_r_init("flip_B1_Bthird_r2_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B1_Bthird_r2_i_init("flip_B1_Bthird_r2_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B1_Blocal_r2_r_init("flip_B1_Blocal_r2_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B1_Blocal_r2_i_init("flip_B1_Blocal_r2_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B1_Bfirst_r2_r_init("flip_B1_Bfirst_r2_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B1_Bfirst_r2_i_init("flip_B1_Bfirst_r2_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B1_Bsecond_r2_r_init("flip_B1_Bsecond_r2_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B1_Bsecond_r2_i_init("flip_B1_Bsecond_r2_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B1_Bthird_r2_r_init("flip_B1_Bthird_r2_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B1_Bthird_r2_i_init("flip_B1_Bthird_r2_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); complex_computation flip_B1_Blocal_r2_init(&flip_B1_Blocal_r2_r_init, &flip_B1_Blocal_r2_i_init); complex_computation flip_B1_Bfirst_r2_init(&flip_B1_Bfirst_r2_r_init, &flip_B1_Bfirst_r2_i_init); complex_computation flip_B1_Bsecond_r2_init(&flip_B1_Bsecond_r2_r_init, &flip_B1_Bsecond_r2_i_init); complex_computation flip_B1_Bthird_r2_init(&flip_B1_Bthird_r2_r_init, &flip_B1_Bthird_r2_i_init); - complex_expr B1_r2_prop_0 = B1_prop(0, t, iCprime, iSprime, src_color_weights(1, wnumBlock, 0), src_spin_weights(1, wnumBlock, 0), x_out*sites_per_rank+x_in, y); - complex_expr B1_r2_prop_2 = B1_prop(2, t, kCprime, kSprime, src_color_weights(1, wnumBlock, 2), src_spin_weights(1, wnumBlock, 2), x_out*sites_per_rank+x_in, y); - complex_expr B1_r2_prop_1 = B1_prop(1, t, jCprime, jSprime, src_color_weights(1, wnumBlock, 1), src_spin_weights(1, wnumBlock, 1), x_out*sites_per_rank+x_in, y); - complex_expr first_B1_r2_prop_0 = B1_prop(0, t, iCprime, iSprime, src_color_weights(1, wnumBlock, 0), src_spin_weights(1, wnumBlock, 0), x2, y); - complex_expr second_B1_r2_prop_1 = B1_prop(1, t, jCprime, jSprime, src_color_weights(1, wnumBlock, 1), src_spin_weights(1, wnumBlock, 1), x2, y); - complex_expr third_B1_r2_prop_2 = B1_prop(2, t, kCprime, kSprime, src_color_weights(1, wnumBlock, 2), src_spin_weights(1, wnumBlock, 2), x2, y); - - complex_expr B1_r2_diquark = ( B1_r2_prop_0 * B1_r2_prop_2 ) * src_weights(1, wnumBlock); - complex_expr first_B1_r2_diquark = ( first_B1_r2_prop_0 * B1_r2_prop_2 ) * src_weights(1, wnumBlock); - complex_expr third_B1_r2_diquark = ( B1_r2_prop_0 * third_B1_r2_prop_2 ) * src_weights(1, wnumBlock); - - computation B1_Blocal_r2_r_props_init("B1_Blocal_r2_r_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B1_Blocal_r2_i_props_init("B1_Blocal_r2_i_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B1_Bfirst_r2_r_props_init("B1_Bfirst_r2_r_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B1_Bfirst_r2_i_props_init("B1_Bfirst_r2_i_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B1_Bsecond_r2_r_props_init("B1_Bsecond_r2_r_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B1_Bsecond_r2_i_props_init("B1_Bsecond_r2_i_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B1_Bthird_r2_r_props_init("B1_Bthird_r2_r_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B1_Bthird_r2_i_props_init("B1_Bthird_r2_i_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - - computation B1_Blocal_r2_r_diquark("B1_Blocal_r2_r_diquark", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, B1_r2_diquark.get_real()); - computation B1_Blocal_r2_i_diquark("B1_Blocal_r2_i_diquark", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, B1_r2_diquark.get_imag()); - computation B1_Bfirst_r2_r_diquark("B1_Bfirst_r2_r_diquark", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, first_B1_r2_diquark.get_real()); - computation B1_Bfirst_r2_i_diquark("B1_Bfirst_r2_i_diquark", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, first_B1_r2_diquark.get_imag()); - computation B1_Bthird_r2_r_diquark("B1_Bthird_r2_r_diquark", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, third_B1_r2_diquark.get_real()); - computation B1_Bthird_r2_i_diquark("B1_Bthird_r2_i_diquark", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, third_B1_r2_diquark.get_imag()); + complex_expr B1_r2_prop_0 = B1_prop(0, t, iCprime, iSprime, src_color_weights(0, 1, msc1, wnumBlock, 0), src_spin_weights(0, 1, msc1, wnumBlock, 0), x_out*sites_per_rank+x_in, y); + complex_expr B1_r2_prop_1 = B1_prop(1, t, jCprime, jSprime, src_color_weights(0, 1, msc1, wnumBlock, 1), src_spin_weights(0, 1, msc1, wnumBlock, 1), x_out*sites_per_rank+x_in, y); + complex_expr B1_r2_prop_2 = B1_prop(2, t, kCprime, kSprime, src_color_weights(0, 1, msc1, wnumBlock, 2), src_spin_weights(0, 1, msc1, wnumBlock, 2), x_out*sites_per_rank+x_in, y); + complex_expr first_B1_r2_prop_0 = B1_prop(0, t, iCprime, iSprime, src_color_weights(0, 1, msc1, wnumBlock, 0), src_spin_weights(0, 1, msc1, wnumBlock, 0), x2, y); + complex_expr second_B1_r2_prop_1 = B1_prop(1, t, jCprime, jSprime, src_color_weights(0, 1, msc1, wnumBlock, 1), src_spin_weights(0, 1, msc1, wnumBlock, 1), x2, y); + complex_expr third_B1_r2_prop_2 = B1_prop(2, t, kCprime, kSprime, src_color_weights(0, 1, msc1, wnumBlock, 2), src_spin_weights(0, 1, msc1, wnumBlock, 2), x2, y); + + complex_expr B1_r2_diquark = ( B1_r2_prop_0 * B1_r2_prop_2 ) * src_weights(0, 1, msc1, wnumBlock); + complex_expr first_B1_r2_diquark = ( first_B1_r2_prop_0 * B1_r2_prop_2 ) * src_weights(0, 1, msc1, wnumBlock); + complex_expr third_B1_r2_diquark = ( B1_r2_prop_0 * third_B1_r2_prop_2 ) * src_weights(0, 1, msc1, wnumBlock); + + computation B1_Blocal_r2_r_props_init("B1_Blocal_r2_r_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B1_Blocal_r2_i_props_init("B1_Blocal_r2_i_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B1_Bfirst_r2_r_props_init("B1_Bfirst_r2_r_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B1_Bfirst_r2_i_props_init("B1_Bfirst_r2_i_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B1_Bsecond_r2_r_props_init("B1_Bsecond_r2_r_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B1_Bsecond_r2_i_props_init("B1_Bsecond_r2_i_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B1_Bthird_r2_r_props_init("B1_Bthird_r2_r_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B1_Bthird_r2_i_props_init("B1_Bthird_r2_i_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + + computation B1_Blocal_r2_r_diquark("B1_Blocal_r2_r_diquark", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, B1_r2_diquark.get_real()); + computation B1_Blocal_r2_i_diquark("B1_Blocal_r2_i_diquark", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, B1_r2_diquark.get_imag()); + computation B1_Bfirst_r2_r_diquark("B1_Bfirst_r2_r_diquark", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, first_B1_r2_diquark.get_real()); + computation B1_Bfirst_r2_i_diquark("B1_Bfirst_r2_i_diquark", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, first_B1_r2_diquark.get_imag()); + computation B1_Bthird_r2_r_diquark("B1_Bthird_r2_r_diquark", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, third_B1_r2_diquark.get_real()); + computation B1_Bthird_r2_i_diquark("B1_Bthird_r2_i_diquark", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, third_B1_r2_diquark.get_imag()); complex_computation B1_Blocal_r2_diquark(&B1_Blocal_r2_r_diquark, &B1_Blocal_r2_i_diquark); complex_computation B1_Bfirst_r2_diquark(&B1_Bfirst_r2_r_diquark, &B1_Bfirst_r2_i_diquark); complex_computation B1_Bthird_r2_diquark(&B1_Bthird_r2_r_diquark, &B1_Bthird_r2_i_diquark); - complex_expr B1_r2_props = B1_r2_prop_1 * B1_Blocal_r2_diquark(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); - complex_expr first_B1_r2_props = B1_r2_prop_1 * B1_Bfirst_r2_diquark(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); - complex_expr second_B1_r2_props = second_B1_r2_prop_1 * B1_Blocal_r2_diquark(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); - complex_expr third_B1_r2_props = B1_r2_prop_1 * B1_Bthird_r2_diquark(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); + complex_expr B1_r2_props = B1_r2_prop_1 * B1_Blocal_r2_diquark(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); + complex_expr first_B1_r2_props = B1_r2_prop_1 * B1_Bfirst_r2_diquark(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); + complex_expr second_B1_r2_props = second_B1_r2_prop_1 * B1_Blocal_r2_diquark(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); + complex_expr third_B1_r2_props = B1_r2_prop_1 * B1_Bthird_r2_diquark(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); - computation B1_Blocal_r2_r_props("B1_Blocal_r2_r_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Blocal_r2_r_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + B1_r2_props.get_real()); - computation B1_Blocal_r2_i_props("B1_Blocal_r2_i_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Blocal_r2_i_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + B1_r2_props.get_imag()); - computation B1_Bfirst_r2_r_props("B1_Bfirst_r2_r_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Bfirst_r2_r_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + first_B1_r2_props.get_real()); - computation B1_Bfirst_r2_i_props("B1_Bfirst_r2_i_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Bfirst_r2_i_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + first_B1_r2_props.get_imag()); - computation B1_Bsecond_r2_r_props("B1_Bsecond_r2_r_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Bsecond_r2_r_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + second_B1_r2_props.get_real()); - computation B1_Bsecond_r2_i_props("B1_Bsecond_r2_i_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Bsecond_r2_i_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + second_B1_r2_props.get_imag()); - computation B1_Bthird_r2_r_props("B1_Bthird_r2_r_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Bthird_r2_r_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + third_B1_r2_props.get_real()); - computation B1_Bthird_r2_i_props("B1_Bthird_r2_i_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Bthird_r2_i_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + third_B1_r2_props.get_imag()); + computation B1_Blocal_r2_r_props("B1_Blocal_r2_r_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Blocal_r2_r_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + B1_r2_props.get_real()); + computation B1_Blocal_r2_i_props("B1_Blocal_r2_i_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Blocal_r2_i_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + B1_r2_props.get_imag()); + computation B1_Bfirst_r2_r_props("B1_Bfirst_r2_r_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Bfirst_r2_r_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + first_B1_r2_props.get_real()); + computation B1_Bfirst_r2_i_props("B1_Bfirst_r2_i_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Bfirst_r2_i_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + first_B1_r2_props.get_imag()); + computation B1_Bsecond_r2_r_props("B1_Bsecond_r2_r_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Bsecond_r2_r_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + second_B1_r2_props.get_real()); + computation B1_Bsecond_r2_i_props("B1_Bsecond_r2_i_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Bsecond_r2_i_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + second_B1_r2_props.get_imag()); + computation B1_Bthird_r2_r_props("B1_Bthird_r2_r_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Bthird_r2_r_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + third_B1_r2_props.get_real()); + computation B1_Bthird_r2_i_props("B1_Bthird_r2_i_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Bthird_r2_i_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + third_B1_r2_props.get_imag()); complex_computation B1_Blocal_r2_props(&B1_Blocal_r2_r_props, &B1_Blocal_r2_i_props); complex_computation B1_Bfirst_r2_props(&B1_Bfirst_r2_r_props, &B1_Bfirst_r2_i_props); complex_computation B1_Bsecond_r2_props(&B1_Bsecond_r2_r_props, &B1_Bsecond_r2_i_props); complex_computation B1_Bthird_r2_props(&B1_Bthird_r2_r_props, &B1_Bthird_r2_i_props); - complex_expr B1_r2 = src_psi_B1 * B1_Blocal_r2_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - complex_expr first_B1_r2 = src_psi_B1 * B1_Bfirst_r2_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - complex_expr second_B1_r2 = src_psi_B1 * B1_Bsecond_r2_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - complex_expr third_B1_r2 = src_psi_B1 * B1_Bthird_r2_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - - computation B1_Blocal_r2_r_update("B1_Blocal_r2_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Blocal_r2_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + B1_r2.get_real()); - computation B1_Blocal_r2_i_update("B1_Blocal_r2_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Blocal_r2_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + B1_r2.get_imag()); - computation B1_Bfirst_r2_r_update("B1_Bfirst_r2_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Bfirst_r2_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + first_B1_r2.get_real()); - computation B1_Bfirst_r2_i_update("B1_Bfirst_r2_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Bfirst_r2_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + first_B1_r2.get_imag()); - computation B1_Bsecond_r2_r_update("B1_Bsecond_r2_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Bsecond_r2_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + second_B1_r2.get_real()); - computation B1_Bsecond_r2_i_update("B1_Bsecond_r2_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Bsecond_r2_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + second_B1_r2.get_imag()); - computation B1_Bthird_r2_r_update("B1_Bthird_r2_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Bthird_r2_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + third_B1_r2.get_real()); - computation B1_Bthird_r2_i_update("B1_Bthird_r2_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Bthird_r2_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + third_B1_r2.get_imag()); - - complex_expr flip_B1_r2 = src_psi_B2 * B1_Blocal_r2_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - complex_expr flip_first_B1_r2 = src_psi_B2 * B1_Bfirst_r2_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - complex_expr flip_second_B1_r2 = src_psi_B2 * B1_Bsecond_r2_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - complex_expr flip_third_B1_r2 = src_psi_B2 * B1_Bthird_r2_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - - computation flip_B1_Blocal_r2_r_update("flip_B1_Blocal_r2_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Blocal_r2_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_B1_r2.get_real()); - computation flip_B1_Blocal_r2_i_update("flip_B1_Blocal_r2_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Blocal_r2_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_B1_r2.get_imag()); - computation flip_B1_Bfirst_r2_r_update("flip_B1_Bfirst_r2_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Bfirst_r2_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_first_B1_r2.get_real()); - computation flip_B1_Bfirst_r2_i_update("flip_B1_Bfirst_r2_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Bfirst_r2_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_first_B1_r2.get_imag()); - computation flip_B1_Bsecond_r2_r_update("flip_B1_Bsecond_r2_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Bsecond_r2_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_second_B1_r2.get_real()); - computation flip_B1_Bsecond_r2_i_update("flip_B1_Bsecond_r2_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Bsecond_r2_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_second_B1_r2.get_imag()); - computation flip_B1_Bthird_r2_r_update("flip_B1_Bthird_r2_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Bthird_r2_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_third_B1_r2.get_real()); - computation flip_B1_Bthird_r2_i_update("flip_B1_Bthird_r2_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Bthird_r2_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_third_B1_r2.get_imag()); + complex_expr B1_r2 = src_psi_B1 * B1_Blocal_r2_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr first_B1_r2 = src_psi_B1 * B1_Bfirst_r2_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr second_B1_r2 = src_psi_B1 * B1_Bsecond_r2_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr third_B1_r2 = src_psi_B1 * B1_Bthird_r2_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + + computation B1_Blocal_r2_r_update("B1_Blocal_r2_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Blocal_r2_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + B1_r2.get_real()); + computation B1_Blocal_r2_i_update("B1_Blocal_r2_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Blocal_r2_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + B1_r2.get_imag()); + computation B1_Bfirst_r2_r_update("B1_Bfirst_r2_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Bfirst_r2_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + first_B1_r2.get_real()); + computation B1_Bfirst_r2_i_update("B1_Bfirst_r2_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Bfirst_r2_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + first_B1_r2.get_imag()); + computation B1_Bsecond_r2_r_update("B1_Bsecond_r2_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Bsecond_r2_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + second_B1_r2.get_real()); + computation B1_Bsecond_r2_i_update("B1_Bsecond_r2_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Bsecond_r2_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + second_B1_r2.get_imag()); + computation B1_Bthird_r2_r_update("B1_Bthird_r2_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Bthird_r2_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + third_B1_r2.get_real()); + computation B1_Bthird_r2_i_update("B1_Bthird_r2_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Bthird_r2_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + third_B1_r2.get_imag()); + + complex_expr flip_B1_r2 = src_psi_B2 * B1_Blocal_r2_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr flip_first_B1_r2 = src_psi_B2 * B1_Bfirst_r2_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr flip_second_B1_r2 = src_psi_B2 * B1_Bsecond_r2_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr flip_third_B1_r2 = src_psi_B2 * B1_Bthird_r2_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + + computation flip_B1_Blocal_r2_r_update("flip_B1_Blocal_r2_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Blocal_r2_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_B1_r2.get_real()); + computation flip_B1_Blocal_r2_i_update("flip_B1_Blocal_r2_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Blocal_r2_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_B1_r2.get_imag()); + computation flip_B1_Bfirst_r2_r_update("flip_B1_Bfirst_r2_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Bfirst_r2_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_first_B1_r2.get_real()); + computation flip_B1_Bfirst_r2_i_update("flip_B1_Bfirst_r2_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Bfirst_r2_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_first_B1_r2.get_imag()); + computation flip_B1_Bsecond_r2_r_update("flip_B1_Bsecond_r2_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Bsecond_r2_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_second_B1_r2.get_real()); + computation flip_B1_Bsecond_r2_i_update("flip_B1_Bsecond_r2_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Bsecond_r2_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_second_B1_r2.get_imag()); + computation flip_B1_Bthird_r2_r_update("flip_B1_Bthird_r2_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Bthird_r2_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_third_B1_r2.get_real()); + computation flip_B1_Bthird_r2_i_update("flip_B1_Bthird_r2_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Bthird_r2_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_third_B1_r2.get_imag()); //Computing B2_Blocal_r1, B2_Bsecond_r1, B2_Bfirst_r1 - computation B2_Blocal_r1_r_init("B2_Blocal_r1_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B2_Blocal_r1_i_init("B2_Blocal_r1_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B2_Bfirst_r1_r_init("B2_Bfirst_r1_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B2_Bfirst_r1_i_init("B2_Bfirst_r1_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B2_Bsecond_r1_r_init("B2_Bsecond_r1_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B2_Bsecond_r1_i_init("B2_Bsecond_r1_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B2_Bthird_r1_r_init("B2_Bthird_r1_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B2_Bthird_r1_i_init("B2_Bthird_r1_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B2_Blocal_r1_r_init("B2_Blocal_r1_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B2_Blocal_r1_i_init("B2_Blocal_r1_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B2_Bfirst_r1_r_init("B2_Bfirst_r1_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B2_Bfirst_r1_i_init("B2_Bfirst_r1_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B2_Bsecond_r1_r_init("B2_Bsecond_r1_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B2_Bsecond_r1_i_init("B2_Bsecond_r1_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B2_Bthird_r1_r_init("B2_Bthird_r1_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B2_Bthird_r1_i_init("B2_Bthird_r1_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); complex_computation B2_Blocal_r1_init(&B2_Blocal_r1_r_init, &B2_Blocal_r1_i_init); complex_computation B2_Bfirst_r1_init(&B2_Bfirst_r1_r_init, &B2_Bfirst_r1_i_init); complex_computation B2_Bsecond_r1_init(&B2_Bsecond_r1_r_init, &B2_Bsecond_r1_i_init); complex_computation B2_Bthird_r1_init(&B2_Bthird_r1_r_init, &B2_Bthird_r1_i_init); - computation flip_B2_Blocal_r1_r_init("flip_B2_Blocal_r1_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B2_Blocal_r1_i_init("flip_B2_Blocal_r1_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B2_Bfirst_r1_r_init("flip_B2_Bfirst_r1_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B2_Bfirst_r1_i_init("flip_B2_Bfirst_r1_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B2_Bsecond_r1_r_init("flip_B2_Bsecond_r1_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B2_Bsecond_r1_i_init("flip_B2_Bsecond_r1_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B2_Bthird_r1_r_init("flip_B2_Bthird_r1_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B2_Bthird_r1_i_init("flip_B2_Bthird_r1_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B2_Blocal_r1_r_init("flip_B2_Blocal_r1_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B2_Blocal_r1_i_init("flip_B2_Blocal_r1_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B2_Bfirst_r1_r_init("flip_B2_Bfirst_r1_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B2_Bfirst_r1_i_init("flip_B2_Bfirst_r1_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B2_Bsecond_r1_r_init("flip_B2_Bsecond_r1_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B2_Bsecond_r1_i_init("flip_B2_Bsecond_r1_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B2_Bthird_r1_r_init("flip_B2_Bthird_r1_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B2_Bthird_r1_i_init("flip_B2_Bthird_r1_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); complex_computation flip_B2_Blocal_r1_init(&flip_B2_Blocal_r1_r_init, &flip_B2_Blocal_r1_i_init); complex_computation flip_B2_Bfirst_r1_init(&flip_B2_Bfirst_r1_r_init, &flip_B2_Bfirst_r1_i_init); complex_computation flip_B2_Bsecond_r1_init(&flip_B2_Bsecond_r1_r_init, &flip_B2_Bsecond_r1_i_init); complex_computation flip_B2_Bthird_r1_init(&flip_B2_Bthird_r1_r_init, &flip_B2_Bthird_r1_i_init); - complex_expr B2_r1_prop_0 = B2_prop(0, t, iCprime, iSprime, src_color_weights(0, wnumBlock, 0), src_spin_weights(0, wnumBlock, 0), x2, y); - complex_expr B2_r1_prop_2 = B2_prop(2, t, kCprime, kSprime, src_color_weights(0, wnumBlock, 2), src_spin_weights(0, wnumBlock, 2), x2, y); - complex_expr B2_r1_prop_1 = B2_prop(1, t, jCprime, jSprime, src_color_weights(0, wnumBlock, 1), src_spin_weights(0, wnumBlock, 1), x2, y); - complex_expr first_B2_r1_prop_0 = B2_prop(0, t, iCprime, iSprime, src_color_weights(0, wnumBlock, 0), src_spin_weights(0, wnumBlock, 0), x_out*sites_per_rank+x_in, y); - complex_expr second_B2_r1_prop_1 = B2_prop(1, t, jCprime, jSprime, src_color_weights(0, wnumBlock, 1), src_spin_weights(0, wnumBlock, 1), x_out*sites_per_rank+x_in, y); - complex_expr third_B2_r1_prop_2 = B2_prop(2, t, kCprime, kSprime, src_color_weights(0, wnumBlock, 2), src_spin_weights(0, wnumBlock, 2), x_out*sites_per_rank+x_in, y); - - complex_expr B2_r1_diquark = ( B2_r1_prop_0 * B2_r1_prop_2 ) * src_weights(0, wnumBlock); - complex_expr first_B2_r1_diquark = ( first_B2_r1_prop_0 * B2_r1_prop_2 ) * src_weights(0, wnumBlock); - complex_expr third_B2_r1_diquark = ( B2_r1_prop_0 * third_B2_r1_prop_2 ) * src_weights(0, wnumBlock); - - computation B2_Blocal_r1_r_props_init("B2_Blocal_r1_r_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B2_Blocal_r1_i_props_init("B2_Blocal_r1_i_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B2_Bfirst_r1_r_props_init("B2_Bfirst_r1_r_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B2_Bfirst_r1_i_props_init("B2_Bfirst_r1_i_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B2_Bsecond_r1_r_props_init("B2_Bsecond_r1_r_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B2_Bsecond_r1_i_props_init("B2_Bsecond_r1_i_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B2_Bthird_r1_r_props_init("B2_Bthird_r1_r_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B2_Bthird_r1_i_props_init("B2_Bthird_r1_i_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - - computation B2_Blocal_r1_r_diquark("B2_Blocal_r1_r_diquark", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, B2_r1_diquark.get_real()); - computation B2_Blocal_r1_i_diquark("B2_Blocal_r1_i_diquark", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, B2_r1_diquark.get_imag()); - computation B2_Bfirst_r1_r_diquark("B2_Bfirst_r1_r_diquark", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, first_B2_r1_diquark.get_real()); - computation B2_Bfirst_r1_i_diquark("B2_Bfirst_r1_i_diquark", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, first_B2_r1_diquark.get_imag()); - computation B2_Bthird_r1_r_diquark("B2_Bthird_r1_r_diquark", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, third_B2_r1_diquark.get_real()); - computation B2_Bthird_r1_i_diquark("B2_Bthird_r1_i_diquark", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, third_B2_r1_diquark.get_imag()); + complex_expr B2_r1_prop_0 = B2_prop(0, t, iCprime, iSprime, src_color_weights(1, 0, msc1, wnumBlock, 0), src_spin_weights(1, 0, msc1, wnumBlock, 0), x2, y); + complex_expr B2_r1_prop_1 = B2_prop(1, t, jCprime, jSprime, src_color_weights(1, 0, msc1, wnumBlock, 1), src_spin_weights(1, 0, msc1, wnumBlock, 1), x2, y); + complex_expr B2_r1_prop_2 = B2_prop(2, t, kCprime, kSprime, src_color_weights(1, 0, msc1, wnumBlock, 2), src_spin_weights(1, 0, msc1, wnumBlock, 2), x2, y); + complex_expr first_B2_r1_prop_0 = B2_prop(0, t, iCprime, iSprime, src_color_weights(1, 0, msc1, wnumBlock, 0), src_spin_weights(1, 0, msc1, wnumBlock, 0), x_out*sites_per_rank+x_in, y); + complex_expr second_B2_r1_prop_1 = B2_prop(1, t, jCprime, jSprime, src_color_weights(1, 0, msc1, wnumBlock, 1), src_spin_weights(1, 0, msc1, wnumBlock, 1), x_out*sites_per_rank+x_in, y); + complex_expr third_B2_r1_prop_2 = B2_prop(2, t, kCprime, kSprime, src_color_weights(1, 0, msc1, wnumBlock, 2), src_spin_weights(1, 0, msc1, wnumBlock, 2), x_out*sites_per_rank+x_in, y); + + complex_expr B2_r1_diquark = ( B2_r1_prop_0 * B2_r1_prop_2 ) * src_weights(1, 0, msc1, wnumBlock); + complex_expr first_B2_r1_diquark = ( first_B2_r1_prop_0 * B2_r1_prop_2 ) * src_weights(1, 0, msc1, wnumBlock); + complex_expr third_B2_r1_diquark = ( B2_r1_prop_0 * third_B2_r1_prop_2 ) * src_weights(1, 0, msc1, wnumBlock); + + computation B2_Blocal_r1_r_props_init("B2_Blocal_r1_r_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B2_Blocal_r1_i_props_init("B2_Blocal_r1_i_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B2_Bfirst_r1_r_props_init("B2_Bfirst_r1_r_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B2_Bfirst_r1_i_props_init("B2_Bfirst_r1_i_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B2_Bsecond_r1_r_props_init("B2_Bsecond_r1_r_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B2_Bsecond_r1_i_props_init("B2_Bsecond_r1_i_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B2_Bthird_r1_r_props_init("B2_Bthird_r1_r_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B2_Bthird_r1_i_props_init("B2_Bthird_r1_i_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + + computation B2_Blocal_r1_r_diquark("B2_Blocal_r1_r_diquark", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, B2_r1_diquark.get_real()); + computation B2_Blocal_r1_i_diquark("B2_Blocal_r1_i_diquark", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, B2_r1_diquark.get_imag()); + computation B2_Bfirst_r1_r_diquark("B2_Bfirst_r1_r_diquark", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, first_B2_r1_diquark.get_real()); + computation B2_Bfirst_r1_i_diquark("B2_Bfirst_r1_i_diquark", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, first_B2_r1_diquark.get_imag()); + computation B2_Bthird_r1_r_diquark("B2_Bthird_r1_r_diquark", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, third_B2_r1_diquark.get_real()); + computation B2_Bthird_r1_i_diquark("B2_Bthird_r1_i_diquark", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, third_B2_r1_diquark.get_imag()); complex_computation B2_Blocal_r1_diquark(&B2_Blocal_r1_r_diquark, &B2_Blocal_r1_i_diquark); complex_computation B2_Bfirst_r1_diquark(&B2_Bfirst_r1_r_diquark, &B2_Bfirst_r1_i_diquark); complex_computation B2_Bthird_r1_diquark(&B2_Bthird_r1_r_diquark, &B2_Bthird_r1_i_diquark); - complex_expr B2_r1_props = B2_r1_prop_1 * B2_Blocal_r1_diquark(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); - complex_expr first_B2_r1_props = B2_r1_prop_1 * B2_Bfirst_r1_diquark(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); - complex_expr second_B2_r1_props = second_B2_r1_prop_1 * B2_Blocal_r1_diquark(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); - complex_expr third_B2_r1_props = B2_r1_prop_1 * B2_Bthird_r1_diquark(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); + complex_expr B2_r1_props = B2_r1_prop_1 * B2_Blocal_r1_diquark(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); + complex_expr first_B2_r1_props = B2_r1_prop_1 * B2_Bfirst_r1_diquark(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); + complex_expr second_B2_r1_props = second_B2_r1_prop_1 * B2_Blocal_r1_diquark(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); + complex_expr third_B2_r1_props = B2_r1_prop_1 * B2_Bthird_r1_diquark(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); - computation B2_Blocal_r1_r_props("B2_Blocal_r1_r_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Blocal_r1_r_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + B2_r1_props.get_real()); - computation B2_Blocal_r1_i_props("B2_Blocal_r1_i_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Blocal_r1_i_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + B2_r1_props.get_imag()); - computation B2_Bfirst_r1_r_props("B2_Bfirst_r1_r_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Bfirst_r1_r_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + first_B2_r1_props.get_real()); - computation B2_Bfirst_r1_i_props("B2_Bfirst_r1_i_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Bfirst_r1_i_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + first_B2_r1_props.get_imag()); - computation B2_Bsecond_r1_r_props("B2_Bsecond_r1_r_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Bsecond_r1_r_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + second_B2_r1_props.get_real()); - computation B2_Bsecond_r1_i_props("B2_Bsecond_r1_i_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Bsecond_r1_i_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + second_B2_r1_props.get_imag()); - computation B2_Bthird_r1_r_props("B2_Bthird_r1_r_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Bthird_r1_r_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + third_B2_r1_props.get_real()); - computation B2_Bthird_r1_i_props("B2_Bthird_r1_i_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Bthird_r1_i_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + third_B2_r1_props.get_imag()); + computation B2_Blocal_r1_r_props("B2_Blocal_r1_r_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Blocal_r1_r_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + B2_r1_props.get_real()); + computation B2_Blocal_r1_i_props("B2_Blocal_r1_i_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Blocal_r1_i_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + B2_r1_props.get_imag()); + computation B2_Bfirst_r1_r_props("B2_Bfirst_r1_r_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Bfirst_r1_r_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + first_B2_r1_props.get_real()); + computation B2_Bfirst_r1_i_props("B2_Bfirst_r1_i_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Bfirst_r1_i_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + first_B2_r1_props.get_imag()); + computation B2_Bsecond_r1_r_props("B2_Bsecond_r1_r_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Bsecond_r1_r_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + second_B2_r1_props.get_real()); + computation B2_Bsecond_r1_i_props("B2_Bsecond_r1_i_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Bsecond_r1_i_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + second_B2_r1_props.get_imag()); + computation B2_Bthird_r1_r_props("B2_Bthird_r1_r_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Bthird_r1_r_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + third_B2_r1_props.get_real()); + computation B2_Bthird_r1_i_props("B2_Bthird_r1_i_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Bthird_r1_i_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + third_B2_r1_props.get_imag()); complex_computation B2_Blocal_r1_props(&B2_Blocal_r1_r_props, &B2_Blocal_r1_i_props); complex_computation B2_Bfirst_r1_props(&B2_Bfirst_r1_r_props, &B2_Bfirst_r1_i_props); complex_computation B2_Bsecond_r1_props(&B2_Bsecond_r1_r_props, &B2_Bsecond_r1_i_props); complex_computation B2_Bthird_r1_props(&B2_Bthird_r1_r_props, &B2_Bthird_r1_i_props); - complex_expr B2_r1 = src_psi_B2 * B2_Blocal_r1_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - complex_expr first_B2_r1 = src_psi_B2 * B2_Bfirst_r1_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - complex_expr second_B2_r1 = src_psi_B2 * B2_Bsecond_r1_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - complex_expr third_B2_r1 = src_psi_B2 * B2_Bthird_r1_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - - computation B2_Blocal_r1_r_update("B2_Blocal_r1_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Blocal_r1_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + B2_r1.get_real()); - computation B2_Blocal_r1_i_update("B2_Blocal_r1_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Blocal_r1_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + B2_r1.get_imag()); - computation B2_Bfirst_r1_r_update("B2_Bfirst_r1_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Bfirst_r1_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + first_B2_r1.get_real()); - computation B2_Bfirst_r1_i_update("B2_Bfirst_r1_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Bfirst_r1_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + first_B2_r1.get_imag()); - computation B2_Bsecond_r1_r_update("B2_Bsecond_r1_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Bsecond_r1_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + second_B2_r1.get_real()); - computation B2_Bsecond_r1_i_update("B2_Bsecond_r1_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Bsecond_r1_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + second_B2_r1.get_imag()); - computation B2_Bthird_r1_r_update("B2_Bthird_r1_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Bthird_r1_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + third_B2_r1.get_real()); - computation B2_Bthird_r1_i_update("B2_Bthird_r1_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Bthird_r1_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + third_B2_r1.get_imag()); - - complex_expr flip_B2_r1 = src_psi_B1 * B2_Blocal_r1_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - complex_expr flip_first_B2_r1 = src_psi_B1 * B2_Bfirst_r1_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - complex_expr flip_second_B2_r1 = src_psi_B1 * B2_Bsecond_r1_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - complex_expr flip_third_B2_r1 = src_psi_B1 * B2_Bthird_r1_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - - computation flip_B2_Blocal_r1_r_update("flip_B2_Blocal_r1_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Blocal_r1_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_B2_r1.get_real()); - computation flip_B2_Blocal_r1_i_update("flip_B2_Blocal_r1_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Blocal_r1_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_B2_r1.get_imag()); - computation flip_B2_Bfirst_r1_r_update("flip_B2_Bfirst_r1_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Bfirst_r1_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_first_B2_r1.get_real()); - computation flip_B2_Bfirst_r1_i_update("flip_B2_Bfirst_r1_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Bfirst_r1_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_first_B2_r1.get_imag()); - computation flip_B2_Bsecond_r1_r_update("flip_B2_Bsecond_r1_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Bsecond_r1_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_second_B2_r1.get_real()); - computation flip_B2_Bsecond_r1_i_update("flip_B2_Bsecond_r1_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Bsecond_r1_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_second_B2_r1.get_imag()); - computation flip_B2_Bthird_r1_r_update("flip_B2_Bthird_r1_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Bthird_r1_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_third_B2_r1.get_real()); - computation flip_B2_Bthird_r1_i_update("flip_B2_Bthird_r1_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Bthird_r1_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_third_B2_r1.get_imag()); + complex_expr B2_r1 = src_psi_B2 * B2_Blocal_r1_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr first_B2_r1 = src_psi_B2 * B2_Bfirst_r1_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr second_B2_r1 = src_psi_B2 * B2_Bsecond_r1_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr third_B2_r1 = src_psi_B2 * B2_Bthird_r1_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + + computation B2_Blocal_r1_r_update("B2_Blocal_r1_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Blocal_r1_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + B2_r1.get_real()); + computation B2_Blocal_r1_i_update("B2_Blocal_r1_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Blocal_r1_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + B2_r1.get_imag()); + computation B2_Bfirst_r1_r_update("B2_Bfirst_r1_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Bfirst_r1_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + first_B2_r1.get_real()); + computation B2_Bfirst_r1_i_update("B2_Bfirst_r1_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Bfirst_r1_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + first_B2_r1.get_imag()); + computation B2_Bsecond_r1_r_update("B2_Bsecond_r1_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Bsecond_r1_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + second_B2_r1.get_real()); + computation B2_Bsecond_r1_i_update("B2_Bsecond_r1_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Bsecond_r1_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + second_B2_r1.get_imag()); + computation B2_Bthird_r1_r_update("B2_Bthird_r1_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Bthird_r1_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + third_B2_r1.get_real()); + computation B2_Bthird_r1_i_update("B2_Bthird_r1_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Bthird_r1_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + third_B2_r1.get_imag()); + + complex_expr flip_B2_r1 = src_psi_B1 * B2_Blocal_r1_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr flip_first_B2_r1 = src_psi_B1 * B2_Bfirst_r1_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr flip_second_B2_r1 = src_psi_B1 * B2_Bsecond_r1_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr flip_third_B2_r1 = src_psi_B1 * B2_Bthird_r1_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + + computation flip_B2_Blocal_r1_r_update("flip_B2_Blocal_r1_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Blocal_r1_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_B2_r1.get_real()); + computation flip_B2_Blocal_r1_i_update("flip_B2_Blocal_r1_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Blocal_r1_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_B2_r1.get_imag()); + computation flip_B2_Bfirst_r1_r_update("flip_B2_Bfirst_r1_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Bfirst_r1_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_first_B2_r1.get_real()); + computation flip_B2_Bfirst_r1_i_update("flip_B2_Bfirst_r1_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Bfirst_r1_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_first_B2_r1.get_imag()); + computation flip_B2_Bsecond_r1_r_update("flip_B2_Bsecond_r1_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Bsecond_r1_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_second_B2_r1.get_real()); + computation flip_B2_Bsecond_r1_i_update("flip_B2_Bsecond_r1_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Bsecond_r1_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_second_B2_r1.get_imag()); + computation flip_B2_Bthird_r1_r_update("flip_B2_Bthird_r1_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Bthird_r1_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_third_B2_r1.get_real()); + computation flip_B2_Bthird_r1_i_update("flip_B2_Bthird_r1_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Bthird_r1_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_third_B2_r1.get_imag()); // Computing B2_Blocal_r2, B2_Bsecond_r2, B2_Bfirst_r2 - computation B2_Blocal_r2_r_init("B2_Blocal_r2_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B2_Blocal_r2_i_init("B2_Blocal_r2_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B2_Bfirst_r2_r_init("B2_Bfirst_r2_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B2_Bfirst_r2_i_init("B2_Bfirst_r2_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B2_Bsecond_r2_r_init("B2_Bsecond_r2_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B2_Bsecond_r2_i_init("B2_Bsecond_r2_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B2_Bthird_r2_r_init("B2_Bthird_r2_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B2_Bthird_r2_i_init("B2_Bthird_r2_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B2_Blocal_r2_r_init("B2_Blocal_r2_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B2_Blocal_r2_i_init("B2_Blocal_r2_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B2_Bfirst_r2_r_init("B2_Bfirst_r2_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B2_Bfirst_r2_i_init("B2_Bfirst_r2_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B2_Bsecond_r2_r_init("B2_Bsecond_r2_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B2_Bsecond_r2_i_init("B2_Bsecond_r2_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B2_Bthird_r2_r_init("B2_Bthird_r2_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B2_Bthird_r2_i_init("B2_Bthird_r2_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); complex_computation B2_Blocal_r2_init(&B2_Blocal_r2_r_init, &B2_Blocal_r2_i_init); complex_computation B2_Bfirst_r2_init(&B2_Bfirst_r2_r_init, &B2_Bfirst_r2_i_init); complex_computation B2_Bsecond_r2_init(&B2_Bsecond_r2_r_init, &B2_Bsecond_r2_i_init); complex_computation B2_Bthird_r2_init(&B2_Bthird_r2_r_init, &B2_Bthird_r2_i_init); - computation flip_B2_Blocal_r2_r_init("flip_B2_Blocal_r2_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B2_Blocal_r2_i_init("flip_B2_Blocal_r2_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B2_Bfirst_r2_r_init("flip_B2_Bfirst_r2_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B2_Bfirst_r2_i_init("flip_B2_Bfirst_r2_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B2_Bsecond_r2_r_init("flip_B2_Bsecond_r2_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B2_Bsecond_r2_i_init("flip_B2_Bsecond_r2_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B2_Bthird_r2_r_init("flip_B2_Bthird_r2_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B2_Bthird_r2_i_init("flip_B2_Bthird_r2_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B2_Blocal_r2_r_init("flip_B2_Blocal_r2_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B2_Blocal_r2_i_init("flip_B2_Blocal_r2_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B2_Bfirst_r2_r_init("flip_B2_Bfirst_r2_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B2_Bfirst_r2_i_init("flip_B2_Bfirst_r2_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B2_Bsecond_r2_r_init("flip_B2_Bsecond_r2_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B2_Bsecond_r2_i_init("flip_B2_Bsecond_r2_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B2_Bthird_r2_r_init("flip_B2_Bthird_r2_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B2_Bthird_r2_i_init("flip_B2_Bthird_r2_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); complex_computation flip_B2_Blocal_r2_init(&flip_B2_Blocal_r2_r_init, &flip_B2_Blocal_r2_i_init); complex_computation flip_B2_Bfirst_r2_init(&flip_B2_Bfirst_r2_r_init, &flip_B2_Bfirst_r2_i_init); complex_computation flip_B2_Bsecond_r2_init(&flip_B2_Bsecond_r2_r_init, &flip_B2_Bsecond_r2_i_init); complex_computation flip_B2_Bthird_r2_init(&flip_B2_Bthird_r2_r_init, &flip_B2_Bthird_r2_i_init); - complex_expr B2_r2_prop_0 = B2_prop(0, t, iCprime, iSprime, src_color_weights(1, wnumBlock, 0), src_spin_weights(1, wnumBlock, 0), x2, y); - complex_expr B2_r2_prop_2 = B2_prop(2, t, kCprime, kSprime, src_color_weights(1, wnumBlock, 2), src_spin_weights(1, wnumBlock, 2), x2, y); - complex_expr B2_r2_prop_1 = B2_prop(1, t, jCprime, jSprime, src_color_weights(1, wnumBlock, 1), src_spin_weights(1, wnumBlock, 1), x2, y); - complex_expr first_B2_r2_prop_0 = B2_prop(0, t, iCprime, iSprime, src_color_weights(1, wnumBlock, 0), src_spin_weights(1, wnumBlock, 0), x_out*sites_per_rank+x_in, y); - complex_expr second_B2_r2_prop_1 = B2_prop(1, t, jCprime, jSprime, src_color_weights(1, wnumBlock, 1), src_spin_weights(1, wnumBlock, 1), x_out*sites_per_rank+x_in, y); - complex_expr third_B2_r2_prop_2 = B2_prop(2, t, kCprime, kSprime, src_color_weights(1, wnumBlock, 2), src_spin_weights(1, wnumBlock, 2), x_out*sites_per_rank+x_in, y); - - complex_expr B2_r2_diquark = ( B2_r2_prop_0 * B2_r2_prop_2 ) * src_weights(1, wnumBlock); - complex_expr first_B2_r2_diquark = ( first_B2_r2_prop_0 * B2_r2_prop_2 ) * src_weights(1, wnumBlock); - complex_expr third_B2_r2_diquark = ( B2_r2_prop_0 * third_B2_r2_prop_2 ) * src_weights(1, wnumBlock); - - computation B2_Blocal_r2_r_props_init("B2_Blocal_r2_r_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B2_Blocal_r2_i_props_init("B2_Blocal_r2_i_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B2_Bfirst_r2_r_props_init("B2_Bfirst_r2_r_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B2_Bfirst_r2_i_props_init("B2_Bfirst_r2_i_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B2_Bsecond_r2_r_props_init("B2_Bsecond_r2_r_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B2_Bsecond_r2_i_props_init("B2_Bsecond_r2_i_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B2_Bthird_r2_r_props_init("B2_Bthird_r2_r_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B2_Bthird_r2_i_props_init("B2_Bthird_r2_i_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - - computation B2_Blocal_r2_r_diquark("B2_Blocal_r2_r_diquark", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, B2_r2_diquark.get_real()); - computation B2_Blocal_r2_i_diquark("B2_Blocal_r2_i_diquark", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, B2_r2_diquark.get_imag()); - computation B2_Bfirst_r2_r_diquark("B2_Bfirst_r2_r_diquark", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, first_B2_r2_diquark.get_real()); - computation B2_Bfirst_r2_i_diquark("B2_Bfirst_r2_i_diquark", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, first_B2_r2_diquark.get_imag()); - computation B2_Bthird_r2_r_diquark("B2_Bthird_r2_r_diquark", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, third_B2_r2_diquark.get_real()); - computation B2_Bthird_r2_i_diquark("B2_Bthird_r2_i_diquark", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, third_B2_r2_diquark.get_imag()); + complex_expr B2_r2_prop_0 = B2_prop(0, t, iCprime, iSprime, src_color_weights(1, 1, msc1, wnumBlock, 0), src_spin_weights(1, 1, msc1, wnumBlock, 0), x2, y); + complex_expr B2_r2_prop_1 = B2_prop(1, t, jCprime, jSprime, src_color_weights(1, 1, msc1, wnumBlock, 1), src_spin_weights(1, 1, msc1, wnumBlock, 1), x2, y); + complex_expr B2_r2_prop_2 = B2_prop(2, t, kCprime, kSprime, src_color_weights(1, 1, msc1, wnumBlock, 2), src_spin_weights(1, 1, msc1, wnumBlock, 2), x2, y); + complex_expr first_B2_r2_prop_0 = B2_prop(0, t, iCprime, iSprime, src_color_weights(1, 1, msc1, wnumBlock, 0), src_spin_weights(1, 1, msc1, wnumBlock, 0), x_out*sites_per_rank+x_in, y); + complex_expr second_B2_r2_prop_1 = B2_prop(1, t, jCprime, jSprime, src_color_weights(1, 1, msc1, wnumBlock, 1), src_spin_weights(1, 1, msc1, wnumBlock, 1), x_out*sites_per_rank+x_in, y); + complex_expr third_B2_r2_prop_2 = B2_prop(2, t, kCprime, kSprime, src_color_weights(1, 1, msc1, wnumBlock, 2), src_spin_weights(1, 1, msc1, wnumBlock, 2), x_out*sites_per_rank+x_in, y); + + complex_expr B2_r2_diquark = ( B2_r2_prop_0 * B2_r2_prop_2 ) * src_weights(1, 1, msc1, wnumBlock); + complex_expr first_B2_r2_diquark = ( first_B2_r2_prop_0 * B2_r2_prop_2 ) * src_weights(1, 1, msc1, wnumBlock); + complex_expr third_B2_r2_diquark = ( B2_r2_prop_0 * third_B2_r2_prop_2 ) * src_weights(1, 1, msc1, wnumBlock); + + computation B2_Blocal_r2_r_props_init("B2_Blocal_r2_r_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B2_Blocal_r2_i_props_init("B2_Blocal_r2_i_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B2_Bfirst_r2_r_props_init("B2_Bfirst_r2_r_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B2_Bfirst_r2_i_props_init("B2_Bfirst_r2_i_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B2_Bsecond_r2_r_props_init("B2_Bsecond_r2_r_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B2_Bsecond_r2_i_props_init("B2_Bsecond_r2_i_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B2_Bthird_r2_r_props_init("B2_Bthird_r2_r_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B2_Bthird_r2_i_props_init("B2_Bthird_r2_i_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + + computation B2_Blocal_r2_r_diquark("B2_Blocal_r2_r_diquark", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, B2_r2_diquark.get_real()); + computation B2_Blocal_r2_i_diquark("B2_Blocal_r2_i_diquark", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, B2_r2_diquark.get_imag()); + computation B2_Bfirst_r2_r_diquark("B2_Bfirst_r2_r_diquark", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, first_B2_r2_diquark.get_real()); + computation B2_Bfirst_r2_i_diquark("B2_Bfirst_r2_i_diquark", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, first_B2_r2_diquark.get_imag()); + computation B2_Bthird_r2_r_diquark("B2_Bthird_r2_r_diquark", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, third_B2_r2_diquark.get_real()); + computation B2_Bthird_r2_i_diquark("B2_Bthird_r2_i_diquark", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, third_B2_r2_diquark.get_imag()); complex_computation B2_Blocal_r2_diquark(&B2_Blocal_r2_r_diquark, &B2_Blocal_r2_i_diquark); complex_computation B2_Bfirst_r2_diquark(&B2_Bfirst_r2_r_diquark, &B2_Bfirst_r2_i_diquark); complex_computation B2_Bthird_r2_diquark(&B2_Bthird_r2_r_diquark, &B2_Bthird_r2_i_diquark); - complex_expr B2_r2_props = B2_r2_prop_1 * B2_Blocal_r2_diquark(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); - complex_expr first_B2_r2_props = B2_r2_prop_1 * B2_Bfirst_r2_diquark(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); - complex_expr second_B2_r2_props = second_B2_r2_prop_1 * B2_Blocal_r2_diquark(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); - complex_expr third_B2_r2_props = B2_r2_prop_1 * B2_Bthird_r2_diquark(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); + complex_expr B2_r2_props = B2_r2_prop_1 * B2_Blocal_r2_diquark(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); + complex_expr first_B2_r2_props = B2_r2_prop_1 * B2_Bfirst_r2_diquark(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); + complex_expr second_B2_r2_props = second_B2_r2_prop_1 * B2_Blocal_r2_diquark(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); + complex_expr third_B2_r2_props = B2_r2_prop_1 * B2_Bthird_r2_diquark(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); - computation B2_Blocal_r2_r_props("B2_Blocal_r2_r_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Blocal_r2_r_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + B2_r2_props.get_real()); - computation B2_Blocal_r2_i_props("B2_Blocal_r2_i_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Blocal_r2_i_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + B2_r2_props.get_imag()); - computation B2_Bfirst_r2_r_props("B2_Bfirst_r2_r_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Bfirst_r2_r_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + first_B2_r2_props.get_real()); - computation B2_Bfirst_r2_i_props("B2_Bfirst_r2_i_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Bfirst_r2_i_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + first_B2_r2_props.get_imag()); - computation B2_Bsecond_r2_r_props("B2_Bsecond_r2_r_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Bsecond_r2_r_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + second_B2_r2_props.get_real()); - computation B2_Bsecond_r2_i_props("B2_Bsecond_r2_i_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Bsecond_r2_i_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + second_B2_r2_props.get_imag()); - computation B2_Bthird_r2_r_props("B2_Bthird_r2_r_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Bthird_r2_r_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + third_B2_r2_props.get_real()); - computation B2_Bthird_r2_i_props("B2_Bthird_r2_i_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Bthird_r2_i_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + third_B2_r2_props.get_imag()); + computation B2_Blocal_r2_r_props("B2_Blocal_r2_r_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Blocal_r2_r_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + B2_r2_props.get_real()); + computation B2_Blocal_r2_i_props("B2_Blocal_r2_i_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Blocal_r2_i_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + B2_r2_props.get_imag()); + computation B2_Bfirst_r2_r_props("B2_Bfirst_r2_r_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Bfirst_r2_r_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + first_B2_r2_props.get_real()); + computation B2_Bfirst_r2_i_props("B2_Bfirst_r2_i_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Bfirst_r2_i_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + first_B2_r2_props.get_imag()); + computation B2_Bsecond_r2_r_props("B2_Bsecond_r2_r_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Bsecond_r2_r_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + second_B2_r2_props.get_real()); + computation B2_Bsecond_r2_i_props("B2_Bsecond_r2_i_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Bsecond_r2_i_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + second_B2_r2_props.get_imag()); + computation B2_Bthird_r2_r_props("B2_Bthird_r2_r_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Bthird_r2_r_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + third_B2_r2_props.get_real()); + computation B2_Bthird_r2_i_props("B2_Bthird_r2_i_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Bthird_r2_i_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + third_B2_r2_props.get_imag()); complex_computation B2_Blocal_r2_props(&B2_Blocal_r2_r_props, &B2_Blocal_r2_i_props); complex_computation B2_Bfirst_r2_props(&B2_Bfirst_r2_r_props, &B2_Bfirst_r2_i_props); complex_computation B2_Bsecond_r2_props(&B2_Bsecond_r2_r_props, &B2_Bsecond_r2_i_props); complex_computation B2_Bthird_r2_props(&B2_Bthird_r2_r_props, &B2_Bthird_r2_i_props); - complex_expr B2_r2 = src_psi_B2 * B2_Blocal_r2_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - complex_expr first_B2_r2 = src_psi_B2 * B2_Bfirst_r2_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - complex_expr second_B2_r2 = src_psi_B2 * B2_Bsecond_r2_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - complex_expr third_B2_r2 = src_psi_B2 * B2_Bthird_r2_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - - computation B2_Blocal_r2_r_update("B2_Blocal_r2_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Blocal_r2_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + B2_r2.get_real()); - computation B2_Blocal_r2_i_update("B2_Blocal_r2_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Blocal_r2_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + B2_r2.get_imag()); - computation B2_Bfirst_r2_r_update("B2_Bfirst_r2_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Bfirst_r2_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + first_B2_r2.get_real()); - computation B2_Bfirst_r2_i_update("B2_Bfirst_r2_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Bfirst_r2_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + first_B2_r2.get_imag()); - computation B2_Bsecond_r2_r_update("B2_Bsecond_r2_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Bsecond_r2_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + second_B2_r2.get_real()); - computation B2_Bsecond_r2_i_update("B2_Bsecond_r2_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Bsecond_r2_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + second_B2_r2.get_imag()); - computation B2_Bthird_r2_r_update("B2_Bthird_r2_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Bthird_r2_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + third_B2_r2.get_real()); - computation B2_Bthird_r2_i_update("B2_Bthird_r2_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Bthird_r2_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + third_B2_r2.get_imag()); - - complex_expr flip_B2_r2 = src_psi_B1 * B2_Blocal_r2_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - complex_expr flip_first_B2_r2 = src_psi_B1 * B2_Bfirst_r2_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - complex_expr flip_second_B2_r2 = src_psi_B1 * B2_Bsecond_r2_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - complex_expr flip_third_B2_r2 = src_psi_B1 * B2_Bthird_r2_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - - computation flip_B2_Blocal_r2_r_update("flip_B2_Blocal_r2_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Blocal_r2_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_B2_r2.get_real()); - computation flip_B2_Blocal_r2_i_update("flip_B2_Blocal_r2_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Blocal_r2_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_B2_r2.get_imag()); - computation flip_B2_Bfirst_r2_r_update("flip_B2_Bfirst_r2_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Bfirst_r2_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_first_B2_r2.get_real()); - computation flip_B2_Bfirst_r2_i_update("flip_B2_Bfirst_r2_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Bfirst_r2_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_first_B2_r2.get_imag()); - computation flip_B2_Bsecond_r2_r_update("flip_B2_Bsecond_r2_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Bsecond_r2_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_second_B2_r2.get_real()); - computation flip_B2_Bsecond_r2_i_update("flip_B2_Bsecond_r2_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Bsecond_r2_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_second_B2_r2.get_imag()); - computation flip_B2_Bthird_r2_r_update("flip_B2_Bthird_r2_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Bthird_r2_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_third_B2_r2.get_real()); - computation flip_B2_Bthird_r2_i_update("flip_B2_Bthird_r2_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Bthird_r2_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_third_B2_r2.get_imag()); + complex_expr B2_r2 = src_psi_B2 * B2_Blocal_r2_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr first_B2_r2 = src_psi_B2 * B2_Bfirst_r2_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr second_B2_r2 = src_psi_B2 * B2_Bsecond_r2_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr third_B2_r2 = src_psi_B2 * B2_Bthird_r2_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + + computation B2_Blocal_r2_r_update("B2_Blocal_r2_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Blocal_r2_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + B2_r2.get_real()); + computation B2_Blocal_r2_i_update("B2_Blocal_r2_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Blocal_r2_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + B2_r2.get_imag()); + computation B2_Bfirst_r2_r_update("B2_Bfirst_r2_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Bfirst_r2_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + first_B2_r2.get_real()); + computation B2_Bfirst_r2_i_update("B2_Bfirst_r2_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Bfirst_r2_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + first_B2_r2.get_imag()); + computation B2_Bsecond_r2_r_update("B2_Bsecond_r2_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Bsecond_r2_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + second_B2_r2.get_real()); + computation B2_Bsecond_r2_i_update("B2_Bsecond_r2_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Bsecond_r2_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + second_B2_r2.get_imag()); + computation B2_Bthird_r2_r_update("B2_Bthird_r2_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Bthird_r2_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + third_B2_r2.get_real()); + computation B2_Bthird_r2_i_update("B2_Bthird_r2_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Bthird_r2_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + third_B2_r2.get_imag()); + + complex_expr flip_B2_r2 = src_psi_B1 * B2_Blocal_r2_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr flip_first_B2_r2 = src_psi_B1 * B2_Bfirst_r2_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr flip_second_B2_r2 = src_psi_B1 * B2_Bsecond_r2_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr flip_third_B2_r2 = src_psi_B1 * B2_Bthird_r2_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + + computation flip_B2_Blocal_r2_r_update("flip_B2_Blocal_r2_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Blocal_r2_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_B2_r2.get_real()); + computation flip_B2_Blocal_r2_i_update("flip_B2_Blocal_r2_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Blocal_r2_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_B2_r2.get_imag()); + computation flip_B2_Bfirst_r2_r_update("flip_B2_Bfirst_r2_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Bfirst_r2_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_first_B2_r2.get_real()); + computation flip_B2_Bfirst_r2_i_update("flip_B2_Bfirst_r2_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Bfirst_r2_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_first_B2_r2.get_imag()); + computation flip_B2_Bsecond_r2_r_update("flip_B2_Bsecond_r2_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Bsecond_r2_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_second_B2_r2.get_real()); + computation flip_B2_Bsecond_r2_i_update("flip_B2_Bsecond_r2_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Bsecond_r2_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_second_B2_r2.get_imag()); + computation flip_B2_Bthird_r2_r_update("flip_B2_Bthird_r2_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Bthird_r2_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_third_B2_r2.get_real()); + computation flip_B2_Bthird_r2_i_update("flip_B2_Bthird_r2_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Bthird_r2_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_third_B2_r2.get_imag()); // Computing src_B1_Blocal_r1 - computation src_B1_Blocal_r1_r_init("src_B1_Blocal_r1_r_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation src_B1_Blocal_r1_i_init("src_B1_Blocal_r1_i_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation src_B1_Blocal_r1_r_init("src_B1_Blocal_r1_r_init", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation src_B1_Blocal_r1_i_init("src_B1_Blocal_r1_i_init", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); complex_computation src_B1_Blocal_r1_init(&src_B1_Blocal_r1_r_init, &src_B1_Blocal_r1_i_init); - computation flip_src_B1_Blocal_r1_r_init("flip_src_B1_Blocal_r1_r_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_src_B1_Blocal_r1_i_init("flip_src_B1_Blocal_r1_i_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_src_B1_Blocal_r1_r_init("flip_src_B1_Blocal_r1_r_init", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_src_B1_Blocal_r1_i_init("flip_src_B1_Blocal_r1_i_init", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); complex_computation flip_src_B1_Blocal_r1_init(&flip_src_B1_Blocal_r1_r_init, &flip_src_B1_Blocal_r1_i_init); - complex_expr src_B1_r1_prop_0 = B1_prop(0, t, iCprime, iSprime, src_color_weights(0, wnumBlock, 0), src_spin_weights(0, wnumBlock, 0), x_out*sites_per_rank+x_in, y); - complex_expr src_B1_r1_prop_2 = B1_prop(2, t, kCprime, kSprime, src_color_weights(0, wnumBlock, 2), src_spin_weights(0, wnumBlock, 2), x_out*sites_per_rank+x_in, y); - complex_expr src_B1_r1_prop_1 = B1_prop(1, t, jCprime, jSprime, src_color_weights(0, wnumBlock, 1), src_spin_weights(0, wnumBlock, 1), x_out*sites_per_rank+x_in, y); + complex_expr src_B1_r1_prop_0 = B1_prop(0, t, iCprime, iSprime, src_color_weights(0, 0, msc1, wnumBlock, 0), src_spin_weights(0, 0, msc1, wnumBlock, 0), x_out*sites_per_rank+x_in, y); + complex_expr src_B1_r1_prop_1 = B1_prop(1, t, jCprime, jSprime, src_color_weights(0, 0, msc1, wnumBlock, 1), src_spin_weights(0, 0, msc1, wnumBlock, 1), x_out*sites_per_rank+x_in, y); + complex_expr src_B1_r1_prop_2 = B1_prop(2, t, kCprime, kSprime, src_color_weights(0, 0, msc1, wnumBlock, 2), src_spin_weights(0, 0, msc1, wnumBlock, 2), x_out*sites_per_rank+x_in, y); - complex_expr src_B1_r1_diquark = ( src_B1_r1_prop_0 * src_B1_r1_prop_2 ) * src_weights(0, wnumBlock); + complex_expr src_B1_r1_diquark = ( src_B1_r1_prop_0 * src_B1_r1_prop_2 ) * src_weights(0, 0, msc1, wnumBlock); - computation src_B1_Blocal_r1_r_props_init("src_B1_Blocal_r1_r_props_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation src_B1_Blocal_r1_i_props_init("src_B1_Blocal_r1_i_props_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation src_B1_Blocal_r1_r_props_init("src_B1_Blocal_r1_r_props_init", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation src_B1_Blocal_r1_i_props_init("src_B1_Blocal_r1_i_props_init", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation src_B1_Blocal_r1_r_diquark("src_B1_Blocal_r1_r_diquark", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, src_B1_r1_diquark.get_real()); - computation src_B1_Blocal_r1_i_diquark("src_B1_Blocal_r1_i_diquark", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, src_B1_r1_diquark.get_imag()); + computation src_B1_Blocal_r1_r_diquark("src_B1_Blocal_r1_r_diquark", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, src_B1_r1_diquark.get_real()); + computation src_B1_Blocal_r1_i_diquark("src_B1_Blocal_r1_i_diquark", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, src_B1_r1_diquark.get_imag()); complex_computation src_B1_Blocal_r1_diquark(&src_B1_Blocal_r1_r_diquark, &src_B1_Blocal_r1_i_diquark); - complex_expr src_B1_r1_props = src_B1_r1_prop_1 * src_B1_Blocal_r1_diquark(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); + complex_expr src_B1_r1_props = src_B1_r1_prop_1 * src_B1_Blocal_r1_diquark(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); - computation src_B1_Blocal_r1_r_props("src_B1_Blocal_r1_r_props", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, src_B1_Blocal_r1_r_props_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + src_B1_r1_props.get_real()); - computation src_B1_Blocal_r1_i_props("src_B1_Blocal_r1_i_props", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, src_B1_Blocal_r1_i_props_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + src_B1_r1_props.get_imag()); + computation src_B1_Blocal_r1_r_props("src_B1_Blocal_r1_r_props", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, src_B1_Blocal_r1_r_props_init(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + src_B1_r1_props.get_real()); + computation src_B1_Blocal_r1_i_props("src_B1_Blocal_r1_i_props", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, src_B1_Blocal_r1_i_props_init(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + src_B1_r1_props.get_imag()); complex_computation src_B1_Blocal_r1_props(&src_B1_Blocal_r1_r_props, &src_B1_Blocal_r1_i_props); - complex_expr src_B1_r1 = src_psi_B1 * src_B1_Blocal_r1_props(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr src_B1_r1 = src_psi_B1 * src_B1_Blocal_r1_props(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - computation src_B1_Blocal_r1_r_update("src_B1_Blocal_r1_r_update", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, src_B1_Blocal_r1_r_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + src_B1_r1.get_real()); - computation src_B1_Blocal_r1_i_update("src_B1_Blocal_r1_i_update", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, src_B1_Blocal_r1_i_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + src_B1_r1.get_imag()); + computation src_B1_Blocal_r1_r_update("src_B1_Blocal_r1_r_update", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, src_B1_Blocal_r1_r_init(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + src_B1_r1.get_real()); + computation src_B1_Blocal_r1_i_update("src_B1_Blocal_r1_i_update", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, src_B1_Blocal_r1_i_init(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + src_B1_r1.get_imag()); - complex_expr flip_src_B1_r1 = src_psi_B2 * src_B1_Blocal_r1_props(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr flip_src_B1_r1 = src_psi_B2 * src_B1_Blocal_r1_props(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - computation flip_src_B1_Blocal_r1_r_update("flip_src_B1_Blocal_r1_r_update", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_src_B1_Blocal_r1_r_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_src_B1_r1.get_real()); - computation flip_src_B1_Blocal_r1_i_update("flip_src_B1_Blocal_r1_i_update", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_src_B1_Blocal_r1_i_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_src_B1_r1.get_imag()); + computation flip_src_B1_Blocal_r1_r_update("flip_src_B1_Blocal_r1_r_update", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_src_B1_Blocal_r1_r_init(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_src_B1_r1.get_real()); + computation flip_src_B1_Blocal_r1_i_update("flip_src_B1_Blocal_r1_i_update", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_src_B1_Blocal_r1_i_init(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_src_B1_r1.get_imag()); // Computing src_B1_Blocal_r2 - computation src_B1_Blocal_r2_r_init("src_B1_Blocal_r2_r_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation src_B1_Blocal_r2_i_init("src_B1_Blocal_r2_i_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation src_B1_Blocal_r2_r_init("src_B1_Blocal_r2_r_init", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation src_B1_Blocal_r2_i_init("src_B1_Blocal_r2_i_init", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); complex_computation src_B1_Blocal_r2_init(&src_B1_Blocal_r2_r_init, &src_B1_Blocal_r2_i_init); - computation flip_src_B1_Blocal_r2_r_init("flip_src_B1_Blocal_r2_r_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_src_B1_Blocal_r2_i_init("flip_src_B1_Blocal_r2_i_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_src_B1_Blocal_r2_r_init("flip_src_B1_Blocal_r2_r_init", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_src_B1_Blocal_r2_i_init("flip_src_B1_Blocal_r2_i_init", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); complex_computation flip_src_B1_Blocal_r2_init(&flip_src_B1_Blocal_r2_r_init, &flip_src_B1_Blocal_r2_i_init); - complex_expr src_B1_r2_prop_0 = B1_prop(0, t, iCprime, iSprime, src_color_weights(1, wnumBlock, 0), src_spin_weights(1, wnumBlock, 0), x_out*sites_per_rank+x_in, y); - complex_expr src_B1_r2_prop_2 = B1_prop(2, t, kCprime, kSprime, src_color_weights(1, wnumBlock, 2), src_spin_weights(1, wnumBlock, 2), x_out*sites_per_rank+x_in, y); - complex_expr src_B1_r2_prop_0p = B1_prop(0, t, kCprime, kSprime, src_color_weights(1, wnumBlock, 0), src_spin_weights(1, wnumBlock, 0), x_out*sites_per_rank+x_in, y); - complex_expr src_B1_r2_prop_2p = B1_prop(2, t, iCprime, iSprime, src_color_weights(1, wnumBlock, 2), src_spin_weights(1, wnumBlock, 2), x_out*sites_per_rank+x_in, y); - complex_expr src_B1_r2_prop_1 = B1_prop(1, t, jCprime, jSprime, src_color_weights(1, wnumBlock, 1), src_spin_weights(1, wnumBlock, 1), x_out*sites_per_rank+x_in, y); + complex_expr src_B1_r2_prop_0 = B1_prop(0, t, iCprime, iSprime, src_color_weights(0, 1, msc1, wnumBlock, 0), src_spin_weights(0, 1, msc1, wnumBlock, 0), x_out*sites_per_rank+x_in, y); + complex_expr src_B1_r2_prop_1 = B1_prop(1, t, jCprime, jSprime, src_color_weights(0, 1, msc1, wnumBlock, 1), src_spin_weights(0, 1, msc1, wnumBlock, 1), x_out*sites_per_rank+x_in, y); + complex_expr src_B1_r2_prop_2 = B1_prop(2, t, kCprime, kSprime, src_color_weights(0, 1, msc1, wnumBlock, 2), src_spin_weights(0, 1, msc1, wnumBlock, 2), x_out*sites_per_rank+x_in, y); - complex_expr src_B1_r2_diquark = ( src_B1_r2_prop_0 * src_B1_r2_prop_2 ) * src_weights(1, wnumBlock); + complex_expr src_B1_r2_diquark = ( src_B1_r2_prop_0 * src_B1_r2_prop_2 ) * src_weights(0, 1, msc1, wnumBlock); - computation src_B1_Blocal_r2_r_props_init("src_B1_Blocal_r2_r_props_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation src_B1_Blocal_r2_i_props_init("src_B1_Blocal_r2_i_props_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation src_B1_Blocal_r2_r_props_init("src_B1_Blocal_r2_r_props_init", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation src_B1_Blocal_r2_i_props_init("src_B1_Blocal_r2_i_props_init", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation src_B1_Blocal_r2_r_diquark("src_B1_Blocal_r2_r_diquark", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, src_B1_r2_diquark.get_real()); - computation src_B1_Blocal_r2_i_diquark("src_B1_Blocal_r2_i_diquark", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, src_B1_r2_diquark.get_imag()); + computation src_B1_Blocal_r2_r_diquark("src_B1_Blocal_r2_r_diquark", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, src_B1_r2_diquark.get_real()); + computation src_B1_Blocal_r2_i_diquark("src_B1_Blocal_r2_i_diquark", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, src_B1_r2_diquark.get_imag()); complex_computation src_B1_Blocal_r2_diquark(&src_B1_Blocal_r2_r_diquark, &src_B1_Blocal_r2_i_diquark); - complex_expr src_B1_r2_props = src_B1_r2_prop_1 * src_B1_Blocal_r2_diquark(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); + complex_expr src_B1_r2_props = src_B1_r2_prop_1 * src_B1_Blocal_r2_diquark(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); - computation src_B1_Blocal_r2_r_props("src_B1_Blocal_r2_r_props", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, src_B1_Blocal_r2_r_props_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + src_B1_r2_props.get_real()); - computation src_B1_Blocal_r2_i_props("src_B1_Blocal_r2_i_props", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, src_B1_Blocal_r2_i_props_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + src_B1_r2_props.get_imag()); + computation src_B1_Blocal_r2_r_props("src_B1_Blocal_r2_r_props", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, src_B1_Blocal_r2_r_props_init(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + src_B1_r2_props.get_real()); + computation src_B1_Blocal_r2_i_props("src_B1_Blocal_r2_i_props", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, src_B1_Blocal_r2_i_props_init(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + src_B1_r2_props.get_imag()); complex_computation src_B1_Blocal_r2_props(&src_B1_Blocal_r2_r_props, &src_B1_Blocal_r2_i_props); - complex_expr src_B1_r2 = src_psi_B1 * src_B1_Blocal_r2_props(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr src_B1_r2 = src_psi_B1 * src_B1_Blocal_r2_props(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - computation src_B1_Blocal_r2_r_update("src_B1_Blocal_r2_r_update", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, src_B1_Blocal_r2_r_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + src_B1_r2.get_real()); - computation src_B1_Blocal_r2_i_update("src_B1_Blocal_r2_i_update", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, src_B1_Blocal_r2_i_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + src_B1_r2.get_imag()); + computation src_B1_Blocal_r2_r_update("src_B1_Blocal_r2_r_update", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, src_B1_Blocal_r2_r_init(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + src_B1_r2.get_real()); + computation src_B1_Blocal_r2_i_update("src_B1_Blocal_r2_i_update", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, src_B1_Blocal_r2_i_init(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + src_B1_r2.get_imag()); - complex_expr flip_src_B1_r2 = src_psi_B2 * src_B1_Blocal_r2_props(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr flip_src_B1_r2 = src_psi_B2 * src_B1_Blocal_r2_props(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - computation flip_src_B1_Blocal_r2_r_update("flip_src_B1_Blocal_r2_r_update", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_src_B1_Blocal_r2_r_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_src_B1_r2.get_real()); - computation flip_src_B1_Blocal_r2_i_update("flip_src_B1_Blocal_r2_i_update", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_src_B1_Blocal_r2_i_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_src_B1_r2.get_imag()); + computation flip_src_B1_Blocal_r2_r_update("flip_src_B1_Blocal_r2_r_update", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_src_B1_Blocal_r2_r_init(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_src_B1_r2.get_real()); + computation flip_src_B1_Blocal_r2_i_update("flip_src_B1_Blocal_r2_i_update", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_src_B1_Blocal_r2_i_init(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_src_B1_r2.get_imag()); // Computing src_B2_Blocal_r1 - computation src_B2_Blocal_r1_r_init("src_B2_Blocal_r1_r_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation src_B2_Blocal_r1_i_init("src_B2_Blocal_r1_i_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation src_B2_Blocal_r1_r_init("src_B2_Blocal_r1_r_init", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation src_B2_Blocal_r1_i_init("src_B2_Blocal_r1_i_init", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); complex_computation src_B2_Blocal_r1_init(&src_B2_Blocal_r1_r_init, &src_B2_Blocal_r1_i_init); - computation flip_src_B2_Blocal_r1_r_init("flip_src_B2_Blocal_r1_r_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_src_B2_Blocal_r1_i_init("flip_src_B2_Blocal_r1_i_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_src_B2_Blocal_r1_r_init("flip_src_B2_Blocal_r1_r_init", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_src_B2_Blocal_r1_i_init("flip_src_B2_Blocal_r1_i_init", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); complex_computation flip_src_B2_Blocal_r1_init(&flip_src_B2_Blocal_r1_r_init, &flip_src_B2_Blocal_r1_i_init); - complex_expr src_B2_r1_prop_0 = B2_prop(0, t, iCprime, iSprime, src_color_weights(0, wnumBlock, 0), src_spin_weights(0, wnumBlock, 0), x_out*sites_per_rank+x_in, y); - complex_expr src_B2_r1_prop_2 = B2_prop(2, t, kCprime, kSprime, src_color_weights(0, wnumBlock, 2), src_spin_weights(0, wnumBlock, 2), x_out*sites_per_rank+x_in, y); - complex_expr src_B2_r1_prop_1 = B2_prop(1, t, jCprime, jSprime, src_color_weights(0, wnumBlock, 1), src_spin_weights(0, wnumBlock, 1), x_out*sites_per_rank+x_in, y); + complex_expr src_B2_r1_prop_0 = B2_prop(0, t, iCprime, iSprime, src_color_weights(1, 0, msc1, wnumBlock, 0), src_spin_weights(1, 0, msc1, wnumBlock, 0), x_out*sites_per_rank+x_in, y); + complex_expr src_B2_r1_prop_1 = B2_prop(1, t, jCprime, jSprime, src_color_weights(1, 0, msc1, wnumBlock, 1), src_spin_weights(1, 0, msc1, wnumBlock, 1), x_out*sites_per_rank+x_in, y); + complex_expr src_B2_r1_prop_2 = B2_prop(2, t, kCprime, kSprime, src_color_weights(1, 0, msc1, wnumBlock, 2), src_spin_weights(1, 0, msc1, wnumBlock, 2), x_out*sites_per_rank+x_in, y); - complex_expr src_B2_r1_diquark = ( src_B2_r1_prop_0 * src_B2_r1_prop_2 ) * src_weights(0, wnumBlock); + complex_expr src_B2_r1_diquark = ( src_B2_r1_prop_0 * src_B2_r1_prop_2 ) * src_weights(1, 0, msc1, wnumBlock); - computation src_B2_Blocal_r1_r_props_init("src_B2_Blocal_r1_r_props_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation src_B2_Blocal_r1_i_props_init("src_B2_Blocal_r1_i_props_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation src_B2_Blocal_r1_r_props_init("src_B2_Blocal_r1_r_props_init", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation src_B2_Blocal_r1_i_props_init("src_B2_Blocal_r1_i_props_init", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation src_B2_Blocal_r1_r_diquark("src_B2_Blocal_r1_r_diquark", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, src_B2_r1_diquark.get_real()); - computation src_B2_Blocal_r1_i_diquark("src_B2_Blocal_r1_i_diquark", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, src_B2_r1_diquark.get_imag()); + computation src_B2_Blocal_r1_r_diquark("src_B2_Blocal_r1_r_diquark", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, src_B2_r1_diquark.get_real()); + computation src_B2_Blocal_r1_i_diquark("src_B2_Blocal_r1_i_diquark", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, src_B2_r1_diquark.get_imag()); complex_computation src_B2_Blocal_r1_diquark(&src_B2_Blocal_r1_r_diquark, &src_B2_Blocal_r1_i_diquark); - complex_expr src_B2_r1_props = src_B2_r1_prop_1 * src_B2_Blocal_r1_diquark(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); + complex_expr src_B2_r1_props = src_B2_r1_prop_1 * src_B2_Blocal_r1_diquark(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); - computation src_B2_Blocal_r1_r_props("src_B2_Blocal_r1_r_props", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, src_B2_Blocal_r1_r_props_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + src_B2_r1_props.get_real()); - computation src_B2_Blocal_r1_i_props("src_B2_Blocal_r1_i_props", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, src_B2_Blocal_r1_i_props_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + src_B2_r1_props.get_imag()); + computation src_B2_Blocal_r1_r_props("src_B2_Blocal_r1_r_props", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, src_B2_Blocal_r1_r_props_init(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + src_B2_r1_props.get_real()); + computation src_B2_Blocal_r1_i_props("src_B2_Blocal_r1_i_props", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, src_B2_Blocal_r1_i_props_init(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + src_B2_r1_props.get_imag()); complex_computation src_B2_Blocal_r1_props(&src_B2_Blocal_r1_r_props, &src_B2_Blocal_r1_i_props); - complex_expr src_B2_r1 = src_psi_B2 * src_B2_Blocal_r1_props(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr src_B2_r1 = src_psi_B2 * src_B2_Blocal_r1_props(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - computation src_B2_Blocal_r1_r_update("src_B2_Blocal_r1_r_update", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, src_B2_Blocal_r1_r_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + src_B2_r1.get_real()); - computation src_B2_Blocal_r1_i_update("src_B2_Blocal_r1_i_update", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, src_B2_Blocal_r1_i_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + src_B2_r1.get_imag()); + computation src_B2_Blocal_r1_r_update("src_B2_Blocal_r1_r_update", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, src_B2_Blocal_r1_r_init(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + src_B2_r1.get_real()); + computation src_B2_Blocal_r1_i_update("src_B2_Blocal_r1_i_update", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, src_B2_Blocal_r1_i_init(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + src_B2_r1.get_imag()); - complex_expr flip_src_B2_r1 = src_psi_B1 * src_B2_Blocal_r1_props(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr flip_src_B2_r1 = src_psi_B1 * src_B2_Blocal_r1_props(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - computation flip_src_B2_Blocal_r1_r_update("flip_src_B2_Blocal_r1_r_update", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_src_B2_Blocal_r1_r_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_src_B2_r1.get_real()); - computation flip_src_B2_Blocal_r1_i_update("flip_src_B2_Blocal_r1_i_update", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_src_B2_Blocal_r1_i_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_src_B2_r1.get_imag()); + computation flip_src_B2_Blocal_r1_r_update("flip_src_B2_Blocal_r1_r_update", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_src_B2_Blocal_r1_r_init(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_src_B2_r1.get_real()); + computation flip_src_B2_Blocal_r1_i_update("flip_src_B2_Blocal_r1_i_update", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_src_B2_Blocal_r1_i_init(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_src_B2_r1.get_imag()); // Computing src_B2_Blocal_r2 - computation src_B2_Blocal_r2_r_init("src_B2_Blocal_r2_r_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation src_B2_Blocal_r2_i_init("src_B2_Blocal_r2_i_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation src_B2_Blocal_r2_r_init("src_B2_Blocal_r2_r_init", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation src_B2_Blocal_r2_i_init("src_B2_Blocal_r2_i_init", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); complex_computation src_B2_Blocal_r2_init(&src_B2_Blocal_r2_r_init, &src_B2_Blocal_r2_i_init); - computation flip_src_B2_Blocal_r2_r_init("flip_src_B2_Blocal_r2_r_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_src_B2_Blocal_r2_i_init("flip_src_B2_Blocal_r2_i_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_src_B2_Blocal_r2_r_init("flip_src_B2_Blocal_r2_r_init", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_src_B2_Blocal_r2_i_init("flip_src_B2_Blocal_r2_i_init", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); complex_computation flip_src_B2_Blocal_r2_init(&flip_src_B2_Blocal_r2_r_init, &flip_src_B2_Blocal_r2_i_init); - complex_expr src_B2_r2_prop_0 = B2_prop(0, t, iCprime, iSprime, src_color_weights(1, wnumBlock, 0), src_spin_weights(1, wnumBlock, 0), x_out*sites_per_rank+x_in, y); - complex_expr src_B2_r2_prop_2 = B2_prop(2, t, kCprime, kSprime, src_color_weights(1, wnumBlock, 2), src_spin_weights(1, wnumBlock, 2), x_out*sites_per_rank+x_in, y); - complex_expr src_B2_r2_prop_1 = B2_prop(1, t, jCprime, jSprime, src_color_weights(1, wnumBlock, 1), src_spin_weights(1, wnumBlock, 1), x_out*sites_per_rank+x_in, y); + complex_expr src_B2_r2_prop_0 = B2_prop(0, t, iCprime, iSprime, src_color_weights(1, 1, msc1, wnumBlock, 0), src_spin_weights(1, 1, msc1, wnumBlock, 0), x_out*sites_per_rank+x_in, y); + complex_expr src_B2_r2_prop_1 = B2_prop(1, t, jCprime, jSprime, src_color_weights(1, 1, msc1, wnumBlock, 1), src_spin_weights(1, 1, msc1, wnumBlock, 1), x_out*sites_per_rank+x_in, y); + complex_expr src_B2_r2_prop_2 = B2_prop(2, t, kCprime, kSprime, src_color_weights(1, 1, msc1, wnumBlock, 2), src_spin_weights(1, 1, msc1, wnumBlock, 2), x_out*sites_per_rank+x_in, y); - complex_expr src_B2_r2_diquark = ( src_B2_r2_prop_0 * src_B2_r2_prop_2 ) * src_weights(1, wnumBlock); + complex_expr src_B2_r2_diquark = ( src_B2_r2_prop_0 * src_B2_r2_prop_2 ) * src_weights(1, 1, msc1, wnumBlock); - computation src_B2_Blocal_r2_r_props_init("src_B2_Blocal_r2_r_props_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation src_B2_Blocal_r2_i_props_init("src_B2_Blocal_r2_i_props_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation src_B2_Blocal_r2_r_props_init("src_B2_Blocal_r2_r_props_init", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation src_B2_Blocal_r2_i_props_init("src_B2_Blocal_r2_i_props_init", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation src_B2_Blocal_r2_r_diquark("src_B2_Blocal_r2_r_diquark", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, src_B2_r2_diquark.get_real()); - computation src_B2_Blocal_r2_i_diquark("src_B2_Blocal_r2_i_diquark", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, src_B2_r2_diquark.get_imag()); + computation src_B2_Blocal_r2_r_diquark("src_B2_Blocal_r2_r_diquark", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, src_B2_r2_diquark.get_real()); + computation src_B2_Blocal_r2_i_diquark("src_B2_Blocal_r2_i_diquark", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, src_B2_r2_diquark.get_imag()); complex_computation src_B2_Blocal_r2_diquark(&src_B2_Blocal_r2_r_diquark, &src_B2_Blocal_r2_i_diquark); - complex_expr src_B2_r2_props = src_B2_r2_prop_1 * src_B2_Blocal_r2_diquark(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); + complex_expr src_B2_r2_props = src_B2_r2_prop_1 * src_B2_Blocal_r2_diquark(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); - computation src_B2_Blocal_r2_r_props("src_B2_Blocal_r2_r_props", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, src_B2_Blocal_r2_r_props_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + src_B2_r2_props.get_real()); - computation src_B2_Blocal_r2_i_props("src_B2_Blocal_r2_i_props", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, src_B2_Blocal_r2_i_props_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + src_B2_r2_props.get_imag()); + computation src_B2_Blocal_r2_r_props("src_B2_Blocal_r2_r_props", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, src_B2_Blocal_r2_r_props_init(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + src_B2_r2_props.get_real()); + computation src_B2_Blocal_r2_i_props("src_B2_Blocal_r2_i_props", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, src_B2_Blocal_r2_i_props_init(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + src_B2_r2_props.get_imag()); complex_computation src_B2_Blocal_r2_props(&src_B2_Blocal_r2_r_props, &src_B2_Blocal_r2_i_props); - complex_expr src_B2_r2 = src_psi_B2 * src_B2_Blocal_r2_props(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr src_B2_r2 = src_psi_B2 * src_B2_Blocal_r2_props(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - computation src_B2_Blocal_r2_r_update("src_B2_Blocal_r2_r_update", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, src_B2_Blocal_r2_r_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + src_B2_r2.get_real()); - computation src_B2_Blocal_r2_i_update("src_B2_Blocal_r2_i_update", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, src_B2_Blocal_r2_i_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + src_B2_r2.get_imag()); + computation src_B2_Blocal_r2_r_update("src_B2_Blocal_r2_r_update", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, src_B2_Blocal_r2_r_init(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + src_B2_r2.get_real()); + computation src_B2_Blocal_r2_i_update("src_B2_Blocal_r2_i_update", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, src_B2_Blocal_r2_i_init(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + src_B2_r2.get_imag()); - complex_expr flip_src_B2_r2 = src_psi_B1 * src_B2_Blocal_r2_props(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr flip_src_B2_r2 = src_psi_B1 * src_B2_Blocal_r2_props(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - computation flip_src_B2_Blocal_r2_r_update("flip_src_B2_Blocal_r2_r_update", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_src_B2_Blocal_r2_r_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_src_B2_r2.get_real()); - computation flip_src_B2_Blocal_r2_i_update("flip_src_B2_Blocal_r2_i_update", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_src_B2_Blocal_r2_i_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_src_B2_r2.get_imag()); + computation flip_src_B2_Blocal_r2_r_update("flip_src_B2_Blocal_r2_r_update", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_src_B2_Blocal_r2_r_init(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_src_B2_r2.get_real()); + computation flip_src_B2_Blocal_r2_i_update("flip_src_B2_Blocal_r2_i_update", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_src_B2_Blocal_r2_i_init(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_src_B2_r2.get_imag()); // Computing snk_B1_Blocal_r1 - computation snk_B1_Blocal_r1_r_init("snk_B1_Blocal_r1_r_init", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); - computation snk_B1_Blocal_r1_i_init("snk_B1_Blocal_r1_i_init", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); + computation snk_B1_Blocal_r1_r_init("snk_B1_Blocal_r1_r_init", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); + computation snk_B1_Blocal_r1_i_init("snk_B1_Blocal_r1_i_init", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); complex_computation snk_B1_Blocal_r1_init(&snk_B1_Blocal_r1_r_init, &snk_B1_Blocal_r1_i_init); - computation flip_snk_B1_Blocal_r1_r_init("flip_snk_B1_Blocal_r1_r_init", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); - computation flip_snk_B1_Blocal_r1_i_init("flip_snk_B1_Blocal_r1_i_init", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); + computation flip_snk_B1_Blocal_r1_r_init("flip_snk_B1_Blocal_r1_r_init", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); + computation flip_snk_B1_Blocal_r1_i_init("flip_snk_B1_Blocal_r1_i_init", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); complex_computation flip_snk_B1_Blocal_r1_init(&flip_snk_B1_Blocal_r1_r_init, &flip_snk_B1_Blocal_r1_i_init); - complex_expr snk_B1_r1_prop_0 = B1_prop(0, t, src_color_weights(0, wnumBlock, 0), src_spin_weights(0, wnumBlock, 0), iCprime, iSprime, x, y_out*src_sites_per_rank+y_in); - complex_expr snk_B1_r1_prop_2 = B1_prop(2, t, src_color_weights(0, wnumBlock, 2), src_spin_weights(0, wnumBlock, 2), kCprime, kSprime, x, y_out*src_sites_per_rank+y_in); - complex_expr snk_B1_r1_prop_1 = B1_prop(1, t, src_color_weights(0, wnumBlock, 1), src_spin_weights(0, wnumBlock, 1), jCprime, jSprime, x, y_out*src_sites_per_rank+y_in); + complex_expr snk_B1_r1_prop_0 = B1_prop(0, t, src_color_weights(0, 0, nsc1, wnumBlock, 0), src_spin_weights(0, 0, nsc1, wnumBlock, 0), iCprime, iSprime, x, y_out*src_sites_per_rank+y_in); + complex_expr snk_B1_r1_prop_1 = B1_prop(1, t, src_color_weights(0, 0, nsc1, wnumBlock, 1), src_spin_weights(0, 0, nsc1, wnumBlock, 1), jCprime, jSprime, x, y_out*src_sites_per_rank+y_in); + complex_expr snk_B1_r1_prop_2 = B1_prop(2, t, src_color_weights(0, 0, nsc1, wnumBlock, 2), src_spin_weights(0, 0, nsc1, wnumBlock, 2), kCprime, kSprime, x, y_out*src_sites_per_rank+y_in); - complex_expr snk_B1_r1_diquark = ( snk_B1_r1_prop_0 * snk_B1_r1_prop_2 ) * src_weights(0, wnumBlock); + complex_expr snk_B1_r1_diquark = ( snk_B1_r1_prop_0 * snk_B1_r1_prop_2 ) * src_weights(0, 0, nsc1, wnumBlock); - computation snk_B1_Blocal_r1_r_props_init("snk_B1_Blocal_r1_r_props_init", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime}, expr((double) 0)); - computation snk_B1_Blocal_r1_i_props_init("snk_B1_Blocal_r1_i_props_init", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime}, expr((double) 0)); + computation snk_B1_Blocal_r1_r_props_init("snk_B1_Blocal_r1_r_props_init", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime}, expr((double) 0)); + computation snk_B1_Blocal_r1_i_props_init("snk_B1_Blocal_r1_i_props_init", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime}, expr((double) 0)); - computation snk_B1_Blocal_r1_r_diquark("snk_B1_Blocal_r1_r_diquark", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, wnumBlock}, snk_B1_r1_diquark.get_real()); - computation snk_B1_Blocal_r1_i_diquark("snk_B1_Blocal_r1_i_diquark", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, wnumBlock}, snk_B1_r1_diquark.get_imag()); + computation snk_B1_Blocal_r1_r_diquark("snk_B1_Blocal_r1_r_diquark", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, wnumBlock}, snk_B1_r1_diquark.get_real()); + computation snk_B1_Blocal_r1_i_diquark("snk_B1_Blocal_r1_i_diquark", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, wnumBlock}, snk_B1_r1_diquark.get_imag()); complex_computation snk_B1_Blocal_r1_diquark(&snk_B1_Blocal_r1_r_diquark, &snk_B1_Blocal_r1_i_diquark); - complex_expr snk_B1_r1_props = snk_B1_r1_prop_1 * snk_B1_Blocal_r1_diquark(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, wnumBlock); + complex_expr snk_B1_r1_props = snk_B1_r1_prop_1 * snk_B1_Blocal_r1_diquark(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, wnumBlock); - computation snk_B1_Blocal_r1_r_props("snk_B1_Blocal_r1_r_props", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, wnumBlock, jCprime, jSprime}, snk_B1_Blocal_r1_r_props_init(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime) + snk_B1_r1_props.get_real()); - computation snk_B1_Blocal_r1_i_props("snk_B1_Blocal_r1_i_props", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, wnumBlock, jCprime, jSprime}, snk_B1_Blocal_r1_i_props_init(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime) + snk_B1_r1_props.get_imag()); + computation snk_B1_Blocal_r1_r_props("snk_B1_Blocal_r1_r_props", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, wnumBlock, jCprime, jSprime}, snk_B1_Blocal_r1_r_props_init(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime) + snk_B1_r1_props.get_real()); + computation snk_B1_Blocal_r1_i_props("snk_B1_Blocal_r1_i_props", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, wnumBlock, jCprime, jSprime}, snk_B1_Blocal_r1_i_props_init(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime) + snk_B1_r1_props.get_imag()); complex_computation snk_B1_Blocal_r1_props(&snk_B1_Blocal_r1_r_props, &snk_B1_Blocal_r1_i_props); - complex_expr snk_B1_r1 = snk_psi_B1 * snk_B1_Blocal_r1_props(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, Nw-1, jCprime, jSprime); + complex_expr snk_B1_r1 = snk_psi_B1 * snk_B1_Blocal_r1_props(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, Nw-1, jCprime, jSprime); - computation snk_B1_Blocal_r1_r_update("snk_B1_Blocal_r1_r_update", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, snk_B1_Blocal_r1_r_init(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + snk_B1_r1.get_real()); - computation snk_B1_Blocal_r1_i_update("snk_B1_Blocal_r1_i_update", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, snk_B1_Blocal_r1_i_init(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + snk_B1_r1.get_imag()); + computation snk_B1_Blocal_r1_r_update("snk_B1_Blocal_r1_r_update", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, snk_B1_Blocal_r1_r_init(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + snk_B1_r1.get_real()); + computation snk_B1_Blocal_r1_i_update("snk_B1_Blocal_r1_i_update", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, snk_B1_Blocal_r1_i_init(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + snk_B1_r1.get_imag()); - complex_expr flip_snk_B1_r1 = snk_psi_B2 * snk_B1_Blocal_r1_props(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, Nw-1, jCprime, jSprime); + complex_expr flip_snk_B1_r1 = snk_psi_B2 * snk_B1_Blocal_r1_props(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, Nw-1, jCprime, jSprime); - computation flip_snk_B1_Blocal_r1_r_update("flip_snk_B1_Blocal_r1_r_update", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, flip_snk_B1_Blocal_r1_r_init(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + flip_snk_B1_r1.get_real()); - computation flip_snk_B1_Blocal_r1_i_update("flip_snk_B1_Blocal_r1_i_update", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, flip_snk_B1_Blocal_r1_i_init(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + flip_snk_B1_r1.get_imag()); + computation flip_snk_B1_Blocal_r1_r_update("flip_snk_B1_Blocal_r1_r_update", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, flip_snk_B1_Blocal_r1_r_init(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + flip_snk_B1_r1.get_real()); + computation flip_snk_B1_Blocal_r1_i_update("flip_snk_B1_Blocal_r1_i_update", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, flip_snk_B1_Blocal_r1_i_init(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + flip_snk_B1_r1.get_imag()); // Computing snk_B1_Blocal_r2 - computation snk_B1_Blocal_r2_r_init("snk_B1_Blocal_r2_r_init", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); - computation snk_B1_Blocal_r2_i_init("snk_B1_Blocal_r2_i_init", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); + computation snk_B1_Blocal_r2_r_init("snk_B1_Blocal_r2_r_init", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); + computation snk_B1_Blocal_r2_i_init("snk_B1_Blocal_r2_i_init", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); complex_computation snk_B1_Blocal_r2_init(&snk_B1_Blocal_r2_r_init, &snk_B1_Blocal_r2_i_init); - computation flip_snk_B1_Blocal_r2_r_init("flip_snk_B1_Blocal_r2_r_init", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); - computation flip_snk_B1_Blocal_r2_i_init("flip_snk_B1_Blocal_r2_i_init", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); + computation flip_snk_B1_Blocal_r2_r_init("flip_snk_B1_Blocal_r2_r_init", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); + computation flip_snk_B1_Blocal_r2_i_init("flip_snk_B1_Blocal_r2_i_init", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); complex_computation flip_snk_B1_Blocal_r2_init(&flip_snk_B1_Blocal_r2_r_init, &flip_snk_B1_Blocal_r2_i_init); - complex_expr snk_B1_r2_prop_0 = B1_prop(0, t, src_color_weights(1, wnumBlock, 0), src_spin_weights(1, wnumBlock, 0), iCprime, iSprime, x, y_out*src_sites_per_rank+y_in); - complex_expr snk_B1_r2_prop_2 = B1_prop(2, t, src_color_weights(1, wnumBlock, 2), src_spin_weights(1, wnumBlock, 2), kCprime, kSprime, x, y_out*src_sites_per_rank+y_in); - complex_expr snk_B1_r2_prop_1 = B1_prop(1, t, src_color_weights(1, wnumBlock, 1), src_spin_weights(1, wnumBlock, 1), jCprime, jSprime, x, y_out*src_sites_per_rank+y_in); + complex_expr snk_B1_r2_prop_0 = B1_prop(0, t, src_color_weights(0, 1, nsc1, wnumBlock, 0), src_spin_weights(0, 1, nsc1, wnumBlock, 0), iCprime, iSprime, x, y_out*src_sites_per_rank+y_in); + complex_expr snk_B1_r2_prop_1 = B1_prop(1, t, src_color_weights(0, 1, nsc1, wnumBlock, 1), src_spin_weights(0, 1, nsc1, wnumBlock, 1), jCprime, jSprime, x, y_out*src_sites_per_rank+y_in); + complex_expr snk_B1_r2_prop_2 = B1_prop(2, t, src_color_weights(0, 1, nsc1, wnumBlock, 2), src_spin_weights(0, 1, nsc1, wnumBlock, 2), kCprime, kSprime, x, y_out*src_sites_per_rank+y_in); - complex_expr snk_B1_r2_diquark = ( snk_B1_r2_prop_0 * snk_B1_r2_prop_2 ) * src_weights(1, wnumBlock); + complex_expr snk_B1_r2_diquark = ( snk_B1_r2_prop_0 * snk_B1_r2_prop_2 ) * src_weights(0, 1, nsc1, wnumBlock); - computation snk_B1_Blocal_r2_r_props_init("snk_B1_Blocal_r2_r_props_init", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime}, expr((double) 0)); - computation snk_B1_Blocal_r2_i_props_init("snk_B1_Blocal_r2_i_props_init", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime}, expr((double) 0)); + computation snk_B1_Blocal_r2_r_props_init("snk_B1_Blocal_r2_r_props_init", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime}, expr((double) 0)); + computation snk_B1_Blocal_r2_i_props_init("snk_B1_Blocal_r2_i_props_init", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime}, expr((double) 0)); - computation snk_B1_Blocal_r2_r_diquark("snk_B1_Blocal_r2_r_diquark", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, wnumBlock}, snk_B1_r2_diquark.get_real()); - computation snk_B1_Blocal_r2_i_diquark("snk_B1_Blocal_r2_i_diquark", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, wnumBlock}, snk_B1_r2_diquark.get_imag()); + computation snk_B1_Blocal_r2_r_diquark("snk_B1_Blocal_r2_r_diquark", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, wnumBlock}, snk_B1_r2_diquark.get_real()); + computation snk_B1_Blocal_r2_i_diquark("snk_B1_Blocal_r2_i_diquark", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, wnumBlock}, snk_B1_r2_diquark.get_imag()); complex_computation snk_B1_Blocal_r2_diquark(&snk_B1_Blocal_r2_r_diquark, &snk_B1_Blocal_r2_i_diquark); - complex_expr snk_B1_r2_props = snk_B1_r2_prop_1 * snk_B1_Blocal_r2_diquark(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, wnumBlock); + complex_expr snk_B1_r2_props = snk_B1_r2_prop_1 * snk_B1_Blocal_r2_diquark(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, wnumBlock); - computation snk_B1_Blocal_r2_r_props("snk_B1_Blocal_r2_r_props", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, wnumBlock, jCprime, jSprime}, snk_B1_Blocal_r2_r_props_init(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime) + snk_B1_r2_props.get_real()); - computation snk_B1_Blocal_r2_i_props("snk_B1_Blocal_r2_i_props", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, wnumBlock, jCprime, jSprime}, snk_B1_Blocal_r2_i_props_init(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime) + snk_B1_r2_props.get_imag()); + computation snk_B1_Blocal_r2_r_props("snk_B1_Blocal_r2_r_props", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, wnumBlock, jCprime, jSprime}, snk_B1_Blocal_r2_r_props_init(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime) + snk_B1_r2_props.get_real()); + computation snk_B1_Blocal_r2_i_props("snk_B1_Blocal_r2_i_props", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, wnumBlock, jCprime, jSprime}, snk_B1_Blocal_r2_i_props_init(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime) + snk_B1_r2_props.get_imag()); complex_computation snk_B1_Blocal_r2_props(&snk_B1_Blocal_r2_r_props, &snk_B1_Blocal_r2_i_props); - complex_expr snk_B1_r2 = snk_psi_B1 * snk_B1_Blocal_r2_props(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, Nw-1, jCprime, jSprime); + complex_expr snk_B1_r2 = snk_psi_B1 * snk_B1_Blocal_r2_props(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, Nw-1, jCprime, jSprime); - computation snk_B1_Blocal_r2_r_update("snk_B1_Blocal_r2_r_update", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, snk_B1_Blocal_r2_r_init(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + snk_B1_r2.get_real()); - computation snk_B1_Blocal_r2_i_update("snk_B1_Blocal_r2_i_update", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, snk_B1_Blocal_r2_i_init(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + snk_B1_r2.get_imag()); + computation snk_B1_Blocal_r2_r_update("snk_B1_Blocal_r2_r_update", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, snk_B1_Blocal_r2_r_init(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + snk_B1_r2.get_real()); + computation snk_B1_Blocal_r2_i_update("snk_B1_Blocal_r2_i_update", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, snk_B1_Blocal_r2_i_init(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + snk_B1_r2.get_imag()); - complex_expr flip_snk_B1_r2 = snk_psi_B2 * snk_B1_Blocal_r2_props(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, Nw-1, jCprime, jSprime); + complex_expr flip_snk_B1_r2 = snk_psi_B2 * snk_B1_Blocal_r2_props(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, Nw-1, jCprime, jSprime); - computation flip_snk_B1_Blocal_r2_r_update("flip_snk_B1_Blocal_r2_r_update", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, flip_snk_B1_Blocal_r2_r_init(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + flip_snk_B1_r2.get_real()); - computation flip_snk_B1_Blocal_r2_i_update("flip_snk_B1_Blocal_r2_i_update", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, flip_snk_B1_Blocal_r2_i_init(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + flip_snk_B1_r2.get_imag()); + computation flip_snk_B1_Blocal_r2_r_update("flip_snk_B1_Blocal_r2_r_update", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, flip_snk_B1_Blocal_r2_r_init(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + flip_snk_B1_r2.get_real()); + computation flip_snk_B1_Blocal_r2_i_update("flip_snk_B1_Blocal_r2_i_update", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, flip_snk_B1_Blocal_r2_i_init(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + flip_snk_B1_r2.get_imag()); // Computing snk_B2_Blocal_r1 - computation snk_B2_Blocal_r1_r_init("snk_B2_Blocal_r1_r_init", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); - computation snk_B2_Blocal_r1_i_init("snk_B2_Blocal_r1_i_init", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); + computation snk_B2_Blocal_r1_r_init("snk_B2_Blocal_r1_r_init", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); + computation snk_B2_Blocal_r1_i_init("snk_B2_Blocal_r1_i_init", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); complex_computation snk_B2_Blocal_r1_init(&snk_B2_Blocal_r1_r_init, &snk_B2_Blocal_r1_i_init); - computation flip_snk_B2_Blocal_r1_r_init("flip_snk_B2_Blocal_r1_r_init", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); - computation flip_snk_B2_Blocal_r1_i_init("flip_snk_B2_Blocal_r1_i_init", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); + computation flip_snk_B2_Blocal_r1_r_init("flip_snk_B2_Blocal_r1_r_init", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); + computation flip_snk_B2_Blocal_r1_i_init("flip_snk_B2_Blocal_r1_i_init", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); complex_computation flip_snk_B2_Blocal_r1_init(&flip_snk_B2_Blocal_r1_r_init, &flip_snk_B2_Blocal_r1_i_init); - complex_expr snk_B2_r1_prop_0 = B2_prop(0, t, src_color_weights(0, wnumBlock, 0), src_spin_weights(0, wnumBlock, 0), iCprime, iSprime, x, y_out*src_sites_per_rank+y_in); - complex_expr snk_B2_r1_prop_2 = B2_prop(2, t, src_color_weights(0, wnumBlock, 2), src_spin_weights(0, wnumBlock, 2), kCprime, kSprime, x, y_out*src_sites_per_rank+y_in); - complex_expr snk_B2_r1_prop_1 = B2_prop(1, t, src_color_weights(0, wnumBlock, 1), src_spin_weights(0, wnumBlock, 1), jCprime, jSprime, x, y_out*src_sites_per_rank+y_in); + complex_expr snk_B2_r1_prop_0 = B2_prop(0, t, src_color_weights(1, 0, nsc1, wnumBlock, 0), src_spin_weights(1, 0, nsc1, wnumBlock, 0), iCprime, iSprime, x, y_out*src_sites_per_rank+y_in); + complex_expr snk_B2_r1_prop_1 = B2_prop(1, t, src_color_weights(1, 0, nsc1, wnumBlock, 1), src_spin_weights(1, 0, nsc1, wnumBlock, 1), jCprime, jSprime, x, y_out*src_sites_per_rank+y_in); + complex_expr snk_B2_r1_prop_2 = B2_prop(2, t, src_color_weights(1, 0, nsc1, wnumBlock, 2), src_spin_weights(1, 0, nsc1, wnumBlock, 2), kCprime, kSprime, x, y_out*src_sites_per_rank+y_in); - complex_expr snk_B2_r1_diquark = ( snk_B2_r1_prop_0 * snk_B2_r1_prop_2 ) * src_weights(0, wnumBlock); + complex_expr snk_B2_r1_diquark = ( snk_B2_r1_prop_0 * snk_B2_r1_prop_2 ) * src_weights(1, 0, nsc1, wnumBlock); - computation snk_B2_Blocal_r1_r_props_init("snk_B2_Blocal_r1_r_props_init", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime}, expr((double) 0)); - computation snk_B2_Blocal_r1_i_props_init("snk_B2_Blocal_r1_i_props_init", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime}, expr((double) 0)); + computation snk_B2_Blocal_r1_r_props_init("snk_B2_Blocal_r1_r_props_init", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime}, expr((double) 0)); + computation snk_B2_Blocal_r1_i_props_init("snk_B2_Blocal_r1_i_props_init", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime}, expr((double) 0)); - computation snk_B2_Blocal_r1_r_diquark("snk_B2_Blocal_r1_r_diquark", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, wnumBlock}, snk_B2_r1_diquark.get_real()); - computation snk_B2_Blocal_r1_i_diquark("snk_B2_Blocal_r1_i_diquark", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, wnumBlock}, snk_B2_r1_diquark.get_imag()); + computation snk_B2_Blocal_r1_r_diquark("snk_B2_Blocal_r1_r_diquark", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, wnumBlock}, snk_B2_r1_diquark.get_real()); + computation snk_B2_Blocal_r1_i_diquark("snk_B2_Blocal_r1_i_diquark", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, wnumBlock}, snk_B2_r1_diquark.get_imag()); complex_computation snk_B2_Blocal_r1_diquark(&snk_B2_Blocal_r1_r_diquark, &snk_B2_Blocal_r1_i_diquark); - complex_expr snk_B2_r1_props = snk_B2_r1_prop_1 * snk_B2_Blocal_r1_diquark(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, wnumBlock); + complex_expr snk_B2_r1_props = snk_B2_r1_prop_1 * snk_B2_Blocal_r1_diquark(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, wnumBlock); - computation snk_B2_Blocal_r1_r_props("snk_B2_Blocal_r1_r_props", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, wnumBlock, jCprime, jSprime}, snk_B2_Blocal_r1_r_props_init(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime) + snk_B2_r1_props.get_real()); - computation snk_B2_Blocal_r1_i_props("snk_B2_Blocal_r1_i_props", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, wnumBlock, jCprime, jSprime}, snk_B2_Blocal_r1_i_props_init(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime) + snk_B2_r1_props.get_imag()); + computation snk_B2_Blocal_r1_r_props("snk_B2_Blocal_r1_r_props", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, wnumBlock, jCprime, jSprime}, snk_B2_Blocal_r1_r_props_init(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime) + snk_B2_r1_props.get_real()); + computation snk_B2_Blocal_r1_i_props("snk_B2_Blocal_r1_i_props", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, wnumBlock, jCprime, jSprime}, snk_B2_Blocal_r1_i_props_init(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime) + snk_B2_r1_props.get_imag()); complex_computation snk_B2_Blocal_r1_props(&snk_B2_Blocal_r1_r_props, &snk_B2_Blocal_r1_i_props); - complex_expr snk_B2_r1 = snk_psi_B2 * snk_B2_Blocal_r1_props(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, Nw-1, jCprime, jSprime); + complex_expr snk_B2_r1 = snk_psi_B2 * snk_B2_Blocal_r1_props(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, Nw-1, jCprime, jSprime); - computation snk_B2_Blocal_r1_r_update("snk_B2_Blocal_r1_r_update", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, snk_B2_Blocal_r1_r_init(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + snk_B2_r1.get_real()); - computation snk_B2_Blocal_r1_i_update("snk_B2_Blocal_r1_i_update", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, snk_B2_Blocal_r1_i_init(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + snk_B2_r1.get_imag()); + computation snk_B2_Blocal_r1_r_update("snk_B2_Blocal_r1_r_update", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, snk_B2_Blocal_r1_r_init(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + snk_B2_r1.get_real()); + computation snk_B2_Blocal_r1_i_update("snk_B2_Blocal_r1_i_update", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, snk_B2_Blocal_r1_i_init(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + snk_B2_r1.get_imag()); - complex_expr flip_snk_B2_r1 = snk_psi_B1 * snk_B2_Blocal_r1_props(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, Nw-1, jCprime, jSprime); + complex_expr flip_snk_B2_r1 = snk_psi_B1 * snk_B2_Blocal_r1_props(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, Nw-1, jCprime, jSprime); - computation flip_snk_B2_Blocal_r1_r_update("flip_snk_B2_Blocal_r1_r_update", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, flip_snk_B2_Blocal_r1_r_init(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + flip_snk_B2_r1.get_real()); - computation flip_snk_B2_Blocal_r1_i_update("flip_snk_B2_Blocal_r1_i_update", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, flip_snk_B2_Blocal_r1_i_init(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + flip_snk_B2_r1.get_imag()); + computation flip_snk_B2_Blocal_r1_r_update("flip_snk_B2_Blocal_r1_r_update", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, flip_snk_B2_Blocal_r1_r_init(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + flip_snk_B2_r1.get_real()); + computation flip_snk_B2_Blocal_r1_i_update("flip_snk_B2_Blocal_r1_i_update", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, flip_snk_B2_Blocal_r1_i_init(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + flip_snk_B2_r1.get_imag()); // Computing snk_B2_Blocal_r2 - computation snk_B2_Blocal_r2_r_init("snk_B2_Blocal_r2_r_init", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); - computation snk_B2_Blocal_r2_i_init("snk_B2_Blocal_r2_i_init", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); + computation snk_B2_Blocal_r2_r_init("snk_B2_Blocal_r2_r_init", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); + computation snk_B2_Blocal_r2_i_init("snk_B2_Blocal_r2_i_init", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); complex_computation snk_B2_Blocal_r2_init(&snk_B2_Blocal_r2_r_init, &snk_B2_Blocal_r2_i_init); - computation flip_snk_B2_Blocal_r2_r_init("flip_snk_B2_Blocal_r2_r_init", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); - computation flip_snk_B2_Blocal_r2_i_init("flip_snk_B2_Blocal_r2_i_init", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); + computation flip_snk_B2_Blocal_r2_r_init("flip_snk_B2_Blocal_r2_r_init", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); + computation flip_snk_B2_Blocal_r2_i_init("flip_snk_B2_Blocal_r2_i_init", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); complex_computation flip_snk_B2_Blocal_r2_init(&flip_snk_B2_Blocal_r2_r_init, &flip_snk_B2_Blocal_r2_i_init); - complex_expr snk_B2_r2_prop_0 = B2_prop(0, t, src_color_weights(1, wnumBlock, 0), src_spin_weights(1, wnumBlock, 0), iCprime, iSprime, x, y_out*src_sites_per_rank+y_in); - complex_expr snk_B2_r2_prop_2 = B2_prop(2, t, src_color_weights(1, wnumBlock, 2), src_spin_weights(1, wnumBlock, 2), kCprime, kSprime, x, y_out*src_sites_per_rank+y_in); - complex_expr snk_B2_r2_prop_1 = B2_prop(1, t, src_color_weights(1, wnumBlock, 1), src_spin_weights(1, wnumBlock, 1), jCprime, jSprime, x, y_out*src_sites_per_rank+y_in); + complex_expr snk_B2_r2_prop_0 = B2_prop(0, t, src_color_weights(1, 1, nsc1, wnumBlock, 0), src_spin_weights(1, 1, nsc1, wnumBlock, 0), iCprime, iSprime, x, y_out*src_sites_per_rank+y_in); + complex_expr snk_B2_r2_prop_1 = B2_prop(1, t, src_color_weights(1, 1, nsc1, wnumBlock, 1), src_spin_weights(1, 1, nsc1, wnumBlock, 1), jCprime, jSprime, x, y_out*src_sites_per_rank+y_in); + complex_expr snk_B2_r2_prop_2 = B2_prop(2, t, src_color_weights(1, 1, nsc1, wnumBlock, 2), src_spin_weights(1, 1, nsc1, wnumBlock, 2), kCprime, kSprime, x, y_out*src_sites_per_rank+y_in); - complex_expr snk_B2_r2_diquark = ( snk_B2_r2_prop_0 * snk_B2_r2_prop_2 ) * src_weights(1, wnumBlock); + complex_expr snk_B2_r2_diquark = ( snk_B2_r2_prop_0 * snk_B2_r2_prop_2 ) * src_weights(1, 1, nsc1, wnumBlock); - computation snk_B2_Blocal_r2_r_props_init("snk_B2_Blocal_r2_r_props_init", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime}, expr((double) 0)); - computation snk_B2_Blocal_r2_i_props_init("snk_B2_Blocal_r2_i_props_init", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime}, expr((double) 0)); + computation snk_B2_Blocal_r2_r_props_init("snk_B2_Blocal_r2_r_props_init", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime}, expr((double) 0)); + computation snk_B2_Blocal_r2_i_props_init("snk_B2_Blocal_r2_i_props_init", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime}, expr((double) 0)); - computation snk_B2_Blocal_r2_r_diquark("snk_B2_Blocal_r2_r_diquark", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, wnumBlock}, snk_B2_r2_diquark.get_real()); - computation snk_B2_Blocal_r2_i_diquark("snk_B2_Blocal_r2_i_diquark", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, wnumBlock}, snk_B2_r2_diquark.get_imag()); + computation snk_B2_Blocal_r2_r_diquark("snk_B2_Blocal_r2_r_diquark", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, wnumBlock}, snk_B2_r2_diquark.get_real()); + computation snk_B2_Blocal_r2_i_diquark("snk_B2_Blocal_r2_i_diquark", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, wnumBlock}, snk_B2_r2_diquark.get_imag()); complex_computation snk_B2_Blocal_r2_diquark(&snk_B2_Blocal_r2_r_diquark, &snk_B2_Blocal_r2_i_diquark); - complex_expr snk_B2_r2_props = snk_B2_r2_prop_1 * snk_B2_Blocal_r2_diquark(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, wnumBlock); + complex_expr snk_B2_r2_props = snk_B2_r2_prop_1 * snk_B2_Blocal_r2_diquark(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, wnumBlock); - computation snk_B2_Blocal_r2_r_props("snk_B2_Blocal_r2_r_props", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, wnumBlock, jCprime, jSprime}, snk_B2_Blocal_r2_r_props_init(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime) + snk_B2_r2_props.get_real()); - computation snk_B2_Blocal_r2_i_props("snk_B2_Blocal_r2_i_props", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, wnumBlock, jCprime, jSprime}, snk_B2_Blocal_r2_i_props_init(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime) + snk_B2_r2_props.get_imag()); + computation snk_B2_Blocal_r2_r_props("snk_B2_Blocal_r2_r_props", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, wnumBlock, jCprime, jSprime}, snk_B2_Blocal_r2_r_props_init(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime) + snk_B2_r2_props.get_real()); + computation snk_B2_Blocal_r2_i_props("snk_B2_Blocal_r2_i_props", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, wnumBlock, jCprime, jSprime}, snk_B2_Blocal_r2_i_props_init(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime) + snk_B2_r2_props.get_imag()); complex_computation snk_B2_Blocal_r2_props(&snk_B2_Blocal_r2_r_props, &snk_B2_Blocal_r2_i_props); - complex_expr snk_B2_r2 = snk_psi_B2 * snk_B2_Blocal_r2_props(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, Nw-1, jCprime, jSprime); + complex_expr snk_B2_r2 = snk_psi_B2 * snk_B2_Blocal_r2_props(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, Nw-1, jCprime, jSprime); - computation snk_B2_Blocal_r2_r_update("snk_B2_Blocal_r2_r_update", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, snk_B2_Blocal_r2_r_init(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + snk_B2_r2.get_real()); - computation snk_B2_Blocal_r2_i_update("snk_B2_Blocal_r2_i_update", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, snk_B2_Blocal_r2_i_init(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + snk_B2_r2.get_imag()); + computation snk_B2_Blocal_r2_r_update("snk_B2_Blocal_r2_r_update", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, snk_B2_Blocal_r2_r_init(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + snk_B2_r2.get_real()); + computation snk_B2_Blocal_r2_i_update("snk_B2_Blocal_r2_i_update", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, snk_B2_Blocal_r2_i_init(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + snk_B2_r2.get_imag()); - complex_expr flip_snk_B2_r2 = snk_psi_B1 * snk_B2_Blocal_r2_props(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, Nw-1, jCprime, jSprime); + complex_expr flip_snk_B2_r2 = snk_psi_B1 * snk_B2_Blocal_r2_props(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, Nw-1, jCprime, jSprime); - computation flip_snk_B2_Blocal_r2_r_update("flip_snk_B2_Blocal_r2_r_update", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, flip_snk_B2_Blocal_r2_r_init(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + flip_snk_B2_r2.get_real()); - computation flip_snk_B2_Blocal_r2_i_update("flip_snk_B2_Blocal_r2_i_update", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, flip_snk_B2_Blocal_r2_i_init(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + flip_snk_B2_r2.get_imag()); + computation flip_snk_B2_Blocal_r2_r_update("flip_snk_B2_Blocal_r2_r_update", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, flip_snk_B2_Blocal_r2_r_init(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + flip_snk_B2_r2.get_real()); + computation flip_snk_B2_Blocal_r2_i_update("flip_snk_B2_Blocal_r2_i_update", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, flip_snk_B2_Blocal_r2_i_init(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + flip_snk_B2_r2.get_imag()); /* Correlators */ @@ -899,299 +910,324 @@ void generate_function(std::string name) computation C_init_i("C_init_i", {t, x_out, rp, mpmH, r, npnH}, expr((double) 0)); // BB_BB - computation C_BB_BB_prop_init_r("C_BB_BB_prop_init_r", {t, x_out, x_in, x2, rp, m, r}, expr((double) 0)); - computation C_BB_BB_prop_init_i("C_BB_BB_prop_init_i", {t, x_out, x_in, x2, rp, m, r}, expr((double) 0)); + computation C_BB_BB_prop_init_r("C_BB_BB_prop_init_r", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1}, expr((double) 0)); + computation C_BB_BB_prop_init_i("C_BB_BB_prop_init_i", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1}, expr((double) 0)); + // b indexes the baryons at the source (b=0 means B1, b=1 means B2) b=0; // r1, b = 0 - complex_computation BB_BB_new_term_0_r1_b1("BB_BB_new_term_0_r1_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B1_Blocal_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - BB_BB_new_term_0_r1_b1.add_predicate((src_spins(rp, s, 0) == 1) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 0)); - complex_computation BB_BB_new_term_1_r1_b1("BB_BB_new_term_1_r1_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B2_Blocal_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - BB_BB_new_term_1_r1_b1.add_predicate((src_spins(rp, s, 0) == 1) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 1)); - complex_computation BB_BB_new_term_2_r1_b1("BB_BB_new_term_2_r1_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B1_Bfirst_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - BB_BB_new_term_2_r1_b1.add_predicate((src_spins(rp, s, 0) == 1) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 0)); - complex_computation BB_BB_new_term_3_r1_b1("BB_BB_new_term_3_r1_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B2_Bfirst_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - BB_BB_new_term_3_r1_b1.add_predicate((src_spins(rp, s, 0) == 1) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 1)); - complex_computation BB_BB_new_term_4_r1_b1("BB_BB_new_term_4_r1_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B1_Bsecond_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - BB_BB_new_term_4_r1_b1.add_predicate((src_spins(rp, s, 0) == 1) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 0)); - complex_computation BB_BB_new_term_5_r1_b1("BB_BB_new_term_5_r1_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B2_Bsecond_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - BB_BB_new_term_5_r1_b1.add_predicate((src_spins(rp, s, 0) == 1) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 1)); - complex_computation BB_BB_new_term_6_r1_b1("BB_BB_new_term_6_r1_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B1_Bthird_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - BB_BB_new_term_6_r1_b1.add_predicate((src_spins(rp, s, 0) == 1) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 1)); - complex_computation BB_BB_new_term_7_r1_b1("BB_BB_new_term_7_r1_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B2_Bthird_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - BB_BB_new_term_7_r1_b1.add_predicate((src_spins(rp, s, 0) == 1) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 0)); + complex_computation BB_BB_new_term_0_r1_b1("BB_BB_new_term_0_r1_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B1_Blocal_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + BB_BB_new_term_0_r1_b1.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); + complex_computation BB_BB_new_term_1_r1_b1("BB_BB_new_term_1_r1_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B1_Blocal_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + BB_BB_new_term_1_r1_b1.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation BB_BB_new_term_2_r1_b1("BB_BB_new_term_2_r1_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B1_Bfirst_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + BB_BB_new_term_2_r1_b1.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); + complex_computation BB_BB_new_term_3_r1_b1("BB_BB_new_term_3_r1_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B1_Bfirst_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + BB_BB_new_term_3_r1_b1.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation BB_BB_new_term_4_r1_b1("BB_BB_new_term_4_r1_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B1_Bsecond_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + BB_BB_new_term_4_r1_b1.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); + complex_computation BB_BB_new_term_5_r1_b1("BB_BB_new_term_5_r1_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B1_Bsecond_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + BB_BB_new_term_5_r1_b1.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation BB_BB_new_term_6_r1_b1("BB_BB_new_term_6_r1_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B1_Bthird_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + BB_BB_new_term_6_r1_b1.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation BB_BB_new_term_7_r1_b1("BB_BB_new_term_7_r1_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B1_Bthird_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + BB_BB_new_term_7_r1_b1.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); // r2, b = 0 - complex_computation BB_BB_new_term_0_r2_b1("BB_BB_new_term_0_r2_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B1_Blocal_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - BB_BB_new_term_0_r2_b1.add_predicate((src_spins(rp, s, 0) == 2) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 0)); - complex_computation BB_BB_new_term_1_r2_b1("BB_BB_new_term_1_r2_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B2_Blocal_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - BB_BB_new_term_1_r2_b1.add_predicate((src_spins(rp, s, 0) == 2) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 1)); - complex_computation BB_BB_new_term_2_r2_b1("BB_BB_new_term_2_r2_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B1_Bfirst_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - BB_BB_new_term_2_r2_b1.add_predicate((src_spins(rp, s, 0) == 2) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 0)); - complex_computation BB_BB_new_term_3_r2_b1("BB_BB_new_term_3_r2_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B2_Bfirst_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - BB_BB_new_term_3_r2_b1.add_predicate((src_spins(rp, s, 0) == 2) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 1)); - complex_computation BB_BB_new_term_4_r2_b1("BB_BB_new_term_4_r2_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B1_Bsecond_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - BB_BB_new_term_4_r2_b1.add_predicate((src_spins(rp, s, 0) == 2) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 0)); - complex_computation BB_BB_new_term_5_r2_b1("BB_BB_new_term_5_r2_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B2_Bsecond_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - BB_BB_new_term_5_r2_b1.add_predicate((src_spins(rp, s, 0) == 2) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 1)); - complex_computation BB_BB_new_term_6_r2_b1("BB_BB_new_term_6_r2_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B1_Bthird_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - BB_BB_new_term_6_r2_b1.add_predicate((src_spins(rp, s, 0) == 2) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 1)); - complex_computation BB_BB_new_term_7_r2_b1("BB_BB_new_term_7_r2_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B2_Bthird_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - BB_BB_new_term_7_r2_b1.add_predicate((src_spins(rp, s, 0) == 2) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 0)); + complex_computation BB_BB_new_term_0_r2_b1("BB_BB_new_term_0_r2_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B1_Blocal_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + BB_BB_new_term_0_r2_b1.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); + complex_computation BB_BB_new_term_1_r2_b1("BB_BB_new_term_1_r2_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B1_Blocal_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + BB_BB_new_term_1_r2_b1.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation BB_BB_new_term_2_r2_b1("BB_BB_new_term_2_r2_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B1_Bfirst_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + BB_BB_new_term_2_r2_b1.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); + complex_computation BB_BB_new_term_3_r2_b1("BB_BB_new_term_3_r2_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B1_Bfirst_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + BB_BB_new_term_3_r2_b1.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation BB_BB_new_term_4_r2_b1("BB_BB_new_term_4_r2_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B1_Bsecond_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + BB_BB_new_term_4_r2_b1.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); + complex_computation BB_BB_new_term_5_r2_b1("BB_BB_new_term_5_r2_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B1_Bsecond_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + BB_BB_new_term_5_r2_b1.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation BB_BB_new_term_6_r2_b1("BB_BB_new_term_6_r2_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B1_Bthird_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + BB_BB_new_term_6_r2_b1.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation BB_BB_new_term_7_r2_b1("BB_BB_new_term_7_r2_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B1_Bthird_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + BB_BB_new_term_7_r2_b1.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); b=1; // r1, b = 1 - complex_computation BB_BB_new_term_0_r1_b2("BB_BB_new_term_0_r1_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B1_Blocal_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - BB_BB_new_term_0_r1_b2.add_predicate((src_spins(rp, s, 1) == 1) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 0)); - complex_computation BB_BB_new_term_1_r1_b2("BB_BB_new_term_1_r1_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B2_Blocal_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - BB_BB_new_term_1_r1_b2.add_predicate((src_spins(rp, s, 1) == 1) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 1)); - complex_computation BB_BB_new_term_2_r1_b2("BB_BB_new_term_2_r1_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B1_Bfirst_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - BB_BB_new_term_2_r1_b2.add_predicate((src_spins(rp, s, 1) == 1) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 0)); - complex_computation BB_BB_new_term_3_r1_b2("BB_BB_new_term_3_r1_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B2_Bfirst_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - BB_BB_new_term_3_r1_b2.add_predicate((src_spins(rp, s, 1) == 1) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 1)); - complex_computation BB_BB_new_term_4_r1_b2("BB_BB_new_term_4_r1_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B1_Bsecond_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - BB_BB_new_term_4_r1_b2.add_predicate((src_spins(rp, s, 1) == 1) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 0)); - complex_computation BB_BB_new_term_5_r1_b2("BB_BB_new_term_5_r1_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B2_Bsecond_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - BB_BB_new_term_5_r1_b2.add_predicate((src_spins(rp, s, 1) == 1) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 1)); - complex_computation BB_BB_new_term_6_r1_b2("BB_BB_new_term_6_r1_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B1_Bthird_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - BB_BB_new_term_6_r1_b2.add_predicate((src_spins(rp, s, 1) == 1) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 1)); - complex_computation BB_BB_new_term_7_r1_b2("BB_BB_new_term_7_r1_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B2_Bthird_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - BB_BB_new_term_7_r1_b2.add_predicate((src_spins(rp, s, 1) == 1) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 0)); + complex_computation BB_BB_new_term_0_r1_b2("BB_BB_new_term_0_r1_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B2_Blocal_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + BB_BB_new_term_0_r1_b2.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); + complex_computation BB_BB_new_term_1_r1_b2("BB_BB_new_term_1_r1_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B2_Blocal_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + BB_BB_new_term_1_r1_b2.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation BB_BB_new_term_2_r1_b2("BB_BB_new_term_2_r1_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B2_Bfirst_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + BB_BB_new_term_2_r1_b2.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); + complex_computation BB_BB_new_term_3_r1_b2("BB_BB_new_term_3_r1_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B2_Bfirst_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + BB_BB_new_term_3_r1_b2.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation BB_BB_new_term_4_r1_b2("BB_BB_new_term_4_r1_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B2_Bsecond_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + BB_BB_new_term_4_r1_b2.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); + complex_computation BB_BB_new_term_5_r1_b2("BB_BB_new_term_5_r1_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B2_Bsecond_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + BB_BB_new_term_5_r1_b2.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation BB_BB_new_term_6_r1_b2("BB_BB_new_term_6_r1_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B2_Bthird_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + BB_BB_new_term_6_r1_b2.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation BB_BB_new_term_7_r1_b2("BB_BB_new_term_7_r1_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B2_Bthird_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + BB_BB_new_term_7_r1_b2.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); // r2, b = 1 - complex_computation BB_BB_new_term_0_r2_b2("BB_BB_new_term_0_r2_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B1_Blocal_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - BB_BB_new_term_0_r2_b2.add_predicate((src_spins(rp, s, 1) == 2) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 0)); - complex_computation BB_BB_new_term_1_r2_b2("BB_BB_new_term_1_r2_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B2_Blocal_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - BB_BB_new_term_1_r2_b2.add_predicate((src_spins(rp, s, 1) == 2) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 1)); - complex_computation BB_BB_new_term_2_r2_b2("BB_BB_new_term_2_r2_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B1_Bfirst_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - BB_BB_new_term_2_r2_b2.add_predicate((src_spins(rp, s, 1) == 2) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 0)); - complex_computation BB_BB_new_term_3_r2_b2("BB_BB_new_term_3_r2_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B2_Bfirst_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - BB_BB_new_term_3_r2_b2.add_predicate((src_spins(rp, s, 1) == 2) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 1)); - complex_computation BB_BB_new_term_4_r2_b2("BB_BB_new_term_4_r2_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B1_Bsecond_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - BB_BB_new_term_4_r2_b2.add_predicate((src_spins(rp, s, 1) == 2) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 0)); - complex_computation BB_BB_new_term_5_r2_b2("BB_BB_new_term_5_r2_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B2_Bsecond_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - BB_BB_new_term_5_r2_b2.add_predicate((src_spins(rp, s, 1) == 2) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 1)); - complex_computation BB_BB_new_term_6_r2_b2("BB_BB_new_term_6_r2_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B1_Bthird_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - BB_BB_new_term_6_r2_b2.add_predicate((src_spins(rp, s, 1) == 2) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 1)); - complex_computation BB_BB_new_term_7_r2_b2("BB_BB_new_term_7_r2_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B2_Bthird_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - BB_BB_new_term_7_r2_b2.add_predicate((src_spins(rp, s, 1) == 2) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 0)); - - complex_expr prefactor(cast(p_float64, sigs(nperm)) * snk_weights(r, wnum) * src_spin_block_weights(rp, s), 0.0); - - complex_expr BB_BB_term_res_b1 = BB_BB_new_term_0_r1_b1(t, x_out, x_in, x2, rp, m, r, s, nperm, wnum); - complex_expr BB_BB_term_res_b2 = BB_BB_new_term_0_r1_b2(t, x_out, x_in, x2, rp, m, r, s, nperm, wnum); + complex_computation BB_BB_new_term_0_r2_b2("BB_BB_new_term_0_r2_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B2_Blocal_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + BB_BB_new_term_0_r2_b2.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); + complex_computation BB_BB_new_term_1_r2_b2("BB_BB_new_term_1_r2_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B2_Blocal_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + BB_BB_new_term_1_r2_b2.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation BB_BB_new_term_2_r2_b2("BB_BB_new_term_2_r2_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B2_Bfirst_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + BB_BB_new_term_2_r2_b2.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); + complex_computation BB_BB_new_term_3_r2_b2("BB_BB_new_term_3_r2_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B2_Bfirst_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + BB_BB_new_term_3_r2_b2.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation BB_BB_new_term_4_r2_b2("BB_BB_new_term_4_r2_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B2_Bsecond_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + BB_BB_new_term_4_r2_b2.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); + complex_computation BB_BB_new_term_5_r2_b2("BB_BB_new_term_5_r2_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B2_Bsecond_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + BB_BB_new_term_5_r2_b2.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation BB_BB_new_term_6_r2_b2("BB_BB_new_term_6_r2_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B2_Bthird_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + BB_BB_new_term_6_r2_b2.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation BB_BB_new_term_7_r2_b2("BB_BB_new_term_7_r2_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B2_Bthird_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + BB_BB_new_term_7_r2_b2.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); + + complex_expr prefactor(cast(p_float64, sigs(nperm, msc1, nsc1)) * snk_weights(r, nsc1, wnum) * src_spin_block_weights(rp, s), 0.0); + + complex_expr BB_BB_term_res_b1 = BB_BB_new_term_0_r1_b1(t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum); + complex_expr BB_BB_term_res_b2 = BB_BB_new_term_0_r1_b2(t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum); complex_expr BB_BB_term_res = prefactor * BB_BB_term_res_b1 * BB_BB_term_res_b2; b=0; // r1, b = 0 - complex_computation flip_BB_BB_new_term_0_r1_b1("flip_BB_BB_new_term_0_r1_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B1_Blocal_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - flip_BB_BB_new_term_0_r1_b1.add_predicate((src_spins(rp, s, 0) == 1) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 0)); - complex_computation flip_BB_BB_new_term_1_r1_b1("flip_BB_BB_new_term_1_r1_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B2_Blocal_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - flip_BB_BB_new_term_1_r1_b1.add_predicate((src_spins(rp, s, 0) == 1) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 1)); - complex_computation flip_BB_BB_new_term_2_r1_b1("flip_BB_BB_new_term_2_r1_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B1_Bfirst_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - flip_BB_BB_new_term_2_r1_b1.add_predicate((src_spins(rp, s, 0) == 1) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 0)); - complex_computation flip_BB_BB_new_term_3_r1_b1("flip_BB_BB_new_term_3_r1_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B2_Bfirst_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - flip_BB_BB_new_term_3_r1_b1.add_predicate((src_spins(rp, s, 0) == 1) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 1)); - complex_computation flip_BB_BB_new_term_4_r1_b1("flip_BB_BB_new_term_4_r1_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B1_Bsecond_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - flip_BB_BB_new_term_4_r1_b1.add_predicate((src_spins(rp, s, 0) == 1) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 0)); - complex_computation flip_BB_BB_new_term_5_r1_b1("flip_BB_BB_new_term_5_r1_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B2_Bsecond_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - flip_BB_BB_new_term_5_r1_b1.add_predicate((src_spins(rp, s, 0) == 1) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 1)); - complex_computation flip_BB_BB_new_term_6_r1_b1("flip_BB_BB_new_term_6_r1_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B1_Bthird_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - flip_BB_BB_new_term_6_r1_b1.add_predicate((src_spins(rp, s, 0) == 1) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 1)); - complex_computation flip_BB_BB_new_term_7_r1_b1("flip_BB_BB_new_term_7_r1_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B2_Bthird_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - flip_BB_BB_new_term_7_r1_b1.add_predicate((src_spins(rp, s, 0) == 1) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 0)); + complex_computation flip_BB_BB_new_term_0_r1_b1("flip_BB_BB_new_term_0_r1_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B1_Blocal_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + flip_BB_BB_new_term_0_r1_b1.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); + complex_computation flip_BB_BB_new_term_1_r1_b1("flip_BB_BB_new_term_1_r1_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B1_Blocal_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + flip_BB_BB_new_term_1_r1_b1.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation flip_BB_BB_new_term_2_r1_b1("flip_BB_BB_new_term_2_r1_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B1_Bfirst_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + flip_BB_BB_new_term_2_r1_b1.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); + complex_computation flip_BB_BB_new_term_3_r1_b1("flip_BB_BB_new_term_3_r1_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B1_Bfirst_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + flip_BB_BB_new_term_3_r1_b1.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation flip_BB_BB_new_term_4_r1_b1("flip_BB_BB_new_term_4_r1_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B1_Bsecond_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + flip_BB_BB_new_term_4_r1_b1.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); + complex_computation flip_BB_BB_new_term_5_r1_b1("flip_BB_BB_new_term_5_r1_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B1_Bsecond_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + flip_BB_BB_new_term_5_r1_b1.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation flip_BB_BB_new_term_6_r1_b1("flip_BB_BB_new_term_6_r1_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B1_Bthird_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + flip_BB_BB_new_term_6_r1_b1.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation flip_BB_BB_new_term_7_r1_b1("flip_BB_BB_new_term_7_r1_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B1_Bthird_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + flip_BB_BB_new_term_7_r1_b1.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); // r2, b = 0 - complex_computation flip_BB_BB_new_term_0_r2_b1("flip_BB_BB_new_term_0_r2_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B1_Blocal_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - flip_BB_BB_new_term_0_r2_b1.add_predicate((src_spins(rp, s, 0) == 2) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 0)); - complex_computation flip_BB_BB_new_term_1_r2_b1("flip_BB_BB_new_term_1_r2_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B2_Blocal_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - flip_BB_BB_new_term_1_r2_b1.add_predicate((src_spins(rp, s, 0) == 2) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 1)); - complex_computation flip_BB_BB_new_term_2_r2_b1("flip_BB_BB_new_term_2_r2_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B1_Bfirst_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - flip_BB_BB_new_term_2_r2_b1.add_predicate((src_spins(rp, s, 0) == 2) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 0)); - complex_computation flip_BB_BB_new_term_3_r2_b1("flip_BB_BB_new_term_3_r2_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B2_Bfirst_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - flip_BB_BB_new_term_3_r2_b1.add_predicate((src_spins(rp, s, 0) == 2) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 1)); - complex_computation flip_BB_BB_new_term_4_r2_b1("flip_BB_BB_new_term_4_r2_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B1_Bsecond_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - flip_BB_BB_new_term_4_r2_b1.add_predicate((src_spins(rp, s, 0) == 2) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 0)); - complex_computation flip_BB_BB_new_term_5_r2_b1("flip_BB_BB_new_term_5_r2_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B2_Bsecond_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - flip_BB_BB_new_term_5_r2_b1.add_predicate((src_spins(rp, s, 0) == 2) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 1)); - complex_computation flip_BB_BB_new_term_6_r2_b1("flip_BB_BB_new_term_6_r2_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B1_Bthird_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - flip_BB_BB_new_term_6_r2_b1.add_predicate((src_spins(rp, s, 0) == 2) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 1)); - complex_computation flip_BB_BB_new_term_7_r2_b1("flip_BB_BB_new_term_7_r2_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B2_Bthird_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - flip_BB_BB_new_term_7_r2_b1.add_predicate((src_spins(rp, s, 0) == 2) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 0)); + complex_computation flip_BB_BB_new_term_0_r2_b1("flip_BB_BB_new_term_0_r2_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B1_Blocal_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + flip_BB_BB_new_term_0_r2_b1.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); + complex_computation flip_BB_BB_new_term_1_r2_b1("flip_BB_BB_new_term_1_r2_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B1_Blocal_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + flip_BB_BB_new_term_1_r2_b1.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation flip_BB_BB_new_term_2_r2_b1("flip_BB_BB_new_term_2_r2_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B1_Bfirst_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + flip_BB_BB_new_term_2_r2_b1.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); + complex_computation flip_BB_BB_new_term_3_r2_b1("flip_BB_BB_new_term_3_r2_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B1_Bfirst_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + flip_BB_BB_new_term_3_r2_b1.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation flip_BB_BB_new_term_4_r2_b1("flip_BB_BB_new_term_4_r2_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B1_Bsecond_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + flip_BB_BB_new_term_4_r2_b1.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); + complex_computation flip_BB_BB_new_term_5_r2_b1("flip_BB_BB_new_term_5_r2_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B1_Bsecond_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + flip_BB_BB_new_term_5_r2_b1.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation flip_BB_BB_new_term_6_r2_b1("flip_BB_BB_new_term_6_r2_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B1_Bthird_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + flip_BB_BB_new_term_6_r2_b1.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation flip_BB_BB_new_term_7_r2_b1("flip_BB_BB_new_term_7_r2_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B1_Bthird_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + flip_BB_BB_new_term_7_r2_b1.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); b=1; // r1, b = 1 - complex_computation flip_BB_BB_new_term_0_r1_b2("flip_BB_BB_new_term_0_r1_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B1_Blocal_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - flip_BB_BB_new_term_0_r1_b2.add_predicate((src_spins(rp, s, 1) == 1) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 0)); - complex_computation flip_BB_BB_new_term_1_r1_b2("flip_BB_BB_new_term_1_r1_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B2_Blocal_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - flip_BB_BB_new_term_1_r1_b2.add_predicate((src_spins(rp, s, 1) == 1) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 1)); - complex_computation flip_BB_BB_new_term_2_r1_b2("flip_BB_BB_new_term_2_r1_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B1_Bfirst_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - flip_BB_BB_new_term_2_r1_b2.add_predicate((src_spins(rp, s, 1) == 1) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 0)); - complex_computation flip_BB_BB_new_term_3_r1_b2("flip_BB_BB_new_term_3_r1_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B2_Bfirst_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - flip_BB_BB_new_term_3_r1_b2.add_predicate((src_spins(rp, s, 1) == 1) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 1)); - complex_computation flip_BB_BB_new_term_4_r1_b2("flip_BB_BB_new_term_4_r1_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B1_Bsecond_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - flip_BB_BB_new_term_4_r1_b2.add_predicate((src_spins(rp, s, 1) == 1) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 0)); - complex_computation flip_BB_BB_new_term_5_r1_b2("flip_BB_BB_new_term_5_r1_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B2_Bsecond_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - flip_BB_BB_new_term_5_r1_b2.add_predicate((src_spins(rp, s, 1) == 1) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 1)); - complex_computation flip_BB_BB_new_term_6_r1_b2("flip_BB_BB_new_term_6_r1_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B1_Bthird_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - flip_BB_BB_new_term_6_r1_b2.add_predicate((src_spins(rp, s, 1) == 1) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 1)); - complex_computation flip_BB_BB_new_term_7_r1_b2("flip_BB_BB_new_term_7_r1_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B2_Bthird_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - flip_BB_BB_new_term_7_r1_b2.add_predicate((src_spins(rp, s, 1) == 1) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 0)); + complex_computation flip_BB_BB_new_term_0_r1_b2("flip_BB_BB_new_term_0_r1_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B2_Blocal_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + flip_BB_BB_new_term_0_r1_b2.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); + complex_computation flip_BB_BB_new_term_1_r1_b2("flip_BB_BB_new_term_1_r1_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B2_Blocal_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + flip_BB_BB_new_term_1_r1_b2.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation flip_BB_BB_new_term_2_r1_b2("flip_BB_BB_new_term_2_r1_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B2_Bfirst_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + flip_BB_BB_new_term_2_r1_b2.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); + complex_computation flip_BB_BB_new_term_3_r1_b2("flip_BB_BB_new_term_3_r1_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B2_Bfirst_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + flip_BB_BB_new_term_3_r1_b2.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation flip_BB_BB_new_term_4_r1_b2("flip_BB_BB_new_term_4_r1_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B2_Bsecond_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + flip_BB_BB_new_term_4_r1_b2.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); + complex_computation flip_BB_BB_new_term_5_r1_b2("flip_BB_BB_new_term_5_r1_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B2_Bsecond_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + flip_BB_BB_new_term_5_r1_b2.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation flip_BB_BB_new_term_6_r1_b2("flip_BB_BB_new_term_6_r1_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B2_Bthird_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + flip_BB_BB_new_term_6_r1_b2.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation flip_BB_BB_new_term_7_r1_b2("flip_BB_BB_new_term_7_r1_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B2_Bthird_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + flip_BB_BB_new_term_7_r1_b2.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); // r2, b = 1 - complex_computation flip_BB_BB_new_term_0_r2_b2("flip_BB_BB_new_term_0_r2_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B1_Blocal_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - flip_BB_BB_new_term_0_r2_b2.add_predicate((src_spins(rp, s, 1) == 2) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 0)); - complex_computation flip_BB_BB_new_term_1_r2_b2("flip_BB_BB_new_term_1_r2_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B2_Blocal_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - flip_BB_BB_new_term_1_r2_b2.add_predicate((src_spins(rp, s, 1) == 2) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 1)); - complex_computation flip_BB_BB_new_term_2_r2_b2("flip_BB_BB_new_term_2_r2_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B1_Bfirst_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - flip_BB_BB_new_term_2_r2_b2.add_predicate((src_spins(rp, s, 1) == 2) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 0)); - complex_computation flip_BB_BB_new_term_3_r2_b2("flip_BB_BB_new_term_3_r2_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B2_Bfirst_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - flip_BB_BB_new_term_3_r2_b2.add_predicate((src_spins(rp, s, 1) == 2) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 1)); - complex_computation flip_BB_BB_new_term_4_r2_b2("flip_BB_BB_new_term_4_r2_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B1_Bsecond_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - flip_BB_BB_new_term_4_r2_b2.add_predicate((src_spins(rp, s, 1) == 2) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 0)); - complex_computation flip_BB_BB_new_term_5_r2_b2("flip_BB_BB_new_term_5_r2_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B2_Bsecond_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - flip_BB_BB_new_term_5_r2_b2.add_predicate((src_spins(rp, s, 1) == 2) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 1)); - complex_computation flip_BB_BB_new_term_6_r2_b2("flip_BB_BB_new_term_6_r2_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B1_Bthird_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - flip_BB_BB_new_term_6_r2_b2.add_predicate((src_spins(rp, s, 1) == 2) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 1)); - complex_computation flip_BB_BB_new_term_7_r2_b2("flip_BB_BB_new_term_7_r2_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B2_Bthird_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - flip_BB_BB_new_term_7_r2_b2.add_predicate((src_spins(rp, s, 1) == 2) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 0)); - - complex_expr flip_BB_BB_term_res_b1 = flip_BB_BB_new_term_0_r1_b1(t, x_out, x_in, x2, rp, m, r, s, nperm, wnum); - complex_expr flip_BB_BB_term_res_b2 = flip_BB_BB_new_term_0_r1_b2(t, x_out, x_in, x2, rp, m, r, s, nperm, wnum); + complex_computation flip_BB_BB_new_term_0_r2_b2("flip_BB_BB_new_term_0_r2_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B2_Blocal_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + flip_BB_BB_new_term_0_r2_b2.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); + complex_computation flip_BB_BB_new_term_1_r2_b2("flip_BB_BB_new_term_1_r2_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B2_Blocal_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + flip_BB_BB_new_term_1_r2_b2.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation flip_BB_BB_new_term_2_r2_b2("flip_BB_BB_new_term_2_r2_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B2_Bfirst_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + flip_BB_BB_new_term_2_r2_b2.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); + complex_computation flip_BB_BB_new_term_3_r2_b2("flip_BB_BB_new_term_3_r2_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B2_Bfirst_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + flip_BB_BB_new_term_3_r2_b2.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation flip_BB_BB_new_term_4_r2_b2("flip_BB_BB_new_term_4_r2_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B2_Bsecond_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + flip_BB_BB_new_term_4_r2_b2.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); + complex_computation flip_BB_BB_new_term_5_r2_b2("flip_BB_BB_new_term_5_r2_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B2_Bsecond_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + flip_BB_BB_new_term_5_r2_b2.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation flip_BB_BB_new_term_6_r2_b2("flip_BB_BB_new_term_6_r2_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B2_Bthird_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + flip_BB_BB_new_term_6_r2_b2.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation flip_BB_BB_new_term_7_r2_b2("flip_BB_BB_new_term_7_r2_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B2_Bthird_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + flip_BB_BB_new_term_7_r2_b2.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); + + complex_expr flip_BB_BB_term_res_b1 = flip_BB_BB_new_term_0_r1_b1(t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum); + complex_expr flip_BB_BB_term_res_b2 = flip_BB_BB_new_term_0_r1_b2(t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum); complex_expr flip_BB_BB_term_res = prefactor * flip_BB_BB_term_res_b1 * flip_BB_BB_term_res_b2; - computation C_BB_BB_prop_update_r("C_BB_BB_prop_update_r", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, C_BB_BB_prop_init_r(t, x_out, x_in, x2, rp, m, r) + (BB_BB_term_res.get_real() + flip_BB_BB_term_res.get_real())/2.0 ); - computation C_BB_BB_prop_update_i("C_BB_BB_prop_update_i", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, C_BB_BB_prop_init_i(t, x_out, x_in, x2, rp, m, r) + (BB_BB_term_res.get_imag() + flip_BB_BB_term_res.get_imag())/2.0 ); + computation C_BB_BB_prop_update_r("C_BB_BB_prop_update_r", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, C_BB_BB_prop_init_r(t, x_out, x_in, x2, msc1, rp, m, r, nsc1) + (BB_BB_term_res.get_real() + flip_BB_BB_term_res.get_real())/2.0 ); + computation C_BB_BB_prop_update_i("C_BB_BB_prop_update_i", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, C_BB_BB_prop_init_i(t, x_out, x_in, x2, msc1, rp, m, r, nsc1) + (BB_BB_term_res.get_imag() + flip_BB_BB_term_res.get_imag())/2.0 ); complex_computation C_BB_BB_prop_update(&C_BB_BB_prop_update_r, &C_BB_BB_prop_update_i); - complex_expr BB_BB_term_s = (snk_psi_B1_ue * snk_psi_B2_x2_ue + snk_psi_B1_x2_ue * snk_psi_B2_ue) * C_BB_BB_prop_update(t, x_out, x_in, x2, rp, m, r, 1, Nperms-1, Nw2-1); - complex_expr BB_BB_term_b = snk_psi * C_BB_BB_prop_update(t, x_out, x_in, x2, rp, m, r, 1, Nperms-1, Nw2-1); + complex_expr BB_BB_term_s = (snk_psi_B1_ue * snk_psi_B2_x2_ue + snk_psi_B1_x2_ue * snk_psi_B2_ue) * C_BB_BB_prop_update(t, x_out, x_in, x2, msc1, rp, m, r, nsc1, 1, Nperms-1, Nw2-1); + complex_expr BB_BB_term_b = snk_psi * C_BB_BB_prop_update(t, x_out, x_in, x2, msc1, rp, m, r, nsc1, 1, Nperms-1, Nw2-1); - computation C_BB_BB_update_s_r("C_BB_BB_update_s_r", {t, x_out, x_in, x2, rp, m, r, nue}, C_init_r(t, x_out, rp, m, r, NEntangled+nue) + BB_BB_term_s.get_real()); - computation C_BB_BB_update_s_i("C_BB_BB_update_s_i", {t, x_out, x_in, x2, rp, m, r, nue}, C_init_i(t, x_out, rp, m, r, NEntangled+nue) + BB_BB_term_s.get_imag()); + computation C_BB_BB_update_s_r("C_BB_BB_update_s_r", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, nue}, C_init_r(t, x_out, rp, msc1*Nsrc+m, r, nsc1*Nsnk+NEntangled+nue) + BB_BB_term_s.get_real()); + computation C_BB_BB_update_s_i("C_BB_BB_update_s_i", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, nue}, C_init_i(t, x_out, rp, msc1*Nsrc+m, r, nsc1*Nsnk+NEntangled+nue) + BB_BB_term_s.get_imag()); - computation C_BB_BB_update_b_r("C_BB_BB_update_b_r", {t, x_out, x_in, x2, rp, m, r, ne}, C_init_r(t, x_out, rp, m, r, ne) + BB_BB_term_b.get_real()); - computation C_BB_BB_update_b_i("C_BB_BB_update_b_i", {t, x_out, x_in, x2, rp, m, r, ne}, C_init_i(t, x_out, rp, m, r, ne) + BB_BB_term_b.get_imag()); + computation C_BB_BB_update_b_r("C_BB_BB_update_b_r", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, ne}, C_init_r(t, x_out, rp, msc1*Nsrc+m, r, nsc1*Nsnk+ne) + BB_BB_term_b.get_real()); + computation C_BB_BB_update_b_i("C_BB_BB_update_b_i", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, ne}, C_init_i(t, x_out, rp, msc1*Nsrc+m, r, nsc1*Nsnk+ne) + BB_BB_term_b.get_imag()); // BB_H - computation C_BB_H_prop_init_r("C_BB_H_prop_init_r", {t, x_out, x_in, rp, m, r}, expr((double) 0)); - computation C_BB_H_prop_init_i("C_BB_H_prop_init_i", {t, x_out, x_in, rp, m, r}, expr((double) 0)); + computation C_BB_H_prop_init_r("C_BB_H_prop_init_r", {t, x_out, x_in, msc1, rp, m, r, nscH}, expr((double) 0)); + computation C_BB_H_prop_init_i("C_BB_H_prop_init_i", {t, x_out, x_in, msc1, rp, m, r, nscH}, expr((double) 0)); - complex_computation BB_H_new_term_0_r1_b1("BB_H_new_term_0_r1_b1", {t, x_out, x_in, rp, m, r, s, nperm, wnumHex}, src_B1_Blocal_r1_init(t, x_out, x_in, hex_snk_color_weights(r, nperm, wnumHex, 0, 0), hex_snk_spin_weights(r, nperm, wnumHex, 0, 0), hex_snk_color_weights(r, nperm, wnumHex, 2, 0), hex_snk_spin_weights(r, nperm, wnumHex, 2, 0), hex_snk_color_weights(r, nperm, wnumHex, 1, 0), hex_snk_spin_weights(r, nperm, wnumHex, 1, 0), m)); - BB_H_new_term_0_r1_b1.add_predicate((src_spins(rp, s, 0) == 1)); - complex_computation BB_H_new_term_0_r2_b1("BB_H_new_term_0_r2_b1", {t, x_out, x_in, rp, m, r, s, nperm, wnumHex}, src_B1_Blocal_r2_init(t, x_out, x_in, hex_snk_color_weights(r, nperm, wnumHex, 0, 0), hex_snk_spin_weights(r, nperm, wnumHex, 0, 0), hex_snk_color_weights(r, nperm, wnumHex, 2, 0), hex_snk_spin_weights(r, nperm, wnumHex, 2, 0), hex_snk_color_weights(r, nperm, wnumHex, 1, 0), hex_snk_spin_weights(r, nperm, wnumHex, 1, 0), m)); - BB_H_new_term_0_r2_b1.add_predicate((src_spins(rp, s, 0) == 2)); + complex_computation BB_H_new_term_0_r1_b1("BB_H_new_term_0_r1_b1", {t, x_out, x_in, msc1, rp, m, r, nscH, s, nperm, wnumHex}, src_B1_Blocal_r1_init(t, x_out, x_in, msc1, hex_snk_color_weights(r, nperm, msc1, nscH, wnumHex, 0, 0), hex_snk_spin_weights(r, nperm, msc1, nscH, wnumHex, 0, 0), hex_snk_color_weights(r, nperm, msc1, nscH, wnumHex, 2, 0), hex_snk_spin_weights(r, nperm, msc1, nscH, wnumHex, 2, 0), hex_snk_color_weights(r, nperm, msc1, nscH, wnumHex, 1, 0), hex_snk_spin_weights(r, nperm, msc1, nscH, wnumHex, 1, 0), m)); + BB_H_new_term_0_r1_b1.add_predicate((cast(p_float64, src_spins(rp, s, 0)) == 1.0) && (hex_snk_weights(r, nscH, wnumHex) * src_spin_block_weights(rp, s) != 0.0)); + complex_computation BB_H_new_term_0_r2_b1("BB_H_new_term_0_r2_b1", {t, x_out, x_in, msc1, rp, m, r, nscH, s, nperm, wnumHex}, src_B1_Blocal_r2_init(t, x_out, x_in, msc1, hex_snk_color_weights(r, nperm, msc1, nscH, wnumHex, 0, 0), hex_snk_spin_weights(r, nperm, msc1, nscH, wnumHex, 0, 0), hex_snk_color_weights(r, nperm, msc1, nscH, wnumHex, 2, 0), hex_snk_spin_weights(r, nperm, msc1, nscH, wnumHex, 2, 0), hex_snk_color_weights(r, nperm, msc1, nscH, wnumHex, 1, 0), hex_snk_spin_weights(r, nperm, msc1, nscH, wnumHex, 1, 0), m)); + BB_H_new_term_0_r2_b1.add_predicate((cast(p_float64, src_spins(rp, s, 0)) == 2.0) && (hex_snk_weights(r, nscH, wnumHex) * src_spin_block_weights(rp, s) != 0.0)); - complex_computation BB_H_new_term_0_r1_b2("BB_H_new_term_0_r1_b2", {t, x_out, x_in, rp, m, r, s, nperm, wnumHex}, src_B2_Blocal_r1_init(t, x_out, x_in, hex_snk_color_weights(r, nperm, wnumHex, 0, 1), hex_snk_spin_weights(r, nperm, wnumHex, 0, 1), hex_snk_color_weights(r, nperm, wnumHex, 2, 1), hex_snk_spin_weights(r, nperm, wnumHex, 2, 1), hex_snk_color_weights(r, nperm, wnumHex, 1, 1), hex_snk_spin_weights(r, nperm, wnumHex, 1, 1), m)); - BB_H_new_term_0_r1_b2.add_predicate((src_spins(rp, s, 1) == 1)); - complex_computation BB_H_new_term_0_r2_b2("BB_H_new_term_0_r2_b2", {t, x_out, x_in, rp, m, r, s, nperm, wnumHex}, src_B2_Blocal_r2_init(t, x_out, x_in, hex_snk_color_weights(r, nperm, wnumHex, 0, 1), hex_snk_spin_weights(r, nperm, wnumHex, 0, 1), hex_snk_color_weights(r, nperm, wnumHex, 2, 1), hex_snk_spin_weights(r, nperm, wnumHex, 2, 1), hex_snk_color_weights(r, nperm, wnumHex, 1, 1), hex_snk_spin_weights(r, nperm, wnumHex, 1, 1), m)); - BB_H_new_term_0_r2_b2.add_predicate((src_spins(rp, s, 1) == 2)); + complex_computation BB_H_new_term_0_r1_b2("BB_H_new_term_0_r1_b2", {t, x_out, x_in, msc1, rp, m, r, nscH, s, nperm, wnumHex}, src_B2_Blocal_r1_init(t, x_out, x_in, msc1, hex_snk_color_weights(r, nperm, msc1, nscH, wnumHex, 0, 1), hex_snk_spin_weights(r, nperm, msc1, nscH, wnumHex, 0, 1), hex_snk_color_weights(r, nperm, msc1, nscH, wnumHex, 2, 1), hex_snk_spin_weights(r, nperm, msc1, nscH, wnumHex, 2, 1), hex_snk_color_weights(r, nperm, msc1, nscH, wnumHex, 1, 1), hex_snk_spin_weights(r, nperm, msc1, nscH, wnumHex, 1, 1), m)); + BB_H_new_term_0_r1_b2.add_predicate((cast(p_float64, src_spins(rp, s, 1)) == 1.0) && (hex_snk_weights(r, nscH, wnumHex) * src_spin_block_weights(rp, s) != 0.0)); + complex_computation BB_H_new_term_0_r2_b2("BB_H_new_term_0_r2_b2", {t, x_out, x_in, msc1, rp, m, r, nscH, s, nperm, wnumHex}, src_B2_Blocal_r2_init(t, x_out, x_in, msc1, hex_snk_color_weights(r, nperm, msc1, nscH, wnumHex, 0, 1), hex_snk_spin_weights(r, nperm, msc1, nscH, wnumHex, 0, 1), hex_snk_color_weights(r, nperm, msc1, nscH, wnumHex, 2, 1), hex_snk_spin_weights(r, nperm, msc1, nscH, wnumHex, 2, 1), hex_snk_color_weights(r, nperm, msc1, nscH, wnumHex, 1, 1), hex_snk_spin_weights(r, nperm, msc1, nscH, wnumHex, 1, 1), m)); + BB_H_new_term_0_r2_b2.add_predicate((cast(p_float64, src_spins(rp, s, 1)) == 2.0) && (hex_snk_weights(r, nscH, wnumHex) * src_spin_block_weights(rp, s) != 0.0)); - complex_expr BB_H_term_res_b1 = BB_H_new_term_0_r1_b1(t, x_out, x_in, rp, m, r, s, nperm, wnumHex); - complex_expr BB_H_term_res_b2 = BB_H_new_term_0_r1_b2(t, x_out, x_in, rp, m, r, s, nperm, wnumHex); + complex_expr BB_H_term_res_b1 = BB_H_new_term_0_r1_b1(t, x_out, x_in, msc1, rp, m, r, nscH, s, nperm, wnumHex); + complex_expr BB_H_term_res_b2 = BB_H_new_term_0_r1_b2(t, x_out, x_in, msc1, rp, m, r, nscH, s, nperm, wnumHex); - complex_expr src_hex_prefactor(cast(p_float64, sigs(nperm)) * hex_snk_weights(r, wnumHex) * src_spin_block_weights(rp, s), 0.0); + complex_expr src_hex_prefactor(cast(p_float64, hex_sigs(nperm, msc1)) * hex_snk_weights(r, nscH, wnumHex) * src_spin_block_weights(rp, s), 0.0); complex_expr BB_H_term_res = src_hex_prefactor * BB_H_term_res_b1 * BB_H_term_res_b2; - complex_computation flip_BB_H_new_term_0_r1_b1("flip_BB_H_new_term_0_r1_b1", {t, x_out, x_in, rp, m, r, s, nperm, wnumHex}, flip_src_B1_Blocal_r1_init(t, x_out, x_in, hex_snk_color_weights(r, nperm, wnumHex, 0, 0), hex_snk_spin_weights(r, nperm, wnumHex, 0, 0), hex_snk_color_weights(r, nperm, wnumHex, 2, 0), hex_snk_spin_weights(r, nperm, wnumHex, 2, 0), hex_snk_color_weights(r, nperm, wnumHex, 1, 0), hex_snk_spin_weights(r, nperm, wnumHex, 1, 0), m)); - flip_BB_H_new_term_0_r1_b1.add_predicate((src_spins(rp, s, 0) == 1)); - complex_computation flip_BB_H_new_term_0_r2_b1("flip_BB_H_new_term_0_r2_b1", {t, x_out, x_in, rp, m, r, s, nperm, wnumHex}, flip_src_B1_Blocal_r2_init(t, x_out, x_in, hex_snk_color_weights(r, nperm, wnumHex, 0, 0), hex_snk_spin_weights(r, nperm, wnumHex, 0, 0), hex_snk_color_weights(r, nperm, wnumHex, 2, 0), hex_snk_spin_weights(r, nperm, wnumHex, 2, 0), hex_snk_color_weights(r, nperm, wnumHex, 1, 0), hex_snk_spin_weights(r, nperm, wnumHex, 1, 0), m)); - flip_BB_H_new_term_0_r2_b1.add_predicate((src_spins(rp, s, 0) == 2)); + complex_computation flip_BB_H_new_term_0_r1_b1("flip_BB_H_new_term_0_r1_b1", {t, x_out, x_in, msc1, rp, m, r, nscH, s, nperm, wnumHex}, flip_src_B1_Blocal_r1_init(t, x_out, x_in, msc1, hex_snk_color_weights(r, nperm, msc1, nscH, wnumHex, 0, 0), hex_snk_spin_weights(r, nperm, msc1, nscH, wnumHex, 0, 0), hex_snk_color_weights(r, nperm, msc1, nscH, wnumHex, 2, 0), hex_snk_spin_weights(r, nperm, msc1, nscH, wnumHex, 2, 0), hex_snk_color_weights(r, nperm, msc1, nscH, wnumHex, 1, 0), hex_snk_spin_weights(r, nperm, msc1, nscH, wnumHex, 1, 0), m)); + flip_BB_H_new_term_0_r1_b1.add_predicate((cast(p_float64, src_spins(rp, s, 0)) == 1.0) && (hex_snk_weights(r, nscH, wnumHex) * src_spin_block_weights(rp, s) != 0.0)); + complex_computation flip_BB_H_new_term_0_r2_b1("flip_BB_H_new_term_0_r2_b1", {t, x_out, x_in, msc1, rp, m, r, nscH, s, nperm, wnumHex}, flip_src_B1_Blocal_r2_init(t, x_out, x_in, msc1, hex_snk_color_weights(r, nperm, msc1, nscH, wnumHex, 0, 0), hex_snk_spin_weights(r, nperm, msc1, nscH, wnumHex, 0, 0), hex_snk_color_weights(r, nperm, msc1, nscH, wnumHex, 2, 0), hex_snk_spin_weights(r, nperm, msc1, nscH, wnumHex, 2, 0), hex_snk_color_weights(r, nperm, msc1, nscH, wnumHex, 1, 0), hex_snk_spin_weights(r, nperm, msc1, nscH, wnumHex, 1, 0), m)); + flip_BB_H_new_term_0_r2_b1.add_predicate((cast(p_float64, src_spins(rp, s, 0)) == 2.0) && (hex_snk_weights(r, nscH, wnumHex) * src_spin_block_weights(rp, s) != 0.0)); - complex_computation flip_BB_H_new_term_0_r1_b2("flip_BB_H_new_term_0_r1_b2", {t, x_out, x_in, rp, m, r, s, nperm, wnumHex}, flip_src_B2_Blocal_r1_init(t, x_out, x_in, hex_snk_color_weights(r, nperm, wnumHex, 0, 1), hex_snk_spin_weights(r, nperm, wnumHex, 0, 1), hex_snk_color_weights(r, nperm, wnumHex, 2, 1), hex_snk_spin_weights(r, nperm, wnumHex, 2, 1), hex_snk_color_weights(r, nperm, wnumHex, 1, 1), hex_snk_spin_weights(r, nperm, wnumHex, 1, 1), m)); - flip_BB_H_new_term_0_r1_b2.add_predicate((src_spins(rp, s, 1) == 1)); - complex_computation flip_BB_H_new_term_0_r2_b2("flip_BB_H_new_term_0_r2_b2", {t, x_out, x_in, rp, m, r, s, nperm, wnumHex}, flip_src_B2_Blocal_r2_init(t, x_out, x_in, hex_snk_color_weights(r, nperm, wnumHex, 0, 1), hex_snk_spin_weights(r, nperm, wnumHex, 0, 1), hex_snk_color_weights(r, nperm, wnumHex, 2, 1), hex_snk_spin_weights(r, nperm, wnumHex, 2, 1), hex_snk_color_weights(r, nperm, wnumHex, 1, 1), hex_snk_spin_weights(r, nperm, wnumHex, 1, 1), m)); - flip_BB_H_new_term_0_r2_b2.add_predicate((src_spins(rp, s, 1) == 2)); + complex_computation flip_BB_H_new_term_0_r1_b2("flip_BB_H_new_term_0_r1_b2", {t, x_out, x_in, msc1, rp, m, r, nscH, s, nperm, wnumHex}, flip_src_B2_Blocal_r1_init(t, x_out, x_in, msc1, hex_snk_color_weights(r, nperm, msc1, nscH, wnumHex, 0, 1), hex_snk_spin_weights(r, nperm, msc1, nscH, wnumHex, 0, 1), hex_snk_color_weights(r, nperm, msc1, nscH, wnumHex, 2, 1), hex_snk_spin_weights(r, nperm, msc1, nscH, wnumHex, 2, 1), hex_snk_color_weights(r, nperm, msc1, nscH, wnumHex, 1, 1), hex_snk_spin_weights(r, nperm, msc1, nscH, wnumHex, 1, 1), m)); + flip_BB_H_new_term_0_r1_b2.add_predicate((cast(p_float64, src_spins(rp, s, 1)) == 1.0) && (hex_snk_weights(r, nscH, wnumHex) * src_spin_block_weights(rp, s) != 0.0)); + complex_computation flip_BB_H_new_term_0_r2_b2("flip_BB_H_new_term_0_r2_b2", {t, x_out, x_in, msc1, rp, m, r, nscH, s, nperm, wnumHex}, flip_src_B2_Blocal_r2_init(t, x_out, x_in, msc1, hex_snk_color_weights(r, nperm, msc1, nscH, wnumHex, 0, 1), hex_snk_spin_weights(r, nperm, msc1, nscH, wnumHex, 0, 1), hex_snk_color_weights(r, nperm, msc1, nscH, wnumHex, 2, 1), hex_snk_spin_weights(r, nperm, msc1, nscH, wnumHex, 2, 1), hex_snk_color_weights(r, nperm, msc1, nscH, wnumHex, 1, 1), hex_snk_spin_weights(r, nperm, msc1, nscH, wnumHex, 1, 1), m)); + flip_BB_H_new_term_0_r2_b2.add_predicate((cast(p_float64, src_spins(rp, s, 1)) == 2.0) && (hex_snk_weights(r, nscH, wnumHex) * src_spin_block_weights(rp, s) != 0.0)); - complex_expr flip_BB_H_term_res_b1 = flip_BB_H_new_term_0_r1_b1(t, x_out, x_in, rp, m, r, s, nperm, wnumHex); - complex_expr flip_BB_H_term_res_b2 = flip_BB_H_new_term_0_r1_b2(t, x_out, x_in, rp, m, r, s, nperm, wnumHex); + complex_expr flip_BB_H_term_res_b1 = flip_BB_H_new_term_0_r1_b1(t, x_out, x_in, msc1, rp, m, r, nscH, s, nperm, wnumHex); + complex_expr flip_BB_H_term_res_b2 = flip_BB_H_new_term_0_r1_b2(t, x_out, x_in, msc1, rp, m, r, nscH, s, nperm, wnumHex); complex_expr flip_BB_H_term_res = src_hex_prefactor * flip_BB_H_term_res_b1 * flip_BB_H_term_res_b2; - computation C_BB_H_prop_update_r("C_BB_H_prop_update_r", {t, x_out, x_in, rp, m, r, s, nperm, wnumHex}, C_BB_H_prop_init_r(t, x_out, x_in, rp, m, r) + (BB_H_term_res.get_real() + flip_BB_H_term_res.get_real())/2.0 ); - computation C_BB_H_prop_update_i("C_BB_H_prop_update_i", {t, x_out, x_in, rp, m, r, s, nperm, wnumHex}, C_BB_H_prop_init_i(t, x_out, x_in, rp, m, r) + (BB_H_term_res.get_imag() + flip_BB_H_term_res.get_imag())/2.0 ); + computation C_BB_H_prop_update_r("C_BB_H_prop_update_r", {t, x_out, x_in, msc1, rp, m, r, nscH, s, nperm, wnumHex}, C_BB_H_prop_init_r(t, x_out, x_in, msc1, rp, m, r, nscH) + (BB_H_term_res.get_real() + flip_BB_H_term_res.get_real())/2.0 ); + C_BB_H_prop_update_r.add_predicate(hex_snk_weights(r, nscH, wnumHex) * src_spin_block_weights(rp, s) != 0.0); + computation C_BB_H_prop_update_i("C_BB_H_prop_update_i", {t, x_out, x_in, msc1, rp, m, r, nscH, s, nperm, wnumHex}, C_BB_H_prop_init_i(t, x_out, x_in, msc1, rp, m, r, nscH) + (BB_H_term_res.get_imag() + flip_BB_H_term_res.get_imag())/2.0 ); + C_BB_H_prop_update_i.add_predicate(hex_snk_weights(r, nscH, wnumHex) * src_spin_block_weights(rp, s) != 0.0); complex_computation C_BB_H_prop_update(&C_BB_H_prop_update_r, &C_BB_H_prop_update_i); - complex_expr BB_H_term = hex_snk_psi * C_BB_H_prop_update(t, x_out, x_in, rp, m, r, 1, Nperms-1, Nw2Hex-1); + complex_expr BB_H_term = hex_snk_psi * C_BB_H_prop_update(t, x_out, x_in, msc1, rp, m, r, nscH, 1, Nperms-1, Nw2Hex-1); - computation C_BB_H_update_r("C_BB_H_update_r", {t, x_out, x_in, rp, m, r, nH}, C_init_r(t, x_out, rp, m, r, Nsnk+nH) + BB_H_term.get_real()); - computation C_BB_H_update_i("C_BB_H_update_i", {t, x_out, x_in, rp, m, r, nH}, C_init_i(t, x_out, rp, m, r, Nsnk+nH) + BB_H_term.get_imag()); + computation C_BB_H_update_r("C_BB_H_update_r", {t, x_out, x_in, msc1, rp, m, r, nscH, nH}, C_init_r(t, x_out, rp, msc1*Nsrc+m, r, B1NsnkSC*Nsnk+nscH*NsnkHex+nH) + BB_H_term.get_real()); + computation C_BB_H_update_i("C_BB_H_update_i", {t, x_out, x_in, msc1, rp, m, r, nscH, nH}, C_init_i(t, x_out, rp, msc1*Nsrc+m, r, B1NsnkSC*Nsnk+nscH*NsnkHex+nH) + BB_H_term.get_imag()); // H_BB - computation C_H_BB_prop_init_r("C_H_BB_prop_init_r", {t, y_out, y_in, rp, n, r}, expr((double) 0)); - computation C_H_BB_prop_init_i("C_H_BB_prop_init_i", {t, y_out, y_in, rp, n, r}, expr((double) 0)); + computation C_H_BB_prop_init_r("C_H_BB_prop_init_r", {t, y_out, y_in, nsc1, rp, n, r, mscH}, expr((double) 0)); + computation C_H_BB_prop_init_i("C_H_BB_prop_init_i", {t, y_out, y_in, nsc1, rp, n, r, mscH}, expr((double) 0)); - complex_computation H_BB_new_term_0_r1_b1("H_BB_new_term_0_r1_b1", {t, y_out, y_in, rp, n, r, s, nperm, wnumHex}, snk_B1_Blocal_r1_init(t, y_out, y_in, hex_snk_color_weights(r, nperm, wnumHex, 0, 0), hex_snk_spin_weights(r, nperm, wnumHex, 0, 0), hex_snk_color_weights(r, nperm, wnumHex, 2, 0), hex_snk_spin_weights(r, nperm, wnumHex, 2, 0), hex_snk_color_weights(r, nperm, wnumHex, 1, 0), hex_snk_spin_weights(r, nperm, wnumHex, 1, 0), n)); - H_BB_new_term_0_r1_b1.add_predicate((src_spins(rp, s, 0) == 1)); - complex_computation H_BB_new_term_0_r2_b1("H_BB_new_term_0_r2_b1", {t, y_out, y_in, rp, n, r, s, nperm, wnumHex}, snk_B1_Blocal_r2_init(t, y_out, y_in, hex_snk_color_weights(r, nperm, wnumHex, 0, 0), hex_snk_spin_weights(r, nperm, wnumHex, 0, 0), hex_snk_color_weights(r, nperm, wnumHex, 2, 0), hex_snk_spin_weights(r, nperm, wnumHex, 2, 0), hex_snk_color_weights(r, nperm, wnumHex, 1, 0), hex_snk_spin_weights(r, nperm, wnumHex, 1, 0), n)); - H_BB_new_term_0_r2_b1.add_predicate((src_spins(rp, s, 0) == 2)); + complex_computation H_BB_new_term_0_r1_b1("H_BB_new_term_0_r1_b1", {t, y_out, y_in, nsc1, rp, n, r, mscH, s, nperm, wnumHex}, snk_B1_Blocal_r1_init(t, y_out, y_in, nsc1, hex_snk_color_weights(r, nperm, nsc1, mscH, wnumHex, 0, 0), hex_snk_spin_weights(r, nperm, nsc1, mscH, wnumHex, 0, 0), hex_snk_color_weights(r, nperm, nsc1, mscH, wnumHex, 2, 0), hex_snk_spin_weights(r, nperm, nsc1, mscH, wnumHex, 2, 0), hex_snk_color_weights(r, nperm, nsc1, mscH, wnumHex, 1, 0), hex_snk_spin_weights(r, nperm, nsc1, mscH, wnumHex, 1, 0), n)); + H_BB_new_term_0_r1_b1.add_predicate((cast(p_float64, src_spins(rp, s, 0)) == 1.0) && (hex_src_weights(r, mscH, wnumHex) * src_spin_block_weights(rp, s) != 0.0)); + complex_computation H_BB_new_term_0_r2_b1("H_BB_new_term_0_r2_b1", {t, y_out, y_in, nsc1, rp, n, r, mscH, s, nperm, wnumHex}, snk_B1_Blocal_r2_init(t, y_out, y_in, nsc1, hex_snk_color_weights(r, nperm, nsc1, mscH, wnumHex, 0, 0), hex_snk_spin_weights(r, nperm, nsc1, mscH, wnumHex, 0, 0), hex_snk_color_weights(r, nperm, nsc1, mscH, wnumHex, 2, 0), hex_snk_spin_weights(r, nperm, nsc1, mscH, wnumHex, 2, 0), hex_snk_color_weights(r, nperm, nsc1, mscH, wnumHex, 1, 0), hex_snk_spin_weights(r, nperm, nsc1, mscH, wnumHex, 1, 0), n)); + H_BB_new_term_0_r2_b1.add_predicate((cast(p_float64, src_spins(rp, s, 0)) == 2.0) && (hex_src_weights(r, mscH, wnumHex) * src_spin_block_weights(rp, s) != 0.0)); - complex_computation H_BB_new_term_0_r1_b2("H_BB_new_term_0_r1_b2", {t, y_out, y_in, rp, n, r, s, nperm, wnumHex}, snk_B2_Blocal_r1_init(t, y_out, y_in, hex_snk_color_weights(r, nperm, wnumHex, 0, 1), hex_snk_spin_weights(r, nperm, wnumHex, 0, 1), hex_snk_color_weights(r, nperm, wnumHex, 2, 1), hex_snk_spin_weights(r, nperm, wnumHex, 2, 1), hex_snk_color_weights(r, nperm, wnumHex, 1, 1), hex_snk_spin_weights(r, nperm, wnumHex, 1, 1), n)); - H_BB_new_term_0_r1_b2.add_predicate((src_spins(rp, s, 1) == 1)); - complex_computation H_BB_new_term_0_r2_b2("H_BB_new_term_0_r2_b2", {t, y_out, y_in, rp, n, r, s, nperm, wnumHex}, snk_B2_Blocal_r2_init(t, y_out, y_in, hex_snk_color_weights(r, nperm, wnumHex, 0, 1), hex_snk_spin_weights(r, nperm, wnumHex, 0, 1), hex_snk_color_weights(r, nperm, wnumHex, 2, 1), hex_snk_spin_weights(r, nperm, wnumHex, 2, 1), hex_snk_color_weights(r, nperm, wnumHex, 1, 1), hex_snk_spin_weights(r, nperm, wnumHex, 1, 1), n)); - H_BB_new_term_0_r2_b2.add_predicate((src_spins(rp, s, 1) == 2)); + complex_computation H_BB_new_term_0_r1_b2("H_BB_new_term_0_r1_b2", {t, y_out, y_in, nsc1, rp, n, r, mscH, s, nperm, wnumHex}, snk_B2_Blocal_r1_init(t, y_out, y_in, nsc1, hex_snk_color_weights(r, nperm, nsc1, mscH, wnumHex, 0, 1), hex_snk_spin_weights(r, nperm, nsc1, mscH, wnumHex, 0, 1), hex_snk_color_weights(r, nperm, nsc1, mscH, wnumHex, 2, 1), hex_snk_spin_weights(r, nperm, nsc1, mscH, wnumHex, 2, 1), hex_snk_color_weights(r, nperm, nsc1, mscH, wnumHex, 1, 1), hex_snk_spin_weights(r, nperm, nsc1, mscH, wnumHex, 1, 1), n)); + H_BB_new_term_0_r1_b2.add_predicate((cast(p_float64, src_spins(rp, s, 1)) == 1.0) && (hex_src_weights(r, mscH, wnumHex) * src_spin_block_weights(rp, s) != 0.0)); + complex_computation H_BB_new_term_0_r2_b2("H_BB_new_term_0_r2_b2", {t, y_out, y_in, nsc1, rp, n, r, mscH, s, nperm, wnumHex}, snk_B2_Blocal_r2_init(t, y_out, y_in, nsc1, hex_snk_color_weights(r, nperm, nsc1, mscH, wnumHex, 0, 1), hex_snk_spin_weights(r, nperm, nsc1, mscH, wnumHex, 0, 1), hex_snk_color_weights(r, nperm, nsc1, mscH, wnumHex, 2, 1), hex_snk_spin_weights(r, nperm, nsc1, mscH, wnumHex, 2, 1), hex_snk_color_weights(r, nperm, nsc1, mscH, wnumHex, 1, 1), hex_snk_spin_weights(r, nperm, nsc1, mscH, wnumHex, 1, 1), n)); + H_BB_new_term_0_r2_b2.add_predicate((cast(p_float64, src_spins(rp, s, 1)) == 2.0) && (hex_src_weights(r, mscH, wnumHex) * src_spin_block_weights(rp, s) != 0.0)); - complex_expr H_BB_term_res_b1 = H_BB_new_term_0_r1_b1(t, y_out, y_in, rp, n, r, s, nperm, wnumHex); - complex_expr H_BB_term_res_b2 = H_BB_new_term_0_r1_b2(t, y_out, y_in, rp, n, r, s, nperm, wnumHex); + complex_expr H_BB_term_res_b1 = H_BB_new_term_0_r1_b1(t, y_out, y_in, nsc1, rp, n, r, mscH, s, nperm, wnumHex); + complex_expr H_BB_term_res_b2 = H_BB_new_term_0_r1_b2(t, y_out, y_in, nsc1, rp, n, r, mscH, s, nperm, wnumHex); - complex_expr snk_hex_prefactor(cast(p_float64, sigs(nperm)) * hex_snk_weights(r, wnumHex) * src_spin_block_weights(rp, s), 0.0); + complex_expr snk_hex_prefactor(cast(p_float64, hex_sigs(nperm, nsc1)) * hex_src_weights(r, mscH, wnumHex) * src_spin_block_weights(rp, s), 0.0); complex_expr H_BB_term_res = snk_hex_prefactor * H_BB_term_res_b1 * H_BB_term_res_b2; - complex_computation flip_H_BB_new_term_0_r1_b1("flip_H_BB_new_term_0_r1_b1", {t, y_out, y_in, rp, n, r, s, nperm, wnumHex}, flip_snk_B1_Blocal_r1_init(t, y_out, y_in, hex_snk_color_weights(r, nperm, wnumHex, 0, 0), hex_snk_spin_weights(r, nperm, wnumHex, 0, 0), hex_snk_color_weights(r, nperm, wnumHex, 2, 0), hex_snk_spin_weights(r, nperm, wnumHex, 2, 0), hex_snk_color_weights(r, nperm, wnumHex, 1, 0), hex_snk_spin_weights(r, nperm, wnumHex, 1, 0), n)); - flip_H_BB_new_term_0_r1_b1.add_predicate((src_spins(rp, s, 0) == 1)); - complex_computation flip_H_BB_new_term_0_r2_b1("flip_H_BB_new_term_0_r2_b1", {t, y_out, y_in, rp, n, r, s, nperm, wnumHex}, flip_snk_B1_Blocal_r2_init(t, y_out, y_in, hex_snk_color_weights(r, nperm, wnumHex, 0, 0), hex_snk_spin_weights(r, nperm, wnumHex, 0, 0), hex_snk_color_weights(r, nperm, wnumHex, 2, 0), hex_snk_spin_weights(r, nperm, wnumHex, 2, 0), hex_snk_color_weights(r, nperm, wnumHex, 1, 0), hex_snk_spin_weights(r, nperm, wnumHex, 1, 0), n)); - flip_H_BB_new_term_0_r2_b1.add_predicate((src_spins(rp, s, 0) == 2)); + complex_computation flip_H_BB_new_term_0_r1_b1("flip_H_BB_new_term_0_r1_b1", {t, y_out, y_in, nsc1, rp, n, r, mscH, s, nperm, wnumHex}, flip_snk_B1_Blocal_r1_init(t, y_out, y_in, nsc1, hex_snk_color_weights(r, nperm, nsc1, mscH, wnumHex, 0, 0), hex_snk_spin_weights(r, nperm, nsc1, mscH, wnumHex, 0, 0), hex_snk_color_weights(r, nperm, nsc1, mscH, wnumHex, 2, 0), hex_snk_spin_weights(r, nperm, nsc1, mscH, wnumHex, 2, 0), hex_snk_color_weights(r, nperm, nsc1, mscH, wnumHex, 1, 0), hex_snk_spin_weights(r, nperm, nsc1, mscH, wnumHex, 1, 0), n)); + flip_H_BB_new_term_0_r1_b1.add_predicate((cast(p_float64, src_spins(rp, s, 0)) == 1.0) && (hex_src_weights(r, mscH, wnumHex) * src_spin_block_weights(rp, s) != 0.0)); + complex_computation flip_H_BB_new_term_0_r2_b1("flip_H_BB_new_term_0_r2_b1", {t, y_out, y_in, nsc1, rp, n, r, mscH, s, nperm, wnumHex}, flip_snk_B1_Blocal_r2_init(t, y_out, y_in, nsc1, hex_snk_color_weights(r, nperm, nsc1, mscH, wnumHex, 0, 0), hex_snk_spin_weights(r, nperm, nsc1, mscH, wnumHex, 0, 0), hex_snk_color_weights(r, nperm, nsc1, mscH, wnumHex, 2, 0), hex_snk_spin_weights(r, nperm, nsc1, mscH, wnumHex, 2, 0), hex_snk_color_weights(r, nperm, nsc1, mscH, wnumHex, 1, 0), hex_snk_spin_weights(r, nperm, nsc1, mscH, wnumHex, 1, 0), n)); + flip_H_BB_new_term_0_r2_b1.add_predicate((cast(p_float64, src_spins(rp, s, 0)) == 2.0) && (hex_src_weights(r, mscH, wnumHex) * src_spin_block_weights(rp, s) != 0.0)); - complex_computation flip_H_BB_new_term_0_r1_b2("flip_H_BB_new_term_0_r1_b2", {t, y_out, y_in, rp, n, r, s, nperm, wnumHex}, flip_snk_B2_Blocal_r1_init(t, y_out, y_in, hex_snk_color_weights(r, nperm, wnumHex, 0, 1), hex_snk_spin_weights(r, nperm, wnumHex, 0, 1), hex_snk_color_weights(r, nperm, wnumHex, 2, 1), hex_snk_spin_weights(r, nperm, wnumHex, 2, 1), hex_snk_color_weights(r, nperm, wnumHex, 1, 1), hex_snk_spin_weights(r, nperm, wnumHex, 1, 1), n)); - flip_H_BB_new_term_0_r1_b2.add_predicate((src_spins(rp, s, 1) == 1)); - complex_computation flip_H_BB_new_term_0_r2_b2("flip_H_BB_new_term_0_r2_b2", {t, y_out, y_in, rp, n, r, s, nperm, wnumHex}, flip_snk_B2_Blocal_r2_init(t, y_out, y_in, hex_snk_color_weights(r, nperm, wnumHex, 0, 1), hex_snk_spin_weights(r, nperm, wnumHex, 0, 1), hex_snk_color_weights(r, nperm, wnumHex, 2, 1), hex_snk_spin_weights(r, nperm, wnumHex, 2, 1), hex_snk_color_weights(r, nperm, wnumHex, 1, 1), hex_snk_spin_weights(r, nperm, wnumHex, 1, 1), n)); - flip_H_BB_new_term_0_r2_b2.add_predicate((src_spins(rp, s, 1) == 2)); + complex_computation flip_H_BB_new_term_0_r1_b2("flip_H_BB_new_term_0_r1_b2", {t, y_out, y_in, nsc1, rp, n, r, mscH, s, nperm, wnumHex}, flip_snk_B2_Blocal_r1_init(t, y_out, y_in, nsc1, hex_snk_color_weights(r, nperm, nsc1, mscH, wnumHex, 0, 1), hex_snk_spin_weights(r, nperm, nsc1, mscH, wnumHex, 0, 1), hex_snk_color_weights(r, nperm, nsc1, mscH, wnumHex, 2, 1), hex_snk_spin_weights(r, nperm, nsc1, mscH, wnumHex, 2, 1), hex_snk_color_weights(r, nperm, nsc1, mscH, wnumHex, 1, 1), hex_snk_spin_weights(r, nperm, nsc1, mscH, wnumHex, 1, 1), n)); + flip_H_BB_new_term_0_r1_b2.add_predicate((cast(p_float64, src_spins(rp, s, 1)) == 1.0) && (hex_src_weights(r, mscH, wnumHex) * src_spin_block_weights(rp, s) != 0.0)); + complex_computation flip_H_BB_new_term_0_r2_b2("flip_H_BB_new_term_0_r2_b2", {t, y_out, y_in, nsc1, rp, n, r, mscH, s, nperm, wnumHex}, flip_snk_B2_Blocal_r2_init(t, y_out, y_in, nsc1, hex_snk_color_weights(r, nperm, nsc1, mscH, wnumHex, 0, 1), hex_snk_spin_weights(r, nperm, nsc1, mscH, wnumHex, 0, 1), hex_snk_color_weights(r, nperm, nsc1, mscH, wnumHex, 2, 1), hex_snk_spin_weights(r, nperm, nsc1, mscH, wnumHex, 2, 1), hex_snk_color_weights(r, nperm, nsc1, mscH, wnumHex, 1, 1), hex_snk_spin_weights(r, nperm, nsc1, mscH, wnumHex, 1, 1), n)); + flip_H_BB_new_term_0_r2_b2.add_predicate((cast(p_float64, src_spins(rp, s, 1)) == 2.0) && (hex_src_weights(r, mscH, wnumHex) * src_spin_block_weights(rp, s) != 0.0)); - complex_expr flip_H_BB_term_res_b1 = flip_H_BB_new_term_0_r1_b1(t, y_out, y_in, rp, n, r, s, nperm, wnumHex); - complex_expr flip_H_BB_term_res_b2 = flip_H_BB_new_term_0_r1_b2(t, y_out, y_in, rp, n, r, s, nperm, wnumHex); + complex_expr flip_H_BB_term_res_b1 = flip_H_BB_new_term_0_r1_b1(t, y_out, y_in, nsc1, rp, n, r, mscH, s, nperm, wnumHex); + complex_expr flip_H_BB_term_res_b2 = flip_H_BB_new_term_0_r1_b2(t, y_out, y_in, nsc1, rp, n, r, mscH, s, nperm, wnumHex); complex_expr flip_H_BB_term_res = snk_hex_prefactor * flip_H_BB_term_res_b1 * flip_H_BB_term_res_b2; - computation C_H_BB_prop_update_r("C_H_BB_prop_update_r", {t, y_out, y_in, rp, n, r, s, nperm, wnumHex}, C_H_BB_prop_init_r(t, y_out, y_in, rp, n, r) + (H_BB_term_res.get_real() + flip_H_BB_term_res.get_real())/2.0 ); - computation C_H_BB_prop_update_i("C_H_BB_prop_update_i", {t, y_out, y_in, rp, n, r, s, nperm, wnumHex}, C_H_BB_prop_init_i(t, y_out, y_in, rp, n, r) + (H_BB_term_res.get_imag() + flip_H_BB_term_res.get_imag())/2.0 ); + computation C_H_BB_prop_update_r("C_H_BB_prop_update_r", {t, y_out, y_in, nsc1, rp, n, r, mscH, s, nperm, wnumHex}, C_H_BB_prop_init_r(t, y_out, y_in, nsc1, rp, n, r, mscH) + (H_BB_term_res.get_real() + flip_H_BB_term_res.get_real())/2.0 ); + C_H_BB_prop_update_r.add_predicate(hex_src_weights(r, mscH, wnumHex) * src_spin_block_weights(rp, s) != 0.0); + computation C_H_BB_prop_update_i("C_H_BB_prop_update_i", {t, y_out, y_in, nsc1, rp, n, r, mscH, s, nperm, wnumHex}, C_H_BB_prop_init_i(t, y_out, y_in, nsc1, rp, n, r, mscH) + (H_BB_term_res.get_imag() + flip_H_BB_term_res.get_imag())/2.0 ); + C_H_BB_prop_update_i.add_predicate(hex_src_weights(r, mscH, wnumHex) * src_spin_block_weights(rp, s) != 0.0); complex_computation C_H_BB_prop_update(&C_H_BB_prop_update_r, &C_H_BB_prop_update_i); - complex_expr H_BB_term = hex_src_psi * C_H_BB_prop_update(t, y_out, y_in, rp, n, r, 1, Nperms-1, Nw2Hex-1); + complex_expr H_BB_term = hex_src_psi * C_H_BB_prop_update(t, y_out, y_in, nsc1, rp, n, r, mscH, 1, Nperms-1, Nw2Hex-1); - computation C_H_BB_update_r("C_H_BB_update_r", {t, y_out, y_in, rp, n, r, mH}, C_init_r(t, y_out, r, Nsrc+mH, rp, n) + H_BB_term.get_real()); - computation C_H_BB_update_i("C_H_BB_update_i", {t, y_out, y_in, rp, n, r, mH}, C_init_i(t, y_out, r, Nsrc+mH, rp, n) + H_BB_term.get_imag()); + computation C_H_BB_update_r("C_H_BB_update_r", {t, y_out, y_in, nsc1, rp, n, r, mscH, mH}, C_init_r(t, y_out, r, B1NsrcSC*Nsrc+mscH*NsrcHex+mH, rp, nsc1*Nsnk+n) + H_BB_term.get_real()); + computation C_H_BB_update_i("C_H_BB_update_i", {t, y_out, y_in, nsc1, rp, n, r, mscH, mH}, C_init_i(t, y_out, r, B1NsrcSC*Nsrc+mscH*NsrcHex+mH, rp, nsc1*Nsnk+n) + H_BB_term.get_imag()); // H_H - computation C_H_H_prop_init_r("C_H_H_prop_init_r", {t, x_out, x_in, rp, r, y}, expr((double) 0)); - computation C_H_H_prop_init_i("C_H_H_prop_init_i", {t, x_out, x_in, rp, r, y}, expr((double) 0)); + // only diagonal part in spin is calculated (r = rp) + // only upper-triagle in msc, mscH + computation C_H_H_prop_init_r("C_H_H_prop_init_r", {t, x_out, rp, mscH, mH, nscH, nH}, expr((double) 0)); + computation C_H_H_prop_init_i("C_H_H_prop_init_i", {t, x_out, rp, mscH, mH, nscH, nH}, expr((double) 0)); - complex_expr H_H_B1_prop_0 = B1_prop(0, t, hex_snk_color_weights(r,nperm,wnumHex,0,0), hex_snk_spin_weights(r,nperm,wnumHex,0,0), hex_snk_color_weights(rp,0,wnumHexHex,0,0), hex_snk_spin_weights(rp,0,wnumHexHex,0,0), x_out*sites_per_rank+x_in, y); - complex_expr H_H_B1_prop_2 = B1_prop(2, t, hex_snk_color_weights(r,nperm,wnumHex,2,0), hex_snk_spin_weights(r,nperm,wnumHex,2,0), hex_snk_color_weights(rp,0,wnumHexHex,2,0), hex_snk_spin_weights(rp,0,wnumHexHex,2,0), x_out*sites_per_rank+x_in, y); - complex_expr H_H_B1_prop_1 = B1_prop(1, t, hex_snk_color_weights(r,nperm,wnumHex,1,0), hex_snk_spin_weights(r,nperm,wnumHex,1,0), hex_snk_color_weights(rp,0,wnumHexHex,1,0), hex_snk_spin_weights(rp,0,wnumHexHex,1,0), x_out*sites_per_rank+x_in, y); + complex_expr H_H_B1_prop_0 = B1_prop(0, t, hex_hex_snk_color_weights(rp,nperm,nscH,wnumHex,0,0), hex_hex_snk_spin_weights(rp,nperm,nscH,wnumHex,0,0), hex_hex_snk_color_weights(rp,0,mscH,wnumHexHex,0,0), hex_hex_snk_spin_weights(rp,0,mscH,wnumHexHex,0,0), x_out*sites_per_rank+x_in, y); + complex_expr H_H_B1_prop_1 = B1_prop(1, t, hex_hex_snk_color_weights(rp,nperm,nscH,wnumHex,1,0), hex_hex_snk_spin_weights(rp,nperm,nscH,wnumHex,1,0), hex_hex_snk_color_weights(rp,0,mscH,wnumHexHex,1,0), hex_hex_snk_spin_weights(rp,0,mscH,wnumHexHex,1,0), x_out*sites_per_rank+x_in, y); + complex_expr H_H_B1_prop_2 = B1_prop(2, t, hex_hex_snk_color_weights(rp,nperm,nscH,wnumHex,2,0), hex_hex_snk_spin_weights(rp,nperm,nscH,wnumHex,2,0), hex_hex_snk_color_weights(rp,0,mscH,wnumHexHex,2,0), hex_hex_snk_spin_weights(rp,0,mscH,wnumHexHex,2,0), x_out*sites_per_rank+x_in, y); complex_expr B1_H = H_H_B1_prop_0 * H_H_B1_prop_2 * H_H_B1_prop_1; - complex_expr H_H_B2_prop_0 = B2_prop(0, t, hex_snk_color_weights(r,nperm,wnumHex,0,1), hex_snk_spin_weights(r,nperm,wnumHex,0,1), hex_snk_color_weights(rp,0,wnumHexHex,0,1), hex_snk_spin_weights(rp,0,wnumHexHex,0,1), x_out*sites_per_rank+x_in, y); - complex_expr H_H_B2_prop_2 = B2_prop(2, t, hex_snk_color_weights(r,nperm,wnumHex,2,1), hex_snk_spin_weights(r,nperm,wnumHex,2,1), hex_snk_color_weights(rp,0,wnumHexHex,2,1), hex_snk_spin_weights(rp,0,wnumHexHex,2,1), x_out*sites_per_rank+x_in, y); - complex_expr H_H_B2_prop_1 = B2_prop(1, t, hex_snk_color_weights(r,nperm,wnumHex,1,1), hex_snk_spin_weights(r,nperm,wnumHex,1,1), hex_snk_color_weights(rp,0,wnumHexHex,1,1), hex_snk_spin_weights(rp,0,wnumHexHex,1,1), x_out*sites_per_rank+x_in, y); + complex_expr H_H_B2_prop_0 = B2_prop(0, t, hex_hex_snk_color_weights(rp,nperm,nscH,wnumHex,0,1), hex_hex_snk_spin_weights(rp,nperm,nscH,wnumHex,0,1), hex_hex_snk_color_weights(rp,0,mscH,wnumHexHex,0,1), hex_hex_snk_spin_weights(rp,0,mscH,wnumHexHex,0,1), x_out*sites_per_rank+x_in, y); + complex_expr H_H_B2_prop_1 = B2_prop(1, t, hex_hex_snk_color_weights(rp,nperm,nscH,wnumHex,1,1), hex_hex_snk_spin_weights(rp,nperm,nscH,wnumHex,1,1), hex_hex_snk_color_weights(rp,0,mscH,wnumHexHex,1,1), hex_hex_snk_spin_weights(rp,0,mscH,wnumHexHex,1,1), x_out*sites_per_rank+x_in, y); + complex_expr H_H_B2_prop_2 = B2_prop(2, t, hex_hex_snk_color_weights(rp,nperm,nscH,wnumHex,2,1), hex_hex_snk_spin_weights(rp,nperm,nscH,wnumHex,2,1), hex_hex_snk_color_weights(rp,0,mscH,wnumHexHex,2,1), hex_hex_snk_spin_weights(rp,0,mscH,wnumHexHex,2,1), x_out*sites_per_rank+x_in, y); complex_expr B2_H = H_H_B2_prop_0 * H_H_B2_prop_2 * H_H_B2_prop_1; - complex_expr hex_hex_prefactor(cast(p_float64, sigs(nperm)) * hex_snk_weights(r, wnumHex) * hex_snk_weights(rp, wnumHexHex), 0.0); + complex_expr hex_hex_prefactor(cast(p_float64, hex_hex_sigs(nperm)) * hex_snk_weights(rp, nscH, wnumHex) * hex_snk_weights(rp, mscH, wnumHexHex), 0.0); - complex_expr H_H_term_res = hex_hex_prefactor * B1_H * B2_H; + complex_expr H_H_term_res = hex_hex_prefactor * hex_hex_src_psi * hex_snk_psi * B1_H * B2_H; - computation C_H_H_prop_update_r("C_H_H_prop_update_r", {t, x_out, x_in, rp, r, y, nperm, wnumHex, wnumHexHex}, C_H_H_prop_init_r(t, x_out, x_in, rp, r, y) + H_H_term_res.get_real()); - computation C_H_H_prop_update_i("C_H_H_prop_update_i", {t, x_out, x_in, rp, r, y, nperm, wnumHex, wnumHexHex}, C_H_H_prop_init_i(t, x_out, x_in, rp, r, y) + H_H_term_res.get_imag()); + computation C_H_H_start_sc("C_H_H_start_sc", {t, x_out, rp, mscH, mH, nscH}, expr(cast(p_boolean,1))); + computation C_H_H_check_lower_sc("C_H_H_check_lower_sc", {t, x_out, rp, mscH, mH, nscH}, expr(cast(p_boolean,0))); + C_H_H_check_lower_sc.add_predicate(nscH < mscH); + computation C_H_H_start_src("C_H_H_start_src", {t, x_out, rp, mscH, mH, nscH, nH}, expr(cast(p_boolean,1))); + computation C_H_H_check_lower("C_H_H_check_lower", {t, x_out, rp, mscH, mH, nscH, nH}, expr(cast(p_boolean,0))); + C_H_H_check_lower.add_predicate(nH < mH); + computation C_H_H_check_src("C_H_H_check_src", {t, x_out, rp, mscH, mH, nscH, nH, wnumHexHex}, expr(cast(p_boolean,0))); + C_H_H_check_src.add_predicate(hex_snk_weights(rp, mscH, wnumHexHex) == 0.0); + computation C_H_H_start_snk("C_H_H_start_snk", {t, x_out, rp, mscH, mH, nscH, nH, wnumHexHex}, expr(cast(p_boolean,1))); + computation C_H_H_check_snk("C_H_H_check_snk", {t, x_out, rp, mscH, mH, nscH, nH, wnumHexHex, wnumHex}, expr(cast(p_boolean,0))); + C_H_H_check_snk.add_predicate(hex_snk_weights(rp, nscH, wnumHex) == 0.0); + + computation C_H_H_prop_update_r("C_H_H_prop_update_r", {t, x_out, rp, mscH, mH, nscH, nH, wnumHexHex, wnumHex, nperm, x_in, y}, C_H_H_prop_init_r(t, x_out, rp, mscH, mH, nscH, nH) + H_H_term_res.get_real()); + C_H_H_prop_update_r.add_predicate(C_H_H_start_sc(t, x_out, rp, mscH, mH, nscH) && C_H_H_start_src(t, x_out, rp, mscH, mH, nscH, nH) && C_H_H_start_snk(t, x_out, rp, mscH, mH, nscH, nH, wnumHexHex)); + computation C_H_H_prop_update_i("C_H_H_prop_update_i", {t, x_out, rp, mscH, mH, nscH, nH, wnumHexHex, wnumHex, nperm, x_in, y}, C_H_H_prop_init_i(t, x_out, rp, mscH, mH, nscH, nH) + H_H_term_res.get_imag()); + C_H_H_prop_update_i.add_predicate(C_H_H_start_sc(t, x_out, rp, mscH, mH, nscH) && C_H_H_start_src(t, x_out, rp, mscH, mH, nscH, nH) && C_H_H_start_snk(t, x_out, rp, mscH, mH, nscH, nH, wnumHexHex)); complex_computation C_H_H_prop_update(&C_H_H_prop_update_r, &C_H_H_prop_update_i); - complex_expr H_H_term = hex_hex_src_psi * hex_snk_psi * C_H_H_prop_update(t, x_out, x_in, rp, r, y, Nperms-1, Nw2Hex-1, Nw2Hex-1); + complex_expr H_H_term = C_H_H_prop_update(t, x_out, rp, mscH, mH, nscH, nH, Nw2Hex-1, Nw2Hex-1, Nperms-1, sites_per_rank-1, Vsrc-1); + + // only upper-triangular part (diagonal inclusive) is calculated, other entries are copied over + computation C_H_H_update_r("C_H_H_update_r", {t, x_out, rp, mscH, mH, nscH, nH}, C_init_r(t, x_out, rp, B1NsrcSC*Nsrc+mscH*NsrcHex+mH, rp, B1NsnkSC*Nsnk+nscH*NsnkHex+nH) + C_H_H_prop_init_r(t, x_out, rp, mscH, mH, nscH, nH)); + C_H_H_update_r.add_predicate((nscH >= mscH) && (nH >= mH)); + computation C_H_H_update_i("C_H_H_update_i", {t, x_out, rp, mscH, mH, nscH, nH}, C_init_i(t, x_out, rp, B1NsrcSC*Nsrc+mscH*NsrcHex+mH, rp, B1NsnkSC*Nsnk+nscH*NsnkHex+nH) + C_H_H_prop_init_i(t, x_out, rp, mscH, mH, nscH, nH)); + C_H_H_update_i.add_predicate((nscH >= mscH) && (nH >= mH)); - computation C_H_H_update_r("C_H_H_update_r", {t, x_out, x_in, rp, r, y, mH, nH}, C_init_r(t, x_out, rp, Nsrc+mH, r, Nsnk+nH) + H_H_term.get_real()); - computation C_H_H_update_i("C_H_H_update_i", {t, x_out, x_in, rp, r, y, mH, nH}, C_init_i(t, x_out, rp, Nsrc+mH, r, Nsnk+nH) + H_H_term.get_imag()); // ------------------------------------------------------- // Layer II @@ -1219,7 +1255,7 @@ void generate_function(std::string name) .then(flip_B1_Bsecond_r1_i_init, m) .then(flip_B1_Bthird_r1_r_init, m) .then(flip_B1_Bthird_r1_i_init, m) - .then(B1_Blocal_r1_r_props_init, x2) + .then(B1_Blocal_r1_r_props_init, msc1) .then(B1_Blocal_r1_i_props_init, jSprime) .then(B1_Bfirst_r1_r_props_init, jSprime) .then(B1_Bfirst_r1_i_props_init, jSprime) @@ -1257,7 +1293,7 @@ void generate_function(std::string name) .then(flip_B1_Bsecond_r1_i_update, m) .then(flip_B1_Bthird_r1_r_update, m) .then(flip_B1_Bthird_r1_i_update, m) - .then(B1_Blocal_r2_r_init, x2) + .then(B1_Blocal_r2_r_init, msc1) .then(B1_Blocal_r2_i_init, m) .then(B1_Bfirst_r2_r_init, m) .then(B1_Bfirst_r2_i_init, m) @@ -1273,7 +1309,7 @@ void generate_function(std::string name) .then(flip_B1_Bsecond_r2_i_init, m) .then(flip_B1_Bthird_r2_r_init, m) .then(flip_B1_Bthird_r2_i_init, m) - .then(B1_Blocal_r2_r_props_init, x2) + .then(B1_Blocal_r2_r_props_init, msc1) .then(B1_Blocal_r2_i_props_init, jSprime) .then(B1_Bfirst_r2_r_props_init, jSprime) .then(B1_Bfirst_r2_i_props_init, jSprime) @@ -1311,7 +1347,7 @@ void generate_function(std::string name) .then(flip_B1_Bsecond_r2_i_update, m) .then(flip_B1_Bthird_r2_r_update, m) .then(flip_B1_Bthird_r2_i_update, m) - .then(B2_Blocal_r1_r_init, x2) + .then(B2_Blocal_r1_r_init, msc1) .then(B2_Blocal_r1_i_init, m) .then(B2_Bfirst_r1_r_init, m) .then(B2_Bfirst_r1_i_init, m) @@ -1327,7 +1363,7 @@ void generate_function(std::string name) .then(flip_B2_Bsecond_r1_i_init, m) .then(flip_B2_Bthird_r1_r_init, m) .then(flip_B2_Bthird_r1_i_init, m) - .then(B2_Blocal_r1_r_props_init, x2) + .then(B2_Blocal_r1_r_props_init, msc1) .then(B2_Blocal_r1_i_props_init, jSprime) .then(B2_Bfirst_r1_r_props_init, jSprime) .then(B2_Bfirst_r1_i_props_init, jSprime) @@ -1365,7 +1401,7 @@ void generate_function(std::string name) .then(flip_B2_Bsecond_r1_i_update, m) .then(flip_B2_Bthird_r1_r_update, m) .then(flip_B2_Bthird_r1_i_update, m) - .then(B2_Blocal_r2_r_init, x2) + .then(B2_Blocal_r2_r_init, msc1) .then(B2_Blocal_r2_i_init, m) .then(B2_Bfirst_r2_r_init, m) .then(B2_Bfirst_r2_i_init, m) @@ -1381,7 +1417,7 @@ void generate_function(std::string name) .then(flip_B2_Bsecond_r2_i_init, m) .then(flip_B2_Bthird_r2_r_init, m) .then(flip_B2_Bthird_r2_i_init, m) - .then(B2_Blocal_r2_r_props_init, x2) + .then(B2_Blocal_r2_r_props_init, msc1) .then(B2_Blocal_r2_i_props_init, jSprime) .then(B2_Bfirst_r2_r_props_init, jSprime) .then(B2_Bfirst_r2_i_props_init, jSprime) @@ -1419,9 +1455,9 @@ void generate_function(std::string name) .then(flip_B2_Bsecond_r2_i_update, m) .then(flip_B2_Bthird_r2_r_update, m) .then(flip_B2_Bthird_r2_i_update, m) - .then(C_BB_BB_prop_init_r, x2) - .then(C_BB_BB_prop_init_i, r) - .then( *(BB_BB_new_term_0_r1_b1.get_real()), r) + .then(C_BB_BB_prop_init_r, msc1) + .then(C_BB_BB_prop_init_i, nsc1) + .then( *(BB_BB_new_term_0_r1_b1.get_real()), nsc1) .then( *(BB_BB_new_term_0_r1_b1.get_imag()), wnum) .then( *(BB_BB_new_term_1_r1_b1.get_real()), wnum) .then( *(BB_BB_new_term_1_r1_b1.get_imag()), wnum) @@ -1551,9 +1587,9 @@ void generate_function(std::string name) .then( *(flip_BB_BB_new_term_7_r2_b2.get_imag()), wnum) .then(C_BB_BB_prop_update_r, wnum) .then(C_BB_BB_prop_update_i, wnum) - .then(C_BB_BB_update_b_r, r) + .then(C_BB_BB_update_b_r, nsc1) .then(C_BB_BB_update_b_i, ne) - .then(C_BB_BB_update_s_r, r) + .then(C_BB_BB_update_s_r, nsc1) .then(C_BB_BB_update_s_i, nue) ); @@ -1563,7 +1599,7 @@ void generate_function(std::string name) .then(src_B1_Blocal_r1_i_init, jSprime) .then(flip_src_B1_Blocal_r1_r_init, jSprime) .then(flip_src_B1_Blocal_r1_i_init, jSprime) - .then(src_B1_Blocal_r1_r_props_init, x_in) + .then(src_B1_Blocal_r1_r_props_init, msc1) .then(src_B1_Blocal_r1_i_props_init, jSprime) .then(src_B1_Blocal_r1_r_diquark, y) .then(src_B1_Blocal_r1_i_diquark, wnumBlock) @@ -1573,11 +1609,11 @@ void generate_function(std::string name) .then(src_B1_Blocal_r1_i_update, m) .then(flip_src_B1_Blocal_r1_r_update, m) .then(flip_src_B1_Blocal_r1_i_update, m) - .then(src_B1_Blocal_r2_r_init, x_in) + .then(src_B1_Blocal_r2_r_init, msc1) .then(src_B1_Blocal_r2_i_init, jSprime) .then(flip_src_B1_Blocal_r2_r_init, jSprime) .then(flip_src_B1_Blocal_r2_i_init, jSprime) - .then(src_B1_Blocal_r2_r_props_init, x_in) + .then(src_B1_Blocal_r2_r_props_init, msc1) .then(src_B1_Blocal_r2_i_props_init, jSprime) .then(src_B1_Blocal_r2_r_diquark, y) .then(src_B1_Blocal_r2_i_diquark, wnumBlock) @@ -1587,11 +1623,11 @@ void generate_function(std::string name) .then(src_B1_Blocal_r2_i_update, m) .then(flip_src_B1_Blocal_r2_r_update, m) .then(flip_src_B1_Blocal_r2_i_update, m) - .then(src_B2_Blocal_r1_r_init, x_in) + .then(src_B2_Blocal_r1_r_init, msc1) .then(src_B2_Blocal_r1_i_init, jSprime) .then(flip_src_B2_Blocal_r1_r_init, jSprime) .then(flip_src_B2_Blocal_r1_i_init, jSprime) - .then(src_B2_Blocal_r1_r_props_init, x_in) + .then(src_B2_Blocal_r1_r_props_init, msc1) .then(src_B2_Blocal_r1_i_props_init, jSprime) .then(src_B2_Blocal_r1_r_diquark, y) .then(src_B2_Blocal_r1_i_diquark, wnumBlock) @@ -1601,11 +1637,11 @@ void generate_function(std::string name) .then(src_B2_Blocal_r1_i_update, m) .then(flip_src_B2_Blocal_r1_r_update, m) .then(flip_src_B2_Blocal_r1_i_update, m) - .then(src_B2_Blocal_r2_r_init, x_in) + .then(src_B2_Blocal_r2_r_init, msc1) .then(src_B2_Blocal_r2_i_init, jSprime) .then(flip_src_B2_Blocal_r2_r_init, jSprime) .then(flip_src_B2_Blocal_r2_i_init, jSprime) - .then(src_B2_Blocal_r2_r_props_init, x_in) + .then(src_B2_Blocal_r2_r_props_init, msc1) .then(src_B2_Blocal_r2_i_props_init, jSprime) .then(src_B2_Blocal_r2_r_diquark, y) .then(src_B2_Blocal_r2_i_diquark, wnumBlock) @@ -1615,9 +1651,9 @@ void generate_function(std::string name) .then(src_B2_Blocal_r2_i_update, m) .then(flip_src_B2_Blocal_r2_r_update, m) .then(flip_src_B2_Blocal_r2_i_update, m) - .then(C_BB_H_prop_init_r, x_in) - .then(C_BB_H_prop_init_i, r) - .then( *(BB_H_new_term_0_r1_b1.get_real()), r) + .then(C_BB_H_prop_init_r, msc1) + .then(C_BB_H_prop_init_i, nscH) + .then( *(BB_H_new_term_0_r1_b1.get_real()), nscH) .then( *(BB_H_new_term_0_r1_b1.get_imag()), wnumHex) .then( *(BB_H_new_term_0_r2_b1.get_real()), wnumHex) .then( *(BB_H_new_term_0_r2_b1.get_imag()), wnumHex) @@ -1635,7 +1671,7 @@ void generate_function(std::string name) .then( *(flip_BB_H_new_term_0_r2_b2.get_imag()), wnumHex) .then(C_BB_H_prop_update_r, wnumHex) .then(C_BB_H_prop_update_i, wnumHex) - .then(C_BB_H_update_r, r) + .then(C_BB_H_update_r, nscH) .then(C_BB_H_update_i, nH) ); @@ -1645,7 +1681,7 @@ void generate_function(std::string name) .then(snk_B1_Blocal_r1_i_init, jSprime) .then(flip_snk_B1_Blocal_r1_r_init, jSprime) .then(flip_snk_B1_Blocal_r1_i_init, jSprime) - .then(snk_B1_Blocal_r1_r_props_init, y_in) + .then(snk_B1_Blocal_r1_r_props_init, nsc1) .then(snk_B1_Blocal_r1_i_props_init, jSprime) .then(snk_B1_Blocal_r1_r_diquark, x) .then(snk_B1_Blocal_r1_i_diquark, wnumBlock) @@ -1655,11 +1691,11 @@ void generate_function(std::string name) .then(snk_B1_Blocal_r1_i_update, n) .then(flip_snk_B1_Blocal_r1_r_update, n) .then(flip_snk_B1_Blocal_r1_i_update, n) - .then(snk_B1_Blocal_r2_r_init, y_in) + .then(snk_B1_Blocal_r2_r_init, nsc1) .then(snk_B1_Blocal_r2_i_init, jSprime) .then(flip_snk_B1_Blocal_r2_r_init, jSprime) .then(flip_snk_B1_Blocal_r2_i_init, jSprime) - .then(snk_B1_Blocal_r2_r_props_init, y_in) + .then(snk_B1_Blocal_r2_r_props_init, nsc1) .then(snk_B1_Blocal_r2_i_props_init, jSprime) .then(snk_B1_Blocal_r2_r_diquark, x) .then(snk_B1_Blocal_r2_i_diquark, wnumBlock) @@ -1669,11 +1705,11 @@ void generate_function(std::string name) .then(snk_B1_Blocal_r2_i_update, n) .then(flip_snk_B1_Blocal_r2_r_update, n) .then(flip_snk_B1_Blocal_r2_i_update, n) - .then(snk_B2_Blocal_r1_r_init, y_in) + .then(snk_B2_Blocal_r1_r_init, nsc1) .then(snk_B2_Blocal_r1_i_init, jSprime) .then(flip_snk_B2_Blocal_r1_r_init, jSprime) .then(flip_snk_B2_Blocal_r1_i_init, jSprime) - .then(snk_B2_Blocal_r1_r_props_init, y_in) + .then(snk_B2_Blocal_r1_r_props_init, nsc1) .then(snk_B2_Blocal_r1_i_props_init, jSprime) .then(snk_B2_Blocal_r1_r_diquark, x) .then(snk_B2_Blocal_r1_i_diquark, wnumBlock) @@ -1683,11 +1719,11 @@ void generate_function(std::string name) .then(snk_B2_Blocal_r1_i_update, n) .then(flip_snk_B2_Blocal_r1_r_update, n) .then(flip_snk_B2_Blocal_r1_i_update, n) - .then(snk_B2_Blocal_r2_r_init, y_in) + .then(snk_B2_Blocal_r2_r_init, nsc1) .then(snk_B2_Blocal_r2_i_init, jSprime) .then(flip_snk_B2_Blocal_r2_r_init, jSprime) .then(flip_snk_B2_Blocal_r2_i_init, jSprime) - .then(snk_B2_Blocal_r2_r_props_init, y_in) + .then(snk_B2_Blocal_r2_r_props_init, nsc1) .then(snk_B2_Blocal_r2_i_props_init, jSprime) .then(snk_B2_Blocal_r2_r_diquark, x) .then(snk_B2_Blocal_r2_i_diquark, wnumBlock) @@ -1697,9 +1733,9 @@ void generate_function(std::string name) .then(flip_snk_B2_Blocal_r2_r_update, n) .then(flip_snk_B2_Blocal_r2_i_update, n) .then(snk_B2_Blocal_r2_i_update, n) - .then(C_H_BB_prop_init_r, y_in) - .then(C_H_BB_prop_init_i, r) - .then( *(H_BB_new_term_0_r1_b1.get_real()), r) + .then(C_H_BB_prop_init_r, nsc1) + .then(C_H_BB_prop_init_i, mscH) + .then( *(H_BB_new_term_0_r1_b1.get_real()), mscH) .then( *(H_BB_new_term_0_r1_b1.get_imag()), wnumHex) .then( *(H_BB_new_term_0_r2_b1.get_real()), wnumHex) .then( *(H_BB_new_term_0_r2_b1.get_imag()), wnumHex) @@ -1717,17 +1753,25 @@ void generate_function(std::string name) .then( *(flip_H_BB_new_term_0_r2_b2.get_imag()), wnumHex) .then(C_H_BB_prop_update_r, wnumHex) .then(C_H_BB_prop_update_i, wnumHex) - .then(C_H_BB_update_r, r) + .then(C_H_BB_update_r, mscH) .then(C_H_BB_update_i, mH) ); + // H_H handle = &(handle ->then(C_H_H_prop_init_r, t) - .then(C_H_H_prop_init_i, y) - .then(C_H_H_prop_update_r, y) - .then(C_H_H_prop_update_i, wnumHexHex) - .then(C_H_H_update_r, y) + .then(C_H_H_prop_init_i, nH) + .then(C_H_H_start_sc, nscH) + .then(C_H_H_check_lower_sc, nscH) + .then(C_H_H_start_src, nH) + .then(C_H_H_check_lower, nH) + .then(C_H_H_check_src, nH) + .then(C_H_H_start_snk, wnumHexHex) + .then(C_H_H_check_snk, wnumHexHex) + .then(C_H_H_prop_update_r, wnumHex) + .then(C_H_H_prop_update_i, y) + .then(C_H_H_update_r, nH) .then(C_H_H_update_i, nH) ); @@ -1736,7 +1780,7 @@ void generate_function(std::string name) (BB_BB_new_term_0_r1_b1.get_real())->tag_vector_level(wnum, Nw2); (BB_H_new_term_0_r1_b1.get_real())->tag_vector_level(wnumHex, Nw2Hex); (H_BB_new_term_0_r1_b1.get_real())->tag_vector_level(wnumHex, Nw2Hex); - C_H_H_prop_update_r.tag_vector_level(wnumHexHex, Nw2Hex); + C_H_H_prop_update_r.tag_vector_level(y, Vsnk); #endif @@ -2450,10 +2494,10 @@ void generate_function(std::string name) C_BB_BB_prop_update_r.store_in(&buf_C_BB_BB_prop_r, {0}); C_BB_BB_prop_update_i.store_in(&buf_C_BB_BB_prop_i, {0}); - C_BB_BB_update_b_r.store_in(&buf_C_r, {t, x_out, rp, m, r, ne}); - C_BB_BB_update_b_i.store_in(&buf_C_i, {t, x_out, rp, m, r, ne}); - C_BB_BB_update_s_r.store_in(&buf_C_r, {t, x_out, rp, m, r, NEntangled+nue}); - C_BB_BB_update_s_i.store_in(&buf_C_i, {t, x_out, rp, m, r, NEntangled+nue}); + C_BB_BB_update_s_r.store_in(&buf_C_r, {t, x_out, rp, msc1*Nsrc+m, r, nsc1*Nsnk+NEntangled+nue}); + C_BB_BB_update_s_i.store_in(&buf_C_i, {t, x_out, rp, msc1*Nsrc+m, r, nsc1*Nsnk+NEntangled+nue}); + C_BB_BB_update_b_r.store_in(&buf_C_r, {t, x_out, rp, msc1*Nsrc+m, r, nsc1*Nsnk+ne}); + C_BB_BB_update_b_i.store_in(&buf_C_i, {t, x_out, rp, msc1*Nsrc+m, r, nsc1*Nsnk+ne}); // BB_H @@ -2506,8 +2550,8 @@ void generate_function(std::string name) C_BB_H_prop_update_r.store_in(&buf_C_BB_H_prop_r, {0}); C_BB_H_prop_update_i.store_in(&buf_C_BB_H_prop_i, {0}); - C_BB_H_update_r.store_in(&buf_C_r, {t, x_out, rp, m, r, Nsnk+nH}); - C_BB_H_update_i.store_in(&buf_C_i, {t, x_out, rp, m, r, Nsnk+nH}); + C_BB_H_update_r.store_in(&buf_C_r, {t, x_out, rp, msc1*Nsrc+m, r, B1NsnkSC*Nsnk+nscH*NsnkHex+nH}); + C_BB_H_update_i.store_in(&buf_C_i, {t, x_out, rp, msc1*Nsrc+m, r, B1NsnkSC*Nsnk+nscH*NsnkHex+nH}); // H_BB @@ -2559,8 +2603,8 @@ void generate_function(std::string name) C_H_BB_prop_update_r.store_in(&buf_C_H_BB_prop_r, {0}); C_H_BB_prop_update_i.store_in(&buf_C_H_BB_prop_i, {0}); - C_H_BB_update_r.store_in(&buf_C_r, {t, y_out, r, Nsrc+mH, rp, n}); - C_H_BB_update_i.store_in(&buf_C_i, {t, y_out, r, Nsrc+mH, rp, n}); + C_H_BB_update_r.store_in(&buf_C_r, {t, y_out, r, B1NsrcSC*Nsrc+mscH*NsrcHex+mH, rp, nsc1*Nsnk+n}); + C_H_BB_update_i.store_in(&buf_C_i, {t, y_out, r, B1NsrcSC*Nsrc+mscH*NsrcHex+mH, rp, nsc1*Nsnk+n}); // H_H @@ -2572,8 +2616,20 @@ void generate_function(std::string name) C_H_H_prop_update_r.store_in(&buf_C_H_H_prop_r, {0}); C_H_H_prop_update_i.store_in(&buf_C_H_H_prop_i, {0}); - C_H_H_update_r.store_in(&buf_C_r, {t, x_out, rp, Nsrc+mH, r, Nsnk+nH}); - C_H_H_update_i.store_in(&buf_C_i, {t, x_out, rp, Nsrc+mH, r, Nsnk+nH}); + buffer buf_C_H_H_check_sc("buf_C_H_H_check_sc", {1}, p_boolean, a_temporary); + buffer buf_C_H_H_check_src("buf_C_H_H_check_src", {1}, p_boolean, a_temporary); + buffer buf_C_H_H_check_snk("buf_C_H_H_check_snk", {1}, p_boolean, a_temporary); + + C_H_H_start_sc.store_in(&buf_C_H_H_check_sc, {0}); + C_H_H_check_lower_sc.store_in(&buf_C_H_H_check_sc, {0}); + C_H_H_start_src.store_in(&buf_C_H_H_check_src, {0}); + C_H_H_check_lower.store_in(&buf_C_H_H_check_src, {0}); + C_H_H_check_src.store_in(&buf_C_H_H_check_src, {0}); + C_H_H_start_snk.store_in(&buf_C_H_H_check_snk, {0}); + C_H_H_check_snk.store_in(&buf_C_H_H_check_snk, {0}); + + C_H_H_update_r.store_in(&buf_C_r, {t, x_out, rp, B1NsrcSC*Nsrc+mscH*NsrcHex+mH, rp, B1NsnkSC*Nsnk+nscH*NsnkHex+nH}); + C_H_H_update_i.store_in(&buf_C_i, {t, x_out, rp, B1NsrcSC*Nsrc+mscH*NsrcHex+mH, rp, B1NsnkSC*Nsnk+nscH*NsnkHex+nH}); // ------------------------------------------------------- // Code Generation @@ -2592,6 +2648,8 @@ void generate_function(std::string name) src_spins.get_buffer(), src_spin_block_weights.get_buffer(), sigs.get_buffer(), + hex_sigs.get_buffer(), + hex_hex_sigs.get_buffer(), src_color_weights.get_buffer(), src_spin_weights.get_buffer(), src_weights.get_buffer(), @@ -2601,7 +2659,12 @@ void generate_function(std::string name) snk_weights.get_buffer(), hex_snk_color_weights.get_buffer(), hex_snk_spin_weights.get_buffer(), - hex_snk_weights.get_buffer() + hex_snk_weights.get_buffer(), + hex_src_color_weights.get_buffer(), + hex_src_spin_weights.get_buffer(), + hex_src_weights.get_buffer(), + hex_hex_snk_color_weights.get_buffer(), + hex_hex_snk_spin_weights.get_buffer() }, "generated_tiramisu_make_fused_dibaryon_blocks_correlator.o"); } diff --git a/benchmarks/tensors/dibaryon/tiramisu_make_fused_dibaryon_blocks_correlator/tiramisu_make_fused_dibaryon_blocks_correlator_wrapper.cpp b/benchmarks/tensors/dibaryon/tiramisu_make_fused_dibaryon_blocks_correlator/tiramisu_make_fused_dibaryon_blocks_correlator_wrapper.cpp index b6ac8f1d9..2d693116a 100644 --- a/benchmarks/tensors/dibaryon/tiramisu_make_fused_dibaryon_blocks_correlator/tiramisu_make_fused_dibaryon_blocks_correlator_wrapper.cpp +++ b/benchmarks/tensors/dibaryon/tiramisu_make_fused_dibaryon_blocks_correlator/tiramisu_make_fused_dibaryon_blocks_correlator_wrapper.cpp @@ -13,8 +13,8 @@ extern "C" { #include "tiramisu_make_fused_dibaryon_blocks_correlator_wrapper.h" #include "tiramisu_make_fused_dibaryon_blocks_correlator_ref.cpp" -#define RUN_REFERENCE 0 -#define RUN_CHECK 0 +#define RUN_REFERENCE 1 +#define RUN_CHECK 1 int nb_tests = 1; int randommode = 1; @@ -46,6 +46,14 @@ void tiramisu_make_two_nucleon_2pt(double* C_re, double *hex_snk_weights_T1_r3, int* perms, int* sigs, + int* hex_perms, + int* hex_sigs, + int* hex_perms_snk, + int* hex_sigs_snk, + int* hex_hex_perms, + int* hex_hex_sigs, + int* BB_pairs_src, + int* BB_pairs_snk, double* src_psi_B1_re, double* src_psi_B1_im, double* src_psi_B2_re, @@ -63,7 +71,7 @@ void tiramisu_make_two_nucleon_2pt(double* C_re, int space_symmetric, int snk_entangled) { - int q, t, iC, iS, jC, jS, y, x, x1, x2, m, n, k, wnum, nperm, b, r, rp; + int q, t, iC, iS, jC, jS, y, x, x1, x2, msc, nsc, m, n, k, wnum, nperm, b, r, rp; int iC1, iS1, iC2, iS2, jC1, jS1, jC2, jS2, kC1, kS1, kC2, kS2; int rank = 0; @@ -75,39 +83,51 @@ void tiramisu_make_two_nucleon_2pt(double* C_re, long mega = 1024*1024; std::cout << "Array sizes" << std::endl; std::cout << "Prop:" << std::endl; - std::cout << " Max index size = " << Nq*Vsnk*Vsrc*Nc*Ns*Nc*Ns*Lt << std::endl; - std::cout << " Array size = " << Nq*Vsnk*Vsrc*Nc*Ns*Nc*Ns*Lt*sizeof(std::complex)/mega << " Mega bytes" << std::endl; - std::cout << "Q, O & P:" << std::endl; - std::cout << " Max index size = " << Vsnk*Vsrc*Nc*Ns*Nc*Ns << std::endl; - std::cout << " Array size = " << Vsnk*Vsrc*Nc*Ns*Nc*Ns*sizeof(std::complex)/mega << " Mega bytes" << std::endl; + std::cout << " Max index size = " << Vsnk*Vsrc*Nc*Ns*Nc*Ns*Lt*Nq << std::endl; + std::cout << " Array size = " << Vsnk*Vsrc*Nc*Ns*Nc*Ns*Lt*Nq*sizeof(std::complex)/mega << " Mega bytes" << std::endl; + //std::cout << "Q, O & P:" << std::endl; + //std::cout << " Max index size = " << Vsnk*Vsrc*Nc*Ns*Nc*Ns << std::endl; + //std::cout << " Array size = " << Vsnk*Vsrc*Nc*Ns*Nc*Ns*sizeof(std::complex)/mega << " Mega bytes" << std::endl; long kilo = 1024; - std::cout << "Blocal:" << std::endl; - std::cout << " Max index size = " << Vsnk*Nsrc*Nc*Ns*Nc*Ns*Nc*Ns << std::endl; - std::cout << " Array size = " << Vsnk*Nsrc*Nc*Ns*Nc*Ns*Nc*Ns*sizeof(std::complex)/kilo << " kilo bytes" << std::endl; + //std::cout << "Blocal:" << std::endl; + //std::cout << " Max index size = " << Vsnk*Nsrc*Nc*Ns*Nc*Ns*Nc*Ns << std::endl; + //std::cout << " Array size = " << Vsnk*Nsrc*Nc*Ns*Nc*Ns*Nc*Ns*sizeof(std::complex)/kilo << " kilo bytes" << std::endl; std::cout << "Blocal, Bsingle, Bdouble:" << std::endl; std::cout << " Max index size = " << Nc*Ns*Nc*Ns*Nc*Ns << std::endl; std::cout << " Array size = " << Nc*Ns*Nc*Ns*Nc*Ns*sizeof(std::complex)/kilo << " kilo bytes" << std::endl; std::cout << std::endl; } - // Halide buffers - Halide::Buffer b_C_r(Nsnk+NsnkHex, B2Nrows, Nsrc+NsrcHex, B2Nrows, Vsnk/sites_per_rank, Lt, "C_r"); - Halide::Buffer b_C_i(Nsnk+NsnkHex, B2Nrows, Nsrc+NsrcHex, B2Nrows, Vsnk/sites_per_rank, Lt, "C_i"); + // Halide buffers + int NsrcTot = B1NsrcSC*Nsrc+B2NsrcSC*NsrcHex; + int NsnkTot = B1NsnkSC*Nsnk+B2NsnkSC*NsnkHex; + Halide::Buffer b_C_r(NsnkTot, B2Nrows, NsrcTot, B2Nrows, Vsnk/sites_per_rank, Lt, "C_r"); + Halide::Buffer b_C_i(NsnkTot, B2Nrows, NsrcTot, B2Nrows, Vsnk/sites_per_rank, Lt, "C_i"); - Halide::Buffer b_src_color_weights(Nq, Nw, B2Nrows, "src_color_weights"); - Halide::Buffer b_src_spin_weights(Nq, Nw, B2Nrows, "src_spin_weights"); - Halide::Buffer b_src_weights(Nw, B2Nrows, "src_weights"); + Halide::Buffer b_src_color_weights(Nq, Nw, B1NsrcSC, 2, 2, "src_color_weights"); + Halide::Buffer b_src_spin_weights(Nq, Nw, B1NsrcSC, 2, 2, "src_spin_weights"); + Halide::Buffer b_src_weights(Nw, B1NsrcSC, 2, 2, "src_weights"); Halide::Buffer b_src_spins(2, 2, B2Nrows, "src_spins"); Halide::Buffer b_src_spin_block_weights(2, B2Nrows, "src_spin_block_weights"); - Halide::Buffer b_snk_b(2, Nq, Nperms, "snk_b"); - Halide::Buffer b_snk_color_weights(2, Nq, Nw2, Nperms, B2Nrows, "snk_color_weights"); - Halide::Buffer b_snk_spin_weights(2, Nq, Nw2, Nperms, B2Nrows, "snk_spin_weights"); - Halide::Buffer b_snk_weights(Nw2, B2Nrows, "snk_weights"); - Halide::Buffer b_hex_snk_color_weights(2, Nq, Nw2Hex, Nperms, B2Nrows, "hex_snk_color_weights"); - Halide::Buffer b_hex_snk_spin_weights(2, Nq, Nw2Hex, Nperms, B2Nrows, "hex_snk_spin_weights"); - Halide::Buffer b_hex_snk_weights(Nw2Hex, B2Nrows, "hex_snk_weights"); + Halide::Buffer b_snk_b(2, Nq, B1NsnkSC, B1NsrcSC, Nperms, "snk_b"); + + Halide::Buffer b_sigs((int *)sigs, {B1NsnkSC, B1NsrcSC, Nperms}); + Halide::Buffer b_hex_sigs((int *)hex_sigs, {B1NsrcSC, Nperms}); + Halide::Buffer b_hex_hex_sigs((int *)hex_hex_sigs, {Nperms}); + + Halide::Buffer b_snk_color_weights(2, Nq, Nw2, B1NsnkSC, B1NsrcSC, Nperms, B2Nrows, "snk_color_weights"); + Halide::Buffer b_snk_spin_weights(2, Nq, Nw2, B1NsnkSC, B1NsrcSC, Nperms, B2Nrows, "snk_spin_weights"); + Halide::Buffer b_snk_weights(Nw2, B1NsnkSC, B2Nrows, "snk_weights"); + Halide::Buffer b_hex_snk_color_weights(2, Nq, Nw2Hex, B2NsnkSC, B1NsrcSC, Nperms, B2Nrows, "hex_snk_color_weights"); + Halide::Buffer b_hex_snk_spin_weights(2, Nq, Nw2Hex, B2NsnkSC, B1NsrcSC, Nperms, B2Nrows, "hex_snk_spin_weights"); + Halide::Buffer b_hex_snk_weights(Nw2Hex, B2NsnkSC, B2Nrows, "hex_snk_weights"); + Halide::Buffer b_hex_src_color_weights(2, Nq, Nw2Hex, B2NsrcSC, B1NsnkSC, Nperms, B2Nrows, "hex_src_color_weights"); + Halide::Buffer b_hex_src_spin_weights(2, Nq, Nw2Hex, B2NsrcSC, B1NsnkSC, Nperms, B2Nrows, "hex_src_spin_weights"); + Halide::Buffer b_hex_src_weights(Nw2Hex, B2NsrcSC, B2Nrows, "hex_src_weights"); + Halide::Buffer b_hex_hex_snk_color_weights(2, Nq, Nw2Hex, B2NsnkSC, Nperms, B2Nrows, "hex_hex_snk_color_weights"); + Halide::Buffer b_hex_hex_snk_spin_weights(2, Nq, Nw2Hex, B2NsnkSC, Nperms, B2Nrows, "hex_hex_snk_spin_weights"); // prop Halide::Buffer b_B1_prop_r((double *)B1_prop_re, {Vsrc, Vsnk, Ns, Nc, Ns, Nc, Lt, Nq}); @@ -132,87 +152,109 @@ void tiramisu_make_two_nucleon_2pt(double* C_re, Halide::Buffer b_hex_src_psi_i((double *)hex_src_psi_im, {NsrcHex, Vsrc}); Halide::Buffer b_hex_snk_psi_r((double *)hex_snk_psi_re, {NsnkHex, Vsnk}); Halide::Buffer b_hex_snk_psi_i((double *)hex_snk_psi_im, {NsnkHex, Vsnk}); - Halide::Buffer b_snk_psi_r((double *)snk_psi_re, {Nsnk, Vsnk, sites_per_rank}); - Halide::Buffer b_snk_psi_i((double *)snk_psi_im, {Nsnk, Vsnk, sites_per_rank}); + Halide::Buffer b_snk_psi_r((double *)snk_psi_re, {NEntangled, Vsnk, sites_per_rank}); + Halide::Buffer b_snk_psi_i((double *)snk_psi_im, {NEntangled, Vsnk, sites_per_rank}); - Halide::Buffer b_sigs((int *)sigs, {Nperms}); + if (rank == 0) { + printf("psi elem %4.9f \n", b_snk_psi_r(0,0,0)); + } // Weights + for (int msc=0; msc 0) { + printf("src weights elem %4.9f \n", b_src_color_weights(0,0,0,0,0)); + } + + int* snk_color_weights_r1 = (int *) malloc(2 * Nw2 * B1NsnkSC * Nq * sizeof (int)); + int* snk_color_weights_r2 = (int *) malloc(2 * Nw2 * B1NsnkSC * Nq * sizeof (int)); + int* snk_color_weights_r3 = (int *) malloc(2 * Nw2 * B1NsnkSC * Nq * sizeof (int)); + int* snk_spin_weights_r1 = (int *) malloc(2 * Nw2 * B1NsnkSC * Nq * sizeof (int)); + int* snk_spin_weights_r2 = (int *) malloc(2 * Nw2 * B1NsnkSC * Nq * sizeof (int)); + int* snk_spin_weights_r3 = (int *) malloc(2 * Nw2 * B1NsnkSC * Nq * sizeof (int)); + for (int nsc=0; nsc 0) printf("weights snk %4.1f \n", b_snk_weights(0,0)); printf("sigs %d \n", b_sigs(0)); } @@ -377,6 +465,8 @@ void tiramisu_make_two_nucleon_2pt(double* C_re, b_src_spins.raw_buffer(), b_src_spin_block_weights.raw_buffer(), b_sigs.raw_buffer(), + b_hex_sigs.raw_buffer(), + b_hex_hex_sigs.raw_buffer(), b_src_color_weights.raw_buffer(), b_src_spin_weights.raw_buffer(), b_src_weights.raw_buffer(), @@ -386,7 +476,12 @@ void tiramisu_make_two_nucleon_2pt(double* C_re, b_snk_weights.raw_buffer(), b_hex_snk_color_weights.raw_buffer(), b_hex_snk_spin_weights.raw_buffer(), - b_hex_snk_weights.raw_buffer()); + b_hex_snk_weights.raw_buffer(), + b_hex_src_color_weights.raw_buffer(), + b_hex_src_spin_weights.raw_buffer(), + b_hex_src_weights.raw_buffer(), + b_hex_hex_snk_color_weights.raw_buffer(), + b_hex_hex_snk_spin_weights.raw_buffer()); printf("done \n"); @@ -396,28 +491,26 @@ void tiramisu_make_two_nucleon_2pt(double* C_re, printf("BB-BB non-zero? %4.9e + I %4.9e \n", b_C_r(0,1,0,0,0,0), b_C_i(0,1,0,0,0,0) ); printf("BB-BB non-zero? %4.9e + I %4.9e \n", b_C_r(0,2,0,0,0,0), b_C_i(0,2,0,0,0,0) ); printf("BB-BB non-zero? %4.9e + I %4.9e \n", b_C_r(0,3,0,0,0,0), b_C_i(0,3,0,0,0,0) ); - printf("BB-BB non-zero? %4.9e + I %4.9e \n", b_C_r(0,4,0,0,0,0), b_C_i(0,4,0,0,0,0) ); - printf("BB-BB non-zero? %4.9e + I %4.9e \n", b_C_r(0,5,0,0,0,0), b_C_i(0,5,0,0,0,0) ); - printf("H-BB non-zero? %4.9e + I %4.9e \n", b_C_r(0,0,Nsrc,0,0,0), b_C_i(0,0,Nsrc,0,0,0) ); - printf("H-BB non-zero? %4.9e + I %4.9e \n", b_C_r(0,1,Nsrc,0,0,0), b_C_i(0,1,Nsrc,0,0,0) ); - printf("H-BB non-zero? %4.9e + I %4.9e \n", b_C_r(0,2,Nsrc,0,0,0), b_C_i(0,2,Nsrc,0,0,0) ); - printf("H-BB non-zero? %4.9e + I %4.9e \n", b_C_r(0,3,Nsrc,0,0,0), b_C_i(0,3,Nsrc,0,0,0) ); - printf("H-BB non-zero? %4.9e + I %4.9e \n", b_C_r(0,4,Nsrc,0,0,0), b_C_i(0,4,Nsrc,0,0,0) ); - printf("H-BB non-zero? %4.9e + I %4.9e \n", b_C_r(0,5,Nsrc,0,0,0), b_C_i(0,5,Nsrc,0,0,0) ); - printf("H-H non-zero? %4.9e + I %4.9e \n", b_C_r(Nsnk,0,Nsrc,0,0,0), b_C_i(Nsnk,0,Nsrc,0,0,0) ); - printf("H-H non-zero? %4.9e + I %4.9e \n", b_C_r(Nsnk,1,Nsrc,0,0,0), b_C_i(Nsnk,1,Nsrc,0,0,0) ); - printf("H-H non-zero? %4.9e + I %4.9e \n", b_C_r(Nsnk,2,Nsrc,0,0,0), b_C_i(Nsnk,2,Nsrc,0,0,0) ); - printf("H-H non-zero? %4.9e + I %4.9e \n", b_C_r(Nsnk,3,Nsrc,0,0,0), b_C_i(Nsnk,3,Nsrc,0,0,0) ); - printf("H-H non-zero? %4.9e + I %4.9e \n", b_C_r(Nsnk,4,Nsrc,0,0,0), b_C_i(Nsnk,4,Nsrc,0,0,0) ); - printf("H-H non-zero? %4.9e + I %4.9e \n", b_C_r(Nsnk,5,Nsrc,0,0,0), b_C_i(Nsnk,5,Nsrc,0,0,0) ); + printf("H-BB non-zero? %4.9e + I %4.9e \n", b_C_r(0,0,B1NsrcSC*Nsrc,0,0,0), b_C_i(0,0,B1NsrcSC*Nsrc,0,0,0) ); + printf("H-BB non-zero? %4.9e + I %4.9e \n", b_C_r(0,1,B1NsrcSC*Nsrc,0,0,0), b_C_i(0,1,B1NsrcSC*Nsrc,0,0,0) ); + printf("H-BB non-zero? %4.9e + I %4.9e \n", b_C_r(0,2,B1NsrcSC*Nsrc,0,0,0), b_C_i(0,2,B1NsrcSC*Nsrc,0,0,0) ); + printf("H-BB non-zero? %4.9e + I %4.9e \n", b_C_r(0,3,B1NsrcSC*Nsrc,0,0,0), b_C_i(0,3,B1NsrcSC*Nsrc,0,0,0) ); + printf("H-H non-zero? %4.9e + I %4.9e \n", b_C_r(B1NsnkSC*Nsnk,0,B1NsrcSC*Nsrc,0,0,0), b_C_i(B1NsnkSC*Nsnk,0,B1NsrcSC*Nsrc,0,0,0) ); + printf("H-H non-zero? %4.9e + I %4.9e \n", b_C_r(B1NsnkSC*Nsnk,1,B1NsrcSC*Nsrc,0,0,0), b_C_i(B1NsnkSC*Nsnk,1,B1NsrcSC*Nsrc,0,0,0) ); + printf("H-H non-zero? %4.9e + I %4.9e \n", b_C_r(B1NsnkSC*Nsnk,2,B1NsrcSC*Nsrc,0,0,0), b_C_i(B1NsnkSC*Nsnk,2,B1NsrcSC*Nsrc,0,0,0) ); + printf("H-H non-zero? %4.9e + I %4.9e \n", b_C_r(B1NsnkSC*Nsnk,3,B1NsrcSC*Nsrc,0,0,0), b_C_i(B1NsnkSC*Nsnk,3,B1NsrcSC*Nsrc,0,0,0) ); + printf("H-H non-zero? %4.9e + I %4.9e \n", b_C_r(B1NsnkSC*Nsnk+B2NsnkSC*NsnkHex-1,0,B1NsrcSC*Nsrc+B2NsrcSC*NsrcHex-1,0,0,0), b_C_i(B1NsnkSC*Nsnk+B2NsnkSC*NsnkHex-1,0,B1NsrcSC*Nsrc+B2NsrcSC*NsrcHex-1,0,0,0) ); + printf("H-H non-zero? %4.9e + I %4.9e \n", b_C_r(B1NsnkSC*Nsnk+B2NsnkSC*NsnkHex-1,1,B1NsrcSC*Nsrc+B2NsrcSC*NsrcHex-1,0,0,0), b_C_i(B1NsnkSC*Nsnk+B2NsnkSC*NsnkHex-1,1,B1NsrcSC*Nsrc+B2NsrcSC*NsrcHex-1,0,0,0) ); + printf("H-H non-zero? %4.9e + I %4.9e \n", b_C_r(B1NsnkSC*Nsnk+B2NsnkSC*NsnkHex-1,2,B1NsrcSC*Nsrc+B2NsrcSC*NsrcHex-1,0,0,0), b_C_i(B1NsnkSC*Nsnk+B2NsnkSC*NsnkHex-1,2,B1NsrcSC*Nsrc+B2NsrcSC*NsrcHex-1,0,0,0) ); + printf("H-H non-zero? %4.9e + I %4.9e \n", b_C_r(B1NsnkSC*Nsnk+B2NsnkSC*NsnkHex-1,3,B1NsrcSC*Nsrc+B2NsrcSC*NsrcHex-1,0,0,0), b_C_i(B1NsnkSC*Nsnk+B2NsnkSC*NsnkHex-1,3,B1NsrcSC*Nsrc+B2NsrcSC*NsrcHex-1,0,0,0) ); } // symmetrize and such #ifdef WITH_MPI for (int rp=0; rp> duration_vector_1; std::vector> duration_vector_2; - int q, t, iC, iS, jC, jS, y, x, x1, x2, m, n, k, wnum, nperm, b, r, rp; + int q, t, iC, iS, jC, jS, y, x, x1, x2, msc, nsc, m, n, k, wnum, nperm, b, r, rp; int iC1, iS1, iC2, iS2, jC1, jS1, jC2, jS2, kC1, kS1, kC2, kS2; + int NsrcTot = B1NsrcSC*Nsrc+B2NsrcSC*NsrcHex; + int NsnkTot = B1NsnkSC*Nsnk+B2NsnkSC*NsnkHex; + // Initialization // Props double* B1_prop_re = (double *) malloc(Nq * Lt * Nc * Ns * Nc * Ns * Vsnk * Vsrc * sizeof (double)); @@ -489,21 +585,21 @@ int main(int, char **) double v3 = rand()%10; double v4 = rand()%10; B1_prop_re[prop_index(q,t,jC,jS,iC,iS,y,x ,Nc,Ns,Vsrc,Vsnk,Lt)] = v1; - B2_prop_re[prop_index(q,t,jC,jS,iC,iS,y,x ,Nc,Ns,Vsrc,Vsnk,Lt)] = v2; B1_prop_im[prop_index(q,t,jC,jS,iC,iS,y,x ,Nc,Ns,Vsrc,Vsnk,Lt)] = v3; + B2_prop_re[prop_index(q,t,jC,jS,iC,iS,y,x ,Nc,Ns,Vsrc,Vsnk,Lt)] = v2; B2_prop_im[prop_index(q,t,jC,jS,iC,iS,y,x ,Nc,Ns,Vsrc,Vsnk,Lt)] = v4; } else { if ((jC == iC) && (jS == iS)) { B1_prop_re[prop_index(q,t,jC,jS,iC,iS,y,x ,Nc,Ns,Vsrc,Vsnk,Lt)] = 1/mq*cos(2*M_PI/6); - B2_prop_re[prop_index(q,t,jC,jS,iC,iS,y,x ,Nc,Ns,Vsrc,Vsnk,Lt)] = 1/mq*cos(2*M_PI/6); B1_prop_im[prop_index(q,t,jC,jS,iC,iS,y,x ,Nc,Ns,Vsrc,Vsnk,Lt)] = 1/mq*sin(2*M_PI/6); - B2_prop_im[prop_index(q,t,jC,jS,iC,iS,y,x ,Nc,Ns,Vsrc,Vsnk,Lt)] = 1/mq*sin(2*M_PI/6); + B2_prop_re[prop_index(q,t,jC,jS,iC,iS,y,x ,Nc,Ns,Vsrc,Vsnk,Lt)] = 1/mq*cos(2*M_PI/6); + B2_prop_im[prop_index(q,t,jC,jS,iC,iS,y,x ,Nc,Ns,Vsrc,Vsnk,Lt)] = 1/mq*sin(2*M_PI/6); } else { B1_prop_re[prop_index(q,t,jC,jS,iC,iS,y,x ,Nc,Ns,Vsrc,Vsnk,Lt)] = 0; - B2_prop_re[prop_index(q,t,jC,jS,iC,iS,y,x ,Nc,Ns,Vsrc,Vsnk,Lt)] = 0; B1_prop_im[prop_index(q,t,jC,jS,iC,iS,y,x ,Nc,Ns,Vsrc,Vsnk,Lt)] = 0; + B2_prop_re[prop_index(q,t,jC,jS,iC,iS,y,x ,Nc,Ns,Vsrc,Vsnk,Lt)] = 0; B2_prop_im[prop_index(q,t,jC,jS,iC,iS,y,x ,Nc,Ns,Vsrc,Vsnk,Lt)] = 0; } } @@ -566,10 +662,13 @@ int main(int, char **) } } for (n = 0; n < NEntangled; n++) - for (x1 = 0; x1 < Vsnk; x1++) + for (int x_in = 0; x_in < sites_per_rank; x_in++) for (x2 = 0; x2 < Vsnk; x2++) { - snk_psi_re[index_3d(x1,x2,n ,Vsnk,NEntangled)] = snk_psi_B1_re[index_2d(x1,n ,Nsnk)]*snk_psi_B2_re[index_2d(x2,n ,Nsnk)] - snk_psi_B1_im[index_2d(x1,n ,Nsnk)]*snk_psi_B2_im[index_2d(x2,n ,Nsnk)] + snk_psi_B1_re[index_2d(x2,n ,Nsnk)]*snk_psi_B2_re[index_2d(x1,n ,Nsnk)] - snk_psi_B1_im[index_2d(x2,n ,Nsnk)]*snk_psi_B2_im[index_2d(x1,n ,Nsnk)];// / Vsnk; - snk_psi_im[index_3d(x1,x2,n ,Vsnk,NEntangled)] = snk_psi_B1_re[index_2d(x1,n ,Nsnk)]*snk_psi_B2_im[index_2d(x2,n ,Nsnk)] + snk_psi_B1_im[index_2d(x1,n ,Nsnk)]*snk_psi_B2_re[index_2d(x2,n ,Nsnk)] + snk_psi_B1_re[index_2d(x2,n ,Nsnk)]*snk_psi_B2_im[index_2d(x1,n ,Nsnk)] + snk_psi_B1_im[index_2d(x2,n ,Nsnk)]*snk_psi_B2_re[index_2d(x1,n ,Nsnk)];// / Vsnk; + x1 = rank*sites_per_rank + x_in; + //snk_psi_re[index_3d(x1,x2,n ,Vsnk,NEntangled)] = snk_psi_B1_re[index_2d(x1,n ,Nsnk)]*snk_psi_B2_re[index_2d(x2,n ,Nsnk)] - snk_psi_B1_im[index_2d(x1,n ,Nsnk)]*snk_psi_B2_im[index_2d(x2,n ,Nsnk)] + snk_psi_B1_re[index_2d(x2,n ,Nsnk)]*snk_psi_B2_re[index_2d(x1,n ,Nsnk)] - snk_psi_B1_im[index_2d(x2,n ,Nsnk)]*snk_psi_B2_im[index_2d(x1,n ,Nsnk)];// / Vsnk; + //snk_psi_im[index_3d(x1,x2,n ,Vsnk,NEntangled)] = snk_psi_B1_re[index_2d(x1,n ,Nsnk)]*snk_psi_B2_im[index_2d(x2,n ,Nsnk)] + snk_psi_B1_im[index_2d(x1,n ,Nsnk)]*snk_psi_B2_re[index_2d(x2,n ,Nsnk)] + snk_psi_B1_re[index_2d(x2,n ,Nsnk)]*snk_psi_B2_im[index_2d(x1,n ,Nsnk)] + snk_psi_B1_im[index_2d(x2,n ,Nsnk)]*snk_psi_B2_re[index_2d(x1,n ,Nsnk)];// / Vsnk; + snk_psi_re[index_3d(x_in,x2,n ,Vsnk,NEntangled)] = snk_psi_B1_re[index_2d(x1,n ,Nsnk)]*snk_psi_B2_re[index_2d(x2,n ,Nsnk)] - snk_psi_B1_im[index_2d(x1,n ,Nsnk)]*snk_psi_B2_im[index_2d(x2,n ,Nsnk)] + snk_psi_B1_re[index_2d(x2,n ,Nsnk)]*snk_psi_B2_re[index_2d(x1,n ,Nsnk)] - snk_psi_B1_im[index_2d(x2,n ,Nsnk)]*snk_psi_B2_im[index_2d(x1,n ,Nsnk)];// / Vsnk; + snk_psi_im[index_3d(x_in,x2,n ,Vsnk,NEntangled)] = snk_psi_B1_re[index_2d(x1,n ,Nsnk)]*snk_psi_B2_im[index_2d(x2,n ,Nsnk)] + snk_psi_B1_im[index_2d(x1,n ,Nsnk)]*snk_psi_B2_re[index_2d(x2,n ,Nsnk)] + snk_psi_B1_re[index_2d(x2,n ,Nsnk)]*snk_psi_B2_im[index_2d(x1,n ,Nsnk)] + snk_psi_B1_im[index_2d(x2,n ,Nsnk)]*snk_psi_B2_re[index_2d(x1,n ,Nsnk)];// / Vsnk; //snk_psi_re[index_3d(x1,x2,n ,Vsnk,Nsnk)] = 1;// / Vsnk; //snk_psi_im[index_3d(x1,x2,n ,Vsnk,Nsnk)] = 0;// / Vsnk; } @@ -578,8 +677,6 @@ int main(int, char **) for (x2 = 0; x2 < Vsnk; x2++) { all_snk_psi_re[index_3d(x1,x2,n ,Vsnk,Nsnk)] = snk_psi_B1_re[index_2d(x1,n ,Nsnk)]*snk_psi_B2_re[index_2d(x2,n ,Nsnk)] - snk_psi_B1_im[index_2d(x1,n ,Nsnk)]*snk_psi_B2_im[index_2d(x2,n ,Nsnk)] + snk_psi_B1_re[index_2d(x2,n ,Nsnk)]*snk_psi_B2_re[index_2d(x1,n ,Nsnk)] - snk_psi_B1_im[index_2d(x2,n ,Nsnk)]*snk_psi_B2_im[index_2d(x1,n ,Nsnk)];// / Vsnk; all_snk_psi_im[index_3d(x1,x2,n ,Vsnk,Nsnk)] = snk_psi_B1_re[index_2d(x1,n ,Nsnk)]*snk_psi_B2_im[index_2d(x2,n ,Nsnk)] + snk_psi_B1_im[index_2d(x1,n ,Nsnk)]*snk_psi_B2_re[index_2d(x2,n ,Nsnk)] + snk_psi_B1_re[index_2d(x2,n ,Nsnk)]*snk_psi_B2_im[index_2d(x1,n ,Nsnk)] + snk_psi_B1_im[index_2d(x2,n ,Nsnk)]*snk_psi_B2_re[index_2d(x1,n ,Nsnk)];// / Vsnk; - //snk_psi_re[index_3d(x1,x2,n ,Vsnk,Nsnk)] = 1;// / Vsnk; - //snk_psi_im[index_3d(x1,x2,n ,Vsnk,Nsnk)] = 0;// / Vsnk; } for (n = 0; n < NEntangled; n++) for (int x_in = 0; x_in < sites_per_rank; x_in++) @@ -635,77 +732,126 @@ int main(int, char **) static int src_spin_weights_r2_P[Nw][Nq] = { {0,1,1}, {0,1,1}, {0,1,1}, {0,1,1}, {0,1,1}, {0,1,1}, {1,0,1}, {1,0,1}, {1,0,1}, {1,0,1}, {1,0,1}, {1,0,1} }; static double src_weights_r2_P[Nw] = {1/ sqrt(2), -1/sqrt(2), -1/sqrt(2), 1/sqrt(2), -1/sqrt(2), 1/sqrt(2), -1/ sqrt(2), 1/sqrt(2), 1/sqrt(2), -1/sqrt(2), 1/sqrt(2), -1/sqrt(2)}; - int* src_color_weights_r1 = (int *) malloc(Nw * Nq * sizeof (int)); - int* src_color_weights_r2 = (int *) malloc(Nw * Nq * sizeof (int)); - int* src_spin_weights_r1 = (int *) malloc(Nw * Nq * sizeof (int)); - int* src_spin_weights_r2 = (int *) malloc(Nw * Nq * sizeof (int)); - double src_weights_r1[Nw]; - double src_weights_r2[Nw]; + int* src_color_weights_r1 = (int *) malloc(B1NsrcSC * Nw * Nq * sizeof (int)); + int* src_color_weights_r2 = (int *) malloc(B1NsrcSC * Nw * Nq * sizeof (int)); + int* src_spin_weights_r1 = (int *) malloc(B1NsrcSC * Nw * Nq * sizeof (int)); + int* src_spin_weights_r2 = (int *) malloc(B1NsrcSC * Nw * Nq * sizeof (int)); + double* src_weights_r1 = (double *) malloc(B1NsrcSC * Nw * sizeof (double)); + double* src_weights_r2 = (double *) malloc(B1NsrcSC * Nw * sizeof (double)); + for (msc = 0; msc < B1NsrcSC; msc++) for (wnum = 0; wnum < Nw; wnum++) { for (q = 0; q < Nq; q++) { - src_color_weights_r1[index_2d(wnum,q ,Nq)] = src_color_weights_r1_P[wnum][q]; - src_color_weights_r2[index_2d(wnum,q ,Nq)] = src_color_weights_r2_P[wnum][q]; - src_spin_weights_r1[index_2d(wnum,q ,Nq)] = src_spin_weights_r1_P[wnum][q]; - src_spin_weights_r2[index_2d(wnum,q ,Nq)] = src_spin_weights_r2_P[wnum][q]; + src_color_weights_r1[index_3d(msc,wnum,q ,Nw,Nq)] = src_color_weights_r1_P[wnum][q]; + src_color_weights_r2[index_3d(msc,wnum,q ,Nw,Nq)] = src_color_weights_r2_P[wnum][q]; + src_spin_weights_r1[index_3d(msc,wnum,q ,Nw,Nq)] = src_spin_weights_r1_P[wnum][q]; + src_spin_weights_r2[index_3d(msc,wnum,q ,Nw,Nq)] = src_spin_weights_r2_P[wnum][q]; } - src_weights_r1[wnum] = src_weights_r1_P[wnum]; - src_weights_r2[wnum] = src_weights_r2_P[wnum]; + src_weights_r1[index_2d(msc,wnum ,Nw)] = src_weights_r1_P[wnum]; + src_weights_r2[index_2d(msc,wnum ,Nw)] = src_weights_r2_P[wnum]; } - int* snk_color_weights_A1 = (int *) malloc(Nw2Hex * 2*Nq * sizeof (int)); - int* snk_color_weights_T1_r1 = (int *) malloc(Nw2Hex * 2*Nq * sizeof (int)); - int* snk_color_weights_T1_r2 = (int *) malloc(Nw2Hex * 2*Nq * sizeof (int)); - int* snk_color_weights_T1_r3 = (int *) malloc(Nw2Hex * 2*Nq * sizeof (int)); - int* snk_spin_weights_A1 = (int *) malloc(Nw2Hex * 2*Nq * sizeof (int)); - int* snk_spin_weights_T1_r1 = (int *) malloc(Nw2Hex * 2*Nq * sizeof (int)); - int* snk_spin_weights_T1_r2 = (int *) malloc(Nw2Hex * 2*Nq * sizeof (int)); - int* snk_spin_weights_T1_r3 = (int *) malloc(Nw2Hex * 2*Nq * sizeof (int)); - double snk_weights_A1[Nw2Hex]; - double snk_weights_T1_r1[Nw2Hex]; - double snk_weights_T1_r2[Nw2Hex]; - double snk_weights_T1_r3[Nw2Hex]; - for (wnum = 0; wnum < Nw2Hex; wnum++) { + int* snk_color_weights_A1 = (int *) malloc(B2NsrcSC * Nw2Hex * 2*Nq * sizeof (int)); + int* snk_color_weights_T1_r1 = (int *) malloc(B2NsrcSC * Nw2Hex * 2*Nq * sizeof (int)); + int* snk_color_weights_T1_r2 = (int *) malloc(B2NsrcSC * Nw2Hex * 2*Nq * sizeof (int)); + int* snk_color_weights_T1_r3 = (int *) malloc(B2NsrcSC * Nw2Hex * 2*Nq * sizeof (int)); + int* snk_spin_weights_A1 = (int *) malloc(B2NsrcSC * Nw2Hex * 2*Nq * sizeof (int)); + int* snk_spin_weights_T1_r1 = (int *) malloc(B2NsrcSC * Nw2Hex * 2*Nq * sizeof (int)); + int* snk_spin_weights_T1_r2 = (int *) malloc(B2NsrcSC * Nw2Hex * 2*Nq * sizeof (int)); + int* snk_spin_weights_T1_r3 = (int *) malloc(B2NsrcSC * Nw2Hex * 2*Nq * sizeof (int)); + double* snk_weights_A1 = (double *) malloc(B2NsrcSC * Nw2Hex * sizeof (double)); + double* snk_weights_T1_r1 = (double *) malloc(B2NsrcSC * Nw2Hex * sizeof (double)); + double* snk_weights_T1_r2 = (double *) malloc(B2NsrcSC * Nw2Hex * sizeof (double)); + double* snk_weights_T1_r3 = (double *) malloc(B2NsrcSC * Nw2Hex * sizeof (double)); + + //for (wnum = 0; wnum < Nw2Hex; wnum++) { + int smallHex = 32; + //int smallHex = 400; + for (msc = 0; msc < B2NsrcSC; msc++) + for (wnum = 0; wnum < smallHex; wnum++) { for (q = 0; q < 2*Nq; q++) { - snk_color_weights_A1[index_2d(wnum,q ,2*Nq)] = q % Nc; - snk_color_weights_T1_r1[index_2d(wnum,q ,2*Nq)] = q % Nc; - snk_color_weights_T1_r2[index_2d(wnum,q ,2*Nq)] = q % Nc; - snk_color_weights_T1_r3[index_2d(wnum,q ,2*Nq)] = q % Nc; + snk_color_weights_A1[index_3d(msc,wnum,q ,Nw2Hex,2*Nq)] = q % Nc; + snk_color_weights_T1_r1[index_3d(msc,wnum,q ,Nw2Hex,2*Nq)] = q % Nc; + snk_color_weights_T1_r2[index_3d(msc,wnum,q ,Nw2Hex,2*Nq)] = q % Nc; + snk_color_weights_T1_r3[index_3d(msc,wnum,q ,Nw2Hex,2*Nq)] = q % Nc; } - snk_spin_weights_A1[index_2d(wnum,0 ,2*Nq)] = 0; - snk_spin_weights_T1_r1[index_2d(wnum,0 ,2*Nq)] = 0; - snk_spin_weights_T1_r2[index_2d(wnum,0 ,2*Nq)] = 0; - snk_spin_weights_T1_r3[index_2d(wnum,0 ,2*Nq)] = 1; - snk_spin_weights_A1[index_2d(wnum,1 ,2*Nq)] = 1; - snk_spin_weights_T1_r1[index_2d(wnum,1 ,2*Nq)] = 1; - snk_spin_weights_T1_r2[index_2d(wnum,1 ,2*Nq)] = 1; - snk_spin_weights_T1_r3[index_2d(wnum,1 ,2*Nq)] = 0; - snk_spin_weights_A1[index_2d(wnum,2 ,2*Nq)] = 0; - snk_spin_weights_T1_r1[index_2d(wnum,2 ,2*Nq)] = 0; - snk_spin_weights_T1_r2[index_2d(wnum,2 ,2*Nq)] = 0; - snk_spin_weights_T1_r3[index_2d(wnum,2 ,2*Nq)] = 1; - snk_spin_weights_A1[index_2d(wnum,3 ,2*Nq)] = 1; - snk_spin_weights_T1_r1[index_2d(wnum,3 ,2*Nq)] = 0; - snk_spin_weights_T1_r2[index_2d(wnum,3 ,2*Nq)] = 1; - snk_spin_weights_T1_r3[index_2d(wnum,3 ,2*Nq)] = 1; - snk_spin_weights_A1[index_2d(wnum,4 ,2*Nq)] = 0; - snk_spin_weights_T1_r1[index_2d(wnum,4 ,2*Nq)] = 1; - snk_spin_weights_T1_r2[index_2d(wnum,4 ,2*Nq)] = 0; - snk_spin_weights_T1_r3[index_2d(wnum,4 ,2*Nq)] = 0; - snk_spin_weights_A1[index_2d(wnum,5 ,2*Nq)] = 1; - snk_spin_weights_T1_r1[index_2d(wnum,5 ,2*Nq)] = 0; - snk_spin_weights_T1_r2[index_2d(wnum,5 ,2*Nq)] = 1; - snk_spin_weights_T1_r3[index_2d(wnum,5 ,2*Nq)] = 1; - snk_weights_A1[wnum] = -1.0/sqrt(2); - snk_weights_T1_r1[wnum] = 1.0; - snk_weights_T1_r2[wnum] = -1.0/sqrt(2); - snk_weights_T1_r3[wnum] = 1.0; + snk_spin_weights_A1[index_3d(msc,wnum,0 ,Nw2Hex,2*Nq)] = 0; + snk_spin_weights_T1_r1[index_3d(msc,wnum,0 ,Nw2Hex,2*Nq)] = 0; + snk_spin_weights_T1_r2[index_3d(msc,wnum,0 ,Nw2Hex,2*Nq)] = 0; + snk_spin_weights_T1_r3[index_3d(msc,wnum,0 ,Nw2Hex,2*Nq)] = 1; + snk_spin_weights_A1[index_3d(msc,wnum,1 ,Nw2Hex,2*Nq)] = 1; + snk_spin_weights_T1_r1[index_3d(msc,wnum,1 ,Nw2Hex,2*Nq)] = 1; + snk_spin_weights_T1_r2[index_3d(msc,wnum,1 ,Nw2Hex,2*Nq)] = 1; + snk_spin_weights_T1_r3[index_3d(msc,wnum,1 ,Nw2Hex,2*Nq)] = 0; + snk_spin_weights_A1[index_3d(msc,wnum,2 ,Nw2Hex,2*Nq)] = 0; + snk_spin_weights_T1_r1[index_3d(msc,wnum,2 ,Nw2Hex,2*Nq)] = 0; + snk_spin_weights_T1_r2[index_3d(msc,wnum,2 ,Nw2Hex,2*Nq)] = 0; + snk_spin_weights_T1_r3[index_3d(msc,wnum,2 ,Nw2Hex,2*Nq)] = 1; + snk_spin_weights_A1[index_3d(msc,wnum,3 ,Nw2Hex,2*Nq)] = 1; + snk_spin_weights_T1_r1[index_3d(msc,wnum,3 ,Nw2Hex,2*Nq)] = 0; + snk_spin_weights_T1_r2[index_3d(msc,wnum,3 ,Nw2Hex,2*Nq)] = 1; + snk_spin_weights_T1_r3[index_3d(msc,wnum,3 ,Nw2Hex,2*Nq)] = 1; + snk_spin_weights_A1[index_3d(msc,wnum,4 ,Nw2Hex,2*Nq)] = 0; + snk_spin_weights_T1_r1[index_3d(msc,wnum,4 ,Nw2Hex,2*Nq)] = 1; + snk_spin_weights_T1_r2[index_3d(msc,wnum,4 ,Nw2Hex,2*Nq)] = 0; + snk_spin_weights_T1_r3[index_3d(msc,wnum,4 ,Nw2Hex,2*Nq)] = 0; + snk_spin_weights_A1[index_3d(msc,wnum,5 ,Nw2Hex,2*Nq)] = 1; + snk_spin_weights_T1_r1[index_3d(msc,wnum,5 ,Nw2Hex,2*Nq)] = 0; + snk_spin_weights_T1_r2[index_3d(msc,wnum,5 ,Nw2Hex,2*Nq)] = 1; + snk_spin_weights_T1_r3[index_3d(msc,wnum,5 ,Nw2Hex,2*Nq)] = 1; + snk_weights_A1[index_2d(msc,wnum ,Nw2Hex)] = -1.0/sqrt(2); + snk_weights_T1_r1[index_2d(msc,wnum ,Nw2Hex)] = 1.0; + snk_weights_T1_r2[index_2d(msc,wnum ,Nw2Hex)] = -1.0/sqrt(2); + snk_weights_T1_r3[index_2d(msc,wnum ,Nw2Hex)] = 1.0; } + for (msc = 0; msc < B2NsrcSC; msc++) + for (wnum = smallHex; wnum < Nw2Hex; wnum++) { + for (q = 0; q < 2*Nq; q++) { + snk_color_weights_A1[index_3d(msc,wnum,q ,Nw2Hex,2*Nq)] = q % Nc; + snk_color_weights_T1_r1[index_3d(msc,wnum,q ,Nw2Hex,2*Nq)] = q % Nc; + snk_color_weights_T1_r2[index_3d(msc,wnum,q ,Nw2Hex,2*Nq)] = q % Nc; + snk_color_weights_T1_r3[index_3d(msc,wnum,q ,Nw2Hex,2*Nq)] = q % Nc; + } + snk_spin_weights_A1[index_3d(msc,wnum,0 ,Nw2Hex,2*Nq)] = 0; + snk_spin_weights_T1_r1[index_3d(msc,wnum,0 ,Nw2Hex,2*Nq)] = 0; + snk_spin_weights_T1_r2[index_3d(msc,wnum,0 ,Nw2Hex,2*Nq)] = 0; + snk_spin_weights_T1_r3[index_3d(msc,wnum,0 ,Nw2Hex,2*Nq)] = 1; + snk_spin_weights_A1[index_3d(msc,wnum,1 ,Nw2Hex,2*Nq)] = 1; + snk_spin_weights_T1_r1[index_3d(msc,wnum,1 ,Nw2Hex,2*Nq)] = 1; + snk_spin_weights_T1_r2[index_3d(msc,wnum,1 ,Nw2Hex,2*Nq)] = 1; + snk_spin_weights_T1_r3[index_3d(msc,wnum,1 ,Nw2Hex,2*Nq)] = 0; + snk_spin_weights_A1[index_3d(msc,wnum,2 ,Nw2Hex,2*Nq)] = 0; + snk_spin_weights_T1_r1[index_3d(msc,wnum,2 ,Nw2Hex,2*Nq)] = 0; + snk_spin_weights_T1_r2[index_3d(msc,wnum,2 ,Nw2Hex,2*Nq)] = 0; + snk_spin_weights_T1_r3[index_3d(msc,wnum,2 ,Nw2Hex,2*Nq)] = 1; + snk_spin_weights_A1[index_3d(msc,wnum,3 ,Nw2Hex,2*Nq)] = 1; + snk_spin_weights_T1_r1[index_3d(msc,wnum,3 ,Nw2Hex,2*Nq)] = 0; + snk_spin_weights_T1_r2[index_3d(msc,wnum,3 ,Nw2Hex,2*Nq)] = 1; + snk_spin_weights_T1_r3[index_3d(msc,wnum,3 ,Nw2Hex,2*Nq)] = 1; + snk_spin_weights_A1[index_3d(msc,wnum,4 ,Nw2Hex,2*Nq)] = 0; + snk_spin_weights_T1_r1[index_3d(msc,wnum,4 ,Nw2Hex,2*Nq)] = 1; + snk_spin_weights_T1_r2[index_3d(msc,wnum,4 ,Nw2Hex,2*Nq)] = 0; + snk_spin_weights_T1_r3[index_3d(msc,wnum,4 ,Nw2Hex,2*Nq)] = 0; + snk_spin_weights_A1[index_3d(msc,wnum,5 ,Nw2Hex,2*Nq)] = 1; + snk_spin_weights_T1_r1[index_3d(msc,wnum,5 ,Nw2Hex,2*Nq)] = 0; + snk_spin_weights_T1_r2[index_3d(msc,wnum,5 ,Nw2Hex,2*Nq)] = 1; + snk_spin_weights_T1_r3[index_3d(msc,wnum,5 ,Nw2Hex,2*Nq)] = 1; + snk_weights_A1[index_2d(msc,wnum ,Nw2Hex)] = 0.0; + snk_weights_T1_r1[index_2d(msc,wnum ,Nw2Hex)] = 0.0; + snk_weights_T1_r2[index_2d(msc,wnum ,Nw2Hex)] = 0.0; + snk_weights_T1_r3[index_2d(msc,wnum ,Nw2Hex)] = 0.0; + } // Permutations int perms_array[36][6] = { {1,2,3,4,5,6}, {1, 4, 3, 2, 5, 6}, {1, 6, 3, 2, 5, 4}, {1, 2, 3, 6, 5, 4}, {1, 4, 3, 6, 5, 2}, {1, 6, 3, 4, 5, 2}, {3, 2, 1, 4, 5, 6}, {3, 4, 1, 2, 5, 6}, {3, 6, 1, 2, 5, 4}, {3, 2, 1, 6, 5, 4}, {3, 4, 1, 6, 5, 2}, {3, 6, 1, 4, 5, 2}, {5, 2, 1, 4, 3, 6}, {5, 4, 1, 2, 3, 6}, {5, 6, 1, 2, 3, 4}, {5, 2, 1, 6, 3, 4}, {5, 4, 1, 6, 3, 2}, {5, 6, 1, 4, 3, 2}, {1, 2, 5, 4, 3, 6}, {1, 4, 5, 2, 3, 6}, {1, 6, 5, 2, 3, 4}, {1, 2, 5, 6, 3, 4}, {1, 4, 5, 6, 3, 2}, {1, 6, 5, 4, 3, 2}, {3, 2, 5, 4, 1, 6}, {3, 4, 5, 2, 1, 6}, {3, 6, 5, 2, 1, 4}, {3, 2, 5, 6, 1, 4}, {3, 4, 5, 6, 1, 2}, {3, 6, 5, 4, 1, 2}, {5, 2, 3, 4, 1, 6}, {5, 4, 3, 2, 1, 6}, {5, 6, 3, 2, 1, 4}, {5, 2, 3, 6, 1, 4}, {5, 4, 3, 6, 1, 2}, {5, 6, 3, 4, 1, 2} }; int sigs_array[36] = {1,-1,1,-1,1,-1,-1,1,-1,1,-1,1,1,-1,1,-1,1,-1,-1,1,-1,1,-1,1,1,-1,1,-1,1,-1,-1,1,-1,1,-1,1}; - int* perms = (int *) malloc(Nperms * 2*Nq * sizeof (int)); - int sigs[Nperms]; + int* perms = (int *) malloc(Nperms * B1NsrcSC * B1NsnkSC * 2*Nq * sizeof (int)); + int* hex_perms = (int *) malloc(Nperms * B1NsrcSC * 2*Nq * sizeof (int)); + int* hex_perms_snk = (int *) malloc(Nperms * B1NsnkSC * 2*Nq * sizeof (int)); + int* hex_hex_perms = (int *) malloc(Nperms * 2*Nq * sizeof (int)); + int* sigs = (int *) malloc(Nperms * B1NsrcSC * B1NsnkSC * sizeof (int)); + int* hex_sigs = (int *) malloc(Nperms * B1NsrcSC * sizeof (int)); + int* hex_sigs_snk = (int *) malloc(Nperms * B1NsnkSC * sizeof (int)); + int hex_hex_sigs[Nperms]; int permnum = 0; - for (int i = 0; i < 36; i++) { + for (int i = 0; i < Nperms; i++) { /*if (perms_array[i][0] > perms_array[i][2]) { continue; @@ -715,19 +861,56 @@ int main(int, char **) } else { */ for (int q = 0; q < 2*Nq; q++) { - perms[index_2d(permnum,q ,2*Nq)] = perms_array[i][q]; + hex_hex_perms[index_2d(permnum,q ,2*Nq)] = perms_array[i][q]; + } + hex_hex_sigs[permnum] = sigs_array[i]; + + for (int msc = 0; msc < B1NsrcSC; msc++) { + for (int q = 0; q < 2*Nq; q++) { + hex_perms[index_3d(permnum,msc,q ,B1NsrcSC,2*Nq)] = perms_array[i][q]; + } + hex_sigs[index_2d(permnum,msc ,B1NsrcSC)] = sigs_array[i]; } - sigs[permnum] = sigs_array[i]; + + for (int nsc = 0; nsc < B1NsnkSC; nsc++) { + for (int q = 0; q < 2*Nq; q++) { + hex_perms_snk[index_3d(permnum,nsc,q ,B1NsnkSC,2*Nq)] = perms_array[i][q]; + } + hex_sigs_snk[index_2d(permnum,nsc ,B1NsnkSC)] = sigs_array[i]; + } + + for (int msc = 0; msc < B1NsrcSC; msc++) { + for (int nsc = 0; nsc < B1NsnkSC; nsc++) { + for (int q = 0; q < 2*Nq; q++) { + perms[index_4d(permnum,msc,nsc,q ,B1NsrcSC,B1NsnkSC,2*Nq)] = perms_array[i][q]; + } + sigs[index_3d(permnum,msc,nsc ,B1NsrcSC,B1NsnkSC)] = sigs_array[i]; + } + } + permnum += 1; //} } + int* BB_pairs_src = (int *) malloc(B1NsrcSC * 2 * sizeof(int)); + int* BB_pairs_snk = (int *) malloc(B1NsnkSC * 2 * sizeof(int)); + for (msc=0; msc < B1NsrcSC; msc++) { + for (b = 0; b < 2; b++) { + BB_pairs_src[index_2d(msc,b ,2)] = msc+1; + } + } + for (nsc=0; nsc < B1NsnkSC; nsc++) { + for (b = 0; b < 2; b++) { + BB_pairs_snk[index_2d(nsc,b ,2)] = nsc+1; + } + } + // Correlators double* C_re = (double *) malloc(B2Nrows * (Nsrc+NsrcHex) * (Nsnk+NsnkHex) * Lt * sizeof (double)); double* C_im = (double *) malloc(B2Nrows * (Nsrc+NsrcHex) * (Nsnk+NsnkHex) * Lt * sizeof (double)); //double* C_re = (double *) malloc(B2Nrows * B2Nrows * (Nsrc+NsrcHex) * (Nsnk+NsnkHex) * Lt * sizeof (double)); //double* C_im = (double *) malloc(B2Nrows * B2Nrows * (Nsrc+NsrcHex) * (Nsnk+NsnkHex) * Lt * sizeof (double)); - double* t_C_re = (double *) malloc(B2Nrows * B2Nrows * (Nsrc+NsrcHex) * (Nsnk+NsnkHex) * Lt * sizeof (double)); - double* t_C_im = (double *) malloc(B2Nrows * B2Nrows * (Nsrc+NsrcHex) * (Nsnk+NsnkHex) * Lt * sizeof (double)); + double* t_C_re = (double *) malloc(B2Nrows * B2Nrows * NsrcTot * NsnkTot * Lt * sizeof (double)); + double* t_C_im = (double *) malloc(B2Nrows * B2Nrows * NsrcTot * NsnkTot * Lt * sizeof (double)); for (rp=0; rp= 0.01*Vsnk*Vsnk) || + (std::abs(C_im[index_4d(rp,m,n,t, Nsrc+NsrcHex,Nsnk+NsnkHex,Lt)] - t_C_im[index_5d(rp,msc*Nsrc+m,rp,nsc*Nsnk+n,t, NsrcTot,B2Nrows,NsnkTot,Lt)]) >= 0.01*Vsnk*Vsnk)) + { + printf("BB_BB rp=%d, msc=%d, m=%d, nsc=%d, n=%d, t=%d: %4.1f + I (%4.1f) vs %4.1f + I (%4.1f) \n", rp, msc, m, nsc, n, t, C_re[index_4d(rp,m,n,t, Nsrc+NsrcHex,Nsnk+NsnkHex,Lt)], C_im[index_4d(rp,m,n,t, Nsrc+NsrcHex,Nsnk+NsnkHex,Lt)], t_C_re[index_5d(rp,msc*Nsrc+m,rp,nsc*Nsnk+n,t, NsrcTot,B2Nrows,NsnkTot,Lt)], t_C_im[index_5d(rp,msc*Nsrc+m,rp,nsc*Nsnk+n,t, NsrcTot,B2Nrows,NsnkTot,Lt)]); + std::cout << "Error: different computed values for C_r or C_i!" << std::endl; + exit(1); + } + } + } + if (rank == 0) + printf("cleared BB-BB \n"); + for (rp=0; rp= 0.01*Vsnk*Vsnk) || + (std::abs(C_im[index_4d(rp,m,Nsnk+n,t, Nsrc+NsrcHex,Nsnk+NsnkHex,Lt)] - t_C_im[index_5d(rp,m,rp,Nsnk*B1NsnkSC+n,t, NsrcTot,B2Nrows,NsnkTot,Lt)]) >= 0.01*Vsnk*Vsnk)) + { + printf("BB_H rp=%d, msc=%d, m=%d, nsc=%d, n=%d, t=%d: %4.1f + I (%4.1f) vs %4.1f + I (%4.1f) \n", rp, msc, m, nsc, n, t, C_re[index_4d(rp,m,Nsnk+n,t, Nsrc+NsrcHex,Nsnk+NsnkHex,Lt)], C_im[index_4d(rp,m,Nsnk+n,t, Nsrc+NsrcHex,Nsnk+NsnkHex,Lt)], t_C_re[index_5d(rp,msc*Nsrc+m,rp,Nsnk*B1NsnkSC+nsc*NsnkHex+n,t, NsrcTot,B2Nrows,NsnkTot,Lt)], t_C_im[index_5d(rp,msc*Nsrc+m,rp,Nsnk*B1NsnkSC+nsc*NsnkHex+n,t, NsrcTot,B2Nrows,NsnkTot,Lt)]); + std::cout << "Error: different computed values for C_r or C_i!" << std::endl; + exit(1); + } + } + } + if (rank == 0) + printf("cleared BB-H \n"); + for (rp=0; rp= 0.01*Vsnk*Vsnk) || + (std::abs(C_im[index_4d(rp,Nsrc+m,n,t, Nsrc+NsrcHex,Nsnk+NsnkHex,Lt)] - t_C_im[index_5d(rp,Nsrc*B1NsrcSC+msc*NsrcHex+m,rp,nsc*Nsnk+n,t, NsrcTot,B2Nrows,NsnkTot,Lt)]) >= 0.01*Vsnk*Vsnk)) + { + printf("H_BB rp=%d, msc=%d, m=%d, nsc=%d, n=%d, t=%d: %4.1f + I (%4.1f) vs %4.1f + I (%4.1f) \n", rp, msc, m, nsc, n, t, C_re[index_4d(rp,Nsrc+m,n,t, Nsrc+NsrcHex,Nsnk+NsnkHex,Lt)], C_im[index_4d(rp,Nsrc+m,n,t, Nsrc+NsrcHex,Nsnk+NsnkHex,Lt)], t_C_re[index_5d(rp,Nsrc*B1NsrcSC+msc*NsrcHex+m,rp,nsc*Nsnk+n,t, NsrcTot,B2Nrows,NsnkTot,Lt)], t_C_im[index_5d(rp,Nsrc*B1NsrcSC+msc*NsrcHex+m,rp,nsc*Nsnk+n,t, NsrcTot,B2Nrows,NsnkTot,Lt)]); + std::cout << "Error: different computed values for C_r or C_i!" << std::endl; + exit(1); + } + } + } + if (rank == 0) + printf("cleared H-BB \n"); + for (rp=0; rp= 0.01*Vsnk*Vsnk) || - (std::abs(C_im[index_4d(rp,m,n,t, Nsrc+NsrcHex,Nsnk+NsnkHex,Lt)] - t_C_im[index_5d(rp,m,rp,n,t, Nsrc+NsrcHex,B2Nrows,Nsnk+NsnkHex,Lt)]) >= 0.01*Vsnk*Vsnk)) + if ((std::abs(C_re[index_4d(rp,Nsrc+m,Nsnk+n,t, Nsrc+NsrcHex,Nsnk+NsnkHex,Lt)] - t_C_re[index_5d(rp,Nsrc*B1NsrcSC+msc*NsrcHex+m,rp,Nsnk*B1NsnkSC+nsc*NsnkHex+n,t, NsrcTot,B2Nrows,NsnkTot,Lt)]) >= 0.01*Vsnk*Vsnk) || + (std::abs(C_im[index_4d(rp,Nsrc+m,Nsnk+n,t, Nsrc+NsrcHex,Nsnk+NsnkHex,Lt)] - t_C_im[index_5d(rp,Nsrc*B1NsrcSC+msc*NsrcHex+m,rp,Nsnk*B1NsnkSC+nsc*NsnkHex+n,t, NsrcTot,B2Nrows,NsnkTot,Lt)]) >= 0.01*Vsnk*Vsnk)) { - printf("rp=%d, m=%d, n=%d, t=%d: %4.1f + I (%4.1f) vs %4.1f + I (%4.1f) \n", rp, m, n, t, C_re[index_4d(rp,m,n,t, Nsrc+NsrcHex,Nsnk+NsnkHex,Lt)], C_im[index_4d(rp,m,n,t, Nsrc+NsrcHex,Nsnk+NsnkHex,Lt)], t_C_re[index_5d(rp,m,rp,n,t, Nsrc+NsrcHex,B2Nrows,Nsnk+NsnkHex,Lt)], t_C_im[index_5d(rp,m,rp,n,t, Nsrc+NsrcHex,B2Nrows,Nsnk+NsnkHex,Lt)]); + printf("H_H rp=%d, msc=%d, m=%d, nsc=%d, n=%d, t=%d: %4.1f + I (%4.1f) vs %4.1f + I (%4.1f) \n", rp, msc, m, nsc, n, t, C_re[index_4d(rp,Nsrc+m,Nsnk+n,t, Nsrc+NsrcHex,Nsnk+NsnkHex,Lt)], C_im[index_4d(rp,Nsrc+m,Nsnk+n,t, Nsrc+NsrcHex,Nsnk+NsnkHex,Lt)], t_C_re[index_5d(rp,Nsrc*B1NsrcSC+msc*NsrcHex+m,rp,Nsnk*B1NsnkSC+nsc*NsnkHex+n,t, NsrcTot,B2Nrows,NsnkTot,Lt)], t_C_im[index_5d(rp,Nsrc*B1NsrcSC+msc*NsrcHex+m,rp,Nsnk*B1NsnkSC+nsc*NsnkHex+n,t, NsrcTot,B2Nrows,NsnkTot,Lt)]); std::cout << "Error: different computed values for C_r or C_i!" << std::endl; exit(1); } } } + if (rank == 0) + printf("cleared H-H \n"); #endif printf("Finished\n"); diff --git a/benchmarks/tensors/dibaryon/tiramisu_make_fused_dibaryon_blocks_correlator/tiramisu_make_fused_dibaryon_blocks_correlator_wrapper.h b/benchmarks/tensors/dibaryon/tiramisu_make_fused_dibaryon_blocks_correlator/tiramisu_make_fused_dibaryon_blocks_correlator_wrapper.h index 3f99a5c79..c7d8358af 100644 --- a/benchmarks/tensors/dibaryon/tiramisu_make_fused_dibaryon_blocks_correlator/tiramisu_make_fused_dibaryon_blocks_correlator_wrapper.h +++ b/benchmarks/tensors/dibaryon/tiramisu_make_fused_dibaryon_blocks_correlator/tiramisu_make_fused_dibaryon_blocks_correlator_wrapper.h @@ -15,6 +15,10 @@ #define Vsnk P_Vsnk #define Nsrc P_Nsrc #define Nsnk P_Nsnk +#define B1NsrcSC P_B1NsrcSC +#define B1NsnkSC P_B1NsnkSC +#define B2NsrcSC P_B2NsrcSC +#define B2NsnkSC P_B2NsnkSC #define NsrcHex P_NsrcHex #define NsnkHex P_NsnkHex #define mq P_mq @@ -71,6 +75,13 @@ int tiramisu_make_fused_dibaryon_blocks_correlator( halide_buffer_t *, halide_buffer_t *, halide_buffer_t *, + halide_buffer_t *, + halide_buffer_t *, + halide_buffer_t *, + halide_buffer_t *, + halide_buffer_t *, + halide_buffer_t *, + halide_buffer_t *, halide_buffer_t *); diff --git a/benchmarks/tensors/dibaryon/tiramisu_make_fused_dibaryon_blocks_correlator/tiramisu_make_fused_identical_dibaryon_blocks_correlator_generator.cpp b/benchmarks/tensors/dibaryon/tiramisu_make_fused_dibaryon_blocks_correlator/tiramisu_make_fused_identical_dibaryon_blocks_correlator_generator.cpp index f8d72b935..0898d5adf 100644 --- a/benchmarks/tensors/dibaryon/tiramisu_make_fused_dibaryon_blocks_correlator/tiramisu_make_fused_identical_dibaryon_blocks_correlator_generator.cpp +++ b/benchmarks/tensors/dibaryon/tiramisu_make_fused_dibaryon_blocks_correlator/tiramisu_make_fused_identical_dibaryon_blocks_correlator_generator.cpp @@ -1,6 +1,6 @@ #include #include -#include "tiramisu_make_fused_dibaryon_blocks_correlator_wrapper.h" +#include "tiramisu_make_fused_identical_dibaryon_blocks_correlator_wrapper.h" #include "../../utils/complex_util.h" #include "../../utils/util.h" @@ -14,8 +14,8 @@ void generate_function(std::string name) tiramisu::init(name); int b; - int NsrcTot = Nsrc+NsrcHex; - int NsnkTot = Nsnk+NsnkHex; + int NsrcTot = Nsrc*B1NsrcSC + NsrcHex*B2NsrcSC; + int NsnkTot = Nsnk*B1NsnkSC + NsnkHex*B2NsnkSC; var nperm("nperm", 0, Nperms), r("r", 0, B2Nrows), rp("rp", 0, B2Nrows), @@ -38,6 +38,10 @@ void generate_function(std::string name) n("n", 0, Nsnk), ne("ne", 0, NEntangled), nue("nue", 0, Nsnk-NEntangled), + msc1("msc1", 0, B1NsrcSC), + nsc1("nsc1", 0, B1NsnkSC), + mscH("mscH", 0, B2NsrcSC), + nscH("nscH", 0, B2NsnkSC), mH("mH", 0, NsrcHex), nH("nH", 0, NsnkHex), mpmH("mpmH", 0, NsrcTot), @@ -49,12 +53,15 @@ void generate_function(std::string name) kCprime("kCprime", 0, Nc), kSprime("kSprime", 0, Ns); + // correlator inputs (holder for outputs) input C_r("C_r", {t, x_out, rp, mpmH, r, npnH}, p_float64); input C_i("C_i", {t, x_out, rp, mpmH, r, npnH}, p_float64); + // propagator inputs input B1_prop_r("B1_prop_r", {t, iCprime, iSprime, jCprime, jSprime, x, y}, p_float64); input B1_prop_i("B1_prop_i", {t, iCprime, iSprime, jCprime, jSprime, x, y}, p_float64); + // wavefunction inputs input src_psi_B1_r("src_psi_B1_r", {y, m}, p_float64); input src_psi_B1_i("src_psi_B1_i", {y, m}, p_float64); input src_psi_B2_r("src_psi_B2_r", {y, m}, p_float64); @@ -70,22 +77,28 @@ void generate_function(std::string name) // computation is local in x1, only rank=x_out components of sink wavefunction stored input snk_psi_r("snk_psi_r", {x_in, x2, ne}, p_float64); input snk_psi_i("snk_psi_i", {x_in, x2, ne}, p_float64); - //input snk_psi_r("snk_psi_r", {x, x2, ne}, p_float64); - //input snk_psi_i("snk_psi_i", {x, x2, ne}, p_float64); + // spin-color weight inputs input src_spins("src_spins", {rp, s, to}, p_int32); input src_spin_block_weights("src_spin_block_weights", {rp, s}, p_float64); - input sigs("sigs", {nperm}, p_int32); - input snk_b("snk_b", {nperm, q, to}, p_int32); - input src_color_weights("src_color_weights", {r, wnumBlock, q}, p_int32); - input src_spin_weights("src_spin_weights", {r, wnumBlock, q}, p_int32); - input src_weights("src_weights", {r, wnumBlock}, p_float64); - input snk_color_weights("snk_color_weights", {r, nperm, wnum, q, to}, p_int32); - input snk_spin_weights("snk_spin_weights", {r, nperm, wnum, q, to}, p_int32); - input snk_weights("snk_weights", {r, wnum}, p_float64); - input hex_snk_color_weights("hex_snk_color_weights", {r, nperm, wnumHex, q, to}, p_int32); - input hex_snk_spin_weights("hex_snk_spin_weights", {r, nperm, wnumHex, q, to}, p_int32); - input hex_snk_weights("hex_snk_weights", {r, wnumHex}, p_float64); + input sigs("sigs", {nperm, msc1, nsc1}, p_int32); + input hex_sigs("hex_sigs", {nperm, msc1}, p_int32); + input hex_hex_sigs("hex_hex_sigs", {nperm}, p_int32); + input snk_b("snk_b", {nperm, msc1, nsc1, q, to}, p_int32); + input src_color_weights("src_color_weights", {to, s, msc1, wnumBlock, q}, p_int32); + input src_spin_weights("src_spin_weights", {to, s, msc1, wnumBlock, q}, p_int32); + input src_weights("src_weights", {to, s, msc1, wnumBlock}, p_float64); + input snk_color_weights("snk_color_weights", {r, nperm, msc1, nsc1, wnum, q, to}, p_int32); + input snk_spin_weights("snk_spin_weights", {r, nperm, msc1, nsc1, wnum, q, to}, p_int32); + input snk_weights("snk_weights", {r, nsc1, wnum}, p_float64); + input hex_snk_color_weights("hex_snk_color_weights", {r, nperm, msc1, nscH, wnumHex, q, to}, p_int32); + input hex_snk_spin_weights("hex_snk_spin_weights", {r, nperm, msc1, nscH, wnumHex, q, to}, p_int32); + input hex_snk_weights("hex_snk_weights", {r, nscH, wnumHex}, p_float64); + input hex_src_color_weights("hex_src_color_weights", {r, nperm, nsc1, mscH, wnumHex, q, to}, p_int32); + input hex_src_spin_weights("hex_src_spin_weights", {r, nperm, nsc1, mscH, wnumHex, q, to}, p_int32); + input hex_src_weights("hex_src_weights", {r, mscH, wnumHex}, p_float64); + input hex_hex_snk_color_weights("hex_hex_snk_color_weights", {r, nperm, nscH, wnumHex, q, to}, p_int32); + input hex_hex_snk_spin_weights("hex_hex_snk_spin_weights", {r, nperm, nscH, wnumHex, q, to}, p_int32); complex_computation B1_prop(&B1_prop_r, &B1_prop_i); @@ -113,779 +126,779 @@ void generate_function(std::string name) // Computing B1_Blocal_r1, B1_Bsecond_r1, B1_Bfirst_r1 - computation B1_Blocal_r1_r_init("B1_Blocal_r1_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B1_Blocal_r1_i_init("B1_Blocal_r1_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B1_Bfirst_r1_r_init("B1_Bfirst_r1_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B1_Bfirst_r1_i_init("B1_Bfirst_r1_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B1_Bsecond_r1_r_init("B1_Bsecond_r1_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B1_Bsecond_r1_i_init("B1_Bsecond_r1_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B1_Bthird_r1_r_init("B1_Bthird_r1_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B1_Bthird_r1_i_init("B1_Bthird_r1_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B1_Blocal_r1_r_init("B1_Blocal_r1_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B1_Blocal_r1_i_init("B1_Blocal_r1_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B1_Bfirst_r1_r_init("B1_Bfirst_r1_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B1_Bfirst_r1_i_init("B1_Bfirst_r1_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B1_Bsecond_r1_r_init("B1_Bsecond_r1_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B1_Bsecond_r1_i_init("B1_Bsecond_r1_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B1_Bthird_r1_r_init("B1_Bthird_r1_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B1_Bthird_r1_i_init("B1_Bthird_r1_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); complex_computation B1_Blocal_r1_init(&B1_Blocal_r1_r_init, &B1_Blocal_r1_i_init); complex_computation B1_Bfirst_r1_init(&B1_Bfirst_r1_r_init, &B1_Bfirst_r1_i_init); complex_computation B1_Bsecond_r1_init(&B1_Bsecond_r1_r_init, &B1_Bsecond_r1_i_init); complex_computation B1_Bthird_r1_init(&B1_Bthird_r1_r_init, &B1_Bthird_r1_i_init); - computation flip_B1_Blocal_r1_r_init("flip_B1_Blocal_r1_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B1_Blocal_r1_i_init("flip_B1_Blocal_r1_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B1_Bfirst_r1_r_init("flip_B1_Bfirst_r1_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B1_Bfirst_r1_i_init("flip_B1_Bfirst_r1_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B1_Bsecond_r1_r_init("flip_B1_Bsecond_r1_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B1_Bsecond_r1_i_init("flip_B1_Bsecond_r1_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B1_Bthird_r1_r_init("flip_B1_Bthird_r1_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B1_Bthird_r1_i_init("flip_B1_Bthird_r1_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B1_Blocal_r1_r_init("flip_B1_Blocal_r1_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B1_Blocal_r1_i_init("flip_B1_Blocal_r1_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B1_Bfirst_r1_r_init("flip_B1_Bfirst_r1_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B1_Bfirst_r1_i_init("flip_B1_Bfirst_r1_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B1_Bsecond_r1_r_init("flip_B1_Bsecond_r1_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B1_Bsecond_r1_i_init("flip_B1_Bsecond_r1_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B1_Bthird_r1_r_init("flip_B1_Bthird_r1_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B1_Bthird_r1_i_init("flip_B1_Bthird_r1_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); complex_computation flip_B1_Blocal_r1_init(&flip_B1_Blocal_r1_r_init, &flip_B1_Blocal_r1_i_init); complex_computation flip_B1_Bfirst_r1_init(&flip_B1_Bfirst_r1_r_init, &flip_B1_Bfirst_r1_i_init); complex_computation flip_B1_Bsecond_r1_init(&flip_B1_Bsecond_r1_r_init, &flip_B1_Bsecond_r1_i_init); complex_computation flip_B1_Bthird_r1_init(&flip_B1_Bthird_r1_r_init, &flip_B1_Bthird_r1_i_init); - complex_expr B1_r1_prop_0 = B1_prop(t, iCprime, iSprime, src_color_weights(0, wnumBlock, 0), src_spin_weights(0, wnumBlock, 0), x_out*sites_per_rank+x_in, y); - complex_expr B1_r1_prop_1 = B1_prop(t, jCprime, jSprime, src_color_weights(0, wnumBlock, 1), src_spin_weights(0, wnumBlock, 1), x_out*sites_per_rank+x_in, y); - complex_expr B1_r1_prop_2 = B1_prop(t, kCprime, kSprime, src_color_weights(0, wnumBlock, 2), src_spin_weights(0, wnumBlock, 2), x_out*sites_per_rank+x_in, y); - complex_expr first_B1_r1_prop_0 = B1_prop(t, iCprime, iSprime, src_color_weights(0, wnumBlock, 0), src_spin_weights(0, wnumBlock, 0), x2, y); - complex_expr second_B1_r1_prop_1 = B1_prop(t, jCprime, jSprime, src_color_weights(0, wnumBlock, 1), src_spin_weights(0, wnumBlock, 1), x2, y); - complex_expr third_B1_r1_prop_2 = B1_prop(t, kCprime, kSprime, src_color_weights(0, wnumBlock, 2), src_spin_weights(0, wnumBlock, 2), x2, y); - - complex_expr B1_r1_diquark = ( B1_r1_prop_0 * B1_r1_prop_2 ) * src_weights(0, wnumBlock); - complex_expr first_B1_r1_diquark = ( first_B1_r1_prop_0 * B1_r1_prop_2 ) * src_weights(0, wnumBlock); - complex_expr third_B1_r1_diquark = ( B1_r1_prop_0 * third_B1_r1_prop_2 ) * src_weights(0, wnumBlock); - - computation B1_Blocal_r1_r_props_init("B1_Blocal_r1_r_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B1_Blocal_r1_i_props_init("B1_Blocal_r1_i_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B1_Bfirst_r1_r_props_init("B1_Bfirst_r1_r_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B1_Bfirst_r1_i_props_init("B1_Bfirst_r1_i_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B1_Bsecond_r1_r_props_init("B1_Bsecond_r1_r_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B1_Bsecond_r1_i_props_init("B1_Bsecond_r1_i_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B1_Bthird_r1_r_props_init("B1_Bthird_r1_r_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B1_Bthird_r1_i_props_init("B1_Bthird_r1_i_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - - computation B1_Blocal_r1_r_diquark("B1_Blocal_r1_r_diquark", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, B1_r1_diquark.get_real()); - computation B1_Blocal_r1_i_diquark("B1_Blocal_r1_i_diquark", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, B1_r1_diquark.get_imag()); - computation B1_Bfirst_r1_r_diquark("B1_Bfirst_r1_r_diquark", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, first_B1_r1_diquark.get_real()); - computation B1_Bfirst_r1_i_diquark("B1_Bfirst_r1_i_diquark", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, first_B1_r1_diquark.get_imag()); - computation B1_Bthird_r1_r_diquark("B1_Bthird_r1_r_diquark", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, third_B1_r1_diquark.get_real()); - computation B1_Bthird_r1_i_diquark("B1_Bthird_r1_i_diquark", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, third_B1_r1_diquark.get_imag()); + complex_expr B1_r1_prop_0 = B1_prop(t, iCprime, iSprime, src_color_weights(0, 0, msc1, wnumBlock, 0), src_spin_weights(0, 0, msc1, wnumBlock, 0), x_out*sites_per_rank+x_in, y); + complex_expr B1_r1_prop_1 = B1_prop(t, jCprime, jSprime, src_color_weights(0, 0, msc1, wnumBlock, 1), src_spin_weights(0, 0, msc1, wnumBlock, 1), x_out*sites_per_rank+x_in, y); + complex_expr B1_r1_prop_2 = B1_prop(t, kCprime, kSprime, src_color_weights(0, 0, msc1, wnumBlock, 2), src_spin_weights(0, 0, msc1, wnumBlock, 2), x_out*sites_per_rank+x_in, y); + complex_expr first_B1_r1_prop_0 = B1_prop(t, iCprime, iSprime, src_color_weights(0, 0, msc1, wnumBlock, 0), src_spin_weights(0, 0, msc1, wnumBlock, 0), x2, y); + complex_expr second_B1_r1_prop_1 = B1_prop(t, jCprime, jSprime, src_color_weights(0, 0, msc1, wnumBlock, 1), src_spin_weights(0, 0, msc1, wnumBlock, 1), x2, y); + complex_expr third_B1_r1_prop_2 = B1_prop(t, kCprime, kSprime, src_color_weights(0, 0, msc1, wnumBlock, 2), src_spin_weights(0, 0, msc1, wnumBlock, 2), x2, y); + + complex_expr B1_r1_diquark = ( B1_r1_prop_0 * B1_r1_prop_2 ) * src_weights(0, 0, msc1, wnumBlock); + complex_expr first_B1_r1_diquark = ( first_B1_r1_prop_0 * B1_r1_prop_2 ) * src_weights(0, 0, msc1, wnumBlock); + complex_expr third_B1_r1_diquark = ( B1_r1_prop_0 * third_B1_r1_prop_2 ) * src_weights(0, 0, msc1, wnumBlock); + + computation B1_Blocal_r1_r_props_init("B1_Blocal_r1_r_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B1_Blocal_r1_i_props_init("B1_Blocal_r1_i_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B1_Bfirst_r1_r_props_init("B1_Bfirst_r1_r_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B1_Bfirst_r1_i_props_init("B1_Bfirst_r1_i_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B1_Bsecond_r1_r_props_init("B1_Bsecond_r1_r_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B1_Bsecond_r1_i_props_init("B1_Bsecond_r1_i_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B1_Bthird_r1_r_props_init("B1_Bthird_r1_r_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B1_Bthird_r1_i_props_init("B1_Bthird_r1_i_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + + computation B1_Blocal_r1_r_diquark("B1_Blocal_r1_r_diquark", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, B1_r1_diquark.get_real()); + computation B1_Blocal_r1_i_diquark("B1_Blocal_r1_i_diquark", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, B1_r1_diquark.get_imag()); + computation B1_Bfirst_r1_r_diquark("B1_Bfirst_r1_r_diquark", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, first_B1_r1_diquark.get_real()); + computation B1_Bfirst_r1_i_diquark("B1_Bfirst_r1_i_diquark", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, first_B1_r1_diquark.get_imag()); + computation B1_Bthird_r1_r_diquark("B1_Bthird_r1_r_diquark", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, third_B1_r1_diquark.get_real()); + computation B1_Bthird_r1_i_diquark("B1_Bthird_r1_i_diquark", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, third_B1_r1_diquark.get_imag()); complex_computation B1_Blocal_r1_diquark(&B1_Blocal_r1_r_diquark, &B1_Blocal_r1_i_diquark); complex_computation B1_Bfirst_r1_diquark(&B1_Bfirst_r1_r_diquark, &B1_Bfirst_r1_i_diquark); complex_computation B1_Bthird_r1_diquark(&B1_Bthird_r1_r_diquark, &B1_Bthird_r1_i_diquark); - complex_expr B1_r1_props = B1_r1_prop_1 * B1_Blocal_r1_diquark(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); - complex_expr first_B1_r1_props = B1_r1_prop_1 * B1_Bfirst_r1_diquark(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); - complex_expr second_B1_r1_props = second_B1_r1_prop_1 * B1_Blocal_r1_diquark(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); - complex_expr third_B1_r1_props = B1_r1_prop_1 * B1_Bthird_r1_diquark(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); + complex_expr B1_r1_props = B1_r1_prop_1 * B1_Blocal_r1_diquark(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); + complex_expr first_B1_r1_props = B1_r1_prop_1 * B1_Bfirst_r1_diquark(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); + complex_expr second_B1_r1_props = second_B1_r1_prop_1 * B1_Blocal_r1_diquark(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); + complex_expr third_B1_r1_props = B1_r1_prop_1 * B1_Bthird_r1_diquark(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); - computation B1_Blocal_r1_r_props("B1_Blocal_r1_r_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Blocal_r1_r_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + B1_r1_props.get_real()); - computation B1_Blocal_r1_i_props("B1_Blocal_r1_i_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Blocal_r1_i_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + B1_r1_props.get_imag()); - computation B1_Bfirst_r1_r_props("B1_Bfirst_r1_r_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Bfirst_r1_r_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + first_B1_r1_props.get_real()); - computation B1_Bfirst_r1_i_props("B1_Bfirst_r1_i_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Bfirst_r1_i_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + first_B1_r1_props.get_imag()); - computation B1_Bsecond_r1_r_props("B1_Bsecond_r1_r_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Bsecond_r1_r_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + second_B1_r1_props.get_real()); - computation B1_Bsecond_r1_i_props("B1_Bsecond_r1_i_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Bsecond_r1_i_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + second_B1_r1_props.get_imag()); - computation B1_Bthird_r1_r_props("B1_Bthird_r1_r_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Bthird_r1_r_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + third_B1_r1_props.get_real()); - computation B1_Bthird_r1_i_props("B1_Bthird_r1_i_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Bthird_r1_i_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + third_B1_r1_props.get_imag()); + computation B1_Blocal_r1_r_props("B1_Blocal_r1_r_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Blocal_r1_r_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + B1_r1_props.get_real()); + computation B1_Blocal_r1_i_props("B1_Blocal_r1_i_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Blocal_r1_i_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + B1_r1_props.get_imag()); + computation B1_Bfirst_r1_r_props("B1_Bfirst_r1_r_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Bfirst_r1_r_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + first_B1_r1_props.get_real()); + computation B1_Bfirst_r1_i_props("B1_Bfirst_r1_i_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Bfirst_r1_i_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + first_B1_r1_props.get_imag()); + computation B1_Bsecond_r1_r_props("B1_Bsecond_r1_r_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Bsecond_r1_r_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + second_B1_r1_props.get_real()); + computation B1_Bsecond_r1_i_props("B1_Bsecond_r1_i_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Bsecond_r1_i_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + second_B1_r1_props.get_imag()); + computation B1_Bthird_r1_r_props("B1_Bthird_r1_r_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Bthird_r1_r_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + third_B1_r1_props.get_real()); + computation B1_Bthird_r1_i_props("B1_Bthird_r1_i_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Bthird_r1_i_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + third_B1_r1_props.get_imag()); complex_computation B1_Blocal_r1_props(&B1_Blocal_r1_r_props, &B1_Blocal_r1_i_props); complex_computation B1_Bfirst_r1_props(&B1_Bfirst_r1_r_props, &B1_Bfirst_r1_i_props); complex_computation B1_Bsecond_r1_props(&B1_Bsecond_r1_r_props, &B1_Bsecond_r1_i_props); complex_computation B1_Bthird_r1_props(&B1_Bthird_r1_r_props, &B1_Bthird_r1_i_props); - complex_expr B1_r1 = src_psi_B1 * B1_Blocal_r1_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - complex_expr first_B1_r1 = src_psi_B1 * B1_Bfirst_r1_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - complex_expr second_B1_r1 = src_psi_B1 * B1_Bsecond_r1_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - complex_expr third_B1_r1 = src_psi_B1 * B1_Bthird_r1_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - - computation B1_Blocal_r1_r_update("B1_Blocal_r1_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Blocal_r1_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + B1_r1.get_real()); - computation B1_Blocal_r1_i_update("B1_Blocal_r1_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Blocal_r1_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + B1_r1.get_imag()); - computation B1_Bfirst_r1_r_update("B1_Bfirst_r1_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Bfirst_r1_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + first_B1_r1.get_real()); - computation B1_Bfirst_r1_i_update("B1_Bfirst_r1_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Bfirst_r1_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + first_B1_r1.get_imag()); - computation B1_Bsecond_r1_r_update("B1_Bsecond_r1_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Bsecond_r1_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + second_B1_r1.get_real()); - computation B1_Bsecond_r1_i_update("B1_Bsecond_r1_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Bsecond_r1_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + second_B1_r1.get_imag()); - computation B1_Bthird_r1_r_update("B1_Bthird_r1_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Bthird_r1_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + third_B1_r1.get_real()); - computation B1_Bthird_r1_i_update("B1_Bthird_r1_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Bthird_r1_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + third_B1_r1.get_imag()); - - complex_expr flip_B1_r1 = src_psi_B2 * B1_Blocal_r1_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - complex_expr flip_first_B1_r1 = src_psi_B2 * B1_Bfirst_r1_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - complex_expr flip_second_B1_r1 = src_psi_B2 * B1_Bsecond_r1_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - complex_expr flip_third_B1_r1 = src_psi_B2 * B1_Bthird_r1_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - - computation flip_B1_Blocal_r1_r_update("flip_B1_Blocal_r1_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Blocal_r1_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_B1_r1.get_real()); - computation flip_B1_Blocal_r1_i_update("flip_B1_Blocal_r1_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Blocal_r1_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_B1_r1.get_imag()); - computation flip_B1_Bfirst_r1_r_update("flip_B1_Bfirst_r1_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Bfirst_r1_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_first_B1_r1.get_real()); - computation flip_B1_Bfirst_r1_i_update("flip_B1_Bfirst_r1_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Bfirst_r1_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_first_B1_r1.get_imag()); - computation flip_B1_Bsecond_r1_r_update("flip_B1_Bsecond_r1_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Bsecond_r1_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_second_B1_r1.get_real()); - computation flip_B1_Bsecond_r1_i_update("flip_B1_Bsecond_r1_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Bsecond_r1_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_second_B1_r1.get_imag()); - computation flip_B1_Bthird_r1_r_update("flip_B1_Bthird_r1_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Bthird_r1_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_third_B1_r1.get_real()); - computation flip_B1_Bthird_r1_i_update("flip_B1_Bthird_r1_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Bthird_r1_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_third_B1_r1.get_imag()); + complex_expr B1_r1 = src_psi_B1 * B1_Blocal_r1_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr first_B1_r1 = src_psi_B1 * B1_Bfirst_r1_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr second_B1_r1 = src_psi_B1 * B1_Bsecond_r1_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr third_B1_r1 = src_psi_B1 * B1_Bthird_r1_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + + computation B1_Blocal_r1_r_update("B1_Blocal_r1_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Blocal_r1_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + B1_r1.get_real()); + computation B1_Blocal_r1_i_update("B1_Blocal_r1_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Blocal_r1_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + B1_r1.get_imag()); + computation B1_Bfirst_r1_r_update("B1_Bfirst_r1_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Bfirst_r1_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + first_B1_r1.get_real()); + computation B1_Bfirst_r1_i_update("B1_Bfirst_r1_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Bfirst_r1_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + first_B1_r1.get_imag()); + computation B1_Bsecond_r1_r_update("B1_Bsecond_r1_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Bsecond_r1_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + second_B1_r1.get_real()); + computation B1_Bsecond_r1_i_update("B1_Bsecond_r1_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Bsecond_r1_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + second_B1_r1.get_imag()); + computation B1_Bthird_r1_r_update("B1_Bthird_r1_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Bthird_r1_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + third_B1_r1.get_real()); + computation B1_Bthird_r1_i_update("B1_Bthird_r1_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Bthird_r1_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + third_B1_r1.get_imag()); + + complex_expr flip_B1_r1 = src_psi_B2 * B1_Blocal_r1_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr flip_first_B1_r1 = src_psi_B2 * B1_Bfirst_r1_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr flip_second_B1_r1 = src_psi_B2 * B1_Bsecond_r1_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr flip_third_B1_r1 = src_psi_B2 * B1_Bthird_r1_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + + computation flip_B1_Blocal_r1_r_update("flip_B1_Blocal_r1_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Blocal_r1_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_B1_r1.get_real()); + computation flip_B1_Blocal_r1_i_update("flip_B1_Blocal_r1_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Blocal_r1_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_B1_r1.get_imag()); + computation flip_B1_Bfirst_r1_r_update("flip_B1_Bfirst_r1_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Bfirst_r1_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_first_B1_r1.get_real()); + computation flip_B1_Bfirst_r1_i_update("flip_B1_Bfirst_r1_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Bfirst_r1_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_first_B1_r1.get_imag()); + computation flip_B1_Bsecond_r1_r_update("flip_B1_Bsecond_r1_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Bsecond_r1_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_second_B1_r1.get_real()); + computation flip_B1_Bsecond_r1_i_update("flip_B1_Bsecond_r1_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Bsecond_r1_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_second_B1_r1.get_imag()); + computation flip_B1_Bthird_r1_r_update("flip_B1_Bthird_r1_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Bthird_r1_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_third_B1_r1.get_real()); + computation flip_B1_Bthird_r1_i_update("flip_B1_Bthird_r1_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Bthird_r1_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_third_B1_r1.get_imag()); // Computing B1_Blocal_r2, B1_Bsecond_r2, B1_Bfirst_r2 - computation B1_Blocal_r2_r_init("B1_Blocal_r2_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B1_Blocal_r2_i_init("B1_Blocal_r2_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B1_Bfirst_r2_r_init("B1_Bfirst_r2_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B1_Bfirst_r2_i_init("B1_Bfirst_r2_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B1_Bsecond_r2_r_init("B1_Bsecond_r2_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B1_Bsecond_r2_i_init("B1_Bsecond_r2_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B1_Bthird_r2_r_init("B1_Bthird_r2_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B1_Bthird_r2_i_init("B1_Bthird_r2_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B1_Blocal_r2_r_init("B1_Blocal_r2_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B1_Blocal_r2_i_init("B1_Blocal_r2_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B1_Bfirst_r2_r_init("B1_Bfirst_r2_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B1_Bfirst_r2_i_init("B1_Bfirst_r2_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B1_Bsecond_r2_r_init("B1_Bsecond_r2_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B1_Bsecond_r2_i_init("B1_Bsecond_r2_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B1_Bthird_r2_r_init("B1_Bthird_r2_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B1_Bthird_r2_i_init("B1_Bthird_r2_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); complex_computation B1_Blocal_r2_init(&B1_Blocal_r2_r_init, &B1_Blocal_r2_i_init); complex_computation B1_Bfirst_r2_init(&B1_Bfirst_r2_r_init, &B1_Bfirst_r2_i_init); complex_computation B1_Bsecond_r2_init(&B1_Bsecond_r2_r_init, &B1_Bsecond_r2_i_init); complex_computation B1_Bthird_r2_init(&B1_Bthird_r2_r_init, &B1_Bthird_r2_i_init); - computation flip_B1_Blocal_r2_r_init("flip_B1_Blocal_r2_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B1_Blocal_r2_i_init("flip_B1_Blocal_r2_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B1_Bfirst_r2_r_init("flip_B1_Bfirst_r2_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B1_Bfirst_r2_i_init("flip_B1_Bfirst_r2_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B1_Bsecond_r2_r_init("flip_B1_Bsecond_r2_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B1_Bsecond_r2_i_init("flip_B1_Bsecond_r2_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B1_Bthird_r2_r_init("flip_B1_Bthird_r2_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B1_Bthird_r2_i_init("flip_B1_Bthird_r2_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B1_Blocal_r2_r_init("flip_B1_Blocal_r2_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B1_Blocal_r2_i_init("flip_B1_Blocal_r2_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B1_Bfirst_r2_r_init("flip_B1_Bfirst_r2_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B1_Bfirst_r2_i_init("flip_B1_Bfirst_r2_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B1_Bsecond_r2_r_init("flip_B1_Bsecond_r2_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B1_Bsecond_r2_i_init("flip_B1_Bsecond_r2_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B1_Bthird_r2_r_init("flip_B1_Bthird_r2_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B1_Bthird_r2_i_init("flip_B1_Bthird_r2_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); complex_computation flip_B1_Blocal_r2_init(&flip_B1_Blocal_r2_r_init, &flip_B1_Blocal_r2_i_init); complex_computation flip_B1_Bfirst_r2_init(&flip_B1_Bfirst_r2_r_init, &flip_B1_Bfirst_r2_i_init); complex_computation flip_B1_Bsecond_r2_init(&flip_B1_Bsecond_r2_r_init, &flip_B1_Bsecond_r2_i_init); complex_computation flip_B1_Bthird_r2_init(&flip_B1_Bthird_r2_r_init, &flip_B1_Bthird_r2_i_init); - complex_expr B1_r2_prop_0 = B1_prop(t, iCprime, iSprime, src_color_weights(1, wnumBlock, 0), src_spin_weights(1, wnumBlock, 0), x_out*sites_per_rank+x_in, y); - complex_expr B1_r2_prop_2 = B1_prop(t, kCprime, kSprime, src_color_weights(1, wnumBlock, 2), src_spin_weights(1, wnumBlock, 2), x_out*sites_per_rank+x_in, y); - complex_expr B1_r2_prop_1 = B1_prop(t, jCprime, jSprime, src_color_weights(1, wnumBlock, 1), src_spin_weights(1, wnumBlock, 1), x_out*sites_per_rank+x_in, y); - complex_expr first_B1_r2_prop_0 = B1_prop(t, iCprime, iSprime, src_color_weights(1, wnumBlock, 0), src_spin_weights(1, wnumBlock, 0), x2, y); - complex_expr second_B1_r2_prop_1 = B1_prop(t, jCprime, jSprime, src_color_weights(1, wnumBlock, 1), src_spin_weights(1, wnumBlock, 1), x2, y); - complex_expr third_B1_r2_prop_2 = B1_prop(t, kCprime, kSprime, src_color_weights(1, wnumBlock, 2), src_spin_weights(1, wnumBlock, 2), x2, y); - - complex_expr B1_r2_diquark = ( B1_r2_prop_0 * B1_r2_prop_2 ) * src_weights(1, wnumBlock); - complex_expr first_B1_r2_diquark = ( first_B1_r2_prop_0 * B1_r2_prop_2 ) * src_weights(1, wnumBlock); - complex_expr third_B1_r2_diquark = ( B1_r2_prop_0 * third_B1_r2_prop_2 ) * src_weights(1, wnumBlock); - - computation B1_Blocal_r2_r_props_init("B1_Blocal_r2_r_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B1_Blocal_r2_i_props_init("B1_Blocal_r2_i_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B1_Bfirst_r2_r_props_init("B1_Bfirst_r2_r_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B1_Bfirst_r2_i_props_init("B1_Bfirst_r2_i_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B1_Bsecond_r2_r_props_init("B1_Bsecond_r2_r_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B1_Bsecond_r2_i_props_init("B1_Bsecond_r2_i_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B1_Bthird_r2_r_props_init("B1_Bthird_r2_r_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B1_Bthird_r2_i_props_init("B1_Bthird_r2_i_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - - computation B1_Blocal_r2_r_diquark("B1_Blocal_r2_r_diquark", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, B1_r2_diquark.get_real()); - computation B1_Blocal_r2_i_diquark("B1_Blocal_r2_i_diquark", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, B1_r2_diquark.get_imag()); - computation B1_Bfirst_r2_r_diquark("B1_Bfirst_r2_r_diquark", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, first_B1_r2_diquark.get_real()); - computation B1_Bfirst_r2_i_diquark("B1_Bfirst_r2_i_diquark", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, first_B1_r2_diquark.get_imag()); - computation B1_Bthird_r2_r_diquark("B1_Bthird_r2_r_diquark", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, third_B1_r2_diquark.get_real()); - computation B1_Bthird_r2_i_diquark("B1_Bthird_r2_i_diquark", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, third_B1_r2_diquark.get_imag()); + complex_expr B1_r2_prop_0 = B1_prop(t, iCprime, iSprime, src_color_weights(0, 1, msc1, wnumBlock, 0), src_spin_weights(0, 1, msc1, wnumBlock, 0), x_out*sites_per_rank+x_in, y); + complex_expr B1_r2_prop_2 = B1_prop(t, kCprime, kSprime, src_color_weights(0, 1, msc1, wnumBlock, 2), src_spin_weights(0, 1, msc1, wnumBlock, 2), x_out*sites_per_rank+x_in, y); + complex_expr B1_r2_prop_1 = B1_prop(t, jCprime, jSprime, src_color_weights(0, 1, msc1, wnumBlock, 1), src_spin_weights(0, 1, msc1, wnumBlock, 1), x_out*sites_per_rank+x_in, y); + complex_expr first_B1_r2_prop_0 = B1_prop(t, iCprime, iSprime, src_color_weights(0, 1, msc1, wnumBlock, 0), src_spin_weights(0, 1, msc1, wnumBlock, 0), x2, y); + complex_expr second_B1_r2_prop_1 = B1_prop(t, jCprime, jSprime, src_color_weights(0, 1, msc1, wnumBlock, 1), src_spin_weights(0, 1, msc1, wnumBlock, 1), x2, y); + complex_expr third_B1_r2_prop_2 = B1_prop(t, kCprime, kSprime, src_color_weights(0, 1, msc1, wnumBlock, 2), src_spin_weights(0, 1, msc1, wnumBlock, 2), x2, y); + + complex_expr B1_r2_diquark = ( B1_r2_prop_0 * B1_r2_prop_2 ) * src_weights(0, 1, msc1, wnumBlock); + complex_expr first_B1_r2_diquark = ( first_B1_r2_prop_0 * B1_r2_prop_2 ) * src_weights(0, 1, msc1, wnumBlock); + complex_expr third_B1_r2_diquark = ( B1_r2_prop_0 * third_B1_r2_prop_2 ) * src_weights(0, 1, msc1, wnumBlock); + + computation B1_Blocal_r2_r_props_init("B1_Blocal_r2_r_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B1_Blocal_r2_i_props_init("B1_Blocal_r2_i_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B1_Bfirst_r2_r_props_init("B1_Bfirst_r2_r_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B1_Bfirst_r2_i_props_init("B1_Bfirst_r2_i_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B1_Bsecond_r2_r_props_init("B1_Bsecond_r2_r_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B1_Bsecond_r2_i_props_init("B1_Bsecond_r2_i_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B1_Bthird_r2_r_props_init("B1_Bthird_r2_r_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B1_Bthird_r2_i_props_init("B1_Bthird_r2_i_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + + computation B1_Blocal_r2_r_diquark("B1_Blocal_r2_r_diquark", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, B1_r2_diquark.get_real()); + computation B1_Blocal_r2_i_diquark("B1_Blocal_r2_i_diquark", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, B1_r2_diquark.get_imag()); + computation B1_Bfirst_r2_r_diquark("B1_Bfirst_r2_r_diquark", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, first_B1_r2_diquark.get_real()); + computation B1_Bfirst_r2_i_diquark("B1_Bfirst_r2_i_diquark", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, first_B1_r2_diquark.get_imag()); + computation B1_Bthird_r2_r_diquark("B1_Bthird_r2_r_diquark", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, third_B1_r2_diquark.get_real()); + computation B1_Bthird_r2_i_diquark("B1_Bthird_r2_i_diquark", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, third_B1_r2_diquark.get_imag()); complex_computation B1_Blocal_r2_diquark(&B1_Blocal_r2_r_diquark, &B1_Blocal_r2_i_diquark); complex_computation B1_Bfirst_r2_diquark(&B1_Bfirst_r2_r_diquark, &B1_Bfirst_r2_i_diquark); complex_computation B1_Bthird_r2_diquark(&B1_Bthird_r2_r_diquark, &B1_Bthird_r2_i_diquark); - complex_expr B1_r2_props = B1_r2_prop_1 * B1_Blocal_r2_diquark(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); - complex_expr first_B1_r2_props = B1_r2_prop_1 * B1_Bfirst_r2_diquark(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); - complex_expr second_B1_r2_props = second_B1_r2_prop_1 * B1_Blocal_r2_diquark(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); - complex_expr third_B1_r2_props = B1_r2_prop_1 * B1_Bthird_r2_diquark(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); + complex_expr B1_r2_props = B1_r2_prop_1 * B1_Blocal_r2_diquark(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); + complex_expr first_B1_r2_props = B1_r2_prop_1 * B1_Bfirst_r2_diquark(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); + complex_expr second_B1_r2_props = second_B1_r2_prop_1 * B1_Blocal_r2_diquark(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); + complex_expr third_B1_r2_props = B1_r2_prop_1 * B1_Bthird_r2_diquark(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); - computation B1_Blocal_r2_r_props("B1_Blocal_r2_r_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Blocal_r2_r_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + B1_r2_props.get_real()); - computation B1_Blocal_r2_i_props("B1_Blocal_r2_i_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Blocal_r2_i_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + B1_r2_props.get_imag()); - computation B1_Bfirst_r2_r_props("B1_Bfirst_r2_r_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Bfirst_r2_r_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + first_B1_r2_props.get_real()); - computation B1_Bfirst_r2_i_props("B1_Bfirst_r2_i_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Bfirst_r2_i_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + first_B1_r2_props.get_imag()); - computation B1_Bsecond_r2_r_props("B1_Bsecond_r2_r_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Bsecond_r2_r_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + second_B1_r2_props.get_real()); - computation B1_Bsecond_r2_i_props("B1_Bsecond_r2_i_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Bsecond_r2_i_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + second_B1_r2_props.get_imag()); - computation B1_Bthird_r2_r_props("B1_Bthird_r2_r_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Bthird_r2_r_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + third_B1_r2_props.get_real()); - computation B1_Bthird_r2_i_props("B1_Bthird_r2_i_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Bthird_r2_i_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + third_B1_r2_props.get_imag()); + computation B1_Blocal_r2_r_props("B1_Blocal_r2_r_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Blocal_r2_r_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + B1_r2_props.get_real()); + computation B1_Blocal_r2_i_props("B1_Blocal_r2_i_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Blocal_r2_i_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + B1_r2_props.get_imag()); + computation B1_Bfirst_r2_r_props("B1_Bfirst_r2_r_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Bfirst_r2_r_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + first_B1_r2_props.get_real()); + computation B1_Bfirst_r2_i_props("B1_Bfirst_r2_i_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Bfirst_r2_i_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + first_B1_r2_props.get_imag()); + computation B1_Bsecond_r2_r_props("B1_Bsecond_r2_r_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Bsecond_r2_r_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + second_B1_r2_props.get_real()); + computation B1_Bsecond_r2_i_props("B1_Bsecond_r2_i_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Bsecond_r2_i_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + second_B1_r2_props.get_imag()); + computation B1_Bthird_r2_r_props("B1_Bthird_r2_r_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Bthird_r2_r_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + third_B1_r2_props.get_real()); + computation B1_Bthird_r2_i_props("B1_Bthird_r2_i_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B1_Bthird_r2_i_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + third_B1_r2_props.get_imag()); complex_computation B1_Blocal_r2_props(&B1_Blocal_r2_r_props, &B1_Blocal_r2_i_props); complex_computation B1_Bfirst_r2_props(&B1_Bfirst_r2_r_props, &B1_Bfirst_r2_i_props); complex_computation B1_Bsecond_r2_props(&B1_Bsecond_r2_r_props, &B1_Bsecond_r2_i_props); complex_computation B1_Bthird_r2_props(&B1_Bthird_r2_r_props, &B1_Bthird_r2_i_props); - complex_expr B1_r2 = src_psi_B1 * B1_Blocal_r2_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - complex_expr first_B1_r2 = src_psi_B1 * B1_Bfirst_r2_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - complex_expr second_B1_r2 = src_psi_B1 * B1_Bsecond_r2_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - complex_expr third_B1_r2 = src_psi_B1 * B1_Bthird_r2_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - - computation B1_Blocal_r2_r_update("B1_Blocal_r2_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Blocal_r2_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + B1_r2.get_real()); - computation B1_Blocal_r2_i_update("B1_Blocal_r2_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Blocal_r2_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + B1_r2.get_imag()); - computation B1_Bfirst_r2_r_update("B1_Bfirst_r2_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Bfirst_r2_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + first_B1_r2.get_real()); - computation B1_Bfirst_r2_i_update("B1_Bfirst_r2_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Bfirst_r2_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + first_B1_r2.get_imag()); - computation B1_Bsecond_r2_r_update("B1_Bsecond_r2_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Bsecond_r2_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + second_B1_r2.get_real()); - computation B1_Bsecond_r2_i_update("B1_Bsecond_r2_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Bsecond_r2_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + second_B1_r2.get_imag()); - computation B1_Bthird_r2_r_update("B1_Bthird_r2_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Bthird_r2_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + third_B1_r2.get_real()); - computation B1_Bthird_r2_i_update("B1_Bthird_r2_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Bthird_r2_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + third_B1_r2.get_imag()); - - complex_expr flip_B1_r2 = src_psi_B2 * B1_Blocal_r2_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - complex_expr flip_first_B1_r2 = src_psi_B2 * B1_Bfirst_r2_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - complex_expr flip_second_B1_r2 = src_psi_B2 * B1_Bsecond_r2_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - complex_expr flip_third_B1_r2 = src_psi_B2 * B1_Bthird_r2_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - - computation flip_B1_Blocal_r2_r_update("flip_B1_Blocal_r2_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Blocal_r2_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_B1_r2.get_real()); - computation flip_B1_Blocal_r2_i_update("flip_B1_Blocal_r2_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Blocal_r2_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_B1_r2.get_imag()); - computation flip_B1_Bfirst_r2_r_update("flip_B1_Bfirst_r2_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Bfirst_r2_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_first_B1_r2.get_real()); - computation flip_B1_Bfirst_r2_i_update("flip_B1_Bfirst_r2_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Bfirst_r2_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_first_B1_r2.get_imag()); - computation flip_B1_Bsecond_r2_r_update("flip_B1_Bsecond_r2_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Bsecond_r2_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_second_B1_r2.get_real()); - computation flip_B1_Bsecond_r2_i_update("flip_B1_Bsecond_r2_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Bsecond_r2_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_second_B1_r2.get_imag()); - computation flip_B1_Bthird_r2_r_update("flip_B1_Bthird_r2_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Bthird_r2_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_third_B1_r2.get_real()); - computation flip_B1_Bthird_r2_i_update("flip_B1_Bthird_r2_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Bthird_r2_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_third_B1_r2.get_imag()); + complex_expr B1_r2 = src_psi_B1 * B1_Blocal_r2_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr first_B1_r2 = src_psi_B1 * B1_Bfirst_r2_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr second_B1_r2 = src_psi_B1 * B1_Bsecond_r2_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr third_B1_r2 = src_psi_B1 * B1_Bthird_r2_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + + computation B1_Blocal_r2_r_update("B1_Blocal_r2_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Blocal_r2_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + B1_r2.get_real()); + computation B1_Blocal_r2_i_update("B1_Blocal_r2_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Blocal_r2_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + B1_r2.get_imag()); + computation B1_Bfirst_r2_r_update("B1_Bfirst_r2_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Bfirst_r2_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + first_B1_r2.get_real()); + computation B1_Bfirst_r2_i_update("B1_Bfirst_r2_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Bfirst_r2_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + first_B1_r2.get_imag()); + computation B1_Bsecond_r2_r_update("B1_Bsecond_r2_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Bsecond_r2_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + second_B1_r2.get_real()); + computation B1_Bsecond_r2_i_update("B1_Bsecond_r2_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Bsecond_r2_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + second_B1_r2.get_imag()); + computation B1_Bthird_r2_r_update("B1_Bthird_r2_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Bthird_r2_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + third_B1_r2.get_real()); + computation B1_Bthird_r2_i_update("B1_Bthird_r2_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B1_Bthird_r2_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + third_B1_r2.get_imag()); + + complex_expr flip_B1_r2 = src_psi_B2 * B1_Blocal_r2_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr flip_first_B1_r2 = src_psi_B2 * B1_Bfirst_r2_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr flip_second_B1_r2 = src_psi_B2 * B1_Bsecond_r2_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr flip_third_B1_r2 = src_psi_B2 * B1_Bthird_r2_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + + computation flip_B1_Blocal_r2_r_update("flip_B1_Blocal_r2_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Blocal_r2_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_B1_r2.get_real()); + computation flip_B1_Blocal_r2_i_update("flip_B1_Blocal_r2_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Blocal_r2_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_B1_r2.get_imag()); + computation flip_B1_Bfirst_r2_r_update("flip_B1_Bfirst_r2_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Bfirst_r2_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_first_B1_r2.get_real()); + computation flip_B1_Bfirst_r2_i_update("flip_B1_Bfirst_r2_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Bfirst_r2_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_first_B1_r2.get_imag()); + computation flip_B1_Bsecond_r2_r_update("flip_B1_Bsecond_r2_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Bsecond_r2_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_second_B1_r2.get_real()); + computation flip_B1_Bsecond_r2_i_update("flip_B1_Bsecond_r2_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Bsecond_r2_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_second_B1_r2.get_imag()); + computation flip_B1_Bthird_r2_r_update("flip_B1_Bthird_r2_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Bthird_r2_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_third_B1_r2.get_real()); + computation flip_B1_Bthird_r2_i_update("flip_B1_Bthird_r2_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B1_Bthird_r2_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_third_B1_r2.get_imag()); //Computing B2_Blocal_r1, B2_Bsecond_r1, B2_Bfirst_r1 - computation B2_Blocal_r1_r_init("B2_Blocal_r1_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B2_Blocal_r1_i_init("B2_Blocal_r1_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B2_Bfirst_r1_r_init("B2_Bfirst_r1_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B2_Bfirst_r1_i_init("B2_Bfirst_r1_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B2_Bsecond_r1_r_init("B2_Bsecond_r1_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B2_Bsecond_r1_i_init("B2_Bsecond_r1_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B2_Bthird_r1_r_init("B2_Bthird_r1_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B2_Bthird_r1_i_init("B2_Bthird_r1_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B2_Blocal_r1_r_init("B2_Blocal_r1_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B2_Blocal_r1_i_init("B2_Blocal_r1_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B2_Bfirst_r1_r_init("B2_Bfirst_r1_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B2_Bfirst_r1_i_init("B2_Bfirst_r1_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B2_Bsecond_r1_r_init("B2_Bsecond_r1_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B2_Bsecond_r1_i_init("B2_Bsecond_r1_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B2_Bthird_r1_r_init("B2_Bthird_r1_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B2_Bthird_r1_i_init("B2_Bthird_r1_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); complex_computation B2_Blocal_r1_init(&B2_Blocal_r1_r_init, &B2_Blocal_r1_i_init); complex_computation B2_Bfirst_r1_init(&B2_Bfirst_r1_r_init, &B2_Bfirst_r1_i_init); complex_computation B2_Bsecond_r1_init(&B2_Bsecond_r1_r_init, &B2_Bsecond_r1_i_init); complex_computation B2_Bthird_r1_init(&B2_Bthird_r1_r_init, &B2_Bthird_r1_i_init); - computation flip_B2_Blocal_r1_r_init("flip_B2_Blocal_r1_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B2_Blocal_r1_i_init("flip_B2_Blocal_r1_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B2_Bfirst_r1_r_init("flip_B2_Bfirst_r1_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B2_Bfirst_r1_i_init("flip_B2_Bfirst_r1_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B2_Bsecond_r1_r_init("flip_B2_Bsecond_r1_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B2_Bsecond_r1_i_init("flip_B2_Bsecond_r1_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B2_Bthird_r1_r_init("flip_B2_Bthird_r1_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B2_Bthird_r1_i_init("flip_B2_Bthird_r1_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B2_Blocal_r1_r_init("flip_B2_Blocal_r1_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B2_Blocal_r1_i_init("flip_B2_Blocal_r1_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B2_Bfirst_r1_r_init("flip_B2_Bfirst_r1_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B2_Bfirst_r1_i_init("flip_B2_Bfirst_r1_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B2_Bsecond_r1_r_init("flip_B2_Bsecond_r1_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B2_Bsecond_r1_i_init("flip_B2_Bsecond_r1_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B2_Bthird_r1_r_init("flip_B2_Bthird_r1_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B2_Bthird_r1_i_init("flip_B2_Bthird_r1_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); complex_computation flip_B2_Blocal_r1_init(&flip_B2_Blocal_r1_r_init, &flip_B2_Blocal_r1_i_init); complex_computation flip_B2_Bfirst_r1_init(&flip_B2_Bfirst_r1_r_init, &flip_B2_Bfirst_r1_i_init); complex_computation flip_B2_Bsecond_r1_init(&flip_B2_Bsecond_r1_r_init, &flip_B2_Bsecond_r1_i_init); complex_computation flip_B2_Bthird_r1_init(&flip_B2_Bthird_r1_r_init, &flip_B2_Bthird_r1_i_init); - complex_expr B2_r1_prop_0 = B1_prop(t, iCprime, iSprime, src_color_weights(0, wnumBlock, 0), src_spin_weights(0, wnumBlock, 0), x2, y); - complex_expr B2_r1_prop_2 = B1_prop(t, kCprime, kSprime, src_color_weights(0, wnumBlock, 2), src_spin_weights(0, wnumBlock, 2), x2, y); - complex_expr B2_r1_prop_1 = B1_prop(t, jCprime, jSprime, src_color_weights(0, wnumBlock, 1), src_spin_weights(0, wnumBlock, 1), x2, y); - complex_expr first_B2_r1_prop_0 = B1_prop(t, iCprime, iSprime, src_color_weights(0, wnumBlock, 0), src_spin_weights(0, wnumBlock, 0), x_out*sites_per_rank+x_in, y); - complex_expr second_B2_r1_prop_1 = B1_prop(t, jCprime, jSprime, src_color_weights(0, wnumBlock, 1), src_spin_weights(0, wnumBlock, 1), x_out*sites_per_rank+x_in, y); - complex_expr third_B2_r1_prop_2 = B1_prop(t, kCprime, kSprime, src_color_weights(0, wnumBlock, 2), src_spin_weights(0, wnumBlock, 2), x_out*sites_per_rank+x_in, y); - - complex_expr B2_r1_diquark = ( B2_r1_prop_0 * B2_r1_prop_2 ) * src_weights(0, wnumBlock); - complex_expr first_B2_r1_diquark = ( first_B2_r1_prop_0 * B2_r1_prop_2 ) * src_weights(0, wnumBlock); - complex_expr third_B2_r1_diquark = ( B2_r1_prop_0 * third_B2_r1_prop_2 ) * src_weights(0, wnumBlock); - - computation B2_Blocal_r1_r_props_init("B2_Blocal_r1_r_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B2_Blocal_r1_i_props_init("B2_Blocal_r1_i_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B2_Bfirst_r1_r_props_init("B2_Bfirst_r1_r_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B2_Bfirst_r1_i_props_init("B2_Bfirst_r1_i_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B2_Bsecond_r1_r_props_init("B2_Bsecond_r1_r_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B2_Bsecond_r1_i_props_init("B2_Bsecond_r1_i_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B2_Bthird_r1_r_props_init("B2_Bthird_r1_r_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B2_Bthird_r1_i_props_init("B2_Bthird_r1_i_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - - computation B2_Blocal_r1_r_diquark("B2_Blocal_r1_r_diquark", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, B2_r1_diquark.get_real()); - computation B2_Blocal_r1_i_diquark("B2_Blocal_r1_i_diquark", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, B2_r1_diquark.get_imag()); - computation B2_Bfirst_r1_r_diquark("B2_Bfirst_r1_r_diquark", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, first_B2_r1_diquark.get_real()); - computation B2_Bfirst_r1_i_diquark("B2_Bfirst_r1_i_diquark", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, first_B2_r1_diquark.get_imag()); - computation B2_Bthird_r1_r_diquark("B2_Bthird_r1_r_diquark", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, third_B2_r1_diquark.get_real()); - computation B2_Bthird_r1_i_diquark("B2_Bthird_r1_i_diquark", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, third_B2_r1_diquark.get_imag()); + complex_expr B2_r1_prop_0 = B1_prop(t, iCprime, iSprime, src_color_weights(1, 0, msc1, wnumBlock, 0), src_spin_weights(1, 0, msc1, wnumBlock, 0), x2, y); + complex_expr B2_r1_prop_2 = B1_prop(t, kCprime, kSprime, src_color_weights(1, 0, msc1, wnumBlock, 2), src_spin_weights(1, 0, msc1, wnumBlock, 2), x2, y); + complex_expr B2_r1_prop_1 = B1_prop(t, jCprime, jSprime, src_color_weights(1, 0, msc1, wnumBlock, 1), src_spin_weights(1, 0, msc1, wnumBlock, 1), x2, y); + complex_expr first_B2_r1_prop_0 = B1_prop(t, iCprime, iSprime, src_color_weights(1, 0, msc1, wnumBlock, 0), src_spin_weights(1, 0, msc1, wnumBlock, 0), x_out*sites_per_rank+x_in, y); + complex_expr second_B2_r1_prop_1 = B1_prop(t, jCprime, jSprime, src_color_weights(1, 0, msc1, wnumBlock, 1), src_spin_weights(1, 0, msc1, wnumBlock, 1), x_out*sites_per_rank+x_in, y); + complex_expr third_B2_r1_prop_2 = B1_prop(t, kCprime, kSprime, src_color_weights(1, 0, msc1, wnumBlock, 2), src_spin_weights(1, 0, msc1, wnumBlock, 2), x_out*sites_per_rank+x_in, y); + + complex_expr B2_r1_diquark = ( B2_r1_prop_0 * B2_r1_prop_2 ) * src_weights(1, 0, msc1, wnumBlock); + complex_expr first_B2_r1_diquark = ( first_B2_r1_prop_0 * B2_r1_prop_2 ) * src_weights(1, 0, msc1, wnumBlock); + complex_expr third_B2_r1_diquark = ( B2_r1_prop_0 * third_B2_r1_prop_2 ) * src_weights(1, 0, msc1, wnumBlock); + + computation B2_Blocal_r1_r_props_init("B2_Blocal_r1_r_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B2_Blocal_r1_i_props_init("B2_Blocal_r1_i_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B2_Bfirst_r1_r_props_init("B2_Bfirst_r1_r_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B2_Bfirst_r1_i_props_init("B2_Bfirst_r1_i_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B2_Bsecond_r1_r_props_init("B2_Bsecond_r1_r_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B2_Bsecond_r1_i_props_init("B2_Bsecond_r1_i_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B2_Bthird_r1_r_props_init("B2_Bthird_r1_r_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B2_Bthird_r1_i_props_init("B2_Bthird_r1_i_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + + computation B2_Blocal_r1_r_diquark("B2_Blocal_r1_r_diquark", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, B2_r1_diquark.get_real()); + computation B2_Blocal_r1_i_diquark("B2_Blocal_r1_i_diquark", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, B2_r1_diquark.get_imag()); + computation B2_Bfirst_r1_r_diquark("B2_Bfirst_r1_r_diquark", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, first_B2_r1_diquark.get_real()); + computation B2_Bfirst_r1_i_diquark("B2_Bfirst_r1_i_diquark", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, first_B2_r1_diquark.get_imag()); + computation B2_Bthird_r1_r_diquark("B2_Bthird_r1_r_diquark", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, third_B2_r1_diquark.get_real()); + computation B2_Bthird_r1_i_diquark("B2_Bthird_r1_i_diquark", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, third_B2_r1_diquark.get_imag()); complex_computation B2_Blocal_r1_diquark(&B2_Blocal_r1_r_diquark, &B2_Blocal_r1_i_diquark); complex_computation B2_Bfirst_r1_diquark(&B2_Bfirst_r1_r_diquark, &B2_Bfirst_r1_i_diquark); complex_computation B2_Bthird_r1_diquark(&B2_Bthird_r1_r_diquark, &B2_Bthird_r1_i_diquark); - complex_expr B2_r1_props = B2_r1_prop_1 * B2_Blocal_r1_diquark(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); - complex_expr first_B2_r1_props = B2_r1_prop_1 * B2_Bfirst_r1_diquark(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); - complex_expr second_B2_r1_props = second_B2_r1_prop_1 * B2_Blocal_r1_diquark(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); - complex_expr third_B2_r1_props = B2_r1_prop_1 * B2_Bthird_r1_diquark(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); + complex_expr B2_r1_props = B2_r1_prop_1 * B2_Blocal_r1_diquark(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); + complex_expr first_B2_r1_props = B2_r1_prop_1 * B2_Bfirst_r1_diquark(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); + complex_expr second_B2_r1_props = second_B2_r1_prop_1 * B2_Blocal_r1_diquark(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); + complex_expr third_B2_r1_props = B2_r1_prop_1 * B2_Bthird_r1_diquark(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); - computation B2_Blocal_r1_r_props("B2_Blocal_r1_r_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Blocal_r1_r_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + B2_r1_props.get_real()); - computation B2_Blocal_r1_i_props("B2_Blocal_r1_i_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Blocal_r1_i_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + B2_r1_props.get_imag()); - computation B2_Bfirst_r1_r_props("B2_Bfirst_r1_r_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Bfirst_r1_r_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + first_B2_r1_props.get_real()); - computation B2_Bfirst_r1_i_props("B2_Bfirst_r1_i_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Bfirst_r1_i_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + first_B2_r1_props.get_imag()); - computation B2_Bsecond_r1_r_props("B2_Bsecond_r1_r_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Bsecond_r1_r_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + second_B2_r1_props.get_real()); - computation B2_Bsecond_r1_i_props("B2_Bsecond_r1_i_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Bsecond_r1_i_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + second_B2_r1_props.get_imag()); - computation B2_Bthird_r1_r_props("B2_Bthird_r1_r_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Bthird_r1_r_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + third_B2_r1_props.get_real()); - computation B2_Bthird_r1_i_props("B2_Bthird_r1_i_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Bthird_r1_i_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + third_B2_r1_props.get_imag()); + computation B2_Blocal_r1_r_props("B2_Blocal_r1_r_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Blocal_r1_r_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + B2_r1_props.get_real()); + computation B2_Blocal_r1_i_props("B2_Blocal_r1_i_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Blocal_r1_i_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + B2_r1_props.get_imag()); + computation B2_Bfirst_r1_r_props("B2_Bfirst_r1_r_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Bfirst_r1_r_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + first_B2_r1_props.get_real()); + computation B2_Bfirst_r1_i_props("B2_Bfirst_r1_i_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Bfirst_r1_i_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + first_B2_r1_props.get_imag()); + computation B2_Bsecond_r1_r_props("B2_Bsecond_r1_r_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Bsecond_r1_r_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + second_B2_r1_props.get_real()); + computation B2_Bsecond_r1_i_props("B2_Bsecond_r1_i_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Bsecond_r1_i_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + second_B2_r1_props.get_imag()); + computation B2_Bthird_r1_r_props("B2_Bthird_r1_r_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Bthird_r1_r_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + third_B2_r1_props.get_real()); + computation B2_Bthird_r1_i_props("B2_Bthird_r1_i_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Bthird_r1_i_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + third_B2_r1_props.get_imag()); complex_computation B2_Blocal_r1_props(&B2_Blocal_r1_r_props, &B2_Blocal_r1_i_props); complex_computation B2_Bfirst_r1_props(&B2_Bfirst_r1_r_props, &B2_Bfirst_r1_i_props); complex_computation B2_Bsecond_r1_props(&B2_Bsecond_r1_r_props, &B2_Bsecond_r1_i_props); complex_computation B2_Bthird_r1_props(&B2_Bthird_r1_r_props, &B2_Bthird_r1_i_props); - complex_expr B2_r1 = src_psi_B2 * B2_Blocal_r1_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - complex_expr first_B2_r1 = src_psi_B2 * B2_Bfirst_r1_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - complex_expr second_B2_r1 = src_psi_B2 * B2_Bsecond_r1_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - complex_expr third_B2_r1 = src_psi_B2 * B2_Bthird_r1_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - - computation B2_Blocal_r1_r_update("B2_Blocal_r1_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Blocal_r1_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + B2_r1.get_real()); - computation B2_Blocal_r1_i_update("B2_Blocal_r1_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Blocal_r1_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + B2_r1.get_imag()); - computation B2_Bfirst_r1_r_update("B2_Bfirst_r1_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Bfirst_r1_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + first_B2_r1.get_real()); - computation B2_Bfirst_r1_i_update("B2_Bfirst_r1_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Bfirst_r1_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + first_B2_r1.get_imag()); - computation B2_Bsecond_r1_r_update("B2_Bsecond_r1_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Bsecond_r1_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + second_B2_r1.get_real()); - computation B2_Bsecond_r1_i_update("B2_Bsecond_r1_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Bsecond_r1_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + second_B2_r1.get_imag()); - computation B2_Bthird_r1_r_update("B2_Bthird_r1_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Bthird_r1_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + third_B2_r1.get_real()); - computation B2_Bthird_r1_i_update("B2_Bthird_r1_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Bthird_r1_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + third_B2_r1.get_imag()); - - complex_expr flip_B2_r1 = src_psi_B1 * B2_Blocal_r1_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - complex_expr flip_first_B2_r1 = src_psi_B1 * B2_Bfirst_r1_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - complex_expr flip_second_B2_r1 = src_psi_B1 * B2_Bsecond_r1_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - complex_expr flip_third_B2_r1 = src_psi_B1 * B2_Bthird_r1_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - - computation flip_B2_Blocal_r1_r_update("flip_B2_Blocal_r1_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Blocal_r1_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_B2_r1.get_real()); - computation flip_B2_Blocal_r1_i_update("flip_B2_Blocal_r1_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Blocal_r1_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_B2_r1.get_imag()); - computation flip_B2_Bfirst_r1_r_update("flip_B2_Bfirst_r1_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Bfirst_r1_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_first_B2_r1.get_real()); - computation flip_B2_Bfirst_r1_i_update("flip_B2_Bfirst_r1_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Bfirst_r1_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_first_B2_r1.get_imag()); - computation flip_B2_Bsecond_r1_r_update("flip_B2_Bsecond_r1_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Bsecond_r1_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_second_B2_r1.get_real()); - computation flip_B2_Bsecond_r1_i_update("flip_B2_Bsecond_r1_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Bsecond_r1_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_second_B2_r1.get_imag()); - computation flip_B2_Bthird_r1_r_update("flip_B2_Bthird_r1_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Bthird_r1_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_third_B2_r1.get_real()); - computation flip_B2_Bthird_r1_i_update("flip_B2_Bthird_r1_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Bthird_r1_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_third_B2_r1.get_imag()); + complex_expr B2_r1 = src_psi_B2 * B2_Blocal_r1_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr first_B2_r1 = src_psi_B2 * B2_Bfirst_r1_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr second_B2_r1 = src_psi_B2 * B2_Bsecond_r1_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr third_B2_r1 = src_psi_B2 * B2_Bthird_r1_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + + computation B2_Blocal_r1_r_update("B2_Blocal_r1_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Blocal_r1_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + B2_r1.get_real()); + computation B2_Blocal_r1_i_update("B2_Blocal_r1_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Blocal_r1_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + B2_r1.get_imag()); + computation B2_Bfirst_r1_r_update("B2_Bfirst_r1_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Bfirst_r1_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + first_B2_r1.get_real()); + computation B2_Bfirst_r1_i_update("B2_Bfirst_r1_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Bfirst_r1_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + first_B2_r1.get_imag()); + computation B2_Bsecond_r1_r_update("B2_Bsecond_r1_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Bsecond_r1_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + second_B2_r1.get_real()); + computation B2_Bsecond_r1_i_update("B2_Bsecond_r1_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Bsecond_r1_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + second_B2_r1.get_imag()); + computation B2_Bthird_r1_r_update("B2_Bthird_r1_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Bthird_r1_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + third_B2_r1.get_real()); + computation B2_Bthird_r1_i_update("B2_Bthird_r1_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Bthird_r1_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + third_B2_r1.get_imag()); + + complex_expr flip_B2_r1 = src_psi_B1 * B2_Blocal_r1_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr flip_first_B2_r1 = src_psi_B1 * B2_Bfirst_r1_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr flip_second_B2_r1 = src_psi_B1 * B2_Bsecond_r1_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr flip_third_B2_r1 = src_psi_B1 * B2_Bthird_r1_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + + computation flip_B2_Blocal_r1_r_update("flip_B2_Blocal_r1_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Blocal_r1_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_B2_r1.get_real()); + computation flip_B2_Blocal_r1_i_update("flip_B2_Blocal_r1_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Blocal_r1_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_B2_r1.get_imag()); + computation flip_B2_Bfirst_r1_r_update("flip_B2_Bfirst_r1_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Bfirst_r1_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_first_B2_r1.get_real()); + computation flip_B2_Bfirst_r1_i_update("flip_B2_Bfirst_r1_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Bfirst_r1_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_first_B2_r1.get_imag()); + computation flip_B2_Bsecond_r1_r_update("flip_B2_Bsecond_r1_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Bsecond_r1_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_second_B2_r1.get_real()); + computation flip_B2_Bsecond_r1_i_update("flip_B2_Bsecond_r1_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Bsecond_r1_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_second_B2_r1.get_imag()); + computation flip_B2_Bthird_r1_r_update("flip_B2_Bthird_r1_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Bthird_r1_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_third_B2_r1.get_real()); + computation flip_B2_Bthird_r1_i_update("flip_B2_Bthird_r1_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Bthird_r1_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_third_B2_r1.get_imag()); // Computing B2_Blocal_r2, B2_Bsecond_r2, B2_Bfirst_r2 - computation B2_Blocal_r2_r_init("B2_Blocal_r2_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B2_Blocal_r2_i_init("B2_Blocal_r2_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B2_Bfirst_r2_r_init("B2_Bfirst_r2_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B2_Bfirst_r2_i_init("B2_Bfirst_r2_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B2_Bsecond_r2_r_init("B2_Bsecond_r2_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B2_Bsecond_r2_i_init("B2_Bsecond_r2_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B2_Bthird_r2_r_init("B2_Bthird_r2_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation B2_Bthird_r2_i_init("B2_Bthird_r2_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B2_Blocal_r2_r_init("B2_Blocal_r2_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B2_Blocal_r2_i_init("B2_Blocal_r2_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B2_Bfirst_r2_r_init("B2_Bfirst_r2_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B2_Bfirst_r2_i_init("B2_Bfirst_r2_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B2_Bsecond_r2_r_init("B2_Bsecond_r2_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B2_Bsecond_r2_i_init("B2_Bsecond_r2_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B2_Bthird_r2_r_init("B2_Bthird_r2_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation B2_Bthird_r2_i_init("B2_Bthird_r2_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); complex_computation B2_Blocal_r2_init(&B2_Blocal_r2_r_init, &B2_Blocal_r2_i_init); complex_computation B2_Bfirst_r2_init(&B2_Bfirst_r2_r_init, &B2_Bfirst_r2_i_init); complex_computation B2_Bsecond_r2_init(&B2_Bsecond_r2_r_init, &B2_Bsecond_r2_i_init); complex_computation B2_Bthird_r2_init(&B2_Bthird_r2_r_init, &B2_Bthird_r2_i_init); - computation flip_B2_Blocal_r2_r_init("flip_B2_Blocal_r2_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B2_Blocal_r2_i_init("flip_B2_Blocal_r2_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B2_Bfirst_r2_r_init("flip_B2_Bfirst_r2_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B2_Bfirst_r2_i_init("flip_B2_Bfirst_r2_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B2_Bsecond_r2_r_init("flip_B2_Bsecond_r2_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B2_Bsecond_r2_i_init("flip_B2_Bsecond_r2_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B2_Bthird_r2_r_init("flip_B2_Bthird_r2_r_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_B2_Bthird_r2_i_init("flip_B2_Bthird_r2_i_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B2_Blocal_r2_r_init("flip_B2_Blocal_r2_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B2_Blocal_r2_i_init("flip_B2_Blocal_r2_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B2_Bfirst_r2_r_init("flip_B2_Bfirst_r2_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B2_Bfirst_r2_i_init("flip_B2_Bfirst_r2_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B2_Bsecond_r2_r_init("flip_B2_Bsecond_r2_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B2_Bsecond_r2_i_init("flip_B2_Bsecond_r2_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B2_Bthird_r2_r_init("flip_B2_Bthird_r2_r_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_B2_Bthird_r2_i_init("flip_B2_Bthird_r2_i_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); complex_computation flip_B2_Blocal_r2_init(&flip_B2_Blocal_r2_r_init, &flip_B2_Blocal_r2_i_init); complex_computation flip_B2_Bfirst_r2_init(&flip_B2_Bfirst_r2_r_init, &flip_B2_Bfirst_r2_i_init); complex_computation flip_B2_Bsecond_r2_init(&flip_B2_Bsecond_r2_r_init, &flip_B2_Bsecond_r2_i_init); complex_computation flip_B2_Bthird_r2_init(&flip_B2_Bthird_r2_r_init, &flip_B2_Bthird_r2_i_init); - complex_expr B2_r2_prop_0 = B1_prop(t, iCprime, iSprime, src_color_weights(1, wnumBlock, 0), src_spin_weights(1, wnumBlock, 0), x2, y); - complex_expr B2_r2_prop_2 = B1_prop(t, kCprime, kSprime, src_color_weights(1, wnumBlock, 2), src_spin_weights(1, wnumBlock, 2), x2, y); - complex_expr B2_r2_prop_1 = B1_prop(t, jCprime, jSprime, src_color_weights(1, wnumBlock, 1), src_spin_weights(1, wnumBlock, 1), x2, y); - complex_expr first_B2_r2_prop_0 = B1_prop(t, iCprime, iSprime, src_color_weights(1, wnumBlock, 0), src_spin_weights(1, wnumBlock, 0), x_out*sites_per_rank+x_in, y); - complex_expr second_B2_r2_prop_1 = B1_prop(t, jCprime, jSprime, src_color_weights(1, wnumBlock, 1), src_spin_weights(1, wnumBlock, 1), x_out*sites_per_rank+x_in, y); - complex_expr third_B2_r2_prop_2 = B1_prop(t, kCprime, kSprime, src_color_weights(1, wnumBlock, 2), src_spin_weights(1, wnumBlock, 2), x_out*sites_per_rank+x_in, y); - - complex_expr B2_r2_diquark = ( B2_r2_prop_0 * B2_r2_prop_2 ) * src_weights(1, wnumBlock); - complex_expr first_B2_r2_diquark = ( first_B2_r2_prop_0 * B2_r2_prop_2 ) * src_weights(1, wnumBlock); - complex_expr third_B2_r2_diquark = ( B2_r2_prop_0 * third_B2_r2_prop_2 ) * src_weights(1, wnumBlock); - - computation B2_Blocal_r2_r_props_init("B2_Blocal_r2_r_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B2_Blocal_r2_i_props_init("B2_Blocal_r2_i_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B2_Bfirst_r2_r_props_init("B2_Bfirst_r2_r_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B2_Bfirst_r2_i_props_init("B2_Bfirst_r2_i_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B2_Bsecond_r2_r_props_init("B2_Bsecond_r2_r_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B2_Bsecond_r2_i_props_init("B2_Bsecond_r2_i_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B2_Bthird_r2_r_props_init("B2_Bthird_r2_r_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation B2_Bthird_r2_i_props_init("B2_Bthird_r2_i_props_init", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - - computation B2_Blocal_r2_r_diquark("B2_Blocal_r2_r_diquark", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, B2_r2_diquark.get_real()); - computation B2_Blocal_r2_i_diquark("B2_Blocal_r2_i_diquark", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, B2_r2_diquark.get_imag()); - computation B2_Bfirst_r2_r_diquark("B2_Bfirst_r2_r_diquark", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, first_B2_r2_diquark.get_real()); - computation B2_Bfirst_r2_i_diquark("B2_Bfirst_r2_i_diquark", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, first_B2_r2_diquark.get_imag()); - computation B2_Bthird_r2_r_diquark("B2_Bthird_r2_r_diquark", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, third_B2_r2_diquark.get_real()); - computation B2_Bthird_r2_i_diquark("B2_Bthird_r2_i_diquark", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, third_B2_r2_diquark.get_imag()); + complex_expr B2_r2_prop_0 = B1_prop(t, iCprime, iSprime, src_color_weights(1, 1, msc1, wnumBlock, 0), src_spin_weights(1, 1, msc1, wnumBlock, 0), x2, y); + complex_expr B2_r2_prop_2 = B1_prop(t, kCprime, kSprime, src_color_weights(1, 1, msc1, wnumBlock, 2), src_spin_weights(1, 1, msc1, wnumBlock, 2), x2, y); + complex_expr B2_r2_prop_1 = B1_prop(t, jCprime, jSprime, src_color_weights(1, 1, msc1, wnumBlock, 1), src_spin_weights(1, 1, msc1, wnumBlock, 1), x2, y); + complex_expr first_B2_r2_prop_0 = B1_prop(t, iCprime, iSprime, src_color_weights(1, 1, msc1, wnumBlock, 0), src_spin_weights(1, 1, msc1, wnumBlock, 0), x_out*sites_per_rank+x_in, y); + complex_expr second_B2_r2_prop_1 = B1_prop(t, jCprime, jSprime, src_color_weights(1, 1, msc1, wnumBlock, 1), src_spin_weights(1, 1, msc1, wnumBlock, 1), x_out*sites_per_rank+x_in, y); + complex_expr third_B2_r2_prop_2 = B1_prop(t, kCprime, kSprime, src_color_weights(1, 1, msc1, wnumBlock, 2), src_spin_weights(1, 1, msc1, wnumBlock, 2), x_out*sites_per_rank+x_in, y); + + complex_expr B2_r2_diquark = ( B2_r2_prop_0 * B2_r2_prop_2 ) * src_weights(1, 1, msc1, wnumBlock); + complex_expr first_B2_r2_diquark = ( first_B2_r2_prop_0 * B2_r2_prop_2 ) * src_weights(1, 1, msc1, wnumBlock); + complex_expr third_B2_r2_diquark = ( B2_r2_prop_0 * third_B2_r2_prop_2 ) * src_weights(1, 1, msc1, wnumBlock); + + computation B2_Blocal_r2_r_props_init("B2_Blocal_r2_r_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B2_Blocal_r2_i_props_init("B2_Blocal_r2_i_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B2_Bfirst_r2_r_props_init("B2_Bfirst_r2_r_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B2_Bfirst_r2_i_props_init("B2_Bfirst_r2_i_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B2_Bsecond_r2_r_props_init("B2_Bsecond_r2_r_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B2_Bsecond_r2_i_props_init("B2_Bsecond_r2_i_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B2_Bthird_r2_r_props_init("B2_Bthird_r2_r_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation B2_Bthird_r2_i_props_init("B2_Bthird_r2_i_props_init", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + + computation B2_Blocal_r2_r_diquark("B2_Blocal_r2_r_diquark", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, B2_r2_diquark.get_real()); + computation B2_Blocal_r2_i_diquark("B2_Blocal_r2_i_diquark", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, B2_r2_diquark.get_imag()); + computation B2_Bfirst_r2_r_diquark("B2_Bfirst_r2_r_diquark", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, first_B2_r2_diquark.get_real()); + computation B2_Bfirst_r2_i_diquark("B2_Bfirst_r2_i_diquark", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, first_B2_r2_diquark.get_imag()); + computation B2_Bthird_r2_r_diquark("B2_Bthird_r2_r_diquark", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, third_B2_r2_diquark.get_real()); + computation B2_Bthird_r2_i_diquark("B2_Bthird_r2_i_diquark", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, third_B2_r2_diquark.get_imag()); complex_computation B2_Blocal_r2_diquark(&B2_Blocal_r2_r_diquark, &B2_Blocal_r2_i_diquark); complex_computation B2_Bfirst_r2_diquark(&B2_Bfirst_r2_r_diquark, &B2_Bfirst_r2_i_diquark); complex_computation B2_Bthird_r2_diquark(&B2_Bthird_r2_r_diquark, &B2_Bthird_r2_i_diquark); - complex_expr B2_r2_props = B2_r2_prop_1 * B2_Blocal_r2_diquark(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); - complex_expr first_B2_r2_props = B2_r2_prop_1 * B2_Bfirst_r2_diquark(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); - complex_expr second_B2_r2_props = second_B2_r2_prop_1 * B2_Blocal_r2_diquark(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); - complex_expr third_B2_r2_props = B2_r2_prop_1 * B2_Bthird_r2_diquark(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); + complex_expr B2_r2_props = B2_r2_prop_1 * B2_Blocal_r2_diquark(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); + complex_expr first_B2_r2_props = B2_r2_prop_1 * B2_Bfirst_r2_diquark(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); + complex_expr second_B2_r2_props = second_B2_r2_prop_1 * B2_Blocal_r2_diquark(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); + complex_expr third_B2_r2_props = B2_r2_prop_1 * B2_Bthird_r2_diquark(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); - computation B2_Blocal_r2_r_props("B2_Blocal_r2_r_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Blocal_r2_r_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + B2_r2_props.get_real()); - computation B2_Blocal_r2_i_props("B2_Blocal_r2_i_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Blocal_r2_i_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + B2_r2_props.get_imag()); - computation B2_Bfirst_r2_r_props("B2_Bfirst_r2_r_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Bfirst_r2_r_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + first_B2_r2_props.get_real()); - computation B2_Bfirst_r2_i_props("B2_Bfirst_r2_i_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Bfirst_r2_i_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + first_B2_r2_props.get_imag()); - computation B2_Bsecond_r2_r_props("B2_Bsecond_r2_r_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Bsecond_r2_r_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + second_B2_r2_props.get_real()); - computation B2_Bsecond_r2_i_props("B2_Bsecond_r2_i_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Bsecond_r2_i_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + second_B2_r2_props.get_imag()); - computation B2_Bthird_r2_r_props("B2_Bthird_r2_r_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Bthird_r2_r_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + third_B2_r2_props.get_real()); - computation B2_Bthird_r2_i_props("B2_Bthird_r2_i_props", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Bthird_r2_i_props_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + third_B2_r2_props.get_imag()); + computation B2_Blocal_r2_r_props("B2_Blocal_r2_r_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Blocal_r2_r_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + B2_r2_props.get_real()); + computation B2_Blocal_r2_i_props("B2_Blocal_r2_i_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Blocal_r2_i_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + B2_r2_props.get_imag()); + computation B2_Bfirst_r2_r_props("B2_Bfirst_r2_r_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Bfirst_r2_r_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + first_B2_r2_props.get_real()); + computation B2_Bfirst_r2_i_props("B2_Bfirst_r2_i_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Bfirst_r2_i_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + first_B2_r2_props.get_imag()); + computation B2_Bsecond_r2_r_props("B2_Bsecond_r2_r_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Bsecond_r2_r_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + second_B2_r2_props.get_real()); + computation B2_Bsecond_r2_i_props("B2_Bsecond_r2_i_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Bsecond_r2_i_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + second_B2_r2_props.get_imag()); + computation B2_Bthird_r2_r_props("B2_Bthird_r2_r_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Bthird_r2_r_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + third_B2_r2_props.get_real()); + computation B2_Bthird_r2_i_props("B2_Bthird_r2_i_props", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, B2_Bthird_r2_i_props_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + third_B2_r2_props.get_imag()); complex_computation B2_Blocal_r2_props(&B2_Blocal_r2_r_props, &B2_Blocal_r2_i_props); complex_computation B2_Bfirst_r2_props(&B2_Bfirst_r2_r_props, &B2_Bfirst_r2_i_props); complex_computation B2_Bsecond_r2_props(&B2_Bsecond_r2_r_props, &B2_Bsecond_r2_i_props); complex_computation B2_Bthird_r2_props(&B2_Bthird_r2_r_props, &B2_Bthird_r2_i_props); - complex_expr B2_r2 = src_psi_B2 * B2_Blocal_r2_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - complex_expr first_B2_r2 = src_psi_B2 * B2_Bfirst_r2_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - complex_expr second_B2_r2 = src_psi_B2 * B2_Bsecond_r2_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - complex_expr third_B2_r2 = src_psi_B2 * B2_Bthird_r2_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - - computation B2_Blocal_r2_r_update("B2_Blocal_r2_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Blocal_r2_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + B2_r2.get_real()); - computation B2_Blocal_r2_i_update("B2_Blocal_r2_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Blocal_r2_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + B2_r2.get_imag()); - computation B2_Bfirst_r2_r_update("B2_Bfirst_r2_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Bfirst_r2_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + first_B2_r2.get_real()); - computation B2_Bfirst_r2_i_update("B2_Bfirst_r2_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Bfirst_r2_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + first_B2_r2.get_imag()); - computation B2_Bsecond_r2_r_update("B2_Bsecond_r2_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Bsecond_r2_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + second_B2_r2.get_real()); - computation B2_Bsecond_r2_i_update("B2_Bsecond_r2_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Bsecond_r2_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + second_B2_r2.get_imag()); - computation B2_Bthird_r2_r_update("B2_Bthird_r2_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Bthird_r2_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + third_B2_r2.get_real()); - computation B2_Bthird_r2_i_update("B2_Bthird_r2_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Bthird_r2_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + third_B2_r2.get_imag()); - - complex_expr flip_B2_r2 = src_psi_B1 * B2_Blocal_r2_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - complex_expr flip_first_B2_r2 = src_psi_B1 * B2_Bfirst_r2_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - complex_expr flip_second_B2_r2 = src_psi_B1 * B2_Bsecond_r2_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - complex_expr flip_third_B2_r2 = src_psi_B1 * B2_Bthird_r2_props(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - - computation flip_B2_Blocal_r2_r_update("flip_B2_Blocal_r2_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Blocal_r2_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_B2_r2.get_real()); - computation flip_B2_Blocal_r2_i_update("flip_B2_Blocal_r2_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Blocal_r2_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_B2_r2.get_imag()); - computation flip_B2_Bfirst_r2_r_update("flip_B2_Bfirst_r2_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Bfirst_r2_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_first_B2_r2.get_real()); - computation flip_B2_Bfirst_r2_i_update("flip_B2_Bfirst_r2_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Bfirst_r2_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_first_B2_r2.get_imag()); - computation flip_B2_Bsecond_r2_r_update("flip_B2_Bsecond_r2_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Bsecond_r2_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_second_B2_r2.get_real()); - computation flip_B2_Bsecond_r2_i_update("flip_B2_Bsecond_r2_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Bsecond_r2_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_second_B2_r2.get_imag()); - computation flip_B2_Bthird_r2_r_update("flip_B2_Bthird_r2_r_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Bthird_r2_r_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_third_B2_r2.get_real()); - computation flip_B2_Bthird_r2_i_update("flip_B2_Bthird_r2_i_update", {t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Bthird_r2_i_init(t, x_out, x_in, x2, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_third_B2_r2.get_imag()); + complex_expr B2_r2 = src_psi_B2 * B2_Blocal_r2_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr first_B2_r2 = src_psi_B2 * B2_Bfirst_r2_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr second_B2_r2 = src_psi_B2 * B2_Bsecond_r2_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr third_B2_r2 = src_psi_B2 * B2_Bthird_r2_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + + computation B2_Blocal_r2_r_update("B2_Blocal_r2_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Blocal_r2_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + B2_r2.get_real()); + computation B2_Blocal_r2_i_update("B2_Blocal_r2_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Blocal_r2_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + B2_r2.get_imag()); + computation B2_Bfirst_r2_r_update("B2_Bfirst_r2_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Bfirst_r2_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + first_B2_r2.get_real()); + computation B2_Bfirst_r2_i_update("B2_Bfirst_r2_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Bfirst_r2_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + first_B2_r2.get_imag()); + computation B2_Bsecond_r2_r_update("B2_Bsecond_r2_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Bsecond_r2_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + second_B2_r2.get_real()); + computation B2_Bsecond_r2_i_update("B2_Bsecond_r2_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Bsecond_r2_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + second_B2_r2.get_imag()); + computation B2_Bthird_r2_r_update("B2_Bthird_r2_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Bthird_r2_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + third_B2_r2.get_real()); + computation B2_Bthird_r2_i_update("B2_Bthird_r2_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, B2_Bthird_r2_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + third_B2_r2.get_imag()); + + complex_expr flip_B2_r2 = src_psi_B1 * B2_Blocal_r2_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr flip_first_B2_r2 = src_psi_B1 * B2_Bfirst_r2_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr flip_second_B2_r2 = src_psi_B1 * B2_Bsecond_r2_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr flip_third_B2_r2 = src_psi_B1 * B2_Bthird_r2_props(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + + computation flip_B2_Blocal_r2_r_update("flip_B2_Blocal_r2_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Blocal_r2_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_B2_r2.get_real()); + computation flip_B2_Blocal_r2_i_update("flip_B2_Blocal_r2_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Blocal_r2_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_B2_r2.get_imag()); + computation flip_B2_Bfirst_r2_r_update("flip_B2_Bfirst_r2_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Bfirst_r2_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_first_B2_r2.get_real()); + computation flip_B2_Bfirst_r2_i_update("flip_B2_Bfirst_r2_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Bfirst_r2_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_first_B2_r2.get_imag()); + computation flip_B2_Bsecond_r2_r_update("flip_B2_Bsecond_r2_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Bsecond_r2_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_second_B2_r2.get_real()); + computation flip_B2_Bsecond_r2_i_update("flip_B2_Bsecond_r2_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Bsecond_r2_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_second_B2_r2.get_imag()); + computation flip_B2_Bthird_r2_r_update("flip_B2_Bthird_r2_r_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Bthird_r2_r_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_third_B2_r2.get_real()); + computation flip_B2_Bthird_r2_i_update("flip_B2_Bthird_r2_i_update", {t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_B2_Bthird_r2_i_init(t, x_out, x_in, x2, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_third_B2_r2.get_imag()); // Computing src_B1_Blocal_r1 - computation src_B1_Blocal_r1_r_init("src_B1_Blocal_r1_r_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation src_B1_Blocal_r1_i_init("src_B1_Blocal_r1_i_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation src_B1_Blocal_r1_r_init("src_B1_Blocal_r1_r_init", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation src_B1_Blocal_r1_i_init("src_B1_Blocal_r1_i_init", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); complex_computation src_B1_Blocal_r1_init(&src_B1_Blocal_r1_r_init, &src_B1_Blocal_r1_i_init); - computation flip_src_B1_Blocal_r1_r_init("flip_src_B1_Blocal_r1_r_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_src_B1_Blocal_r1_i_init("flip_src_B1_Blocal_r1_i_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_src_B1_Blocal_r1_r_init("flip_src_B1_Blocal_r1_r_init", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_src_B1_Blocal_r1_i_init("flip_src_B1_Blocal_r1_i_init", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); complex_computation flip_src_B1_Blocal_r1_init(&flip_src_B1_Blocal_r1_r_init, &flip_src_B1_Blocal_r1_i_init); - complex_expr src_B1_r1_prop_0 = B1_prop(t, iCprime, iSprime, src_color_weights(0, wnumBlock, 0), src_spin_weights(0, wnumBlock, 0), x_out*sites_per_rank+x_in, y); - complex_expr src_B1_r1_prop_2 = B1_prop(t, kCprime, kSprime, src_color_weights(0, wnumBlock, 2), src_spin_weights(0, wnumBlock, 2), x_out*sites_per_rank+x_in, y); - complex_expr src_B1_r1_prop_1 = B1_prop(t, jCprime, jSprime, src_color_weights(0, wnumBlock, 1), src_spin_weights(0, wnumBlock, 1), x_out*sites_per_rank+x_in, y); + complex_expr src_B1_r1_prop_0 = B1_prop(t, iCprime, iSprime, src_color_weights(0, 0, msc1, wnumBlock, 0), src_spin_weights(0, 0, msc1, wnumBlock, 0), x_out*sites_per_rank+x_in, y); + complex_expr src_B1_r1_prop_2 = B1_prop(t, kCprime, kSprime, src_color_weights(0, 0, msc1, wnumBlock, 2), src_spin_weights(0, 0, msc1, wnumBlock, 2), x_out*sites_per_rank+x_in, y); + complex_expr src_B1_r1_prop_1 = B1_prop(t, jCprime, jSprime, src_color_weights(0, 0, msc1, wnumBlock, 1), src_spin_weights(0, 0, msc1, wnumBlock, 1), x_out*sites_per_rank+x_in, y); - complex_expr src_B1_r1_diquark = ( src_B1_r1_prop_0 * src_B1_r1_prop_2 ) * src_weights(0, wnumBlock); + complex_expr src_B1_r1_diquark = ( src_B1_r1_prop_0 * src_B1_r1_prop_2 ) * src_weights(0, 0, msc1, wnumBlock); - computation src_B1_Blocal_r1_r_props_init("src_B1_Blocal_r1_r_props_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation src_B1_Blocal_r1_i_props_init("src_B1_Blocal_r1_i_props_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation src_B1_Blocal_r1_r_props_init("src_B1_Blocal_r1_r_props_init", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation src_B1_Blocal_r1_i_props_init("src_B1_Blocal_r1_i_props_init", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation src_B1_Blocal_r1_r_diquark("src_B1_Blocal_r1_r_diquark", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, src_B1_r1_diquark.get_real()); - computation src_B1_Blocal_r1_i_diquark("src_B1_Blocal_r1_i_diquark", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, src_B1_r1_diquark.get_imag()); + computation src_B1_Blocal_r1_r_diquark("src_B1_Blocal_r1_r_diquark", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, src_B1_r1_diquark.get_real()); + computation src_B1_Blocal_r1_i_diquark("src_B1_Blocal_r1_i_diquark", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, src_B1_r1_diquark.get_imag()); complex_computation src_B1_Blocal_r1_diquark(&src_B1_Blocal_r1_r_diquark, &src_B1_Blocal_r1_i_diquark); - complex_expr src_B1_r1_props = src_B1_r1_prop_1 * src_B1_Blocal_r1_diquark(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); + complex_expr src_B1_r1_props = src_B1_r1_prop_1 * src_B1_Blocal_r1_diquark(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); - computation src_B1_Blocal_r1_r_props("src_B1_Blocal_r1_r_props", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, src_B1_Blocal_r1_r_props_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + src_B1_r1_props.get_real()); - computation src_B1_Blocal_r1_i_props("src_B1_Blocal_r1_i_props", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, src_B1_Blocal_r1_i_props_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + src_B1_r1_props.get_imag()); + computation src_B1_Blocal_r1_r_props("src_B1_Blocal_r1_r_props", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, src_B1_Blocal_r1_r_props_init(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + src_B1_r1_props.get_real()); + computation src_B1_Blocal_r1_i_props("src_B1_Blocal_r1_i_props", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, src_B1_Blocal_r1_i_props_init(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + src_B1_r1_props.get_imag()); complex_computation src_B1_Blocal_r1_props(&src_B1_Blocal_r1_r_props, &src_B1_Blocal_r1_i_props); - complex_expr src_B1_r1 = src_psi_B1 * src_B1_Blocal_r1_props(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr src_B1_r1 = src_psi_B1 * src_B1_Blocal_r1_props(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - computation src_B1_Blocal_r1_r_update("src_B1_Blocal_r1_r_update", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, src_B1_Blocal_r1_r_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + src_B1_r1.get_real()); - computation src_B1_Blocal_r1_i_update("src_B1_Blocal_r1_i_update", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, src_B1_Blocal_r1_i_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + src_B1_r1.get_imag()); + computation src_B1_Blocal_r1_r_update("src_B1_Blocal_r1_r_update", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, src_B1_Blocal_r1_r_init(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + src_B1_r1.get_real()); + computation src_B1_Blocal_r1_i_update("src_B1_Blocal_r1_i_update", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, src_B1_Blocal_r1_i_init(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + src_B1_r1.get_imag()); - complex_expr flip_src_B1_r1 = src_psi_B2 * src_B1_Blocal_r1_props(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr flip_src_B1_r1 = src_psi_B2 * src_B1_Blocal_r1_props(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - computation flip_src_B1_Blocal_r1_r_update("flip_src_B1_Blocal_r1_r_update", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_src_B1_Blocal_r1_r_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_src_B1_r1.get_real()); - computation flip_src_B1_Blocal_r1_i_update("flip_src_B1_Blocal_r1_i_update", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_src_B1_Blocal_r1_i_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_src_B1_r1.get_imag()); + computation flip_src_B1_Blocal_r1_r_update("flip_src_B1_Blocal_r1_r_update", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_src_B1_Blocal_r1_r_init(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_src_B1_r1.get_real()); + computation flip_src_B1_Blocal_r1_i_update("flip_src_B1_Blocal_r1_i_update", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_src_B1_Blocal_r1_i_init(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_src_B1_r1.get_imag()); // Computing src_B1_Blocal_r2 - computation src_B1_Blocal_r2_r_init("src_B1_Blocal_r2_r_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation src_B1_Blocal_r2_i_init("src_B1_Blocal_r2_i_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation src_B1_Blocal_r2_r_init("src_B1_Blocal_r2_r_init", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation src_B1_Blocal_r2_i_init("src_B1_Blocal_r2_i_init", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); complex_computation src_B1_Blocal_r2_init(&src_B1_Blocal_r2_r_init, &src_B1_Blocal_r2_i_init); - computation flip_src_B1_Blocal_r2_r_init("flip_src_B1_Blocal_r2_r_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_src_B1_Blocal_r2_i_init("flip_src_B1_Blocal_r2_i_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_src_B1_Blocal_r2_r_init("flip_src_B1_Blocal_r2_r_init", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_src_B1_Blocal_r2_i_init("flip_src_B1_Blocal_r2_i_init", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); complex_computation flip_src_B1_Blocal_r2_init(&flip_src_B1_Blocal_r2_r_init, &flip_src_B1_Blocal_r2_i_init); - complex_expr src_B1_r2_prop_0 = B1_prop(t, iCprime, iSprime, src_color_weights(1, wnumBlock, 0), src_spin_weights(1, wnumBlock, 0), x_out*sites_per_rank+x_in, y); - complex_expr src_B1_r2_prop_2 = B1_prop(t, kCprime, kSprime, src_color_weights(1, wnumBlock, 2), src_spin_weights(1, wnumBlock, 2), x_out*sites_per_rank+x_in, y); - complex_expr src_B1_r2_prop_1 = B1_prop(t, jCprime, jSprime, src_color_weights(1, wnumBlock, 1), src_spin_weights(1, wnumBlock, 1), x_out*sites_per_rank+x_in, y); + complex_expr src_B1_r2_prop_0 = B1_prop(t, iCprime, iSprime, src_color_weights(0, 1, msc1, wnumBlock, 0), src_spin_weights(0, 1, msc1, wnumBlock, 0), x_out*sites_per_rank+x_in, y); + complex_expr src_B1_r2_prop_2 = B1_prop(t, kCprime, kSprime, src_color_weights(0, 1, msc1, wnumBlock, 2), src_spin_weights(0, 1, msc1, wnumBlock, 2), x_out*sites_per_rank+x_in, y); + complex_expr src_B1_r2_prop_1 = B1_prop(t, jCprime, jSprime, src_color_weights(0, 1, msc1, wnumBlock, 1), src_spin_weights(0, 1, msc1, wnumBlock, 1), x_out*sites_per_rank+x_in, y); - complex_expr src_B1_r2_diquark = ( src_B1_r2_prop_0 * src_B1_r2_prop_2 ) * src_weights(1, wnumBlock); + complex_expr src_B1_r2_diquark = ( src_B1_r2_prop_0 * src_B1_r2_prop_2 ) * src_weights(0, 1, msc1, wnumBlock); - computation src_B1_Blocal_r2_r_props_init("src_B1_Blocal_r2_r_props_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation src_B1_Blocal_r2_i_props_init("src_B1_Blocal_r2_i_props_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation src_B1_Blocal_r2_r_props_init("src_B1_Blocal_r2_r_props_init", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation src_B1_Blocal_r2_i_props_init("src_B1_Blocal_r2_i_props_init", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation src_B1_Blocal_r2_r_diquark("src_B1_Blocal_r2_r_diquark", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, src_B1_r2_diquark.get_real()); - computation src_B1_Blocal_r2_i_diquark("src_B1_Blocal_r2_i_diquark", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, src_B1_r2_diquark.get_imag()); + computation src_B1_Blocal_r2_r_diquark("src_B1_Blocal_r2_r_diquark", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, src_B1_r2_diquark.get_real()); + computation src_B1_Blocal_r2_i_diquark("src_B1_Blocal_r2_i_diquark", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, src_B1_r2_diquark.get_imag()); complex_computation src_B1_Blocal_r2_diquark(&src_B1_Blocal_r2_r_diquark, &src_B1_Blocal_r2_i_diquark); - complex_expr src_B1_r2_props = src_B1_r2_prop_1 * src_B1_Blocal_r2_diquark(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); + complex_expr src_B1_r2_props = src_B1_r2_prop_1 * src_B1_Blocal_r2_diquark(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); - computation src_B1_Blocal_r2_r_props("src_B1_Blocal_r2_r_props", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, src_B1_Blocal_r2_r_props_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + src_B1_r2_props.get_real()); - computation src_B1_Blocal_r2_i_props("src_B1_Blocal_r2_i_props", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, src_B1_Blocal_r2_i_props_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + src_B1_r2_props.get_imag()); + computation src_B1_Blocal_r2_r_props("src_B1_Blocal_r2_r_props", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, src_B1_Blocal_r2_r_props_init(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + src_B1_r2_props.get_real()); + computation src_B1_Blocal_r2_i_props("src_B1_Blocal_r2_i_props", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, src_B1_Blocal_r2_i_props_init(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + src_B1_r2_props.get_imag()); complex_computation src_B1_Blocal_r2_props(&src_B1_Blocal_r2_r_props, &src_B1_Blocal_r2_i_props); - complex_expr src_B1_r2 = src_psi_B1 * src_B1_Blocal_r2_props(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr src_B1_r2 = src_psi_B1 * src_B1_Blocal_r2_props(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - computation src_B1_Blocal_r2_r_update("src_B1_Blocal_r2_r_update", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, src_B1_Blocal_r2_r_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + src_B1_r2.get_real()); - computation src_B1_Blocal_r2_i_update("src_B1_Blocal_r2_i_update", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, src_B1_Blocal_r2_i_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + src_B1_r2.get_imag()); + computation src_B1_Blocal_r2_r_update("src_B1_Blocal_r2_r_update", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, src_B1_Blocal_r2_r_init(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + src_B1_r2.get_real()); + computation src_B1_Blocal_r2_i_update("src_B1_Blocal_r2_i_update", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, src_B1_Blocal_r2_i_init(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + src_B1_r2.get_imag()); - complex_expr flip_src_B1_r2 = src_psi_B2 * src_B1_Blocal_r2_props(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr flip_src_B1_r2 = src_psi_B2 * src_B1_Blocal_r2_props(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - computation flip_src_B1_Blocal_r2_r_update("flip_src_B1_Blocal_r2_r_update", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_src_B1_Blocal_r2_r_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_src_B1_r2.get_real()); - computation flip_src_B1_Blocal_r2_i_update("flip_src_B1_Blocal_r2_i_update", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_src_B1_Blocal_r2_i_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_src_B1_r2.get_imag()); + computation flip_src_B1_Blocal_r2_r_update("flip_src_B1_Blocal_r2_r_update", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_src_B1_Blocal_r2_r_init(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_src_B1_r2.get_real()); + computation flip_src_B1_Blocal_r2_i_update("flip_src_B1_Blocal_r2_i_update", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_src_B1_Blocal_r2_i_init(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_src_B1_r2.get_imag()); // Computing src_B2_Blocal_r1 - computation src_B2_Blocal_r1_r_init("src_B2_Blocal_r1_r_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation src_B2_Blocal_r1_i_init("src_B2_Blocal_r1_i_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation src_B2_Blocal_r1_r_init("src_B2_Blocal_r1_r_init", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation src_B2_Blocal_r1_i_init("src_B2_Blocal_r1_i_init", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); complex_computation src_B2_Blocal_r1_init(&src_B2_Blocal_r1_r_init, &src_B2_Blocal_r1_i_init); - computation flip_src_B2_Blocal_r1_r_init("flip_src_B2_Blocal_r1_r_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_src_B2_Blocal_r1_i_init("flip_src_B2_Blocal_r1_i_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_src_B2_Blocal_r1_r_init("flip_src_B2_Blocal_r1_r_init", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_src_B2_Blocal_r1_i_init("flip_src_B2_Blocal_r1_i_init", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); complex_computation flip_src_B2_Blocal_r1_init(&flip_src_B2_Blocal_r1_r_init, &flip_src_B2_Blocal_r1_i_init); - complex_expr src_B2_r1_prop_0 = B1_prop(t, iCprime, iSprime, src_color_weights(0, wnumBlock, 0), src_spin_weights(0, wnumBlock, 0), x_out*sites_per_rank+x_in, y); - complex_expr src_B2_r1_prop_2 = B1_prop(t, kCprime, kSprime, src_color_weights(0, wnumBlock, 2), src_spin_weights(0, wnumBlock, 2), x_out*sites_per_rank+x_in, y); - complex_expr src_B2_r1_prop_1 = B1_prop(t, jCprime, jSprime, src_color_weights(0, wnumBlock, 1), src_spin_weights(0, wnumBlock, 1), x_out*sites_per_rank+x_in, y); + complex_expr src_B2_r1_prop_0 = B1_prop(t, iCprime, iSprime, src_color_weights(1, 0, msc1, wnumBlock, 0), src_spin_weights(1, 0, msc1, wnumBlock, 0), x_out*sites_per_rank+x_in, y); + complex_expr src_B2_r1_prop_2 = B1_prop(t, kCprime, kSprime, src_color_weights(1, 0, msc1, wnumBlock, 2), src_spin_weights(1, 0, msc1, wnumBlock, 2), x_out*sites_per_rank+x_in, y); + complex_expr src_B2_r1_prop_1 = B1_prop(t, jCprime, jSprime, src_color_weights(1, 0, msc1, wnumBlock, 1), src_spin_weights(1, 0, msc1, wnumBlock, 1), x_out*sites_per_rank+x_in, y); - complex_expr src_B2_r1_diquark = ( src_B2_r1_prop_0 * src_B2_r1_prop_2 ) * src_weights(0, wnumBlock); + complex_expr src_B2_r1_diquark = ( src_B2_r1_prop_0 * src_B2_r1_prop_2 ) * src_weights(1, 0, msc1, wnumBlock); - computation src_B2_Blocal_r1_r_props_init("src_B2_Blocal_r1_r_props_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation src_B2_Blocal_r1_i_props_init("src_B2_Blocal_r1_i_props_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation src_B2_Blocal_r1_r_props_init("src_B2_Blocal_r1_r_props_init", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation src_B2_Blocal_r1_i_props_init("src_B2_Blocal_r1_i_props_init", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation src_B2_Blocal_r1_r_diquark("src_B2_Blocal_r1_r_diquark", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, src_B2_r1_diquark.get_real()); - computation src_B2_Blocal_r1_i_diquark("src_B2_Blocal_r1_i_diquark", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, src_B2_r1_diquark.get_imag()); + computation src_B2_Blocal_r1_r_diquark("src_B2_Blocal_r1_r_diquark", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, src_B2_r1_diquark.get_real()); + computation src_B2_Blocal_r1_i_diquark("src_B2_Blocal_r1_i_diquark", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, src_B2_r1_diquark.get_imag()); complex_computation src_B2_Blocal_r1_diquark(&src_B2_Blocal_r1_r_diquark, &src_B2_Blocal_r1_i_diquark); - complex_expr src_B2_r1_props = src_B2_r1_prop_1 * src_B2_Blocal_r1_diquark(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); + complex_expr src_B2_r1_props = src_B2_r1_prop_1 * src_B2_Blocal_r1_diquark(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); - computation src_B2_Blocal_r1_r_props("src_B2_Blocal_r1_r_props", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, src_B2_Blocal_r1_r_props_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + src_B2_r1_props.get_real()); - computation src_B2_Blocal_r1_i_props("src_B2_Blocal_r1_i_props", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, src_B2_Blocal_r1_i_props_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + src_B2_r1_props.get_imag()); + computation src_B2_Blocal_r1_r_props("src_B2_Blocal_r1_r_props", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, src_B2_Blocal_r1_r_props_init(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + src_B2_r1_props.get_real()); + computation src_B2_Blocal_r1_i_props("src_B2_Blocal_r1_i_props", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, src_B2_Blocal_r1_i_props_init(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + src_B2_r1_props.get_imag()); complex_computation src_B2_Blocal_r1_props(&src_B2_Blocal_r1_r_props, &src_B2_Blocal_r1_i_props); - complex_expr src_B2_r1 = src_psi_B2 * src_B2_Blocal_r1_props(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr src_B2_r1 = src_psi_B2 * src_B2_Blocal_r1_props(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - computation src_B2_Blocal_r1_r_update("src_B2_Blocal_r1_r_update", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, src_B2_Blocal_r1_r_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + src_B2_r1.get_real()); - computation src_B2_Blocal_r1_i_update("src_B2_Blocal_r1_i_update", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, src_B2_Blocal_r1_i_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + src_B2_r1.get_imag()); + computation src_B2_Blocal_r1_r_update("src_B2_Blocal_r1_r_update", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, src_B2_Blocal_r1_r_init(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + src_B2_r1.get_real()); + computation src_B2_Blocal_r1_i_update("src_B2_Blocal_r1_i_update", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, src_B2_Blocal_r1_i_init(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + src_B2_r1.get_imag()); - complex_expr flip_src_B2_r1 = src_psi_B1 * src_B2_Blocal_r1_props(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr flip_src_B2_r1 = src_psi_B1 * src_B2_Blocal_r1_props(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - computation flip_src_B2_Blocal_r1_r_update("flip_src_B2_Blocal_r1_r_update", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_src_B2_Blocal_r1_r_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_src_B2_r1.get_real()); - computation flip_src_B2_Blocal_r1_i_update("flip_src_B2_Blocal_r1_i_update", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_src_B2_Blocal_r1_i_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_src_B2_r1.get_imag()); + computation flip_src_B2_Blocal_r1_r_update("flip_src_B2_Blocal_r1_r_update", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_src_B2_Blocal_r1_r_init(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_src_B2_r1.get_real()); + computation flip_src_B2_Blocal_r1_i_update("flip_src_B2_Blocal_r1_i_update", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_src_B2_Blocal_r1_i_init(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_src_B2_r1.get_imag()); // Computing src_B2_Blocal_r2 - computation src_B2_Blocal_r2_r_init("src_B2_Blocal_r2_r_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation src_B2_Blocal_r2_i_init("src_B2_Blocal_r2_i_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation src_B2_Blocal_r2_r_init("src_B2_Blocal_r2_r_init", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation src_B2_Blocal_r2_i_init("src_B2_Blocal_r2_i_init", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); complex_computation src_B2_Blocal_r2_init(&src_B2_Blocal_r2_r_init, &src_B2_Blocal_r2_i_init); - computation flip_src_B2_Blocal_r2_r_init("flip_src_B2_Blocal_r2_r_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); - computation flip_src_B2_Blocal_r2_i_init("flip_src_B2_Blocal_r2_i_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_src_B2_Blocal_r2_r_init("flip_src_B2_Blocal_r2_r_init", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); + computation flip_src_B2_Blocal_r2_i_init("flip_src_B2_Blocal_r2_i_init", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m}, expr((double) 0)); complex_computation flip_src_B2_Blocal_r2_init(&flip_src_B2_Blocal_r2_r_init, &flip_src_B2_Blocal_r2_i_init); - complex_expr src_B2_r2_prop_0 = B1_prop(t, iCprime, iSprime, src_color_weights(1, wnumBlock, 0), src_spin_weights(1, wnumBlock, 0), x_out*sites_per_rank+x_in, y); - complex_expr src_B2_r2_prop_2 = B1_prop(t, kCprime, kSprime, src_color_weights(1, wnumBlock, 2), src_spin_weights(1, wnumBlock, 2), x_out*sites_per_rank+x_in, y); - complex_expr src_B2_r2_prop_1 = B1_prop(t, jCprime, jSprime, src_color_weights(1, wnumBlock, 1), src_spin_weights(1, wnumBlock, 1), x_out*sites_per_rank+x_in, y); + complex_expr src_B2_r2_prop_0 = B1_prop(t, iCprime, iSprime, src_color_weights(1, 1, msc1, wnumBlock, 0), src_spin_weights(1, 1, msc1, wnumBlock, 0), x_out*sites_per_rank+x_in, y); + complex_expr src_B2_r2_prop_2 = B1_prop(t, kCprime, kSprime, src_color_weights(1, 1, msc1, wnumBlock, 2), src_spin_weights(1, 1, msc1, wnumBlock, 2), x_out*sites_per_rank+x_in, y); + complex_expr src_B2_r2_prop_1 = B1_prop(t, jCprime, jSprime, src_color_weights(1, 1, msc1, wnumBlock, 1), src_spin_weights(1, 1, msc1, wnumBlock, 1), x_out*sites_per_rank+x_in, y); - complex_expr src_B2_r2_diquark = ( src_B2_r2_prop_0 * src_B2_r2_prop_2 ) * src_weights(1, wnumBlock); + complex_expr src_B2_r2_diquark = ( src_B2_r2_prop_0 * src_B2_r2_prop_2 ) * src_weights(1, 1, msc1, wnumBlock); - computation src_B2_Blocal_r2_r_props_init("src_B2_Blocal_r2_r_props_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation src_B2_Blocal_r2_i_props_init("src_B2_Blocal_r2_i_props_init", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation src_B2_Blocal_r2_r_props_init("src_B2_Blocal_r2_r_props_init", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); + computation src_B2_Blocal_r2_i_props_init("src_B2_Blocal_r2_i_props_init", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime}, expr((double) 0)); - computation src_B2_Blocal_r2_r_diquark("src_B2_Blocal_r2_r_diquark", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, src_B2_r2_diquark.get_real()); - computation src_B2_Blocal_r2_i_diquark("src_B2_Blocal_r2_i_diquark", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, src_B2_r2_diquark.get_imag()); + computation src_B2_Blocal_r2_r_diquark("src_B2_Blocal_r2_r_diquark", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, src_B2_r2_diquark.get_real()); + computation src_B2_Blocal_r2_i_diquark("src_B2_Blocal_r2_i_diquark", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock}, src_B2_r2_diquark.get_imag()); complex_computation src_B2_Blocal_r2_diquark(&src_B2_Blocal_r2_r_diquark, &src_B2_Blocal_r2_i_diquark); - complex_expr src_B2_r2_props = src_B2_r2_prop_1 * src_B2_Blocal_r2_diquark(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); + complex_expr src_B2_r2_props = src_B2_r2_prop_1 * src_B2_Blocal_r2_diquark(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock); - computation src_B2_Blocal_r2_r_props("src_B2_Blocal_r2_r_props", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, src_B2_Blocal_r2_r_props_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + src_B2_r2_props.get_real()); - computation src_B2_Blocal_r2_i_props("src_B2_Blocal_r2_i_props", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, src_B2_Blocal_r2_i_props_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + src_B2_r2_props.get_imag()); + computation src_B2_Blocal_r2_r_props("src_B2_Blocal_r2_r_props", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, src_B2_Blocal_r2_r_props_init(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + src_B2_r2_props.get_real()); + computation src_B2_Blocal_r2_i_props("src_B2_Blocal_r2_i_props", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, wnumBlock, jCprime, jSprime}, src_B2_Blocal_r2_i_props_init(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime) + src_B2_r2_props.get_imag()); complex_computation src_B2_Blocal_r2_props(&src_B2_Blocal_r2_r_props, &src_B2_Blocal_r2_i_props); - complex_expr src_B2_r2 = src_psi_B2 * src_B2_Blocal_r2_props(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr src_B2_r2 = src_psi_B2 * src_B2_Blocal_r2_props(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - computation src_B2_Blocal_r2_r_update("src_B2_Blocal_r2_r_update", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, src_B2_Blocal_r2_r_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + src_B2_r2.get_real()); - computation src_B2_Blocal_r2_i_update("src_B2_Blocal_r2_i_update", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, src_B2_Blocal_r2_i_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + src_B2_r2.get_imag()); + computation src_B2_Blocal_r2_r_update("src_B2_Blocal_r2_r_update", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, src_B2_Blocal_r2_r_init(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + src_B2_r2.get_real()); + computation src_B2_Blocal_r2_i_update("src_B2_Blocal_r2_i_update", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, src_B2_Blocal_r2_i_init(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + src_B2_r2.get_imag()); - complex_expr flip_src_B2_r2 = src_psi_B1 * src_B2_Blocal_r2_props(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); + complex_expr flip_src_B2_r2 = src_psi_B1 * src_B2_Blocal_r2_props(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, Nw-1, jCprime, jSprime); - computation flip_src_B2_Blocal_r2_r_update("flip_src_B2_Blocal_r2_r_update", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_src_B2_Blocal_r2_r_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_src_B2_r2.get_real()); - computation flip_src_B2_Blocal_r2_i_update("flip_src_B2_Blocal_r2_i_update", {t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_src_B2_Blocal_r2_i_init(t, x_out, x_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_src_B2_r2.get_imag()); + computation flip_src_B2_Blocal_r2_r_update("flip_src_B2_Blocal_r2_r_update", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_src_B2_Blocal_r2_r_init(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_src_B2_r2.get_real()); + computation flip_src_B2_Blocal_r2_i_update("flip_src_B2_Blocal_r2_i_update", {t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, y, jCprime, jSprime, m}, flip_src_B2_Blocal_r2_i_init(t, x_out, x_in, msc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, m) + flip_src_B2_r2.get_imag()); // Computing snk_B1_Blocal_r1 - computation snk_B1_Blocal_r1_r_init("snk_B1_Blocal_r1_r_init", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); - computation snk_B1_Blocal_r1_i_init("snk_B1_Blocal_r1_i_init", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); + computation snk_B1_Blocal_r1_r_init("snk_B1_Blocal_r1_r_init", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); + computation snk_B1_Blocal_r1_i_init("snk_B1_Blocal_r1_i_init", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); complex_computation snk_B1_Blocal_r1_init(&snk_B1_Blocal_r1_r_init, &snk_B1_Blocal_r1_i_init); - computation flip_snk_B1_Blocal_r1_r_init("flip_snk_B1_Blocal_r1_r_init", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); - computation flip_snk_B1_Blocal_r1_i_init("flip_snk_B1_Blocal_r1_i_init", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); + computation flip_snk_B1_Blocal_r1_r_init("flip_snk_B1_Blocal_r1_r_init", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); + computation flip_snk_B1_Blocal_r1_i_init("flip_snk_B1_Blocal_r1_i_init", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); complex_computation flip_snk_B1_Blocal_r1_init(&flip_snk_B1_Blocal_r1_r_init, &flip_snk_B1_Blocal_r1_i_init); - complex_expr snk_B1_r1_prop_0 = B1_prop(t, src_color_weights(0, wnumBlock, 0), src_spin_weights(0, wnumBlock, 0), iCprime, iSprime, x, y_out*src_sites_per_rank+y_in); - complex_expr snk_B1_r1_prop_2 = B1_prop(t, src_color_weights(0, wnumBlock, 2), src_spin_weights(0, wnumBlock, 2), kCprime, kSprime, x, y_out*src_sites_per_rank+y_in); - complex_expr snk_B1_r1_prop_1 = B1_prop(t, src_color_weights(0, wnumBlock, 1), src_spin_weights(0, wnumBlock, 1), jCprime, jSprime, x, y_out*src_sites_per_rank+y_in); + complex_expr snk_B1_r1_prop_0 = B1_prop(t, src_color_weights(0, 0, nsc1, wnumBlock, 0), src_spin_weights(0, 0, nsc1, wnumBlock, 0), iCprime, iSprime, x, y_out*src_sites_per_rank+y_in); + complex_expr snk_B1_r1_prop_2 = B1_prop(t, src_color_weights(0, 0, nsc1, wnumBlock, 2), src_spin_weights(0, 0, nsc1, wnumBlock, 2), kCprime, kSprime, x, y_out*src_sites_per_rank+y_in); + complex_expr snk_B1_r1_prop_1 = B1_prop(t, src_color_weights(0, 0, nsc1, wnumBlock, 1), src_spin_weights(0, 0, nsc1, wnumBlock, 1), jCprime, jSprime, x, y_out*src_sites_per_rank+y_in); - complex_expr snk_B1_r1_diquark = ( snk_B1_r1_prop_0 * snk_B1_r1_prop_2 ) * src_weights(0, wnumBlock); + complex_expr snk_B1_r1_diquark = ( snk_B1_r1_prop_0 * snk_B1_r1_prop_2 ) * src_weights(0, 0, nsc1, wnumBlock); - computation snk_B1_Blocal_r1_r_props_init("snk_B1_Blocal_r1_r_props_init", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime}, expr((double) 0)); - computation snk_B1_Blocal_r1_i_props_init("snk_B1_Blocal_r1_i_props_init", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime}, expr((double) 0)); + computation snk_B1_Blocal_r1_r_props_init("snk_B1_Blocal_r1_r_props_init", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime}, expr((double) 0)); + computation snk_B1_Blocal_r1_i_props_init("snk_B1_Blocal_r1_i_props_init", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime}, expr((double) 0)); - computation snk_B1_Blocal_r1_r_diquark("snk_B1_Blocal_r1_r_diquark", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, wnumBlock}, snk_B1_r1_diquark.get_real()); - computation snk_B1_Blocal_r1_i_diquark("snk_B1_Blocal_r1_i_diquark", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, wnumBlock}, snk_B1_r1_diquark.get_imag()); + computation snk_B1_Blocal_r1_r_diquark("snk_B1_Blocal_r1_r_diquark", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, wnumBlock}, snk_B1_r1_diquark.get_real()); + computation snk_B1_Blocal_r1_i_diquark("snk_B1_Blocal_r1_i_diquark", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, wnumBlock}, snk_B1_r1_diquark.get_imag()); complex_computation snk_B1_Blocal_r1_diquark(&snk_B1_Blocal_r1_r_diquark, &snk_B1_Blocal_r1_i_diquark); - complex_expr snk_B1_r1_props = snk_B1_r1_prop_1 * snk_B1_Blocal_r1_diquark(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, wnumBlock); + complex_expr snk_B1_r1_props = snk_B1_r1_prop_1 * snk_B1_Blocal_r1_diquark(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, wnumBlock); - computation snk_B1_Blocal_r1_r_props("snk_B1_Blocal_r1_r_props", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, wnumBlock, jCprime, jSprime}, snk_B1_Blocal_r1_r_props_init(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime) + snk_B1_r1_props.get_real()); - computation snk_B1_Blocal_r1_i_props("snk_B1_Blocal_r1_i_props", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, wnumBlock, jCprime, jSprime}, snk_B1_Blocal_r1_i_props_init(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime) + snk_B1_r1_props.get_imag()); + computation snk_B1_Blocal_r1_r_props("snk_B1_Blocal_r1_r_props", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, wnumBlock, jCprime, jSprime}, snk_B1_Blocal_r1_r_props_init(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime) + snk_B1_r1_props.get_real()); + computation snk_B1_Blocal_r1_i_props("snk_B1_Blocal_r1_i_props", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, wnumBlock, jCprime, jSprime}, snk_B1_Blocal_r1_i_props_init(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime) + snk_B1_r1_props.get_imag()); complex_computation snk_B1_Blocal_r1_props(&snk_B1_Blocal_r1_r_props, &snk_B1_Blocal_r1_i_props); - complex_expr snk_B1_r1 = snk_psi_B1 * snk_B1_Blocal_r1_props(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, Nw-1, jCprime, jSprime); + complex_expr snk_B1_r1 = snk_psi_B1 * snk_B1_Blocal_r1_props(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, Nw-1, jCprime, jSprime); - computation snk_B1_Blocal_r1_r_update("snk_B1_Blocal_r1_r_update", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, snk_B1_Blocal_r1_r_init(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + snk_B1_r1.get_real()); - computation snk_B1_Blocal_r1_i_update("snk_B1_Blocal_r1_i_update", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, snk_B1_Blocal_r1_i_init(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + snk_B1_r1.get_imag()); + computation snk_B1_Blocal_r1_r_update("snk_B1_Blocal_r1_r_update", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, snk_B1_Blocal_r1_r_init(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + snk_B1_r1.get_real()); + computation snk_B1_Blocal_r1_i_update("snk_B1_Blocal_r1_i_update", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, snk_B1_Blocal_r1_i_init(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + snk_B1_r1.get_imag()); - complex_expr flip_snk_B1_r1 = snk_psi_B2 * snk_B1_Blocal_r1_props(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, Nw-1, jCprime, jSprime); + complex_expr flip_snk_B1_r1 = snk_psi_B2 * snk_B1_Blocal_r1_props(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, Nw-1, jCprime, jSprime); - computation flip_snk_B1_Blocal_r1_r_update("flip_snk_B1_Blocal_r1_r_update", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, flip_snk_B1_Blocal_r1_r_init(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + flip_snk_B1_r1.get_real()); - computation flip_snk_B1_Blocal_r1_i_update("flip_snk_B1_Blocal_r1_i_update", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, flip_snk_B1_Blocal_r1_i_init(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + flip_snk_B1_r1.get_imag()); + computation flip_snk_B1_Blocal_r1_r_update("flip_snk_B1_Blocal_r1_r_update", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, flip_snk_B1_Blocal_r1_r_init(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + flip_snk_B1_r1.get_real()); + computation flip_snk_B1_Blocal_r1_i_update("flip_snk_B1_Blocal_r1_i_update", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, flip_snk_B1_Blocal_r1_i_init(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + flip_snk_B1_r1.get_imag()); // Computing snk_B1_Blocal_r2 - computation snk_B1_Blocal_r2_r_init("snk_B1_Blocal_r2_r_init", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); - computation snk_B1_Blocal_r2_i_init("snk_B1_Blocal_r2_i_init", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); + computation snk_B1_Blocal_r2_r_init("snk_B1_Blocal_r2_r_init", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); + computation snk_B1_Blocal_r2_i_init("snk_B1_Blocal_r2_i_init", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); complex_computation snk_B1_Blocal_r2_init(&snk_B1_Blocal_r2_r_init, &snk_B1_Blocal_r2_i_init); - computation flip_snk_B1_Blocal_r2_r_init("flip_snk_B1_Blocal_r2_r_init", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); - computation flip_snk_B1_Blocal_r2_i_init("flip_snk_B1_Blocal_r2_i_init", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); + computation flip_snk_B1_Blocal_r2_r_init("flip_snk_B1_Blocal_r2_r_init", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); + computation flip_snk_B1_Blocal_r2_i_init("flip_snk_B1_Blocal_r2_i_init", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); complex_computation flip_snk_B1_Blocal_r2_init(&flip_snk_B1_Blocal_r2_r_init, &flip_snk_B1_Blocal_r2_i_init); - complex_expr snk_B1_r2_prop_0 = B1_prop(t, src_color_weights(1, wnumBlock, 0), src_spin_weights(1, wnumBlock, 0), iCprime, iSprime, x, y_out*src_sites_per_rank+y_in); - complex_expr snk_B1_r2_prop_2 = B1_prop(t, src_color_weights(1, wnumBlock, 2), src_spin_weights(1, wnumBlock, 2), kCprime, kSprime, x, y_out*src_sites_per_rank+y_in); - complex_expr snk_B1_r2_prop_1 = B1_prop(t, src_color_weights(1, wnumBlock, 1), src_spin_weights(1, wnumBlock, 1), jCprime, jSprime, x, y_out*src_sites_per_rank+y_in); + complex_expr snk_B1_r2_prop_0 = B1_prop(t, src_color_weights(0, 1, nsc1, wnumBlock, 0), src_spin_weights(0, 1, nsc1, wnumBlock, 0), iCprime, iSprime, x, y_out*src_sites_per_rank+y_in); + complex_expr snk_B1_r2_prop_2 = B1_prop(t, src_color_weights(0, 1, nsc1, wnumBlock, 2), src_spin_weights(0, 1, nsc1, wnumBlock, 2), kCprime, kSprime, x, y_out*src_sites_per_rank+y_in); + complex_expr snk_B1_r2_prop_1 = B1_prop(t, src_color_weights(0, 1, nsc1, wnumBlock, 1), src_spin_weights(0, 1, nsc1, wnumBlock, 1), jCprime, jSprime, x, y_out*src_sites_per_rank+y_in); - complex_expr snk_B1_r2_diquark = ( snk_B1_r2_prop_0 * snk_B1_r2_prop_2 ) * src_weights(1, wnumBlock); + complex_expr snk_B1_r2_diquark = ( snk_B1_r2_prop_0 * snk_B1_r2_prop_2 ) * src_weights(0, 1, nsc1, wnumBlock); - computation snk_B1_Blocal_r2_r_props_init("snk_B1_Blocal_r2_r_props_init", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime}, expr((double) 0)); - computation snk_B1_Blocal_r2_i_props_init("snk_B1_Blocal_r2_i_props_init", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime}, expr((double) 0)); + computation snk_B1_Blocal_r2_r_props_init("snk_B1_Blocal_r2_r_props_init", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime}, expr((double) 0)); + computation snk_B1_Blocal_r2_i_props_init("snk_B1_Blocal_r2_i_props_init", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime}, expr((double) 0)); - computation snk_B1_Blocal_r2_r_diquark("snk_B1_Blocal_r2_r_diquark", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, wnumBlock}, snk_B1_r2_diquark.get_real()); - computation snk_B1_Blocal_r2_i_diquark("snk_B1_Blocal_r2_i_diquark", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, wnumBlock}, snk_B1_r2_diquark.get_imag()); + computation snk_B1_Blocal_r2_r_diquark("snk_B1_Blocal_r2_r_diquark", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, wnumBlock}, snk_B1_r2_diquark.get_real()); + computation snk_B1_Blocal_r2_i_diquark("snk_B1_Blocal_r2_i_diquark", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, wnumBlock}, snk_B1_r2_diquark.get_imag()); complex_computation snk_B1_Blocal_r2_diquark(&snk_B1_Blocal_r2_r_diquark, &snk_B1_Blocal_r2_i_diquark); - complex_expr snk_B1_r2_props = snk_B1_r2_prop_1 * snk_B1_Blocal_r2_diquark(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, wnumBlock); + complex_expr snk_B1_r2_props = snk_B1_r2_prop_1 * snk_B1_Blocal_r2_diquark(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, wnumBlock); - computation snk_B1_Blocal_r2_r_props("snk_B1_Blocal_r2_r_props", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, wnumBlock, jCprime, jSprime}, snk_B1_Blocal_r2_r_props_init(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime) + snk_B1_r2_props.get_real()); - computation snk_B1_Blocal_r2_i_props("snk_B1_Blocal_r2_i_props", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, wnumBlock, jCprime, jSprime}, snk_B1_Blocal_r2_i_props_init(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime) + snk_B1_r2_props.get_imag()); + computation snk_B1_Blocal_r2_r_props("snk_B1_Blocal_r2_r_props", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, wnumBlock, jCprime, jSprime}, snk_B1_Blocal_r2_r_props_init(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime) + snk_B1_r2_props.get_real()); + computation snk_B1_Blocal_r2_i_props("snk_B1_Blocal_r2_i_props", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, wnumBlock, jCprime, jSprime}, snk_B1_Blocal_r2_i_props_init(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime) + snk_B1_r2_props.get_imag()); complex_computation snk_B1_Blocal_r2_props(&snk_B1_Blocal_r2_r_props, &snk_B1_Blocal_r2_i_props); - complex_expr snk_B1_r2 = snk_psi_B1 * snk_B1_Blocal_r2_props(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, Nw-1, jCprime, jSprime); + complex_expr snk_B1_r2 = snk_psi_B1 * snk_B1_Blocal_r2_props(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, Nw-1, jCprime, jSprime); - computation snk_B1_Blocal_r2_r_update("snk_B1_Blocal_r2_r_update", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, snk_B1_Blocal_r2_r_init(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + snk_B1_r2.get_real()); - computation snk_B1_Blocal_r2_i_update("snk_B1_Blocal_r2_i_update", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, snk_B1_Blocal_r2_i_init(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + snk_B1_r2.get_imag()); + computation snk_B1_Blocal_r2_r_update("snk_B1_Blocal_r2_r_update", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, snk_B1_Blocal_r2_r_init(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + snk_B1_r2.get_real()); + computation snk_B1_Blocal_r2_i_update("snk_B1_Blocal_r2_i_update", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, snk_B1_Blocal_r2_i_init(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + snk_B1_r2.get_imag()); - complex_expr flip_snk_B1_r2 = snk_psi_B2 * snk_B1_Blocal_r2_props(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, Nw-1, jCprime, jSprime); + complex_expr flip_snk_B1_r2 = snk_psi_B2 * snk_B1_Blocal_r2_props(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, Nw-1, jCprime, jSprime); - computation flip_snk_B1_Blocal_r2_r_update("flip_snk_B1_Blocal_r2_r_update", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, flip_snk_B1_Blocal_r2_r_init(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + flip_snk_B1_r2.get_real()); - computation flip_snk_B1_Blocal_r2_i_update("flip_snk_B1_Blocal_r2_i_update", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, flip_snk_B1_Blocal_r2_i_init(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + flip_snk_B1_r2.get_imag()); + computation flip_snk_B1_Blocal_r2_r_update("flip_snk_B1_Blocal_r2_r_update", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, flip_snk_B1_Blocal_r2_r_init(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + flip_snk_B1_r2.get_real()); + computation flip_snk_B1_Blocal_r2_i_update("flip_snk_B1_Blocal_r2_i_update", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, flip_snk_B1_Blocal_r2_i_init(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + flip_snk_B1_r2.get_imag()); // Computing snk_B2_Blocal_r1 - computation snk_B2_Blocal_r1_r_init("snk_B2_Blocal_r1_r_init", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); - computation snk_B2_Blocal_r1_i_init("snk_B2_Blocal_r1_i_init", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); + computation snk_B2_Blocal_r1_r_init("snk_B2_Blocal_r1_r_init", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); + computation snk_B2_Blocal_r1_i_init("snk_B2_Blocal_r1_i_init", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); complex_computation snk_B2_Blocal_r1_init(&snk_B2_Blocal_r1_r_init, &snk_B2_Blocal_r1_i_init); - computation flip_snk_B2_Blocal_r1_r_init("flip_snk_B2_Blocal_r1_r_init", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); - computation flip_snk_B2_Blocal_r1_i_init("flip_snk_B2_Blocal_r1_i_init", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); + computation flip_snk_B2_Blocal_r1_r_init("flip_snk_B2_Blocal_r1_r_init", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); + computation flip_snk_B2_Blocal_r1_i_init("flip_snk_B2_Blocal_r1_i_init", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); complex_computation flip_snk_B2_Blocal_r1_init(&flip_snk_B2_Blocal_r1_r_init, &flip_snk_B2_Blocal_r1_i_init); - complex_expr snk_B2_r1_prop_0 = B1_prop(t, src_color_weights(0, wnumBlock, 0), src_spin_weights(0, wnumBlock, 0), iCprime, iSprime, x, y_out*src_sites_per_rank+y_in); - complex_expr snk_B2_r1_prop_2 = B1_prop(t, src_color_weights(0, wnumBlock, 2), src_spin_weights(0, wnumBlock, 2), kCprime, kSprime, x, y_out*src_sites_per_rank+y_in); - complex_expr snk_B2_r1_prop_1 = B1_prop(t, src_color_weights(0, wnumBlock, 1), src_spin_weights(0, wnumBlock, 1), jCprime, jSprime, x, y_out*src_sites_per_rank+y_in); + complex_expr snk_B2_r1_prop_0 = B1_prop(t, src_color_weights(1, 0, nsc1, wnumBlock, 0), src_spin_weights(1, 0, nsc1, wnumBlock, 0), iCprime, iSprime, x, y_out*src_sites_per_rank+y_in); + complex_expr snk_B2_r1_prop_2 = B1_prop(t, src_color_weights(1, 0, nsc1, wnumBlock, 2), src_spin_weights(1, 0, nsc1, wnumBlock, 2), kCprime, kSprime, x, y_out*src_sites_per_rank+y_in); + complex_expr snk_B2_r1_prop_1 = B1_prop(t, src_color_weights(1, 0, nsc1, wnumBlock, 1), src_spin_weights(1, 0, nsc1, wnumBlock, 1), jCprime, jSprime, x, y_out*src_sites_per_rank+y_in); - complex_expr snk_B2_r1_diquark = ( snk_B2_r1_prop_0 * snk_B2_r1_prop_2 ) * src_weights(0, wnumBlock); + complex_expr snk_B2_r1_diquark = ( snk_B2_r1_prop_0 * snk_B2_r1_prop_2 ) * src_weights(1, 0, nsc1, wnumBlock); - computation snk_B2_Blocal_r1_r_props_init("snk_B2_Blocal_r1_r_props_init", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime}, expr((double) 0)); - computation snk_B2_Blocal_r1_i_props_init("snk_B2_Blocal_r1_i_props_init", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime}, expr((double) 0)); + computation snk_B2_Blocal_r1_r_props_init("snk_B2_Blocal_r1_r_props_init", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime}, expr((double) 0)); + computation snk_B2_Blocal_r1_i_props_init("snk_B2_Blocal_r1_i_props_init", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime}, expr((double) 0)); - computation snk_B2_Blocal_r1_r_diquark("snk_B2_Blocal_r1_r_diquark", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, wnumBlock}, snk_B2_r1_diquark.get_real()); - computation snk_B2_Blocal_r1_i_diquark("snk_B2_Blocal_r1_i_diquark", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, wnumBlock}, snk_B2_r1_diquark.get_imag()); + computation snk_B2_Blocal_r1_r_diquark("snk_B2_Blocal_r1_r_diquark", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, wnumBlock}, snk_B2_r1_diquark.get_real()); + computation snk_B2_Blocal_r1_i_diquark("snk_B2_Blocal_r1_i_diquark", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, wnumBlock}, snk_B2_r1_diquark.get_imag()); complex_computation snk_B2_Blocal_r1_diquark(&snk_B2_Blocal_r1_r_diquark, &snk_B2_Blocal_r1_i_diquark); - complex_expr snk_B2_r1_props = snk_B2_r1_prop_1 * snk_B2_Blocal_r1_diquark(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, wnumBlock); + complex_expr snk_B2_r1_props = snk_B2_r1_prop_1 * snk_B2_Blocal_r1_diquark(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, wnumBlock); - computation snk_B2_Blocal_r1_r_props("snk_B2_Blocal_r1_r_props", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, wnumBlock, jCprime, jSprime}, snk_B2_Blocal_r1_r_props_init(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime) + snk_B2_r1_props.get_real()); - computation snk_B2_Blocal_r1_i_props("snk_B2_Blocal_r1_i_props", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, wnumBlock, jCprime, jSprime}, snk_B2_Blocal_r1_i_props_init(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime) + snk_B2_r1_props.get_imag()); + computation snk_B2_Blocal_r1_r_props("snk_B2_Blocal_r1_r_props", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, wnumBlock, jCprime, jSprime}, snk_B2_Blocal_r1_r_props_init(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime) + snk_B2_r1_props.get_real()); + computation snk_B2_Blocal_r1_i_props("snk_B2_Blocal_r1_i_props", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, wnumBlock, jCprime, jSprime}, snk_B2_Blocal_r1_i_props_init(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime) + snk_B2_r1_props.get_imag()); complex_computation snk_B2_Blocal_r1_props(&snk_B2_Blocal_r1_r_props, &snk_B2_Blocal_r1_i_props); - complex_expr snk_B2_r1 = snk_psi_B2 * snk_B2_Blocal_r1_props(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, Nw-1, jCprime, jSprime); + complex_expr snk_B2_r1 = snk_psi_B2 * snk_B2_Blocal_r1_props(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, Nw-1, jCprime, jSprime); - computation snk_B2_Blocal_r1_r_update("snk_B2_Blocal_r1_r_update", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, snk_B2_Blocal_r1_r_init(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + snk_B2_r1.get_real()); - computation snk_B2_Blocal_r1_i_update("snk_B2_Blocal_r1_i_update", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, snk_B2_Blocal_r1_i_init(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + snk_B2_r1.get_imag()); + computation snk_B2_Blocal_r1_r_update("snk_B2_Blocal_r1_r_update", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, snk_B2_Blocal_r1_r_init(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + snk_B2_r1.get_real()); + computation snk_B2_Blocal_r1_i_update("snk_B2_Blocal_r1_i_update", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, snk_B2_Blocal_r1_i_init(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + snk_B2_r1.get_imag()); - complex_expr flip_snk_B2_r1 = snk_psi_B1 * snk_B2_Blocal_r1_props(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, Nw-1, jCprime, jSprime); + complex_expr flip_snk_B2_r1 = snk_psi_B1 * snk_B2_Blocal_r1_props(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, Nw-1, jCprime, jSprime); - computation flip_snk_B2_Blocal_r1_r_update("flip_snk_B2_Blocal_r1_r_update", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, flip_snk_B2_Blocal_r1_r_init(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + flip_snk_B2_r1.get_real()); - computation flip_snk_B2_Blocal_r1_i_update("flip_snk_B2_Blocal_r1_i_update", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, flip_snk_B2_Blocal_r1_i_init(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + flip_snk_B2_r1.get_imag()); + computation flip_snk_B2_Blocal_r1_r_update("flip_snk_B2_Blocal_r1_r_update", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, flip_snk_B2_Blocal_r1_r_init(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + flip_snk_B2_r1.get_real()); + computation flip_snk_B2_Blocal_r1_i_update("flip_snk_B2_Blocal_r1_i_update", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, flip_snk_B2_Blocal_r1_i_init(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + flip_snk_B2_r1.get_imag()); // Computing snk_B2_Blocal_r2 - computation snk_B2_Blocal_r2_r_init("snk_B2_Blocal_r2_r_init", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); - computation snk_B2_Blocal_r2_i_init("snk_B2_Blocal_r2_i_init", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); + computation snk_B2_Blocal_r2_r_init("snk_B2_Blocal_r2_r_init", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); + computation snk_B2_Blocal_r2_i_init("snk_B2_Blocal_r2_i_init", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); complex_computation snk_B2_Blocal_r2_init(&snk_B2_Blocal_r2_r_init, &snk_B2_Blocal_r2_i_init); - computation flip_snk_B2_Blocal_r2_r_init("flip_snk_B2_Blocal_r2_r_init", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); - computation flip_snk_B2_Blocal_r2_i_init("flip_snk_B2_Blocal_r2_i_init", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); + computation flip_snk_B2_Blocal_r2_r_init("flip_snk_B2_Blocal_r2_r_init", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); + computation flip_snk_B2_Blocal_r2_i_init("flip_snk_B2_Blocal_r2_i_init", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n}, expr((double) 0)); complex_computation flip_snk_B2_Blocal_r2_init(&flip_snk_B2_Blocal_r2_r_init, &flip_snk_B2_Blocal_r2_i_init); - complex_expr snk_B2_r2_prop_0 = B1_prop(t, src_color_weights(1, wnumBlock, 0), src_spin_weights(1, wnumBlock, 0), iCprime, iSprime, x, y_out*src_sites_per_rank+y_in); - complex_expr snk_B2_r2_prop_2 = B1_prop(t, src_color_weights(1, wnumBlock, 2), src_spin_weights(1, wnumBlock, 2), kCprime, kSprime, x, y_out*src_sites_per_rank+y_in); - complex_expr snk_B2_r2_prop_1 = B1_prop(t, src_color_weights(1, wnumBlock, 1), src_spin_weights(1, wnumBlock, 1), jCprime, jSprime, x, y_out*src_sites_per_rank+y_in); + complex_expr snk_B2_r2_prop_0 = B1_prop(t, src_color_weights(1, 1, nsc1, wnumBlock, 0), src_spin_weights(1, 1, nsc1, wnumBlock, 0), iCprime, iSprime, x, y_out*src_sites_per_rank+y_in); + complex_expr snk_B2_r2_prop_2 = B1_prop(t, src_color_weights(1, 1, nsc1, wnumBlock, 2), src_spin_weights(1, 1, nsc1, wnumBlock, 2), kCprime, kSprime, x, y_out*src_sites_per_rank+y_in); + complex_expr snk_B2_r2_prop_1 = B1_prop(t, src_color_weights(1, 1, nsc1, wnumBlock, 1), src_spin_weights(1, 1, nsc1, wnumBlock, 1), jCprime, jSprime, x, y_out*src_sites_per_rank+y_in); - complex_expr snk_B2_r2_diquark = ( snk_B2_r2_prop_0 * snk_B2_r2_prop_2 ) * src_weights(1, wnumBlock); + complex_expr snk_B2_r2_diquark = ( snk_B2_r2_prop_0 * snk_B2_r2_prop_2 ) * src_weights(1, 1, nsc1, wnumBlock); - computation snk_B2_Blocal_r2_r_props_init("snk_B2_Blocal_r2_r_props_init", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime}, expr((double) 0)); - computation snk_B2_Blocal_r2_i_props_init("snk_B2_Blocal_r2_i_props_init", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime}, expr((double) 0)); + computation snk_B2_Blocal_r2_r_props_init("snk_B2_Blocal_r2_r_props_init", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime}, expr((double) 0)); + computation snk_B2_Blocal_r2_i_props_init("snk_B2_Blocal_r2_i_props_init", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime}, expr((double) 0)); - computation snk_B2_Blocal_r2_r_diquark("snk_B2_Blocal_r2_r_diquark", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, wnumBlock}, snk_B2_r2_diquark.get_real()); - computation snk_B2_Blocal_r2_i_diquark("snk_B2_Blocal_r2_i_diquark", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, wnumBlock}, snk_B2_r2_diquark.get_imag()); + computation snk_B2_Blocal_r2_r_diquark("snk_B2_Blocal_r2_r_diquark", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, wnumBlock}, snk_B2_r2_diquark.get_real()); + computation snk_B2_Blocal_r2_i_diquark("snk_B2_Blocal_r2_i_diquark", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, wnumBlock}, snk_B2_r2_diquark.get_imag()); complex_computation snk_B2_Blocal_r2_diquark(&snk_B2_Blocal_r2_r_diquark, &snk_B2_Blocal_r2_i_diquark); - complex_expr snk_B2_r2_props = snk_B2_r2_prop_1 * snk_B2_Blocal_r2_diquark(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, wnumBlock); + complex_expr snk_B2_r2_props = snk_B2_r2_prop_1 * snk_B2_Blocal_r2_diquark(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, wnumBlock); - computation snk_B2_Blocal_r2_r_props("snk_B2_Blocal_r2_r_props", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, wnumBlock, jCprime, jSprime}, snk_B2_Blocal_r2_r_props_init(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime) + snk_B2_r2_props.get_real()); - computation snk_B2_Blocal_r2_i_props("snk_B2_Blocal_r2_i_props", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, wnumBlock, jCprime, jSprime}, snk_B2_Blocal_r2_i_props_init(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime) + snk_B2_r2_props.get_imag()); + computation snk_B2_Blocal_r2_r_props("snk_B2_Blocal_r2_r_props", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, wnumBlock, jCprime, jSprime}, snk_B2_Blocal_r2_r_props_init(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime) + snk_B2_r2_props.get_real()); + computation snk_B2_Blocal_r2_i_props("snk_B2_Blocal_r2_i_props", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, wnumBlock, jCprime, jSprime}, snk_B2_Blocal_r2_i_props_init(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime) + snk_B2_r2_props.get_imag()); complex_computation snk_B2_Blocal_r2_props(&snk_B2_Blocal_r2_r_props, &snk_B2_Blocal_r2_i_props); - complex_expr snk_B2_r2 = snk_psi_B2 * snk_B2_Blocal_r2_props(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, Nw-1, jCprime, jSprime); + complex_expr snk_B2_r2 = snk_psi_B2 * snk_B2_Blocal_r2_props(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, Nw-1, jCprime, jSprime); - computation snk_B2_Blocal_r2_r_update("snk_B2_Blocal_r2_r_update", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, snk_B2_Blocal_r2_r_init(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + snk_B2_r2.get_real()); - computation snk_B2_Blocal_r2_i_update("snk_B2_Blocal_r2_i_update", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, snk_B2_Blocal_r2_i_init(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + snk_B2_r2.get_imag()); + computation snk_B2_Blocal_r2_r_update("snk_B2_Blocal_r2_r_update", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, snk_B2_Blocal_r2_r_init(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + snk_B2_r2.get_real()); + computation snk_B2_Blocal_r2_i_update("snk_B2_Blocal_r2_i_update", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, snk_B2_Blocal_r2_i_init(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + snk_B2_r2.get_imag()); - complex_expr flip_snk_B2_r2 = snk_psi_B1 * snk_B2_Blocal_r2_props(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, Nw-1, jCprime, jSprime); + complex_expr flip_snk_B2_r2 = snk_psi_B1 * snk_B2_Blocal_r2_props(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, Nw-1, jCprime, jSprime); - computation flip_snk_B2_Blocal_r2_r_update("flip_snk_B2_Blocal_r2_r_update", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, flip_snk_B2_Blocal_r2_r_init(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + flip_snk_B2_r2.get_real()); - computation flip_snk_B2_Blocal_r2_i_update("flip_snk_B2_Blocal_r2_i_update", {t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, flip_snk_B2_Blocal_r2_i_init(t, y_out, y_in, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + flip_snk_B2_r2.get_imag()); + computation flip_snk_B2_Blocal_r2_r_update("flip_snk_B2_Blocal_r2_r_update", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, flip_snk_B2_Blocal_r2_r_init(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + flip_snk_B2_r2.get_real()); + computation flip_snk_B2_Blocal_r2_i_update("flip_snk_B2_Blocal_r2_i_update", {t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, n}, flip_snk_B2_Blocal_r2_i_init(t, y_out, y_in, nsc1, iCprime, iSprime, kCprime, kSprime, jCprime, jSprime, n) + flip_snk_B2_r2.get_imag()); /* Correlators */ @@ -893,299 +906,324 @@ void generate_function(std::string name) computation C_init_i("C_init_i", {t, x_out, rp, mpmH, r, npnH}, expr((double) 0)); // BB_BB - computation C_BB_BB_prop_init_r("C_BB_BB_prop_init_r", {t, x_out, x_in, x2, rp, m, r}, expr((double) 0)); - computation C_BB_BB_prop_init_i("C_BB_BB_prop_init_i", {t, x_out, x_in, x2, rp, m, r}, expr((double) 0)); + computation C_BB_BB_prop_init_r("C_BB_BB_prop_init_r", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1}, expr((double) 0)); + computation C_BB_BB_prop_init_i("C_BB_BB_prop_init_i", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1}, expr((double) 0)); + // b indexes the baryons at the source (b=0 means B1, b=1 means B2) b=0; // r1, b = 0 - complex_computation BB_BB_new_term_0_r1_b1("BB_BB_new_term_0_r1_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B1_Blocal_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - BB_BB_new_term_0_r1_b1.add_predicate((src_spins(rp, s, 0) == 1) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 0)); - complex_computation BB_BB_new_term_1_r1_b1("BB_BB_new_term_1_r1_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B2_Blocal_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - BB_BB_new_term_1_r1_b1.add_predicate((src_spins(rp, s, 0) == 1) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 1)); - complex_computation BB_BB_new_term_2_r1_b1("BB_BB_new_term_2_r1_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B1_Bfirst_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - BB_BB_new_term_2_r1_b1.add_predicate((src_spins(rp, s, 0) == 1) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 0)); - complex_computation BB_BB_new_term_3_r1_b1("BB_BB_new_term_3_r1_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B2_Bfirst_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - BB_BB_new_term_3_r1_b1.add_predicate((src_spins(rp, s, 0) == 1) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 1)); - complex_computation BB_BB_new_term_4_r1_b1("BB_BB_new_term_4_r1_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B1_Bsecond_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - BB_BB_new_term_4_r1_b1.add_predicate((src_spins(rp, s, 0) == 1) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 0)); - complex_computation BB_BB_new_term_5_r1_b1("BB_BB_new_term_5_r1_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B2_Bsecond_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - BB_BB_new_term_5_r1_b1.add_predicate((src_spins(rp, s, 0) == 1) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 1)); - complex_computation BB_BB_new_term_6_r1_b1("BB_BB_new_term_6_r1_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B1_Bthird_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - BB_BB_new_term_6_r1_b1.add_predicate((src_spins(rp, s, 0) == 1) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 1)); - complex_computation BB_BB_new_term_7_r1_b1("BB_BB_new_term_7_r1_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B2_Bthird_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - BB_BB_new_term_7_r1_b1.add_predicate((src_spins(rp, s, 0) == 1) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 0)); + complex_computation BB_BB_new_term_0_r1_b1("BB_BB_new_term_0_r1_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B1_Blocal_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + BB_BB_new_term_0_r1_b1.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); + complex_computation BB_BB_new_term_1_r1_b1("BB_BB_new_term_1_r1_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B1_Blocal_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + BB_BB_new_term_1_r1_b1.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation BB_BB_new_term_2_r1_b1("BB_BB_new_term_2_r1_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B1_Bfirst_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + BB_BB_new_term_2_r1_b1.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); + complex_computation BB_BB_new_term_3_r1_b1("BB_BB_new_term_3_r1_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B1_Bfirst_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + BB_BB_new_term_3_r1_b1.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation BB_BB_new_term_4_r1_b1("BB_BB_new_term_4_r1_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B1_Bsecond_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + BB_BB_new_term_4_r1_b1.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); + complex_computation BB_BB_new_term_5_r1_b1("BB_BB_new_term_5_r1_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B1_Bsecond_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + BB_BB_new_term_5_r1_b1.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation BB_BB_new_term_6_r1_b1("BB_BB_new_term_6_r1_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B1_Bthird_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + BB_BB_new_term_6_r1_b1.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation BB_BB_new_term_7_r1_b1("BB_BB_new_term_7_r1_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B1_Bthird_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + BB_BB_new_term_7_r1_b1.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); // r2, b = 0 - complex_computation BB_BB_new_term_0_r2_b1("BB_BB_new_term_0_r2_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B1_Blocal_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - BB_BB_new_term_0_r2_b1.add_predicate((src_spins(rp, s, 0) == 2) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 0)); - complex_computation BB_BB_new_term_1_r2_b1("BB_BB_new_term_1_r2_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B2_Blocal_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - BB_BB_new_term_1_r2_b1.add_predicate((src_spins(rp, s, 0) == 2) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 1)); - complex_computation BB_BB_new_term_2_r2_b1("BB_BB_new_term_2_r2_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B1_Bfirst_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - BB_BB_new_term_2_r2_b1.add_predicate((src_spins(rp, s, 0) == 2) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 0)); - complex_computation BB_BB_new_term_3_r2_b1("BB_BB_new_term_3_r2_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B2_Bfirst_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - BB_BB_new_term_3_r2_b1.add_predicate((src_spins(rp, s, 0) == 2) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 1)); - complex_computation BB_BB_new_term_4_r2_b1("BB_BB_new_term_4_r2_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B1_Bsecond_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - BB_BB_new_term_4_r2_b1.add_predicate((src_spins(rp, s, 0) == 2) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 0)); - complex_computation BB_BB_new_term_5_r2_b1("BB_BB_new_term_5_r2_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B2_Bsecond_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - BB_BB_new_term_5_r2_b1.add_predicate((src_spins(rp, s, 0) == 2) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 1)); - complex_computation BB_BB_new_term_6_r2_b1("BB_BB_new_term_6_r2_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B1_Bthird_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - BB_BB_new_term_6_r2_b1.add_predicate((src_spins(rp, s, 0) == 2) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 1)); - complex_computation BB_BB_new_term_7_r2_b1("BB_BB_new_term_7_r2_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B2_Bthird_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - BB_BB_new_term_7_r2_b1.add_predicate((src_spins(rp, s, 0) == 2) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 0)); + complex_computation BB_BB_new_term_0_r2_b1("BB_BB_new_term_0_r2_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B1_Blocal_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + BB_BB_new_term_0_r2_b1.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); + complex_computation BB_BB_new_term_1_r2_b1("BB_BB_new_term_1_r2_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B1_Blocal_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + BB_BB_new_term_1_r2_b1.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation BB_BB_new_term_2_r2_b1("BB_BB_new_term_2_r2_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B1_Bfirst_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + BB_BB_new_term_2_r2_b1.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); + complex_computation BB_BB_new_term_3_r2_b1("BB_BB_new_term_3_r2_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B1_Bfirst_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + BB_BB_new_term_3_r2_b1.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation BB_BB_new_term_4_r2_b1("BB_BB_new_term_4_r2_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B1_Bsecond_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + BB_BB_new_term_4_r2_b1.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); + complex_computation BB_BB_new_term_5_r2_b1("BB_BB_new_term_5_r2_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B1_Bsecond_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + BB_BB_new_term_5_r2_b1.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation BB_BB_new_term_6_r2_b1("BB_BB_new_term_6_r2_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B1_Bthird_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + BB_BB_new_term_6_r2_b1.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation BB_BB_new_term_7_r2_b1("BB_BB_new_term_7_r2_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B1_Bthird_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + BB_BB_new_term_7_r2_b1.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); b=1; // r1, b = 1 - complex_computation BB_BB_new_term_0_r1_b2("BB_BB_new_term_0_r1_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B1_Blocal_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - BB_BB_new_term_0_r1_b2.add_predicate((src_spins(rp, s, 1) == 1) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 0)); - complex_computation BB_BB_new_term_1_r1_b2("BB_BB_new_term_1_r1_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B2_Blocal_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - BB_BB_new_term_1_r1_b2.add_predicate((src_spins(rp, s, 1) == 1) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 1)); - complex_computation BB_BB_new_term_2_r1_b2("BB_BB_new_term_2_r1_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B1_Bfirst_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - BB_BB_new_term_2_r1_b2.add_predicate((src_spins(rp, s, 1) == 1) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 0)); - complex_computation BB_BB_new_term_3_r1_b2("BB_BB_new_term_3_r1_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B2_Bfirst_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - BB_BB_new_term_3_r1_b2.add_predicate((src_spins(rp, s, 1) == 1) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 1)); - complex_computation BB_BB_new_term_4_r1_b2("BB_BB_new_term_4_r1_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B1_Bsecond_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - BB_BB_new_term_4_r1_b2.add_predicate((src_spins(rp, s, 1) == 1) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 0)); - complex_computation BB_BB_new_term_5_r1_b2("BB_BB_new_term_5_r1_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B2_Bsecond_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - BB_BB_new_term_5_r1_b2.add_predicate((src_spins(rp, s, 1) == 1) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 1)); - complex_computation BB_BB_new_term_6_r1_b2("BB_BB_new_term_6_r1_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B1_Bthird_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - BB_BB_new_term_6_r1_b2.add_predicate((src_spins(rp, s, 1) == 1) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 1)); - complex_computation BB_BB_new_term_7_r1_b2("BB_BB_new_term_7_r1_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B2_Bthird_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - BB_BB_new_term_7_r1_b2.add_predicate((src_spins(rp, s, 1) == 1) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 0)); + complex_computation BB_BB_new_term_0_r1_b2("BB_BB_new_term_0_r1_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B2_Blocal_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + BB_BB_new_term_0_r1_b2.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); + complex_computation BB_BB_new_term_1_r1_b2("BB_BB_new_term_1_r1_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B2_Blocal_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + BB_BB_new_term_1_r1_b2.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation BB_BB_new_term_2_r1_b2("BB_BB_new_term_2_r1_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B2_Bfirst_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + BB_BB_new_term_2_r1_b2.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); + complex_computation BB_BB_new_term_3_r1_b2("BB_BB_new_term_3_r1_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B2_Bfirst_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + BB_BB_new_term_3_r1_b2.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation BB_BB_new_term_4_r1_b2("BB_BB_new_term_4_r1_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B2_Bsecond_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + BB_BB_new_term_4_r1_b2.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); + complex_computation BB_BB_new_term_5_r1_b2("BB_BB_new_term_5_r1_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B2_Bsecond_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + BB_BB_new_term_5_r1_b2.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation BB_BB_new_term_6_r1_b2("BB_BB_new_term_6_r1_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B2_Bthird_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + BB_BB_new_term_6_r1_b2.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation BB_BB_new_term_7_r1_b2("BB_BB_new_term_7_r1_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B2_Bthird_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + BB_BB_new_term_7_r1_b2.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); // r2, b = 1 - complex_computation BB_BB_new_term_0_r2_b2("BB_BB_new_term_0_r2_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B1_Blocal_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - BB_BB_new_term_0_r2_b2.add_predicate((src_spins(rp, s, 1) == 2) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 0)); - complex_computation BB_BB_new_term_1_r2_b2("BB_BB_new_term_1_r2_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B2_Blocal_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - BB_BB_new_term_1_r2_b2.add_predicate((src_spins(rp, s, 1) == 2) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 1)); - complex_computation BB_BB_new_term_2_r2_b2("BB_BB_new_term_2_r2_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B1_Bfirst_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - BB_BB_new_term_2_r2_b2.add_predicate((src_spins(rp, s, 1) == 2) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 0)); - complex_computation BB_BB_new_term_3_r2_b2("BB_BB_new_term_3_r2_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B2_Bfirst_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - BB_BB_new_term_3_r2_b2.add_predicate((src_spins(rp, s, 1) == 2) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 1)); - complex_computation BB_BB_new_term_4_r2_b2("BB_BB_new_term_4_r2_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B1_Bsecond_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - BB_BB_new_term_4_r2_b2.add_predicate((src_spins(rp, s, 1) == 2) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 0)); - complex_computation BB_BB_new_term_5_r2_b2("BB_BB_new_term_5_r2_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B2_Bsecond_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - BB_BB_new_term_5_r2_b2.add_predicate((src_spins(rp, s, 1) == 2) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 1)); - complex_computation BB_BB_new_term_6_r2_b2("BB_BB_new_term_6_r2_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B1_Bthird_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - BB_BB_new_term_6_r2_b2.add_predicate((src_spins(rp, s, 1) == 2) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 1)); - complex_computation BB_BB_new_term_7_r2_b2("BB_BB_new_term_7_r2_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, B2_Bthird_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - BB_BB_new_term_7_r2_b2.add_predicate((src_spins(rp, s, 1) == 2) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 0)); - - complex_expr prefactor(cast(p_float64, sigs(nperm)) * snk_weights(r, wnum) * src_spin_block_weights(rp, s), 0.0); - - complex_expr BB_BB_term_res_b1 = BB_BB_new_term_0_r1_b1(t, x_out, x_in, x2, rp, m, r, s, nperm, wnum); - complex_expr BB_BB_term_res_b2 = BB_BB_new_term_0_r1_b2(t, x_out, x_in, x2, rp, m, r, s, nperm, wnum); + complex_computation BB_BB_new_term_0_r2_b2("BB_BB_new_term_0_r2_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B2_Blocal_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + BB_BB_new_term_0_r2_b2.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); + complex_computation BB_BB_new_term_1_r2_b2("BB_BB_new_term_1_r2_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B2_Blocal_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + BB_BB_new_term_1_r2_b2.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation BB_BB_new_term_2_r2_b2("BB_BB_new_term_2_r2_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B2_Bfirst_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + BB_BB_new_term_2_r2_b2.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); + complex_computation BB_BB_new_term_3_r2_b2("BB_BB_new_term_3_r2_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B2_Bfirst_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + BB_BB_new_term_3_r2_b2.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation BB_BB_new_term_4_r2_b2("BB_BB_new_term_4_r2_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B2_Bsecond_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + BB_BB_new_term_4_r2_b2.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); + complex_computation BB_BB_new_term_5_r2_b2("BB_BB_new_term_5_r2_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B2_Bsecond_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + BB_BB_new_term_5_r2_b2.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation BB_BB_new_term_6_r2_b2("BB_BB_new_term_6_r2_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B2_Bthird_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + BB_BB_new_term_6_r2_b2.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation BB_BB_new_term_7_r2_b2("BB_BB_new_term_7_r2_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, B2_Bthird_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + BB_BB_new_term_7_r2_b2.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); + + complex_expr prefactor(cast(p_float64, sigs(nperm, msc1, nsc1)) * snk_weights(r, nsc1, wnum) * src_spin_block_weights(rp, s), 0.0); + + complex_expr BB_BB_term_res_b1 = BB_BB_new_term_0_r1_b1(t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum); + complex_expr BB_BB_term_res_b2 = BB_BB_new_term_0_r1_b2(t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum); complex_expr BB_BB_term_res = prefactor * BB_BB_term_res_b1 * BB_BB_term_res_b2; b=0; // r1, b = 0 - complex_computation flip_BB_BB_new_term_0_r1_b1("flip_BB_BB_new_term_0_r1_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B1_Blocal_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - flip_BB_BB_new_term_0_r1_b1.add_predicate((src_spins(rp, s, 0) == 1) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 0)); - complex_computation flip_BB_BB_new_term_1_r1_b1("flip_BB_BB_new_term_1_r1_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B2_Blocal_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - flip_BB_BB_new_term_1_r1_b1.add_predicate((src_spins(rp, s, 0) == 1) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 1)); - complex_computation flip_BB_BB_new_term_2_r1_b1("flip_BB_BB_new_term_2_r1_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B1_Bfirst_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - flip_BB_BB_new_term_2_r1_b1.add_predicate((src_spins(rp, s, 0) == 1) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 0)); - complex_computation flip_BB_BB_new_term_3_r1_b1("flip_BB_BB_new_term_3_r1_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B2_Bfirst_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - flip_BB_BB_new_term_3_r1_b1.add_predicate((src_spins(rp, s, 0) == 1) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 1)); - complex_computation flip_BB_BB_new_term_4_r1_b1("flip_BB_BB_new_term_4_r1_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B1_Bsecond_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - flip_BB_BB_new_term_4_r1_b1.add_predicate((src_spins(rp, s, 0) == 1) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 0)); - complex_computation flip_BB_BB_new_term_5_r1_b1("flip_BB_BB_new_term_5_r1_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B2_Bsecond_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - flip_BB_BB_new_term_5_r1_b1.add_predicate((src_spins(rp, s, 0) == 1) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 1)); - complex_computation flip_BB_BB_new_term_6_r1_b1("flip_BB_BB_new_term_6_r1_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B1_Bthird_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - flip_BB_BB_new_term_6_r1_b1.add_predicate((src_spins(rp, s, 0) == 1) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 1)); - complex_computation flip_BB_BB_new_term_7_r1_b1("flip_BB_BB_new_term_7_r1_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B2_Bthird_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - flip_BB_BB_new_term_7_r1_b1.add_predicate((src_spins(rp, s, 0) == 1) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 0)); + complex_computation flip_BB_BB_new_term_0_r1_b1("flip_BB_BB_new_term_0_r1_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B1_Blocal_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + flip_BB_BB_new_term_0_r1_b1.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); + complex_computation flip_BB_BB_new_term_1_r1_b1("flip_BB_BB_new_term_1_r1_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B1_Blocal_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + flip_BB_BB_new_term_1_r1_b1.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation flip_BB_BB_new_term_2_r1_b1("flip_BB_BB_new_term_2_r1_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B1_Bfirst_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + flip_BB_BB_new_term_2_r1_b1.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); + complex_computation flip_BB_BB_new_term_3_r1_b1("flip_BB_BB_new_term_3_r1_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B1_Bfirst_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + flip_BB_BB_new_term_3_r1_b1.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation flip_BB_BB_new_term_4_r1_b1("flip_BB_BB_new_term_4_r1_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B1_Bsecond_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + flip_BB_BB_new_term_4_r1_b1.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); + complex_computation flip_BB_BB_new_term_5_r1_b1("flip_BB_BB_new_term_5_r1_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B1_Bsecond_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + flip_BB_BB_new_term_5_r1_b1.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation flip_BB_BB_new_term_6_r1_b1("flip_BB_BB_new_term_6_r1_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B1_Bthird_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + flip_BB_BB_new_term_6_r1_b1.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation flip_BB_BB_new_term_7_r1_b1("flip_BB_BB_new_term_7_r1_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B1_Bthird_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + flip_BB_BB_new_term_7_r1_b1.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); // r2, b = 0 - complex_computation flip_BB_BB_new_term_0_r2_b1("flip_BB_BB_new_term_0_r2_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B1_Blocal_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - flip_BB_BB_new_term_0_r2_b1.add_predicate((src_spins(rp, s, 0) == 2) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 0)); - complex_computation flip_BB_BB_new_term_1_r2_b1("flip_BB_BB_new_term_1_r2_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B2_Blocal_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - flip_BB_BB_new_term_1_r2_b1.add_predicate((src_spins(rp, s, 0) == 2) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 1)); - complex_computation flip_BB_BB_new_term_2_r2_b1("flip_BB_BB_new_term_2_r2_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B1_Bfirst_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - flip_BB_BB_new_term_2_r2_b1.add_predicate((src_spins(rp, s, 0) == 2) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 0)); - complex_computation flip_BB_BB_new_term_3_r2_b1("flip_BB_BB_new_term_3_r2_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B2_Bfirst_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - flip_BB_BB_new_term_3_r2_b1.add_predicate((src_spins(rp, s, 0) == 2) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 1)); - complex_computation flip_BB_BB_new_term_4_r2_b1("flip_BB_BB_new_term_4_r2_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B1_Bsecond_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - flip_BB_BB_new_term_4_r2_b1.add_predicate((src_spins(rp, s, 0) == 2) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 0)); - complex_computation flip_BB_BB_new_term_5_r2_b1("flip_BB_BB_new_term_5_r2_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B2_Bsecond_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - flip_BB_BB_new_term_5_r2_b1.add_predicate((src_spins(rp, s, 0) == 2) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 1)); - complex_computation flip_BB_BB_new_term_6_r2_b1("flip_BB_BB_new_term_6_r2_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B1_Bthird_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - flip_BB_BB_new_term_6_r2_b1.add_predicate((src_spins(rp, s, 0) == 2) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 1)); - complex_computation flip_BB_BB_new_term_7_r2_b1("flip_BB_BB_new_term_7_r2_b1", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B2_Bthird_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 0), snk_spin_weights(r, nperm, wnum, 0, 0), snk_color_weights(r, nperm, wnum, 2, 0), snk_spin_weights(r, nperm, wnum, 2, 0), snk_color_weights(r, nperm, wnum, 1, 0), snk_spin_weights(r, nperm, wnum, 1, 0), m)); - flip_BB_BB_new_term_7_r2_b1.add_predicate((src_spins(rp, s, 0) == 2) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 0)); + complex_computation flip_BB_BB_new_term_0_r2_b1("flip_BB_BB_new_term_0_r2_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B1_Blocal_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + flip_BB_BB_new_term_0_r2_b1.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); + complex_computation flip_BB_BB_new_term_1_r2_b1("flip_BB_BB_new_term_1_r2_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B1_Blocal_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + flip_BB_BB_new_term_1_r2_b1.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation flip_BB_BB_new_term_2_r2_b1("flip_BB_BB_new_term_2_r2_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B1_Bfirst_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + flip_BB_BB_new_term_2_r2_b1.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); + complex_computation flip_BB_BB_new_term_3_r2_b1("flip_BB_BB_new_term_3_r2_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B1_Bfirst_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + flip_BB_BB_new_term_3_r2_b1.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation flip_BB_BB_new_term_4_r2_b1("flip_BB_BB_new_term_4_r2_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B1_Bsecond_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + flip_BB_BB_new_term_4_r2_b1.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); + complex_computation flip_BB_BB_new_term_5_r2_b1("flip_BB_BB_new_term_5_r2_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B1_Bsecond_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + flip_BB_BB_new_term_5_r2_b1.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation flip_BB_BB_new_term_6_r2_b1("flip_BB_BB_new_term_6_r2_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B1_Bthird_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + flip_BB_BB_new_term_6_r2_b1.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation flip_BB_BB_new_term_7_r2_b1("flip_BB_BB_new_term_7_r2_b1", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B1_Bthird_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 0), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 0), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 0), m)); + flip_BB_BB_new_term_7_r2_b1.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); b=1; // r1, b = 1 - complex_computation flip_BB_BB_new_term_0_r1_b2("flip_BB_BB_new_term_0_r1_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B1_Blocal_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - flip_BB_BB_new_term_0_r1_b2.add_predicate((src_spins(rp, s, 1) == 1) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 0)); - complex_computation flip_BB_BB_new_term_1_r1_b2("flip_BB_BB_new_term_1_r1_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B2_Blocal_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - flip_BB_BB_new_term_1_r1_b2.add_predicate((src_spins(rp, s, 1) == 1) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 1)); - complex_computation flip_BB_BB_new_term_2_r1_b2("flip_BB_BB_new_term_2_r1_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B1_Bfirst_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - flip_BB_BB_new_term_2_r1_b2.add_predicate((src_spins(rp, s, 1) == 1) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 0)); - complex_computation flip_BB_BB_new_term_3_r1_b2("flip_BB_BB_new_term_3_r1_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B2_Bfirst_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - flip_BB_BB_new_term_3_r1_b2.add_predicate((src_spins(rp, s, 1) == 1) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 1)); - complex_computation flip_BB_BB_new_term_4_r1_b2("flip_BB_BB_new_term_4_r1_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B1_Bsecond_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - flip_BB_BB_new_term_4_r1_b2.add_predicate((src_spins(rp, s, 1) == 1) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 0)); - complex_computation flip_BB_BB_new_term_5_r1_b2("flip_BB_BB_new_term_5_r1_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B2_Bsecond_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - flip_BB_BB_new_term_5_r1_b2.add_predicate((src_spins(rp, s, 1) == 1) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 1)); - complex_computation flip_BB_BB_new_term_6_r1_b2("flip_BB_BB_new_term_6_r1_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B1_Bthird_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - flip_BB_BB_new_term_6_r1_b2.add_predicate((src_spins(rp, s, 1) == 1) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 1)); - complex_computation flip_BB_BB_new_term_7_r1_b2("flip_BB_BB_new_term_7_r1_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B2_Bthird_r1_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - flip_BB_BB_new_term_7_r1_b2.add_predicate((src_spins(rp, s, 1) == 1) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 0)); + complex_computation flip_BB_BB_new_term_0_r1_b2("flip_BB_BB_new_term_0_r1_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B2_Blocal_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + flip_BB_BB_new_term_0_r1_b2.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); + complex_computation flip_BB_BB_new_term_1_r1_b2("flip_BB_BB_new_term_1_r1_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B2_Blocal_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + flip_BB_BB_new_term_1_r1_b2.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation flip_BB_BB_new_term_2_r1_b2("flip_BB_BB_new_term_2_r1_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B2_Bfirst_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + flip_BB_BB_new_term_2_r1_b2.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); + complex_computation flip_BB_BB_new_term_3_r1_b2("flip_BB_BB_new_term_3_r1_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B2_Bfirst_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + flip_BB_BB_new_term_3_r1_b2.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation flip_BB_BB_new_term_4_r1_b2("flip_BB_BB_new_term_4_r1_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B2_Bsecond_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + flip_BB_BB_new_term_4_r1_b2.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); + complex_computation flip_BB_BB_new_term_5_r1_b2("flip_BB_BB_new_term_5_r1_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B2_Bsecond_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + flip_BB_BB_new_term_5_r1_b2.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation flip_BB_BB_new_term_6_r1_b2("flip_BB_BB_new_term_6_r1_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B2_Bthird_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + flip_BB_BB_new_term_6_r1_b2.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation flip_BB_BB_new_term_7_r1_b2("flip_BB_BB_new_term_7_r1_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B2_Bthird_r1_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + flip_BB_BB_new_term_7_r1_b2.add_predicate((src_spins(rp, s, b) == 1) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); // r2, b = 1 - complex_computation flip_BB_BB_new_term_0_r2_b2("flip_BB_BB_new_term_0_r2_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B1_Blocal_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - flip_BB_BB_new_term_0_r2_b2.add_predicate((src_spins(rp, s, 1) == 2) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 0)); - complex_computation flip_BB_BB_new_term_1_r2_b2("flip_BB_BB_new_term_1_r2_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B2_Blocal_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - flip_BB_BB_new_term_1_r2_b2.add_predicate((src_spins(rp, s, 1) == 2) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 1)); - complex_computation flip_BB_BB_new_term_2_r2_b2("flip_BB_BB_new_term_2_r2_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B1_Bfirst_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - flip_BB_BB_new_term_2_r2_b2.add_predicate((src_spins(rp, s, 1) == 2) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 0)); - complex_computation flip_BB_BB_new_term_3_r2_b2("flip_BB_BB_new_term_3_r2_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B2_Bfirst_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - flip_BB_BB_new_term_3_r2_b2.add_predicate((src_spins(rp, s, 1) == 2) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 1)); - complex_computation flip_BB_BB_new_term_4_r2_b2("flip_BB_BB_new_term_4_r2_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B1_Bsecond_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - flip_BB_BB_new_term_4_r2_b2.add_predicate((src_spins(rp, s, 1) == 2) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 0)); - complex_computation flip_BB_BB_new_term_5_r2_b2("flip_BB_BB_new_term_5_r2_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B2_Bsecond_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - flip_BB_BB_new_term_5_r2_b2.add_predicate((src_spins(rp, s, 1) == 2) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 1)); - complex_computation flip_BB_BB_new_term_6_r2_b2("flip_BB_BB_new_term_6_r2_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B1_Bthird_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - flip_BB_BB_new_term_6_r2_b2.add_predicate((src_spins(rp, s, 1) == 2) && (snk_b(nperm, 0, b) == 0 && snk_b(nperm, 1, b) == 0 && snk_b(nperm, 2, b) == 1)); - complex_computation flip_BB_BB_new_term_7_r2_b2("flip_BB_BB_new_term_7_r2_b2", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, flip_B2_Bthird_r2_init(t, x_out, x_in, x2, snk_color_weights(r, nperm, wnum, 0, 1), snk_spin_weights(r, nperm, wnum, 0, 1), snk_color_weights(r, nperm, wnum, 2, 1), snk_spin_weights(r, nperm, wnum, 2, 1), snk_color_weights(r, nperm, wnum, 1, 1), snk_spin_weights(r, nperm, wnum, 1, 1), m)); - flip_BB_BB_new_term_7_r2_b2.add_predicate((src_spins(rp, s, 1) == 2) && (snk_b(nperm, 0, b) == 1 && snk_b(nperm, 1, b) == 1 && snk_b(nperm, 2, b) == 0)); - - complex_expr flip_BB_BB_term_res_b1 = flip_BB_BB_new_term_0_r1_b1(t, x_out, x_in, x2, rp, m, r, s, nperm, wnum); - complex_expr flip_BB_BB_term_res_b2 = flip_BB_BB_new_term_0_r1_b2(t, x_out, x_in, x2, rp, m, r, s, nperm, wnum); + complex_computation flip_BB_BB_new_term_0_r2_b2("flip_BB_BB_new_term_0_r2_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B2_Blocal_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + flip_BB_BB_new_term_0_r2_b2.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); + complex_computation flip_BB_BB_new_term_1_r2_b2("flip_BB_BB_new_term_1_r2_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B2_Blocal_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + flip_BB_BB_new_term_1_r2_b2.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation flip_BB_BB_new_term_2_r2_b2("flip_BB_BB_new_term_2_r2_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B2_Bfirst_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + flip_BB_BB_new_term_2_r2_b2.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); + complex_computation flip_BB_BB_new_term_3_r2_b2("flip_BB_BB_new_term_3_r2_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B2_Bfirst_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + flip_BB_BB_new_term_3_r2_b2.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation flip_BB_BB_new_term_4_r2_b2("flip_BB_BB_new_term_4_r2_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B2_Bsecond_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + flip_BB_BB_new_term_4_r2_b2.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); + complex_computation flip_BB_BB_new_term_5_r2_b2("flip_BB_BB_new_term_5_r2_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B2_Bsecond_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + flip_BB_BB_new_term_5_r2_b2.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation flip_BB_BB_new_term_6_r2_b2("flip_BB_BB_new_term_6_r2_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B2_Bthird_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + flip_BB_BB_new_term_6_r2_b2.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 0 && snk_b(nperm, msc1, nsc1, 1, b) == 0 && snk_b(nperm, msc1, nsc1, 2, b) == 1)); + complex_computation flip_BB_BB_new_term_7_r2_b2("flip_BB_BB_new_term_7_r2_b2", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, flip_B2_Bthird_r2_init(t, x_out, x_in, x2, msc1, snk_color_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 0, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 2, 1), snk_color_weights(r, nperm, msc1, nsc1, wnum, 1, 1), snk_spin_weights(r, nperm, msc1, nsc1, wnum, 1, 1), m)); + flip_BB_BB_new_term_7_r2_b2.add_predicate((src_spins(rp, s, b) == 2) && (snk_b(nperm, msc1, nsc1, 0, b) == 1 && snk_b(nperm, msc1, nsc1, 1, b) == 1 && snk_b(nperm, msc1, nsc1, 2, b) == 0)); + + complex_expr flip_BB_BB_term_res_b1 = flip_BB_BB_new_term_0_r1_b1(t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum); + complex_expr flip_BB_BB_term_res_b2 = flip_BB_BB_new_term_0_r1_b2(t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum); complex_expr flip_BB_BB_term_res = prefactor * flip_BB_BB_term_res_b1 * flip_BB_BB_term_res_b2; - computation C_BB_BB_prop_update_r("C_BB_BB_prop_update_r", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, C_BB_BB_prop_init_r(t, x_out, x_in, x2, rp, m, r) + (BB_BB_term_res.get_real() + flip_BB_BB_term_res.get_real())/2.0 ); - computation C_BB_BB_prop_update_i("C_BB_BB_prop_update_i", {t, x_out, x_in, x2, rp, m, r, s, nperm, wnum}, C_BB_BB_prop_init_i(t, x_out, x_in, x2, rp, m, r) + (BB_BB_term_res.get_imag() + flip_BB_BB_term_res.get_imag())/2.0 ); + computation C_BB_BB_prop_update_r("C_BB_BB_prop_update_r", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, C_BB_BB_prop_init_r(t, x_out, x_in, x2, msc1, rp, m, r, nsc1) + (BB_BB_term_res.get_real() + flip_BB_BB_term_res.get_real())/2.0 ); + computation C_BB_BB_prop_update_i("C_BB_BB_prop_update_i", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, s, nperm, wnum}, C_BB_BB_prop_init_i(t, x_out, x_in, x2, msc1, rp, m, r, nsc1) + (BB_BB_term_res.get_imag() + flip_BB_BB_term_res.get_imag())/2.0 ); complex_computation C_BB_BB_prop_update(&C_BB_BB_prop_update_r, &C_BB_BB_prop_update_i); - complex_expr BB_BB_term_s = (snk_psi_B1_ue * snk_psi_B2_x2_ue + snk_psi_B1_x2_ue * snk_psi_B2_ue) * C_BB_BB_prop_update(t, x_out, x_in, x2, rp, m, r, 1, Nperms-1, Nw2-1); - complex_expr BB_BB_term_b = snk_psi * C_BB_BB_prop_update(t, x_out, x_in, x2, rp, m, r, 1, Nperms-1, Nw2-1); + complex_expr BB_BB_term_s = (snk_psi_B1_ue * snk_psi_B2_x2_ue + snk_psi_B1_x2_ue * snk_psi_B2_ue) * C_BB_BB_prop_update(t, x_out, x_in, x2, msc1, rp, m, r, nsc1, 1, Nperms-1, Nw2-1); + complex_expr BB_BB_term_b = snk_psi * C_BB_BB_prop_update(t, x_out, x_in, x2, msc1, rp, m, r, nsc1, 1, Nperms-1, Nw2-1); - computation C_BB_BB_update_s_r("C_BB_BB_update_s_r", {t, x_out, x_in, x2, rp, m, r, nue}, C_init_r(t, x_out, rp, m, r, NEntangled+nue) + BB_BB_term_s.get_real()); - computation C_BB_BB_update_s_i("C_BB_BB_update_s_i", {t, x_out, x_in, x2, rp, m, r, nue}, C_init_i(t, x_out, rp, m, r, NEntangled+nue) + BB_BB_term_s.get_imag()); + computation C_BB_BB_update_s_r("C_BB_BB_update_s_r", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, nue}, C_init_r(t, x_out, rp, msc1*Nsrc+m, r, nsc1*Nsnk+NEntangled+nue) + BB_BB_term_s.get_real()); + computation C_BB_BB_update_s_i("C_BB_BB_update_s_i", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, nue}, C_init_i(t, x_out, rp, msc1*Nsrc+m, r, nsc1*Nsnk+NEntangled+nue) + BB_BB_term_s.get_imag()); - computation C_BB_BB_update_b_r("C_BB_BB_update_b_r", {t, x_out, x_in, x2, rp, m, r, ne}, C_init_r(t, x_out, rp, m, r, ne) + BB_BB_term_b.get_real()); - computation C_BB_BB_update_b_i("C_BB_BB_update_b_i", {t, x_out, x_in, x2, rp, m, r, ne}, C_init_i(t, x_out, rp, m, r, ne) + BB_BB_term_b.get_imag()); + computation C_BB_BB_update_b_r("C_BB_BB_update_b_r", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, ne}, C_init_r(t, x_out, rp, msc1*Nsrc+m, r, nsc1*Nsnk+ne) + BB_BB_term_b.get_real()); + computation C_BB_BB_update_b_i("C_BB_BB_update_b_i", {t, x_out, x_in, x2, msc1, rp, m, r, nsc1, ne}, C_init_i(t, x_out, rp, msc1*Nsrc+m, r, nsc1*Nsnk+ne) + BB_BB_term_b.get_imag()); // BB_H - computation C_BB_H_prop_init_r("C_BB_H_prop_init_r", {t, x_out, x_in, rp, m, r}, expr((double) 0)); - computation C_BB_H_prop_init_i("C_BB_H_prop_init_i", {t, x_out, x_in, rp, m, r}, expr((double) 0)); + computation C_BB_H_prop_init_r("C_BB_H_prop_init_r", {t, x_out, x_in, msc1, rp, m, r, nscH}, expr((double) 0)); + computation C_BB_H_prop_init_i("C_BB_H_prop_init_i", {t, x_out, x_in, msc1, rp, m, r, nscH}, expr((double) 0)); - complex_computation BB_H_new_term_0_r1_b1("BB_H_new_term_0_r1_b1", {t, x_out, x_in, rp, m, r, s, nperm, wnumHex}, src_B1_Blocal_r1_init(t, x_out, x_in, hex_snk_color_weights(r, nperm, wnumHex, 0, 0), hex_snk_spin_weights(r, nperm, wnumHex, 0, 0), hex_snk_color_weights(r, nperm, wnumHex, 2, 0), hex_snk_spin_weights(r, nperm, wnumHex, 2, 0), hex_snk_color_weights(r, nperm, wnumHex, 1, 0), hex_snk_spin_weights(r, nperm, wnumHex, 1, 0), m)); - BB_H_new_term_0_r1_b1.add_predicate((src_spins(rp, s, 0) == 1)); - complex_computation BB_H_new_term_0_r2_b1("BB_H_new_term_0_r2_b1", {t, x_out, x_in, rp, m, r, s, nperm, wnumHex}, src_B1_Blocal_r2_init(t, x_out, x_in, hex_snk_color_weights(r, nperm, wnumHex, 0, 0), hex_snk_spin_weights(r, nperm, wnumHex, 0, 0), hex_snk_color_weights(r, nperm, wnumHex, 2, 0), hex_snk_spin_weights(r, nperm, wnumHex, 2, 0), hex_snk_color_weights(r, nperm, wnumHex, 1, 0), hex_snk_spin_weights(r, nperm, wnumHex, 1, 0), m)); - BB_H_new_term_0_r2_b1.add_predicate((src_spins(rp, s, 0) == 2)); + complex_computation BB_H_new_term_0_r1_b1("BB_H_new_term_0_r1_b1", {t, x_out, x_in, msc1, rp, m, r, nscH, s, nperm, wnumHex}, src_B1_Blocal_r1_init(t, x_out, x_in, msc1, hex_snk_color_weights(r, nperm, msc1, nscH, wnumHex, 0, 0), hex_snk_spin_weights(r, nperm, msc1, nscH, wnumHex, 0, 0), hex_snk_color_weights(r, nperm, msc1, nscH, wnumHex, 2, 0), hex_snk_spin_weights(r, nperm, msc1, nscH, wnumHex, 2, 0), hex_snk_color_weights(r, nperm, msc1, nscH, wnumHex, 1, 0), hex_snk_spin_weights(r, nperm, msc1, nscH, wnumHex, 1, 0), m)); + BB_H_new_term_0_r1_b1.add_predicate((cast(p_float64, src_spins(rp, s, 0)) == 1.0) && (hex_snk_weights(r, nscH, wnumHex) * src_spin_block_weights(rp, s) != 0.0)); + complex_computation BB_H_new_term_0_r2_b1("BB_H_new_term_0_r2_b1", {t, x_out, x_in, msc1, rp, m, r, nscH, s, nperm, wnumHex}, src_B1_Blocal_r2_init(t, x_out, x_in, msc1, hex_snk_color_weights(r, nperm, msc1, nscH, wnumHex, 0, 0), hex_snk_spin_weights(r, nperm, msc1, nscH, wnumHex, 0, 0), hex_snk_color_weights(r, nperm, msc1, nscH, wnumHex, 2, 0), hex_snk_spin_weights(r, nperm, msc1, nscH, wnumHex, 2, 0), hex_snk_color_weights(r, nperm, msc1, nscH, wnumHex, 1, 0), hex_snk_spin_weights(r, nperm, msc1, nscH, wnumHex, 1, 0), m)); + BB_H_new_term_0_r2_b1.add_predicate((cast(p_float64, src_spins(rp, s, 0)) == 2.0) && (hex_snk_weights(r, nscH, wnumHex) * src_spin_block_weights(rp, s) != 0.0)); - complex_computation BB_H_new_term_0_r1_b2("BB_H_new_term_0_r1_b2", {t, x_out, x_in, rp, m, r, s, nperm, wnumHex}, src_B2_Blocal_r1_init(t, x_out, x_in, hex_snk_color_weights(r, nperm, wnumHex, 0, 1), hex_snk_spin_weights(r, nperm, wnumHex, 0, 1), hex_snk_color_weights(r, nperm, wnumHex, 2, 1), hex_snk_spin_weights(r, nperm, wnumHex, 2, 1), hex_snk_color_weights(r, nperm, wnumHex, 1, 1), hex_snk_spin_weights(r, nperm, wnumHex, 1, 1), m)); - BB_H_new_term_0_r1_b2.add_predicate((src_spins(rp, s, 1) == 1)); - complex_computation BB_H_new_term_0_r2_b2("BB_H_new_term_0_r2_b2", {t, x_out, x_in, rp, m, r, s, nperm, wnumHex}, src_B2_Blocal_r2_init(t, x_out, x_in, hex_snk_color_weights(r, nperm, wnumHex, 0, 1), hex_snk_spin_weights(r, nperm, wnumHex, 0, 1), hex_snk_color_weights(r, nperm, wnumHex, 2, 1), hex_snk_spin_weights(r, nperm, wnumHex, 2, 1), hex_snk_color_weights(r, nperm, wnumHex, 1, 1), hex_snk_spin_weights(r, nperm, wnumHex, 1, 1), m)); - BB_H_new_term_0_r2_b2.add_predicate((src_spins(rp, s, 1) == 2)); + complex_computation BB_H_new_term_0_r1_b2("BB_H_new_term_0_r1_b2", {t, x_out, x_in, msc1, rp, m, r, nscH, s, nperm, wnumHex}, src_B2_Blocal_r1_init(t, x_out, x_in, msc1, hex_snk_color_weights(r, nperm, msc1, nscH, wnumHex, 0, 1), hex_snk_spin_weights(r, nperm, msc1, nscH, wnumHex, 0, 1), hex_snk_color_weights(r, nperm, msc1, nscH, wnumHex, 2, 1), hex_snk_spin_weights(r, nperm, msc1, nscH, wnumHex, 2, 1), hex_snk_color_weights(r, nperm, msc1, nscH, wnumHex, 1, 1), hex_snk_spin_weights(r, nperm, msc1, nscH, wnumHex, 1, 1), m)); + BB_H_new_term_0_r1_b2.add_predicate((cast(p_float64, src_spins(rp, s, 1)) == 1.0) && (hex_snk_weights(r, nscH, wnumHex) * src_spin_block_weights(rp, s) != 0.0)); + complex_computation BB_H_new_term_0_r2_b2("BB_H_new_term_0_r2_b2", {t, x_out, x_in, msc1, rp, m, r, nscH, s, nperm, wnumHex}, src_B2_Blocal_r2_init(t, x_out, x_in, msc1, hex_snk_color_weights(r, nperm, msc1, nscH, wnumHex, 0, 1), hex_snk_spin_weights(r, nperm, msc1, nscH, wnumHex, 0, 1), hex_snk_color_weights(r, nperm, msc1, nscH, wnumHex, 2, 1), hex_snk_spin_weights(r, nperm, msc1, nscH, wnumHex, 2, 1), hex_snk_color_weights(r, nperm, msc1, nscH, wnumHex, 1, 1), hex_snk_spin_weights(r, nperm, msc1, nscH, wnumHex, 1, 1), m)); + BB_H_new_term_0_r2_b2.add_predicate((cast(p_float64, src_spins(rp, s, 1)) == 2.0) && (hex_snk_weights(r, nscH, wnumHex) * src_spin_block_weights(rp, s) != 0.0)); - complex_expr BB_H_term_res_b1 = BB_H_new_term_0_r1_b1(t, x_out, x_in, rp, m, r, s, nperm, wnumHex); - complex_expr BB_H_term_res_b2 = BB_H_new_term_0_r1_b2(t, x_out, x_in, rp, m, r, s, nperm, wnumHex); + complex_expr BB_H_term_res_b1 = BB_H_new_term_0_r1_b1(t, x_out, x_in, msc1, rp, m, r, nscH, s, nperm, wnumHex); + complex_expr BB_H_term_res_b2 = BB_H_new_term_0_r1_b2(t, x_out, x_in, msc1, rp, m, r, nscH, s, nperm, wnumHex); - complex_expr src_hex_prefactor(cast(p_float64, sigs(nperm)) * hex_snk_weights(r, wnumHex) * src_spin_block_weights(rp, s), 0.0); + complex_expr src_hex_prefactor(cast(p_float64, hex_sigs(nperm, msc1)) * hex_snk_weights(r, nscH, wnumHex) * src_spin_block_weights(rp, s), 0.0); complex_expr BB_H_term_res = src_hex_prefactor * BB_H_term_res_b1 * BB_H_term_res_b2; - complex_computation flip_BB_H_new_term_0_r1_b1("flip_BB_H_new_term_0_r1_b1", {t, x_out, x_in, rp, m, r, s, nperm, wnumHex}, flip_src_B1_Blocal_r1_init(t, x_out, x_in, hex_snk_color_weights(r, nperm, wnumHex, 0, 0), hex_snk_spin_weights(r, nperm, wnumHex, 0, 0), hex_snk_color_weights(r, nperm, wnumHex, 2, 0), hex_snk_spin_weights(r, nperm, wnumHex, 2, 0), hex_snk_color_weights(r, nperm, wnumHex, 1, 0), hex_snk_spin_weights(r, nperm, wnumHex, 1, 0), m)); - flip_BB_H_new_term_0_r1_b1.add_predicate((src_spins(rp, s, 0) == 1)); - complex_computation flip_BB_H_new_term_0_r2_b1("flip_BB_H_new_term_0_r2_b1", {t, x_out, x_in, rp, m, r, s, nperm, wnumHex}, flip_src_B1_Blocal_r2_init(t, x_out, x_in, hex_snk_color_weights(r, nperm, wnumHex, 0, 0), hex_snk_spin_weights(r, nperm, wnumHex, 0, 0), hex_snk_color_weights(r, nperm, wnumHex, 2, 0), hex_snk_spin_weights(r, nperm, wnumHex, 2, 0), hex_snk_color_weights(r, nperm, wnumHex, 1, 0), hex_snk_spin_weights(r, nperm, wnumHex, 1, 0), m)); - flip_BB_H_new_term_0_r2_b1.add_predicate((src_spins(rp, s, 0) == 2)); + complex_computation flip_BB_H_new_term_0_r1_b1("flip_BB_H_new_term_0_r1_b1", {t, x_out, x_in, msc1, rp, m, r, nscH, s, nperm, wnumHex}, flip_src_B1_Blocal_r1_init(t, x_out, x_in, msc1, hex_snk_color_weights(r, nperm, msc1, nscH, wnumHex, 0, 0), hex_snk_spin_weights(r, nperm, msc1, nscH, wnumHex, 0, 0), hex_snk_color_weights(r, nperm, msc1, nscH, wnumHex, 2, 0), hex_snk_spin_weights(r, nperm, msc1, nscH, wnumHex, 2, 0), hex_snk_color_weights(r, nperm, msc1, nscH, wnumHex, 1, 0), hex_snk_spin_weights(r, nperm, msc1, nscH, wnumHex, 1, 0), m)); + flip_BB_H_new_term_0_r1_b1.add_predicate((cast(p_float64, src_spins(rp, s, 0)) == 1.0) && (hex_snk_weights(r, nscH, wnumHex) * src_spin_block_weights(rp, s) != 0.0)); + complex_computation flip_BB_H_new_term_0_r2_b1("flip_BB_H_new_term_0_r2_b1", {t, x_out, x_in, msc1, rp, m, r, nscH, s, nperm, wnumHex}, flip_src_B1_Blocal_r2_init(t, x_out, x_in, msc1, hex_snk_color_weights(r, nperm, msc1, nscH, wnumHex, 0, 0), hex_snk_spin_weights(r, nperm, msc1, nscH, wnumHex, 0, 0), hex_snk_color_weights(r, nperm, msc1, nscH, wnumHex, 2, 0), hex_snk_spin_weights(r, nperm, msc1, nscH, wnumHex, 2, 0), hex_snk_color_weights(r, nperm, msc1, nscH, wnumHex, 1, 0), hex_snk_spin_weights(r, nperm, msc1, nscH, wnumHex, 1, 0), m)); + flip_BB_H_new_term_0_r2_b1.add_predicate((cast(p_float64, src_spins(rp, s, 0)) == 2.0) && (hex_snk_weights(r, nscH, wnumHex) * src_spin_block_weights(rp, s) != 0.0)); - complex_computation flip_BB_H_new_term_0_r1_b2("flip_BB_H_new_term_0_r1_b2", {t, x_out, x_in, rp, m, r, s, nperm, wnumHex}, flip_src_B2_Blocal_r1_init(t, x_out, x_in, hex_snk_color_weights(r, nperm, wnumHex, 0, 1), hex_snk_spin_weights(r, nperm, wnumHex, 0, 1), hex_snk_color_weights(r, nperm, wnumHex, 2, 1), hex_snk_spin_weights(r, nperm, wnumHex, 2, 1), hex_snk_color_weights(r, nperm, wnumHex, 1, 1), hex_snk_spin_weights(r, nperm, wnumHex, 1, 1), m)); - flip_BB_H_new_term_0_r1_b2.add_predicate((src_spins(rp, s, 1) == 1)); - complex_computation flip_BB_H_new_term_0_r2_b2("flip_BB_H_new_term_0_r2_b2", {t, x_out, x_in, rp, m, r, s, nperm, wnumHex}, flip_src_B2_Blocal_r2_init(t, x_out, x_in, hex_snk_color_weights(r, nperm, wnumHex, 0, 1), hex_snk_spin_weights(r, nperm, wnumHex, 0, 1), hex_snk_color_weights(r, nperm, wnumHex, 2, 1), hex_snk_spin_weights(r, nperm, wnumHex, 2, 1), hex_snk_color_weights(r, nperm, wnumHex, 1, 1), hex_snk_spin_weights(r, nperm, wnumHex, 1, 1), m)); - flip_BB_H_new_term_0_r2_b2.add_predicate((src_spins(rp, s, 1) == 2)); + complex_computation flip_BB_H_new_term_0_r1_b2("flip_BB_H_new_term_0_r1_b2", {t, x_out, x_in, msc1, rp, m, r, nscH, s, nperm, wnumHex}, flip_src_B2_Blocal_r1_init(t, x_out, x_in, msc1, hex_snk_color_weights(r, nperm, msc1, nscH, wnumHex, 0, 1), hex_snk_spin_weights(r, nperm, msc1, nscH, wnumHex, 0, 1), hex_snk_color_weights(r, nperm, msc1, nscH, wnumHex, 2, 1), hex_snk_spin_weights(r, nperm, msc1, nscH, wnumHex, 2, 1), hex_snk_color_weights(r, nperm, msc1, nscH, wnumHex, 1, 1), hex_snk_spin_weights(r, nperm, msc1, nscH, wnumHex, 1, 1), m)); + flip_BB_H_new_term_0_r1_b2.add_predicate((cast(p_float64, src_spins(rp, s, 1)) == 1.0) && (hex_snk_weights(r, nscH, wnumHex) * src_spin_block_weights(rp, s) != 0.0)); + complex_computation flip_BB_H_new_term_0_r2_b2("flip_BB_H_new_term_0_r2_b2", {t, x_out, x_in, msc1, rp, m, r, nscH, s, nperm, wnumHex}, flip_src_B2_Blocal_r2_init(t, x_out, x_in, msc1, hex_snk_color_weights(r, nperm, msc1, nscH, wnumHex, 0, 1), hex_snk_spin_weights(r, nperm, msc1, nscH, wnumHex, 0, 1), hex_snk_color_weights(r, nperm, msc1, nscH, wnumHex, 2, 1), hex_snk_spin_weights(r, nperm, msc1, nscH, wnumHex, 2, 1), hex_snk_color_weights(r, nperm, msc1, nscH, wnumHex, 1, 1), hex_snk_spin_weights(r, nperm, msc1, nscH, wnumHex, 1, 1), m)); + flip_BB_H_new_term_0_r2_b2.add_predicate((cast(p_float64, src_spins(rp, s, 1)) == 2.0) && (hex_snk_weights(r, nscH, wnumHex) * src_spin_block_weights(rp, s) != 0.0)); - complex_expr flip_BB_H_term_res_b1 = flip_BB_H_new_term_0_r1_b1(t, x_out, x_in, rp, m, r, s, nperm, wnumHex); - complex_expr flip_BB_H_term_res_b2 = flip_BB_H_new_term_0_r1_b2(t, x_out, x_in, rp, m, r, s, nperm, wnumHex); + complex_expr flip_BB_H_term_res_b1 = flip_BB_H_new_term_0_r1_b1(t, x_out, x_in, msc1, rp, m, r, nscH, s, nperm, wnumHex); + complex_expr flip_BB_H_term_res_b2 = flip_BB_H_new_term_0_r1_b2(t, x_out, x_in, msc1, rp, m, r, nscH, s, nperm, wnumHex); complex_expr flip_BB_H_term_res = src_hex_prefactor * flip_BB_H_term_res_b1 * flip_BB_H_term_res_b2; - computation C_BB_H_prop_update_r("C_BB_H_prop_update_r", {t, x_out, x_in, rp, m, r, s, nperm, wnumHex}, C_BB_H_prop_init_r(t, x_out, x_in, rp, m, r) + (BB_H_term_res.get_real() + flip_BB_H_term_res.get_real())/2.0 ); - computation C_BB_H_prop_update_i("C_BB_H_prop_update_i", {t, x_out, x_in, rp, m, r, s, nperm, wnumHex}, C_BB_H_prop_init_i(t, x_out, x_in, rp, m, r) + (BB_H_term_res.get_imag() + flip_BB_H_term_res.get_imag())/2.0 ); + computation C_BB_H_prop_update_r("C_BB_H_prop_update_r", {t, x_out, x_in, msc1, rp, m, r, nscH, s, nperm, wnumHex}, C_BB_H_prop_init_r(t, x_out, x_in, msc1, rp, m, r, nscH) + (BB_H_term_res.get_real() + flip_BB_H_term_res.get_real())/2.0 ); + C_BB_H_prop_update_r.add_predicate(hex_snk_weights(r, nscH, wnumHex) * src_spin_block_weights(rp, s) != 0.0); + computation C_BB_H_prop_update_i("C_BB_H_prop_update_i", {t, x_out, x_in, msc1, rp, m, r, nscH, s, nperm, wnumHex}, C_BB_H_prop_init_i(t, x_out, x_in, msc1, rp, m, r, nscH) + (BB_H_term_res.get_imag() + flip_BB_H_term_res.get_imag())/2.0 ); + C_BB_H_prop_update_i.add_predicate(hex_snk_weights(r, nscH, wnumHex) * src_spin_block_weights(rp, s) != 0.0); complex_computation C_BB_H_prop_update(&C_BB_H_prop_update_r, &C_BB_H_prop_update_i); - complex_expr BB_H_term = hex_snk_psi * C_BB_H_prop_update(t, x_out, x_in, rp, m, r, 1, Nperms-1, Nw2Hex-1); + complex_expr BB_H_term = hex_snk_psi * C_BB_H_prop_update(t, x_out, x_in, msc1, rp, m, r, nscH, 1, Nperms-1, Nw2Hex-1); - computation C_BB_H_update_r("C_BB_H_update_r", {t, x_out, x_in, rp, m, r, nH}, C_init_r(t, x_out, rp, m, r, Nsnk+nH) + BB_H_term.get_real()); - computation C_BB_H_update_i("C_BB_H_update_i", {t, x_out, x_in, rp, m, r, nH}, C_init_i(t, x_out, rp, m, r, Nsnk+nH) + BB_H_term.get_imag()); + computation C_BB_H_update_r("C_BB_H_update_r", {t, x_out, x_in, msc1, rp, m, r, nscH, nH}, C_init_r(t, x_out, rp, msc1*Nsrc+m, r, B1NsnkSC*Nsnk+nscH*NsnkHex+nH) + BB_H_term.get_real()); + computation C_BB_H_update_i("C_BB_H_update_i", {t, x_out, x_in, msc1, rp, m, r, nscH, nH}, C_init_i(t, x_out, rp, msc1*Nsrc+m, r, B1NsnkSC*Nsnk+nscH*NsnkHex+nH) + BB_H_term.get_imag()); // H_BB - computation C_H_BB_prop_init_r("C_H_BB_prop_init_r", {t, y_out, y_in, rp, n, r}, expr((double) 0)); - computation C_H_BB_prop_init_i("C_H_BB_prop_init_i", {t, y_out, y_in, rp, n, r}, expr((double) 0)); + computation C_H_BB_prop_init_r("C_H_BB_prop_init_r", {t, y_out, y_in, nsc1, rp, n, r, mscH}, expr((double) 0)); + computation C_H_BB_prop_init_i("C_H_BB_prop_init_i", {t, y_out, y_in, nsc1, rp, n, r, mscH}, expr((double) 0)); - complex_computation H_BB_new_term_0_r1_b1("H_BB_new_term_0_r1_b1", {t, y_out, y_in, rp, n, r, s, nperm, wnumHex}, snk_B1_Blocal_r1_init(t, y_out, y_in, hex_snk_color_weights(r, nperm, wnumHex, 0, 0), hex_snk_spin_weights(r, nperm, wnumHex, 0, 0), hex_snk_color_weights(r, nperm, wnumHex, 2, 0), hex_snk_spin_weights(r, nperm, wnumHex, 2, 0), hex_snk_color_weights(r, nperm, wnumHex, 1, 0), hex_snk_spin_weights(r, nperm, wnumHex, 1, 0), n)); - H_BB_new_term_0_r1_b1.add_predicate((src_spins(rp, s, 0) == 1)); - complex_computation H_BB_new_term_0_r2_b1("H_BB_new_term_0_r2_b1", {t, y_out, y_in, rp, n, r, s, nperm, wnumHex}, snk_B1_Blocal_r2_init(t, y_out, y_in, hex_snk_color_weights(r, nperm, wnumHex, 0, 0), hex_snk_spin_weights(r, nperm, wnumHex, 0, 0), hex_snk_color_weights(r, nperm, wnumHex, 2, 0), hex_snk_spin_weights(r, nperm, wnumHex, 2, 0), hex_snk_color_weights(r, nperm, wnumHex, 1, 0), hex_snk_spin_weights(r, nperm, wnumHex, 1, 0), n)); - H_BB_new_term_0_r2_b1.add_predicate((src_spins(rp, s, 0) == 2)); + complex_computation H_BB_new_term_0_r1_b1("H_BB_new_term_0_r1_b1", {t, y_out, y_in, nsc1, rp, n, r, mscH, s, nperm, wnumHex}, snk_B1_Blocal_r1_init(t, y_out, y_in, nsc1, hex_snk_color_weights(r, nperm, nsc1, mscH, wnumHex, 0, 0), hex_snk_spin_weights(r, nperm, nsc1, mscH, wnumHex, 0, 0), hex_snk_color_weights(r, nperm, nsc1, mscH, wnumHex, 2, 0), hex_snk_spin_weights(r, nperm, nsc1, mscH, wnumHex, 2, 0), hex_snk_color_weights(r, nperm, nsc1, mscH, wnumHex, 1, 0), hex_snk_spin_weights(r, nperm, nsc1, mscH, wnumHex, 1, 0), n)); + H_BB_new_term_0_r1_b1.add_predicate((cast(p_float64, src_spins(rp, s, 0)) == 1.0) && (hex_src_weights(r, mscH, wnumHex) * src_spin_block_weights(rp, s) != 0.0)); + complex_computation H_BB_new_term_0_r2_b1("H_BB_new_term_0_r2_b1", {t, y_out, y_in, nsc1, rp, n, r, mscH, s, nperm, wnumHex}, snk_B1_Blocal_r2_init(t, y_out, y_in, nsc1, hex_snk_color_weights(r, nperm, nsc1, mscH, wnumHex, 0, 0), hex_snk_spin_weights(r, nperm, nsc1, mscH, wnumHex, 0, 0), hex_snk_color_weights(r, nperm, nsc1, mscH, wnumHex, 2, 0), hex_snk_spin_weights(r, nperm, nsc1, mscH, wnumHex, 2, 0), hex_snk_color_weights(r, nperm, nsc1, mscH, wnumHex, 1, 0), hex_snk_spin_weights(r, nperm, nsc1, mscH, wnumHex, 1, 0), n)); + H_BB_new_term_0_r2_b1.add_predicate((cast(p_float64, src_spins(rp, s, 0)) == 2.0) && (hex_src_weights(r, mscH, wnumHex) * src_spin_block_weights(rp, s) != 0.0)); - complex_computation H_BB_new_term_0_r1_b2("H_BB_new_term_0_r1_b2", {t, y_out, y_in, rp, n, r, s, nperm, wnumHex}, snk_B2_Blocal_r1_init(t, y_out, y_in, hex_snk_color_weights(r, nperm, wnumHex, 0, 1), hex_snk_spin_weights(r, nperm, wnumHex, 0, 1), hex_snk_color_weights(r, nperm, wnumHex, 2, 1), hex_snk_spin_weights(r, nperm, wnumHex, 2, 1), hex_snk_color_weights(r, nperm, wnumHex, 1, 1), hex_snk_spin_weights(r, nperm, wnumHex, 1, 1), n)); - H_BB_new_term_0_r1_b2.add_predicate((src_spins(rp, s, 1) == 1)); - complex_computation H_BB_new_term_0_r2_b2("H_BB_new_term_0_r2_b2", {t, y_out, y_in, rp, n, r, s, nperm, wnumHex}, snk_B2_Blocal_r2_init(t, y_out, y_in, hex_snk_color_weights(r, nperm, wnumHex, 0, 1), hex_snk_spin_weights(r, nperm, wnumHex, 0, 1), hex_snk_color_weights(r, nperm, wnumHex, 2, 1), hex_snk_spin_weights(r, nperm, wnumHex, 2, 1), hex_snk_color_weights(r, nperm, wnumHex, 1, 1), hex_snk_spin_weights(r, nperm, wnumHex, 1, 1), n)); - H_BB_new_term_0_r2_b2.add_predicate((src_spins(rp, s, 1) == 2)); + complex_computation H_BB_new_term_0_r1_b2("H_BB_new_term_0_r1_b2", {t, y_out, y_in, nsc1, rp, n, r, mscH, s, nperm, wnumHex}, snk_B2_Blocal_r1_init(t, y_out, y_in, nsc1, hex_snk_color_weights(r, nperm, nsc1, mscH, wnumHex, 0, 1), hex_snk_spin_weights(r, nperm, nsc1, mscH, wnumHex, 0, 1), hex_snk_color_weights(r, nperm, nsc1, mscH, wnumHex, 2, 1), hex_snk_spin_weights(r, nperm, nsc1, mscH, wnumHex, 2, 1), hex_snk_color_weights(r, nperm, nsc1, mscH, wnumHex, 1, 1), hex_snk_spin_weights(r, nperm, nsc1, mscH, wnumHex, 1, 1), n)); + H_BB_new_term_0_r1_b2.add_predicate((cast(p_float64, src_spins(rp, s, 1)) == 1.0) && (hex_src_weights(r, mscH, wnumHex) * src_spin_block_weights(rp, s) != 0.0)); + complex_computation H_BB_new_term_0_r2_b2("H_BB_new_term_0_r2_b2", {t, y_out, y_in, nsc1, rp, n, r, mscH, s, nperm, wnumHex}, snk_B2_Blocal_r2_init(t, y_out, y_in, nsc1, hex_snk_color_weights(r, nperm, nsc1, mscH, wnumHex, 0, 1), hex_snk_spin_weights(r, nperm, nsc1, mscH, wnumHex, 0, 1), hex_snk_color_weights(r, nperm, nsc1, mscH, wnumHex, 2, 1), hex_snk_spin_weights(r, nperm, nsc1, mscH, wnumHex, 2, 1), hex_snk_color_weights(r, nperm, nsc1, mscH, wnumHex, 1, 1), hex_snk_spin_weights(r, nperm, nsc1, mscH, wnumHex, 1, 1), n)); + H_BB_new_term_0_r2_b2.add_predicate((cast(p_float64, src_spins(rp, s, 1)) == 2.0) && (hex_src_weights(r, mscH, wnumHex) * src_spin_block_weights(rp, s) != 0.0)); - complex_expr H_BB_term_res_b1 = H_BB_new_term_0_r1_b1(t, y_out, y_in, rp, n, r, s, nperm, wnumHex); - complex_expr H_BB_term_res_b2 = H_BB_new_term_0_r1_b2(t, y_out, y_in, rp, n, r, s, nperm, wnumHex); + complex_expr H_BB_term_res_b1 = H_BB_new_term_0_r1_b1(t, y_out, y_in, nsc1, rp, n, r, mscH, s, nperm, wnumHex); + complex_expr H_BB_term_res_b2 = H_BB_new_term_0_r1_b2(t, y_out, y_in, nsc1, rp, n, r, mscH, s, nperm, wnumHex); - complex_expr snk_hex_prefactor(cast(p_float64, sigs(nperm)) * hex_snk_weights(r, wnumHex) * src_spin_block_weights(rp, s), 0.0); + complex_expr snk_hex_prefactor(cast(p_float64, hex_sigs(nperm, nsc1)) * hex_src_weights(r, mscH, wnumHex) * src_spin_block_weights(rp, s), 0.0); complex_expr H_BB_term_res = snk_hex_prefactor * H_BB_term_res_b1 * H_BB_term_res_b2; - complex_computation flip_H_BB_new_term_0_r1_b1("flip_H_BB_new_term_0_r1_b1", {t, y_out, y_in, rp, n, r, s, nperm, wnumHex}, flip_snk_B1_Blocal_r1_init(t, y_out, y_in, hex_snk_color_weights(r, nperm, wnumHex, 0, 0), hex_snk_spin_weights(r, nperm, wnumHex, 0, 0), hex_snk_color_weights(r, nperm, wnumHex, 2, 0), hex_snk_spin_weights(r, nperm, wnumHex, 2, 0), hex_snk_color_weights(r, nperm, wnumHex, 1, 0), hex_snk_spin_weights(r, nperm, wnumHex, 1, 0), n)); - flip_H_BB_new_term_0_r1_b1.add_predicate((src_spins(rp, s, 0) == 1)); - complex_computation flip_H_BB_new_term_0_r2_b1("flip_H_BB_new_term_0_r2_b1", {t, y_out, y_in, rp, n, r, s, nperm, wnumHex}, flip_snk_B1_Blocal_r2_init(t, y_out, y_in, hex_snk_color_weights(r, nperm, wnumHex, 0, 0), hex_snk_spin_weights(r, nperm, wnumHex, 0, 0), hex_snk_color_weights(r, nperm, wnumHex, 2, 0), hex_snk_spin_weights(r, nperm, wnumHex, 2, 0), hex_snk_color_weights(r, nperm, wnumHex, 1, 0), hex_snk_spin_weights(r, nperm, wnumHex, 1, 0), n)); - flip_H_BB_new_term_0_r2_b1.add_predicate((src_spins(rp, s, 0) == 2)); + complex_computation flip_H_BB_new_term_0_r1_b1("flip_H_BB_new_term_0_r1_b1", {t, y_out, y_in, nsc1, rp, n, r, mscH, s, nperm, wnumHex}, flip_snk_B1_Blocal_r1_init(t, y_out, y_in, nsc1, hex_snk_color_weights(r, nperm, nsc1, mscH, wnumHex, 0, 0), hex_snk_spin_weights(r, nperm, nsc1, mscH, wnumHex, 0, 0), hex_snk_color_weights(r, nperm, nsc1, mscH, wnumHex, 2, 0), hex_snk_spin_weights(r, nperm, nsc1, mscH, wnumHex, 2, 0), hex_snk_color_weights(r, nperm, nsc1, mscH, wnumHex, 1, 0), hex_snk_spin_weights(r, nperm, nsc1, mscH, wnumHex, 1, 0), n)); + flip_H_BB_new_term_0_r1_b1.add_predicate((cast(p_float64, src_spins(rp, s, 0)) == 1.0) && (hex_src_weights(r, mscH, wnumHex) * src_spin_block_weights(rp, s) != 0.0)); + complex_computation flip_H_BB_new_term_0_r2_b1("flip_H_BB_new_term_0_r2_b1", {t, y_out, y_in, nsc1, rp, n, r, mscH, s, nperm, wnumHex}, flip_snk_B1_Blocal_r2_init(t, y_out, y_in, nsc1, hex_snk_color_weights(r, nperm, nsc1, mscH, wnumHex, 0, 0), hex_snk_spin_weights(r, nperm, nsc1, mscH, wnumHex, 0, 0), hex_snk_color_weights(r, nperm, nsc1, mscH, wnumHex, 2, 0), hex_snk_spin_weights(r, nperm, nsc1, mscH, wnumHex, 2, 0), hex_snk_color_weights(r, nperm, nsc1, mscH, wnumHex, 1, 0), hex_snk_spin_weights(r, nperm, nsc1, mscH, wnumHex, 1, 0), n)); + flip_H_BB_new_term_0_r2_b1.add_predicate((cast(p_float64, src_spins(rp, s, 0)) == 2.0) && (hex_src_weights(r, mscH, wnumHex) * src_spin_block_weights(rp, s) != 0.0)); - complex_computation flip_H_BB_new_term_0_r1_b2("flip_H_BB_new_term_0_r1_b2", {t, y_out, y_in, rp, n, r, s, nperm, wnumHex}, flip_snk_B2_Blocal_r1_init(t, y_out, y_in, hex_snk_color_weights(r, nperm, wnumHex, 0, 1), hex_snk_spin_weights(r, nperm, wnumHex, 0, 1), hex_snk_color_weights(r, nperm, wnumHex, 2, 1), hex_snk_spin_weights(r, nperm, wnumHex, 2, 1), hex_snk_color_weights(r, nperm, wnumHex, 1, 1), hex_snk_spin_weights(r, nperm, wnumHex, 1, 1), n)); - flip_H_BB_new_term_0_r1_b2.add_predicate((src_spins(rp, s, 1) == 1)); - complex_computation flip_H_BB_new_term_0_r2_b2("flip_H_BB_new_term_0_r2_b2", {t, y_out, y_in, rp, n, r, s, nperm, wnumHex}, flip_snk_B2_Blocal_r2_init(t, y_out, y_in, hex_snk_color_weights(r, nperm, wnumHex, 0, 1), hex_snk_spin_weights(r, nperm, wnumHex, 0, 1), hex_snk_color_weights(r, nperm, wnumHex, 2, 1), hex_snk_spin_weights(r, nperm, wnumHex, 2, 1), hex_snk_color_weights(r, nperm, wnumHex, 1, 1), hex_snk_spin_weights(r, nperm, wnumHex, 1, 1), n)); - flip_H_BB_new_term_0_r2_b2.add_predicate((src_spins(rp, s, 1) == 2)); + complex_computation flip_H_BB_new_term_0_r1_b2("flip_H_BB_new_term_0_r1_b2", {t, y_out, y_in, nsc1, rp, n, r, mscH, s, nperm, wnumHex}, flip_snk_B2_Blocal_r1_init(t, y_out, y_in, nsc1, hex_snk_color_weights(r, nperm, nsc1, mscH, wnumHex, 0, 1), hex_snk_spin_weights(r, nperm, nsc1, mscH, wnumHex, 0, 1), hex_snk_color_weights(r, nperm, nsc1, mscH, wnumHex, 2, 1), hex_snk_spin_weights(r, nperm, nsc1, mscH, wnumHex, 2, 1), hex_snk_color_weights(r, nperm, nsc1, mscH, wnumHex, 1, 1), hex_snk_spin_weights(r, nperm, nsc1, mscH, wnumHex, 1, 1), n)); + flip_H_BB_new_term_0_r1_b2.add_predicate((cast(p_float64, src_spins(rp, s, 1)) == 1.0) && (hex_src_weights(r, mscH, wnumHex) * src_spin_block_weights(rp, s) != 0.0)); + complex_computation flip_H_BB_new_term_0_r2_b2("flip_H_BB_new_term_0_r2_b2", {t, y_out, y_in, nsc1, rp, n, r, mscH, s, nperm, wnumHex}, flip_snk_B2_Blocal_r2_init(t, y_out, y_in, nsc1, hex_snk_color_weights(r, nperm, nsc1, mscH, wnumHex, 0, 1), hex_snk_spin_weights(r, nperm, nsc1, mscH, wnumHex, 0, 1), hex_snk_color_weights(r, nperm, nsc1, mscH, wnumHex, 2, 1), hex_snk_spin_weights(r, nperm, nsc1, mscH, wnumHex, 2, 1), hex_snk_color_weights(r, nperm, nsc1, mscH, wnumHex, 1, 1), hex_snk_spin_weights(r, nperm, nsc1, mscH, wnumHex, 1, 1), n)); + flip_H_BB_new_term_0_r2_b2.add_predicate((cast(p_float64, src_spins(rp, s, 1)) == 2.0) && (hex_src_weights(r, mscH, wnumHex) * src_spin_block_weights(rp, s) != 0.0)); - complex_expr flip_H_BB_term_res_b1 = flip_H_BB_new_term_0_r1_b1(t, y_out, y_in, rp, n, r, s, nperm, wnumHex); - complex_expr flip_H_BB_term_res_b2 = flip_H_BB_new_term_0_r1_b2(t, y_out, y_in, rp, n, r, s, nperm, wnumHex); + complex_expr flip_H_BB_term_res_b1 = flip_H_BB_new_term_0_r1_b1(t, y_out, y_in, nsc1, rp, n, r, mscH, s, nperm, wnumHex); + complex_expr flip_H_BB_term_res_b2 = flip_H_BB_new_term_0_r1_b2(t, y_out, y_in, nsc1, rp, n, r, mscH, s, nperm, wnumHex); complex_expr flip_H_BB_term_res = snk_hex_prefactor * flip_H_BB_term_res_b1 * flip_H_BB_term_res_b2; - computation C_H_BB_prop_update_r("C_H_BB_prop_update_r", {t, y_out, y_in, rp, n, r, s, nperm, wnumHex}, C_H_BB_prop_init_r(t, y_out, y_in, rp, n, r) + (H_BB_term_res.get_real() + flip_H_BB_term_res.get_real())/2.0 ); - computation C_H_BB_prop_update_i("C_H_BB_prop_update_i", {t, y_out, y_in, rp, n, r, s, nperm, wnumHex}, C_H_BB_prop_init_i(t, y_out, y_in, rp, n, r) + (H_BB_term_res.get_imag() + flip_H_BB_term_res.get_imag())/2.0 ); + computation C_H_BB_prop_update_r("C_H_BB_prop_update_r", {t, y_out, y_in, nsc1, rp, n, r, mscH, s, nperm, wnumHex}, C_H_BB_prop_init_r(t, y_out, y_in, nsc1, rp, n, r, mscH) + (H_BB_term_res.get_real() + flip_H_BB_term_res.get_real())/2.0 ); + C_H_BB_prop_update_r.add_predicate(hex_src_weights(r, mscH, wnumHex) * src_spin_block_weights(rp, s) != 0.0); + computation C_H_BB_prop_update_i("C_H_BB_prop_update_i", {t, y_out, y_in, nsc1, rp, n, r, mscH, s, nperm, wnumHex}, C_H_BB_prop_init_i(t, y_out, y_in, nsc1, rp, n, r, mscH) + (H_BB_term_res.get_imag() + flip_H_BB_term_res.get_imag())/2.0 ); + C_H_BB_prop_update_i.add_predicate(hex_src_weights(r, mscH, wnumHex) * src_spin_block_weights(rp, s) != 0.0); complex_computation C_H_BB_prop_update(&C_H_BB_prop_update_r, &C_H_BB_prop_update_i); - complex_expr H_BB_term = hex_src_psi * C_H_BB_prop_update(t, y_out, y_in, rp, n, r, 1, Nperms-1, Nw2Hex-1); + complex_expr H_BB_term = hex_src_psi * C_H_BB_prop_update(t, y_out, y_in, nsc1, rp, n, r, mscH, 1, Nperms-1, Nw2Hex-1); - computation C_H_BB_update_r("C_H_BB_update_r", {t, y_out, y_in, rp, n, r, mH}, C_init_r(t, y_out, r, Nsrc+mH, rp, n) + H_BB_term.get_real()); - computation C_H_BB_update_i("C_H_BB_update_i", {t, y_out, y_in, rp, n, r, mH}, C_init_i(t, y_out, r, Nsrc+mH, rp, n) + H_BB_term.get_imag()); + computation C_H_BB_update_r("C_H_BB_update_r", {t, y_out, y_in, nsc1, rp, n, r, mscH, mH}, C_init_r(t, y_out, r, B1NsrcSC*Nsrc+mscH*NsrcHex+mH, rp, nsc1*Nsnk+n) + H_BB_term.get_real()); + computation C_H_BB_update_i("C_H_BB_update_i", {t, y_out, y_in, nsc1, rp, n, r, mscH, mH}, C_init_i(t, y_out, r, B1NsrcSC*Nsrc+mscH*NsrcHex+mH, rp, nsc1*Nsnk+n) + H_BB_term.get_imag()); // H_H - computation C_H_H_prop_init_r("C_H_H_prop_init_r", {t, x_out, x_in, rp, r, y}, expr((double) 0)); - computation C_H_H_prop_init_i("C_H_H_prop_init_i", {t, x_out, x_in, rp, r, y}, expr((double) 0)); + // only diagonal part in spin is calculated (r = rp) + // only upper-triagle in msc, mscH + computation C_H_H_prop_init_r("C_H_H_prop_init_r", {t, x_out, rp, mscH, mH, nscH, nH}, expr((double) 0)); + computation C_H_H_prop_init_i("C_H_H_prop_init_i", {t, x_out, rp, mscH, mH, nscH, nH}, expr((double) 0)); - complex_expr H_H_B1_prop_0 = B1_prop(t, hex_snk_color_weights(r,nperm,wnumHex,0,0), hex_snk_spin_weights(r,nperm,wnumHex,0,0), hex_snk_color_weights(rp,0,wnumHexHex,0,0), hex_snk_spin_weights(rp,0,wnumHexHex,0,0), x_out*sites_per_rank+x_in, y); - complex_expr H_H_B1_prop_2 = B1_prop(t, hex_snk_color_weights(r,nperm,wnumHex,2,0), hex_snk_spin_weights(r,nperm,wnumHex,2,0), hex_snk_color_weights(rp,0,wnumHexHex,2,0), hex_snk_spin_weights(rp,0,wnumHexHex,2,0), x_out*sites_per_rank+x_in, y); - complex_expr H_H_B1_prop_1 = B1_prop(t, hex_snk_color_weights(r,nperm,wnumHex,1,0), hex_snk_spin_weights(r,nperm,wnumHex,1,0), hex_snk_color_weights(rp,0,wnumHexHex,1,0), hex_snk_spin_weights(rp,0,wnumHexHex,1,0), x_out*sites_per_rank+x_in, y); + complex_expr H_H_B1_prop_0 = B1_prop(t, hex_hex_snk_color_weights(rp,nperm,nscH,wnumHex,0,0), hex_hex_snk_spin_weights(rp,nperm,nscH,wnumHex,0,0), hex_hex_snk_color_weights(rp,0,mscH,wnumHexHex,0,0), hex_hex_snk_spin_weights(rp,0,mscH,wnumHexHex,0,0), x_out*sites_per_rank+x_in, y); + complex_expr H_H_B1_prop_2 = B1_prop(t, hex_hex_snk_color_weights(rp,nperm,nscH,wnumHex,2,0), hex_hex_snk_spin_weights(rp,nperm,nscH,wnumHex,2,0), hex_hex_snk_color_weights(rp,0,mscH,wnumHexHex,2,0), hex_hex_snk_spin_weights(rp,0,mscH,wnumHexHex,2,0), x_out*sites_per_rank+x_in, y); + complex_expr H_H_B1_prop_1 = B1_prop(t, hex_hex_snk_color_weights(rp,nperm,nscH,wnumHex,1,0), hex_hex_snk_spin_weights(rp,nperm,nscH,wnumHex,1,0), hex_hex_snk_color_weights(rp,0,mscH,wnumHexHex,1,0), hex_hex_snk_spin_weights(rp,0,mscH,wnumHexHex,1,0), x_out*sites_per_rank+x_in, y); complex_expr B1_H = H_H_B1_prop_0 * H_H_B1_prop_2 * H_H_B1_prop_1; - complex_expr H_H_B2_prop_0 = B1_prop(t, hex_snk_color_weights(r,nperm,wnumHex,0,1), hex_snk_spin_weights(r,nperm,wnumHex,0,1), hex_snk_color_weights(rp,0,wnumHexHex,0,1), hex_snk_spin_weights(rp,0,wnumHexHex,0,1), x_out*sites_per_rank+x_in, y); - complex_expr H_H_B2_prop_2 = B1_prop(t, hex_snk_color_weights(r,nperm,wnumHex,2,1), hex_snk_spin_weights(r,nperm,wnumHex,2,1), hex_snk_color_weights(rp,0,wnumHexHex,2,1), hex_snk_spin_weights(rp,0,wnumHexHex,2,1), x_out*sites_per_rank+x_in, y); - complex_expr H_H_B2_prop_1 = B1_prop(t, hex_snk_color_weights(r,nperm,wnumHex,1,1), hex_snk_spin_weights(r,nperm,wnumHex,1,1), hex_snk_color_weights(rp,0,wnumHexHex,1,1), hex_snk_spin_weights(rp,0,wnumHexHex,1,1), x_out*sites_per_rank+x_in, y); + complex_expr H_H_B2_prop_0 = B1_prop(t, hex_hex_snk_color_weights(rp,nperm,nscH,wnumHex,0,1), hex_hex_snk_spin_weights(rp,nperm,nscH,wnumHex,0,1), hex_hex_snk_color_weights(rp,0,mscH,wnumHexHex,0,1), hex_hex_snk_spin_weights(rp,0,mscH,wnumHexHex,0,1), x_out*sites_per_rank+x_in, y); + complex_expr H_H_B2_prop_2 = B1_prop(t, hex_hex_snk_color_weights(rp,nperm,nscH,wnumHex,2,1), hex_hex_snk_spin_weights(rp,nperm,nscH,wnumHex,2,1), hex_hex_snk_color_weights(rp,0,mscH,wnumHexHex,2,1), hex_hex_snk_spin_weights(rp,0,mscH,wnumHexHex,2,1), x_out*sites_per_rank+x_in, y); + complex_expr H_H_B2_prop_1 = B1_prop(t, hex_hex_snk_color_weights(rp,nperm,nscH,wnumHex,1,1), hex_hex_snk_spin_weights(rp,nperm,nscH,wnumHex,1,1), hex_hex_snk_color_weights(rp,0,mscH,wnumHexHex,1,1), hex_hex_snk_spin_weights(rp,0,mscH,wnumHexHex,1,1), x_out*sites_per_rank+x_in, y); complex_expr B2_H = H_H_B2_prop_0 * H_H_B2_prop_2 * H_H_B2_prop_1; - complex_expr hex_hex_prefactor(cast(p_float64, sigs(nperm)) * hex_snk_weights(r, wnumHex) * hex_snk_weights(rp, wnumHexHex), 0.0); + complex_expr hex_hex_prefactor(cast(p_float64, hex_hex_sigs(nperm)) * hex_snk_weights(rp, nscH, wnumHex) * hex_snk_weights(rp, mscH, wnumHexHex), 0.0); - complex_expr H_H_term_res = hex_hex_prefactor * B1_H * B2_H; + complex_expr H_H_term_res = hex_hex_prefactor * hex_hex_src_psi * hex_snk_psi * B1_H * B2_H; - computation C_H_H_prop_update_r("C_H_H_prop_update_r", {t, x_out, x_in, rp, r, y, nperm, wnumHex, wnumHexHex}, C_H_H_prop_init_r(t, x_out, x_in, rp, r, y) + H_H_term_res.get_real()); - computation C_H_H_prop_update_i("C_H_H_prop_update_i", {t, x_out, x_in, rp, r, y, nperm, wnumHex, wnumHexHex}, C_H_H_prop_init_i(t, x_out, x_in, rp, r, y) + H_H_term_res.get_imag()); + computation C_H_H_start_sc("C_H_H_start_sc", {t, x_out, rp, mscH, mH, nscH}, expr(cast(p_boolean,1))); + computation C_H_H_check_lower_sc("C_H_H_check_lower_sc", {t, x_out, rp, mscH, mH, nscH}, expr(cast(p_boolean,0))); + C_H_H_check_lower_sc.add_predicate(nscH < mscH); + computation C_H_H_start_src("C_H_H_start_src", {t, x_out, rp, mscH, mH, nscH, nH}, expr(cast(p_boolean,1))); + computation C_H_H_check_lower("C_H_H_check_lower", {t, x_out, rp, mscH, mH, nscH, nH}, expr(cast(p_boolean,0))); + C_H_H_check_lower.add_predicate(nH < mH); + computation C_H_H_check_src("C_H_H_check_src", {t, x_out, rp, mscH, mH, nscH, nH, wnumHexHex}, expr(cast(p_boolean,0))); + C_H_H_check_src.add_predicate(hex_snk_weights(rp, mscH, wnumHexHex) == 0.0); + computation C_H_H_start_snk("C_H_H_start_snk", {t, x_out, rp, mscH, mH, nscH, nH, wnumHexHex}, expr(cast(p_boolean,1))); + computation C_H_H_check_snk("C_H_H_check_snk", {t, x_out, rp, mscH, mH, nscH, nH, wnumHexHex, wnumHex}, expr(cast(p_boolean,0))); + C_H_H_check_snk.add_predicate(hex_snk_weights(rp, nscH, wnumHex) == 0.0); + + computation C_H_H_prop_update_r("C_H_H_prop_update_r", {t, x_out, rp, mscH, mH, nscH, nH, wnumHexHex, wnumHex, nperm, x_in, y}, C_H_H_prop_init_r(t, x_out, rp, mscH, mH, nscH, nH) + H_H_term_res.get_real()); + C_H_H_prop_update_r.add_predicate(C_H_H_start_sc(t, x_out, rp, mscH, mH, nscH) && C_H_H_start_src(t, x_out, rp, mscH, mH, nscH, nH) && C_H_H_start_snk(t, x_out, rp, mscH, mH, nscH, nH, wnumHexHex)); + computation C_H_H_prop_update_i("C_H_H_prop_update_i", {t, x_out, rp, mscH, mH, nscH, nH, wnumHexHex, wnumHex, nperm, x_in, y}, C_H_H_prop_init_i(t, x_out, rp, mscH, mH, nscH, nH) + H_H_term_res.get_imag()); + C_H_H_prop_update_i.add_predicate(C_H_H_start_sc(t, x_out, rp, mscH, mH, nscH) && C_H_H_start_src(t, x_out, rp, mscH, mH, nscH, nH) && C_H_H_start_snk(t, x_out, rp, mscH, mH, nscH, nH, wnumHexHex)); complex_computation C_H_H_prop_update(&C_H_H_prop_update_r, &C_H_H_prop_update_i); - complex_expr H_H_term = hex_hex_src_psi * hex_snk_psi * C_H_H_prop_update(t, x_out, x_in, rp, r, y, Nperms-1, Nw2Hex-1, Nw2Hex-1); + complex_expr H_H_term = C_H_H_prop_update(t, x_out, rp, mscH, mH, nscH, nH, Nw2Hex-1, Nw2Hex-1, Nperms-1, sites_per_rank-1, Vsrc-1); + + // only upper-triangular part (diagonal inclusive) is calculated, other entries are copied over + computation C_H_H_update_r("C_H_H_update_r", {t, x_out, rp, mscH, mH, nscH, nH}, C_init_r(t, x_out, rp, B1NsrcSC*Nsrc+mscH*NsrcHex+mH, rp, B1NsnkSC*Nsnk+nscH*NsnkHex+nH) + C_H_H_prop_init_r(t, x_out, rp, mscH, mH, nscH, nH)); + C_H_H_update_r.add_predicate((nscH >= mscH) && (nH >= mH)); + computation C_H_H_update_i("C_H_H_update_i", {t, x_out, rp, mscH, mH, nscH, nH}, C_init_i(t, x_out, rp, B1NsrcSC*Nsrc+mscH*NsrcHex+mH, rp, B1NsnkSC*Nsnk+nscH*NsnkHex+nH) + C_H_H_prop_init_i(t, x_out, rp, mscH, mH, nscH, nH)); + C_H_H_update_i.add_predicate((nscH >= mscH) && (nH >= mH)); - computation C_H_H_update_r("C_H_H_update_r", {t, x_out, x_in, rp, r, y, mH, nH}, C_init_r(t, x_out, rp, Nsrc+mH, r, Nsnk+nH) + H_H_term.get_real()); - computation C_H_H_update_i("C_H_H_update_i", {t, x_out, x_in, rp, r, y, mH, nH}, C_init_i(t, x_out, rp, Nsrc+mH, r, Nsnk+nH) + H_H_term.get_imag()); // ------------------------------------------------------- // Layer II @@ -1213,7 +1251,7 @@ void generate_function(std::string name) .then(flip_B1_Bsecond_r1_i_init, m) .then(flip_B1_Bthird_r1_r_init, m) .then(flip_B1_Bthird_r1_i_init, m) - .then(B1_Blocal_r1_r_props_init, x2) + .then(B1_Blocal_r1_r_props_init, msc1) .then(B1_Blocal_r1_i_props_init, jSprime) .then(B1_Bfirst_r1_r_props_init, jSprime) .then(B1_Bfirst_r1_i_props_init, jSprime) @@ -1251,7 +1289,7 @@ void generate_function(std::string name) .then(flip_B1_Bsecond_r1_i_update, m) .then(flip_B1_Bthird_r1_r_update, m) .then(flip_B1_Bthird_r1_i_update, m) - .then(B1_Blocal_r2_r_init, x2) + .then(B1_Blocal_r2_r_init, msc1) .then(B1_Blocal_r2_i_init, m) .then(B1_Bfirst_r2_r_init, m) .then(B1_Bfirst_r2_i_init, m) @@ -1267,7 +1305,7 @@ void generate_function(std::string name) .then(flip_B1_Bsecond_r2_i_init, m) .then(flip_B1_Bthird_r2_r_init, m) .then(flip_B1_Bthird_r2_i_init, m) - .then(B1_Blocal_r2_r_props_init, x2) + .then(B1_Blocal_r2_r_props_init, msc1) .then(B1_Blocal_r2_i_props_init, jSprime) .then(B1_Bfirst_r2_r_props_init, jSprime) .then(B1_Bfirst_r2_i_props_init, jSprime) @@ -1305,7 +1343,7 @@ void generate_function(std::string name) .then(flip_B1_Bsecond_r2_i_update, m) .then(flip_B1_Bthird_r2_r_update, m) .then(flip_B1_Bthird_r2_i_update, m) - .then(B2_Blocal_r1_r_init, x2) + .then(B2_Blocal_r1_r_init, msc1) .then(B2_Blocal_r1_i_init, m) .then(B2_Bfirst_r1_r_init, m) .then(B2_Bfirst_r1_i_init, m) @@ -1321,7 +1359,7 @@ void generate_function(std::string name) .then(flip_B2_Bsecond_r1_i_init, m) .then(flip_B2_Bthird_r1_r_init, m) .then(flip_B2_Bthird_r1_i_init, m) - .then(B2_Blocal_r1_r_props_init, x2) + .then(B2_Blocal_r1_r_props_init, msc1) .then(B2_Blocal_r1_i_props_init, jSprime) .then(B2_Bfirst_r1_r_props_init, jSprime) .then(B2_Bfirst_r1_i_props_init, jSprime) @@ -1359,7 +1397,7 @@ void generate_function(std::string name) .then(flip_B2_Bsecond_r1_i_update, m) .then(flip_B2_Bthird_r1_r_update, m) .then(flip_B2_Bthird_r1_i_update, m) - .then(B2_Blocal_r2_r_init, x2) + .then(B2_Blocal_r2_r_init, msc1) .then(B2_Blocal_r2_i_init, m) .then(B2_Bfirst_r2_r_init, m) .then(B2_Bfirst_r2_i_init, m) @@ -1375,7 +1413,7 @@ void generate_function(std::string name) .then(flip_B2_Bsecond_r2_i_init, m) .then(flip_B2_Bthird_r2_r_init, m) .then(flip_B2_Bthird_r2_i_init, m) - .then(B2_Blocal_r2_r_props_init, x2) + .then(B2_Blocal_r2_r_props_init, msc1) .then(B2_Blocal_r2_i_props_init, jSprime) .then(B2_Bfirst_r2_r_props_init, jSprime) .then(B2_Bfirst_r2_i_props_init, jSprime) @@ -1413,9 +1451,9 @@ void generate_function(std::string name) .then(flip_B2_Bsecond_r2_i_update, m) .then(flip_B2_Bthird_r2_r_update, m) .then(flip_B2_Bthird_r2_i_update, m) - .then(C_BB_BB_prop_init_r, x2) - .then(C_BB_BB_prop_init_i, r) - .then( *(BB_BB_new_term_0_r1_b1.get_real()), r) + .then(C_BB_BB_prop_init_r, msc1) + .then(C_BB_BB_prop_init_i, nsc1) + .then( *(BB_BB_new_term_0_r1_b1.get_real()), nsc1) .then( *(BB_BB_new_term_0_r1_b1.get_imag()), wnum) .then( *(BB_BB_new_term_1_r1_b1.get_real()), wnum) .then( *(BB_BB_new_term_1_r1_b1.get_imag()), wnum) @@ -1545,9 +1583,9 @@ void generate_function(std::string name) .then( *(flip_BB_BB_new_term_7_r2_b2.get_imag()), wnum) .then(C_BB_BB_prop_update_r, wnum) .then(C_BB_BB_prop_update_i, wnum) - .then(C_BB_BB_update_b_r, r) + .then(C_BB_BB_update_b_r, nsc1) .then(C_BB_BB_update_b_i, ne) - .then(C_BB_BB_update_s_r, r) + .then(C_BB_BB_update_s_r, nsc1) .then(C_BB_BB_update_s_i, nue) ); @@ -1557,7 +1595,7 @@ void generate_function(std::string name) .then(src_B1_Blocal_r1_i_init, jSprime) .then(flip_src_B1_Blocal_r1_r_init, jSprime) .then(flip_src_B1_Blocal_r1_i_init, jSprime) - .then(src_B1_Blocal_r1_r_props_init, x_in) + .then(src_B1_Blocal_r1_r_props_init, msc1) .then(src_B1_Blocal_r1_i_props_init, jSprime) .then(src_B1_Blocal_r1_r_diquark, y) .then(src_B1_Blocal_r1_i_diquark, wnumBlock) @@ -1567,11 +1605,11 @@ void generate_function(std::string name) .then(src_B1_Blocal_r1_i_update, m) .then(flip_src_B1_Blocal_r1_r_update, m) .then(flip_src_B1_Blocal_r1_i_update, m) - .then(src_B1_Blocal_r2_r_init, x_in) + .then(src_B1_Blocal_r2_r_init, msc1) .then(src_B1_Blocal_r2_i_init, jSprime) .then(flip_src_B1_Blocal_r2_r_init, jSprime) .then(flip_src_B1_Blocal_r2_i_init, jSprime) - .then(src_B1_Blocal_r2_r_props_init, x_in) + .then(src_B1_Blocal_r2_r_props_init, msc1) .then(src_B1_Blocal_r2_i_props_init, jSprime) .then(src_B1_Blocal_r2_r_diquark, y) .then(src_B1_Blocal_r2_i_diquark, wnumBlock) @@ -1581,11 +1619,11 @@ void generate_function(std::string name) .then(src_B1_Blocal_r2_i_update, m) .then(flip_src_B1_Blocal_r2_r_update, m) .then(flip_src_B1_Blocal_r2_i_update, m) - .then(src_B2_Blocal_r1_r_init, x_in) + .then(src_B2_Blocal_r1_r_init, msc1) .then(src_B2_Blocal_r1_i_init, jSprime) .then(flip_src_B2_Blocal_r1_r_init, jSprime) .then(flip_src_B2_Blocal_r1_i_init, jSprime) - .then(src_B2_Blocal_r1_r_props_init, x_in) + .then(src_B2_Blocal_r1_r_props_init, msc1) .then(src_B2_Blocal_r1_i_props_init, jSprime) .then(src_B2_Blocal_r1_r_diquark, y) .then(src_B2_Blocal_r1_i_diquark, wnumBlock) @@ -1595,11 +1633,11 @@ void generate_function(std::string name) .then(src_B2_Blocal_r1_i_update, m) .then(flip_src_B2_Blocal_r1_r_update, m) .then(flip_src_B2_Blocal_r1_i_update, m) - .then(src_B2_Blocal_r2_r_init, x_in) + .then(src_B2_Blocal_r2_r_init, msc1) .then(src_B2_Blocal_r2_i_init, jSprime) .then(flip_src_B2_Blocal_r2_r_init, jSprime) .then(flip_src_B2_Blocal_r2_i_init, jSprime) - .then(src_B2_Blocal_r2_r_props_init, x_in) + .then(src_B2_Blocal_r2_r_props_init, msc1) .then(src_B2_Blocal_r2_i_props_init, jSprime) .then(src_B2_Blocal_r2_r_diquark, y) .then(src_B2_Blocal_r2_i_diquark, wnumBlock) @@ -1609,9 +1647,9 @@ void generate_function(std::string name) .then(src_B2_Blocal_r2_i_update, m) .then(flip_src_B2_Blocal_r2_r_update, m) .then(flip_src_B2_Blocal_r2_i_update, m) - .then(C_BB_H_prop_init_r, x_in) - .then(C_BB_H_prop_init_i, r) - .then( *(BB_H_new_term_0_r1_b1.get_real()), r) + .then(C_BB_H_prop_init_r, msc1) + .then(C_BB_H_prop_init_i, nscH) + .then( *(BB_H_new_term_0_r1_b1.get_real()), nscH) .then( *(BB_H_new_term_0_r1_b1.get_imag()), wnumHex) .then( *(BB_H_new_term_0_r2_b1.get_real()), wnumHex) .then( *(BB_H_new_term_0_r2_b1.get_imag()), wnumHex) @@ -1629,7 +1667,7 @@ void generate_function(std::string name) .then( *(flip_BB_H_new_term_0_r2_b2.get_imag()), wnumHex) .then(C_BB_H_prop_update_r, wnumHex) .then(C_BB_H_prop_update_i, wnumHex) - .then(C_BB_H_update_r, r) + .then(C_BB_H_update_r, nscH) .then(C_BB_H_update_i, nH) ); @@ -1639,7 +1677,7 @@ void generate_function(std::string name) .then(snk_B1_Blocal_r1_i_init, jSprime) .then(flip_snk_B1_Blocal_r1_r_init, jSprime) .then(flip_snk_B1_Blocal_r1_i_init, jSprime) - .then(snk_B1_Blocal_r1_r_props_init, y_in) + .then(snk_B1_Blocal_r1_r_props_init, nsc1) .then(snk_B1_Blocal_r1_i_props_init, jSprime) .then(snk_B1_Blocal_r1_r_diquark, x) .then(snk_B1_Blocal_r1_i_diquark, wnumBlock) @@ -1649,11 +1687,11 @@ void generate_function(std::string name) .then(snk_B1_Blocal_r1_i_update, n) .then(flip_snk_B1_Blocal_r1_r_update, n) .then(flip_snk_B1_Blocal_r1_i_update, n) - .then(snk_B1_Blocal_r2_r_init, y_in) + .then(snk_B1_Blocal_r2_r_init, nsc1) .then(snk_B1_Blocal_r2_i_init, jSprime) .then(flip_snk_B1_Blocal_r2_r_init, jSprime) .then(flip_snk_B1_Blocal_r2_i_init, jSprime) - .then(snk_B1_Blocal_r2_r_props_init, y_in) + .then(snk_B1_Blocal_r2_r_props_init, nsc1) .then(snk_B1_Blocal_r2_i_props_init, jSprime) .then(snk_B1_Blocal_r2_r_diquark, x) .then(snk_B1_Blocal_r2_i_diquark, wnumBlock) @@ -1663,11 +1701,11 @@ void generate_function(std::string name) .then(snk_B1_Blocal_r2_i_update, n) .then(flip_snk_B1_Blocal_r2_r_update, n) .then(flip_snk_B1_Blocal_r2_i_update, n) - .then(snk_B2_Blocal_r1_r_init, y_in) + .then(snk_B2_Blocal_r1_r_init, nsc1) .then(snk_B2_Blocal_r1_i_init, jSprime) .then(flip_snk_B2_Blocal_r1_r_init, jSprime) .then(flip_snk_B2_Blocal_r1_i_init, jSprime) - .then(snk_B2_Blocal_r1_r_props_init, y_in) + .then(snk_B2_Blocal_r1_r_props_init, nsc1) .then(snk_B2_Blocal_r1_i_props_init, jSprime) .then(snk_B2_Blocal_r1_r_diquark, x) .then(snk_B2_Blocal_r1_i_diquark, wnumBlock) @@ -1677,11 +1715,11 @@ void generate_function(std::string name) .then(snk_B2_Blocal_r1_i_update, n) .then(flip_snk_B2_Blocal_r1_r_update, n) .then(flip_snk_B2_Blocal_r1_i_update, n) - .then(snk_B2_Blocal_r2_r_init, y_in) + .then(snk_B2_Blocal_r2_r_init, nsc1) .then(snk_B2_Blocal_r2_i_init, jSprime) .then(flip_snk_B2_Blocal_r2_r_init, jSprime) .then(flip_snk_B2_Blocal_r2_i_init, jSprime) - .then(snk_B2_Blocal_r2_r_props_init, y_in) + .then(snk_B2_Blocal_r2_r_props_init, nsc1) .then(snk_B2_Blocal_r2_i_props_init, jSprime) .then(snk_B2_Blocal_r2_r_diquark, x) .then(snk_B2_Blocal_r2_i_diquark, wnumBlock) @@ -1691,9 +1729,9 @@ void generate_function(std::string name) .then(flip_snk_B2_Blocal_r2_r_update, n) .then(flip_snk_B2_Blocal_r2_i_update, n) .then(snk_B2_Blocal_r2_i_update, n) - .then(C_H_BB_prop_init_r, y_in) - .then(C_H_BB_prop_init_i, r) - .then( *(H_BB_new_term_0_r1_b1.get_real()), r) + .then(C_H_BB_prop_init_r, nsc1) + .then(C_H_BB_prop_init_i, mscH) + .then( *(H_BB_new_term_0_r1_b1.get_real()), mscH) .then( *(H_BB_new_term_0_r1_b1.get_imag()), wnumHex) .then( *(H_BB_new_term_0_r2_b1.get_real()), wnumHex) .then( *(H_BB_new_term_0_r2_b1.get_imag()), wnumHex) @@ -1711,17 +1749,25 @@ void generate_function(std::string name) .then( *(flip_H_BB_new_term_0_r2_b2.get_imag()), wnumHex) .then(C_H_BB_prop_update_r, wnumHex) .then(C_H_BB_prop_update_i, wnumHex) - .then(C_H_BB_update_r, r) + .then(C_H_BB_update_r, mscH) .then(C_H_BB_update_i, mH) ); + // H_H handle = &(handle ->then(C_H_H_prop_init_r, t) - .then(C_H_H_prop_init_i, y) - .then(C_H_H_prop_update_r, y) - .then(C_H_H_prop_update_i, wnumHexHex) - .then(C_H_H_update_r, y) + .then(C_H_H_prop_init_i, nH) + .then(C_H_H_start_sc, nscH) + .then(C_H_H_check_lower_sc, nscH) + .then(C_H_H_start_src, nH) + .then(C_H_H_check_lower, nH) + .then(C_H_H_check_src, nH) + .then(C_H_H_start_snk, wnumHexHex) + .then(C_H_H_check_snk, wnumHexHex) + .then(C_H_H_prop_update_r, wnumHex) + .then(C_H_H_prop_update_i, y) + .then(C_H_H_update_r, nH) .then(C_H_H_update_i, nH) ); @@ -1730,7 +1776,7 @@ void generate_function(std::string name) (BB_BB_new_term_0_r1_b1.get_real())->tag_vector_level(wnum, Nw2); (BB_H_new_term_0_r1_b1.get_real())->tag_vector_level(wnumHex, Nw2Hex); (H_BB_new_term_0_r1_b1.get_real())->tag_vector_level(wnumHex, Nw2Hex); - C_H_H_prop_update_r.tag_vector_level(wnumHexHex, Nw2Hex); + C_H_H_prop_update_r.tag_vector_level(y, Vsnk); #endif @@ -2444,10 +2490,10 @@ void generate_function(std::string name) C_BB_BB_prop_update_r.store_in(&buf_C_BB_BB_prop_r, {0}); C_BB_BB_prop_update_i.store_in(&buf_C_BB_BB_prop_i, {0}); - C_BB_BB_update_b_r.store_in(&buf_C_r, {t, x_out, rp, m, r, ne}); - C_BB_BB_update_b_i.store_in(&buf_C_i, {t, x_out, rp, m, r, ne}); - C_BB_BB_update_s_r.store_in(&buf_C_r, {t, x_out, rp, m, r, NEntangled+nue}); - C_BB_BB_update_s_i.store_in(&buf_C_i, {t, x_out, rp, m, r, NEntangled+nue}); + C_BB_BB_update_s_r.store_in(&buf_C_r, {t, x_out, rp, msc1*Nsrc+m, r, nsc1*Nsnk+NEntangled+nue}); + C_BB_BB_update_s_i.store_in(&buf_C_i, {t, x_out, rp, msc1*Nsrc+m, r, nsc1*Nsnk+NEntangled+nue}); + C_BB_BB_update_b_r.store_in(&buf_C_r, {t, x_out, rp, msc1*Nsrc+m, r, nsc1*Nsnk+ne}); + C_BB_BB_update_b_i.store_in(&buf_C_i, {t, x_out, rp, msc1*Nsrc+m, r, nsc1*Nsnk+ne}); // BB_H @@ -2500,8 +2546,8 @@ void generate_function(std::string name) C_BB_H_prop_update_r.store_in(&buf_C_BB_H_prop_r, {0}); C_BB_H_prop_update_i.store_in(&buf_C_BB_H_prop_i, {0}); - C_BB_H_update_r.store_in(&buf_C_r, {t, x_out, rp, m, r, Nsnk+nH}); - C_BB_H_update_i.store_in(&buf_C_i, {t, x_out, rp, m, r, Nsnk+nH}); + C_BB_H_update_r.store_in(&buf_C_r, {t, x_out, rp, msc1*Nsrc+m, r, B1NsnkSC*Nsnk+nscH*NsnkHex+nH}); + C_BB_H_update_i.store_in(&buf_C_i, {t, x_out, rp, msc1*Nsrc+m, r, B1NsnkSC*Nsnk+nscH*NsnkHex+nH}); // H_BB @@ -2553,8 +2599,8 @@ void generate_function(std::string name) C_H_BB_prop_update_r.store_in(&buf_C_H_BB_prop_r, {0}); C_H_BB_prop_update_i.store_in(&buf_C_H_BB_prop_i, {0}); - C_H_BB_update_r.store_in(&buf_C_r, {t, y_out, r, Nsrc+mH, rp, n}); - C_H_BB_update_i.store_in(&buf_C_i, {t, y_out, r, Nsrc+mH, rp, n}); + C_H_BB_update_r.store_in(&buf_C_r, {t, y_out, r, B1NsrcSC*Nsrc+mscH*NsrcHex+mH, rp, nsc1*Nsnk+n}); + C_H_BB_update_i.store_in(&buf_C_i, {t, y_out, r, B1NsrcSC*Nsrc+mscH*NsrcHex+mH, rp, nsc1*Nsnk+n}); // H_H @@ -2566,8 +2612,20 @@ void generate_function(std::string name) C_H_H_prop_update_r.store_in(&buf_C_H_H_prop_r, {0}); C_H_H_prop_update_i.store_in(&buf_C_H_H_prop_i, {0}); - C_H_H_update_r.store_in(&buf_C_r, {t, x_out, rp, Nsrc+mH, r, Nsnk+nH}); - C_H_H_update_i.store_in(&buf_C_i, {t, x_out, rp, Nsrc+mH, r, Nsnk+nH}); + buffer buf_C_H_H_check_sc("buf_C_H_H_check_sc", {1}, p_boolean, a_temporary); + buffer buf_C_H_H_check_src("buf_C_H_H_check_src", {1}, p_boolean, a_temporary); + buffer buf_C_H_H_check_snk("buf_C_H_H_check_snk", {1}, p_boolean, a_temporary); + + C_H_H_start_sc.store_in(&buf_C_H_H_check_sc, {0}); + C_H_H_check_lower_sc.store_in(&buf_C_H_H_check_sc, {0}); + C_H_H_start_src.store_in(&buf_C_H_H_check_src, {0}); + C_H_H_check_lower.store_in(&buf_C_H_H_check_src, {0}); + C_H_H_check_src.store_in(&buf_C_H_H_check_src, {0}); + C_H_H_start_snk.store_in(&buf_C_H_H_check_snk, {0}); + C_H_H_check_snk.store_in(&buf_C_H_H_check_snk, {0}); + + C_H_H_update_r.store_in(&buf_C_r, {t, x_out, rp, B1NsrcSC*Nsrc+mscH*NsrcHex+mH, rp, B1NsnkSC*Nsnk+nscH*NsnkHex+nH}); + C_H_H_update_i.store_in(&buf_C_i, {t, x_out, rp, B1NsrcSC*Nsrc+mscH*NsrcHex+mH, rp, B1NsnkSC*Nsnk+nscH*NsnkHex+nH}); // ------------------------------------------------------- // Code Generation @@ -2585,6 +2643,8 @@ void generate_function(std::string name) src_spins.get_buffer(), src_spin_block_weights.get_buffer(), sigs.get_buffer(), + hex_sigs.get_buffer(), + hex_hex_sigs.get_buffer(), src_color_weights.get_buffer(), src_spin_weights.get_buffer(), src_weights.get_buffer(), @@ -2594,7 +2654,12 @@ void generate_function(std::string name) snk_weights.get_buffer(), hex_snk_color_weights.get_buffer(), hex_snk_spin_weights.get_buffer(), - hex_snk_weights.get_buffer() + hex_snk_weights.get_buffer(), + hex_src_color_weights.get_buffer(), + hex_src_spin_weights.get_buffer(), + hex_src_weights.get_buffer(), + hex_hex_snk_color_weights.get_buffer(), + hex_hex_snk_spin_weights.get_buffer() }, "generated_tiramisu_make_fused_identical_dibaryon_blocks_correlator.o"); } diff --git a/benchmarks/tensors/dibaryon/tiramisu_make_fused_dibaryon_blocks_correlator/tiramisu_make_fused_identical_dibaryon_blocks_correlator_wrapper.cpp b/benchmarks/tensors/dibaryon/tiramisu_make_fused_dibaryon_blocks_correlator/tiramisu_make_fused_identical_dibaryon_blocks_correlator_wrapper.cpp index ae4651d64..11b39a360 100644 --- a/benchmarks/tensors/dibaryon/tiramisu_make_fused_dibaryon_blocks_correlator/tiramisu_make_fused_identical_dibaryon_blocks_correlator_wrapper.cpp +++ b/benchmarks/tensors/dibaryon/tiramisu_make_fused_dibaryon_blocks_correlator/tiramisu_make_fused_identical_dibaryon_blocks_correlator_wrapper.cpp @@ -13,14 +13,14 @@ extern "C" { #include "tiramisu_make_fused_identical_dibaryon_blocks_correlator_wrapper.h" #include "tiramisu_make_fused_dibaryon_blocks_correlator_ref.cpp" -#define RUN_REFERENCE 0 -#define RUN_CHECK 0 +#define RUN_REFERENCE 1 +#define RUN_CHECK 1 int nb_tests = 1; int randommode = 1; -void tiramisu_make_two_nucleon_2pt(double* C_re, +void tiramisu_make_identical_two_nucleon_2pt(double* C_re, double* C_im, double* B1_prop_re, double* B1_prop_im, @@ -44,6 +44,14 @@ void tiramisu_make_two_nucleon_2pt(double* C_re, double *hex_snk_weights_T1_r3, int* perms, int* sigs, + int* hex_perms, + int* hex_sigs, + int* hex_perms_snk, + int* hex_sigs_snk, + int* hex_hex_perms, + int* hex_hex_sigs, + int* BB_pairs_src, + int* BB_pairs_snk, double* src_psi_B1_re, double* src_psi_B1_im, double* src_psi_B2_re, @@ -61,7 +69,7 @@ void tiramisu_make_two_nucleon_2pt(double* C_re, int space_symmetric, int snk_entangled) { - int q, t, iC, iS, jC, jS, y, x, x1, x2, m, n, k, wnum, nperm, b, r, rp; + int q, t, iC, iS, jC, jS, y, x, x1, x2, msc, nsc, m, n, k, wnum, nperm, b, r, rp; int iC1, iS1, iC2, iS2, jC1, jS1, jC2, jS2, kC1, kS1, kC2, kS2; int rank = 0; @@ -73,39 +81,51 @@ void tiramisu_make_two_nucleon_2pt(double* C_re, long mega = 1024*1024; std::cout << "Array sizes" << std::endl; std::cout << "Prop:" << std::endl; - std::cout << " Max index size = " << Nq*Vsnk*Vsrc*Nc*Ns*Nc*Ns*Lt << std::endl; - std::cout << " Array size = " << Nq*Vsnk*Vsrc*Nc*Ns*Nc*Ns*Lt*sizeof(std::complex)/mega << " Mega bytes" << std::endl; - std::cout << "Q, O & P:" << std::endl; - std::cout << " Max index size = " << Vsnk*Vsrc*Nc*Ns*Nc*Ns << std::endl; - std::cout << " Array size = " << Vsnk*Vsrc*Nc*Ns*Nc*Ns*sizeof(std::complex)/mega << " Mega bytes" << std::endl; + std::cout << " Max index size = " << Vsnk*Vsrc*Nc*Ns*Nc*Ns*Lt << std::endl; + std::cout << " Array size = " << Vsnk*Vsrc*Nc*Ns*Nc*Ns*Lt*sizeof(std::complex)/mega << " Mega bytes" << std::endl; + //std::cout << "Q, O & P:" << std::endl; + //std::cout << " Max index size = " << Vsnk*Vsrc*Nc*Ns*Nc*Ns << std::endl; + //std::cout << " Array size = " << Vsnk*Vsrc*Nc*Ns*Nc*Ns*sizeof(std::complex)/mega << " Mega bytes" << std::endl; long kilo = 1024; - std::cout << "Blocal:" << std::endl; - std::cout << " Max index size = " << Vsnk*Nsrc*Nc*Ns*Nc*Ns*Nc*Ns << std::endl; - std::cout << " Array size = " << Vsnk*Nsrc*Nc*Ns*Nc*Ns*Nc*Ns*sizeof(std::complex)/kilo << " kilo bytes" << std::endl; + //std::cout << "Blocal:" << std::endl; + //std::cout << " Max index size = " << Vsnk*Nsrc*Nc*Ns*Nc*Ns*Nc*Ns << std::endl; + //std::cout << " Array size = " << Vsnk*Nsrc*Nc*Ns*Nc*Ns*Nc*Ns*sizeof(std::complex)/kilo << " kilo bytes" << std::endl; std::cout << "Blocal, Bsingle, Bdouble:" << std::endl; std::cout << " Max index size = " << Nc*Ns*Nc*Ns*Nc*Ns << std::endl; std::cout << " Array size = " << Nc*Ns*Nc*Ns*Nc*Ns*sizeof(std::complex)/kilo << " kilo bytes" << std::endl; std::cout << std::endl; } - // Halide buffers - Halide::Buffer b_C_r(Nsnk+NsnkHex, B2Nrows, Nsrc+NsrcHex, B2Nrows, Vsnk/sites_per_rank, Lt, "C_r"); - Halide::Buffer b_C_i(Nsnk+NsnkHex, B2Nrows, Nsrc+NsrcHex, B2Nrows, Vsnk/sites_per_rank, Lt, "C_i"); + // Halide buffers + int NsrcTot = B1NsrcSC*Nsrc+B2NsrcSC*NsrcHex; + int NsnkTot = B1NsnkSC*Nsnk+B2NsnkSC*NsnkHex; + Halide::Buffer b_C_r(NsnkTot, B2Nrows, NsrcTot, B2Nrows, Vsnk/sites_per_rank, Lt, "C_r"); + Halide::Buffer b_C_i(NsnkTot, B2Nrows, NsrcTot, B2Nrows, Vsnk/sites_per_rank, Lt, "C_i"); - Halide::Buffer b_src_color_weights(Nq, Nw, B2Nrows, "src_color_weights"); - Halide::Buffer b_src_spin_weights(Nq, Nw, B2Nrows, "src_spin_weights"); - Halide::Buffer b_src_weights(Nw, B2Nrows, "src_weights"); + Halide::Buffer b_src_color_weights(Nq, Nw, B1NsrcSC, 2, 2, "src_color_weights"); + Halide::Buffer b_src_spin_weights(Nq, Nw, B1NsrcSC, 2, 2, "src_spin_weights"); + Halide::Buffer b_src_weights(Nw, B1NsrcSC, 2, 2, "src_weights"); Halide::Buffer b_src_spins(2, 2, B2Nrows, "src_spins"); Halide::Buffer b_src_spin_block_weights(2, B2Nrows, "src_spin_block_weights"); - Halide::Buffer b_snk_b(2, Nq, Nperms, "snk_b"); - Halide::Buffer b_snk_color_weights(2, Nq, Nw2, Nperms, B2Nrows, "snk_color_weights"); - Halide::Buffer b_snk_spin_weights(2, Nq, Nw2, Nperms, B2Nrows, "snk_spin_weights"); - Halide::Buffer b_snk_weights(Nw2, B2Nrows, "snk_weights"); - Halide::Buffer b_hex_snk_color_weights(2, Nq, Nw2Hex, Nperms, B2Nrows, "hex_snk_color_weights"); - Halide::Buffer b_hex_snk_spin_weights(2, Nq, Nw2Hex, Nperms, B2Nrows, "hex_snk_spin_weights"); - Halide::Buffer b_hex_snk_weights(Nw2Hex, B2Nrows, "hex_snk_weights"); + Halide::Buffer b_snk_b(2, Nq, B1NsnkSC, B1NsrcSC, Nperms, "snk_b"); + + Halide::Buffer b_sigs((int *)sigs, {B1NsnkSC, B1NsrcSC, Nperms}); + Halide::Buffer b_hex_sigs((int *)hex_sigs, {B1NsrcSC, Nperms}); + Halide::Buffer b_hex_hex_sigs((int *)hex_hex_sigs, {Nperms}); + + Halide::Buffer b_snk_color_weights(2, Nq, Nw2, B1NsnkSC, B1NsrcSC, Nperms, B2Nrows, "snk_color_weights"); + Halide::Buffer b_snk_spin_weights(2, Nq, Nw2, B1NsnkSC, B1NsrcSC, Nperms, B2Nrows, "snk_spin_weights"); + Halide::Buffer b_snk_weights(Nw2, B1NsnkSC, B2Nrows, "snk_weights"); + Halide::Buffer b_hex_snk_color_weights(2, Nq, Nw2Hex, B2NsnkSC, B1NsrcSC, Nperms, B2Nrows, "hex_snk_color_weights"); + Halide::Buffer b_hex_snk_spin_weights(2, Nq, Nw2Hex, B2NsnkSC, B1NsrcSC, Nperms, B2Nrows, "hex_snk_spin_weights"); + Halide::Buffer b_hex_snk_weights(Nw2Hex, B2NsnkSC, B2Nrows, "hex_snk_weights"); + Halide::Buffer b_hex_src_color_weights(2, Nq, Nw2Hex, B2NsrcSC, B1NsnkSC, Nperms, B2Nrows, "hex_src_color_weights"); + Halide::Buffer b_hex_src_spin_weights(2, Nq, Nw2Hex, B2NsrcSC, B1NsnkSC, Nperms, B2Nrows, "hex_src_spin_weights"); + Halide::Buffer b_hex_src_weights(Nw2Hex, B2NsrcSC, B2Nrows, "hex_src_weights"); + Halide::Buffer b_hex_hex_snk_color_weights(2, Nq, Nw2Hex, B2NsnkSC, Nperms, B2Nrows, "hex_hex_snk_color_weights"); + Halide::Buffer b_hex_hex_snk_spin_weights(2, Nq, Nw2Hex, B2NsnkSC, Nperms, B2Nrows, "hex_hex_snk_spin_weights"); // prop Halide::Buffer b_B1_prop_r((double *)B1_prop_re, {Vsrc, Vsnk, Ns, Nc, Ns, Nc, Lt}); @@ -128,87 +148,109 @@ void tiramisu_make_two_nucleon_2pt(double* C_re, Halide::Buffer b_hex_src_psi_i((double *)hex_src_psi_im, {NsrcHex, Vsrc}); Halide::Buffer b_hex_snk_psi_r((double *)hex_snk_psi_re, {NsnkHex, Vsnk}); Halide::Buffer b_hex_snk_psi_i((double *)hex_snk_psi_im, {NsnkHex, Vsnk}); - Halide::Buffer b_snk_psi_r((double *)snk_psi_re, {Nsnk, Vsnk, sites_per_rank}); - Halide::Buffer b_snk_psi_i((double *)snk_psi_im, {Nsnk, Vsnk, sites_per_rank}); + Halide::Buffer b_snk_psi_r((double *)snk_psi_re, {NEntangled, Vsnk, sites_per_rank}); + Halide::Buffer b_snk_psi_i((double *)snk_psi_im, {NEntangled, Vsnk, sites_per_rank}); - Halide::Buffer b_sigs((int *)sigs, {Nperms}); + if (rank == 0) { + printf("psi elem %4.9f \n", b_snk_psi_r(0,0,0)); + } // Weights + for (int msc=0; msc 0) { + printf("src weights elem %4.9f \n", b_src_color_weights(0,0,0,0,0)); + } + + int* snk_color_weights_r1 = (int *) malloc(2 * Nw2 * B1NsnkSC * Nq * sizeof (int)); + int* snk_color_weights_r2 = (int *) malloc(2 * Nw2 * B1NsnkSC * Nq * sizeof (int)); + int* snk_color_weights_r3 = (int *) malloc(2 * Nw2 * B1NsnkSC * Nq * sizeof (int)); + int* snk_spin_weights_r1 = (int *) malloc(2 * Nw2 * B1NsnkSC * Nq * sizeof (int)); + int* snk_spin_weights_r2 = (int *) malloc(2 * Nw2 * B1NsnkSC * Nq * sizeof (int)); + int* snk_spin_weights_r3 = (int *) malloc(2 * Nw2 * B1NsnkSC * Nq * sizeof (int)); + for (int nsc=0; nsc 0) printf("weights snk %4.1f \n", b_snk_weights(0,0)); printf("sigs %d \n", b_sigs(0)); } @@ -370,6 +459,8 @@ void tiramisu_make_two_nucleon_2pt(double* C_re, b_src_spins.raw_buffer(), b_src_spin_block_weights.raw_buffer(), b_sigs.raw_buffer(), + b_hex_sigs.raw_buffer(), + b_hex_hex_sigs.raw_buffer(), b_src_color_weights.raw_buffer(), b_src_spin_weights.raw_buffer(), b_src_weights.raw_buffer(), @@ -379,7 +470,12 @@ void tiramisu_make_two_nucleon_2pt(double* C_re, b_snk_weights.raw_buffer(), b_hex_snk_color_weights.raw_buffer(), b_hex_snk_spin_weights.raw_buffer(), - b_hex_snk_weights.raw_buffer()); + b_hex_snk_weights.raw_buffer(), + b_hex_src_color_weights.raw_buffer(), + b_hex_src_spin_weights.raw_buffer(), + b_hex_src_weights.raw_buffer(), + b_hex_hex_snk_color_weights.raw_buffer(), + b_hex_hex_snk_spin_weights.raw_buffer()); printf("done \n"); @@ -389,28 +485,26 @@ void tiramisu_make_two_nucleon_2pt(double* C_re, printf("BB-BB non-zero? %4.9e + I %4.9e \n", b_C_r(0,1,0,0,0,0), b_C_i(0,1,0,0,0,0) ); printf("BB-BB non-zero? %4.9e + I %4.9e \n", b_C_r(0,2,0,0,0,0), b_C_i(0,2,0,0,0,0) ); printf("BB-BB non-zero? %4.9e + I %4.9e \n", b_C_r(0,3,0,0,0,0), b_C_i(0,3,0,0,0,0) ); - printf("BB-BB non-zero? %4.9e + I %4.9e \n", b_C_r(0,4,0,0,0,0), b_C_i(0,4,0,0,0,0) ); - printf("BB-BB non-zero? %4.9e + I %4.9e \n", b_C_r(0,5,0,0,0,0), b_C_i(0,5,0,0,0,0) ); - printf("H-BB non-zero? %4.9e + I %4.9e \n", b_C_r(0,0,Nsrc,0,0,0), b_C_i(0,0,Nsrc,0,0,0) ); - printf("H-BB non-zero? %4.9e + I %4.9e \n", b_C_r(0,1,Nsrc,0,0,0), b_C_i(0,1,Nsrc,0,0,0) ); - printf("H-BB non-zero? %4.9e + I %4.9e \n", b_C_r(0,2,Nsrc,0,0,0), b_C_i(0,2,Nsrc,0,0,0) ); - printf("H-BB non-zero? %4.9e + I %4.9e \n", b_C_r(0,3,Nsrc,0,0,0), b_C_i(0,3,Nsrc,0,0,0) ); - printf("H-BB non-zero? %4.9e + I %4.9e \n", b_C_r(0,4,Nsrc,0,0,0), b_C_i(0,4,Nsrc,0,0,0) ); - printf("H-BB non-zero? %4.9e + I %4.9e \n", b_C_r(0,5,Nsrc,0,0,0), b_C_i(0,5,Nsrc,0,0,0) ); - printf("H-H non-zero? %4.9e + I %4.9e \n", b_C_r(Nsnk,0,Nsrc,0,0,0), b_C_i(Nsnk,0,Nsrc,0,0,0) ); - printf("H-H non-zero? %4.9e + I %4.9e \n", b_C_r(Nsnk,1,Nsrc,0,0,0), b_C_i(Nsnk,1,Nsrc,0,0,0) ); - printf("H-H non-zero? %4.9e + I %4.9e \n", b_C_r(Nsnk,2,Nsrc,0,0,0), b_C_i(Nsnk,2,Nsrc,0,0,0) ); - printf("H-H non-zero? %4.9e + I %4.9e \n", b_C_r(Nsnk,3,Nsrc,0,0,0), b_C_i(Nsnk,3,Nsrc,0,0,0) ); - printf("H-H non-zero? %4.9e + I %4.9e \n", b_C_r(Nsnk,4,Nsrc,0,0,0), b_C_i(Nsnk,4,Nsrc,0,0,0) ); - printf("H-H non-zero? %4.9e + I %4.9e \n", b_C_r(Nsnk,5,Nsrc,0,0,0), b_C_i(Nsnk,5,Nsrc,0,0,0) ); + printf("H-BB non-zero? %4.9e + I %4.9e \n", b_C_r(0,0,B1NsrcSC*Nsrc,0,0,0), b_C_i(0,0,B1NsrcSC*Nsrc,0,0,0) ); + printf("H-BB non-zero? %4.9e + I %4.9e \n", b_C_r(0,1,B1NsrcSC*Nsrc,0,0,0), b_C_i(0,1,B1NsrcSC*Nsrc,0,0,0) ); + printf("H-BB non-zero? %4.9e + I %4.9e \n", b_C_r(0,2,B1NsrcSC*Nsrc,0,0,0), b_C_i(0,2,B1NsrcSC*Nsrc,0,0,0) ); + printf("H-BB non-zero? %4.9e + I %4.9e \n", b_C_r(0,3,B1NsrcSC*Nsrc,0,0,0), b_C_i(0,3,B1NsrcSC*Nsrc,0,0,0) ); + printf("H-H non-zero? %4.9e + I %4.9e \n", b_C_r(B1NsnkSC*Nsnk,0,B1NsrcSC*Nsrc,0,0,0), b_C_i(B1NsnkSC*Nsnk,0,B1NsrcSC*Nsrc,0,0,0) ); + printf("H-H non-zero? %4.9e + I %4.9e \n", b_C_r(B1NsnkSC*Nsnk,1,B1NsrcSC*Nsrc,0,0,0), b_C_i(B1NsnkSC*Nsnk,1,B1NsrcSC*Nsrc,0,0,0) ); + printf("H-H non-zero? %4.9e + I %4.9e \n", b_C_r(B1NsnkSC*Nsnk,2,B1NsrcSC*Nsrc,0,0,0), b_C_i(B1NsnkSC*Nsnk,2,B1NsrcSC*Nsrc,0,0,0) ); + printf("H-H non-zero? %4.9e + I %4.9e \n", b_C_r(B1NsnkSC*Nsnk,3,B1NsrcSC*Nsrc,0,0,0), b_C_i(B1NsnkSC*Nsnk,3,B1NsrcSC*Nsrc,0,0,0) ); + printf("H-H non-zero? %4.9e + I %4.9e \n", b_C_r(B1NsnkSC*Nsnk+B2NsnkSC*NsnkHex-1,0,B1NsrcSC*Nsrc+B2NsrcSC*NsrcHex-1,0,0,0), b_C_i(B1NsnkSC*Nsnk+B2NsnkSC*NsnkHex-1,0,B1NsrcSC*Nsrc+B2NsrcSC*NsrcHex-1,0,0,0) ); + printf("H-H non-zero? %4.9e + I %4.9e \n", b_C_r(B1NsnkSC*Nsnk+B2NsnkSC*NsnkHex-1,1,B1NsrcSC*Nsrc+B2NsrcSC*NsrcHex-1,0,0,0), b_C_i(B1NsnkSC*Nsnk+B2NsnkSC*NsnkHex-1,1,B1NsrcSC*Nsrc+B2NsrcSC*NsrcHex-1,0,0,0) ); + printf("H-H non-zero? %4.9e + I %4.9e \n", b_C_r(B1NsnkSC*Nsnk+B2NsnkSC*NsnkHex-1,2,B1NsrcSC*Nsrc+B2NsrcSC*NsrcHex-1,0,0,0), b_C_i(B1NsnkSC*Nsnk+B2NsnkSC*NsnkHex-1,2,B1NsrcSC*Nsrc+B2NsrcSC*NsrcHex-1,0,0,0) ); + printf("H-H non-zero? %4.9e + I %4.9e \n", b_C_r(B1NsnkSC*Nsnk+B2NsnkSC*NsnkHex-1,3,B1NsrcSC*Nsrc+B2NsrcSC*NsrcHex-1,0,0,0), b_C_i(B1NsnkSC*Nsnk+B2NsnkSC*NsnkHex-1,3,B1NsrcSC*Nsrc+B2NsrcSC*NsrcHex-1,0,0,0) ); } // symmetrize and such #ifdef WITH_MPI for (int rp=0; rp> duration_vector_1; std::vector> duration_vector_2; - int q, t, iC, iS, jC, jS, y, x, x1, x2, m, n, k, wnum, nperm, b, r, rp; + int q, t, iC, iS, jC, jS, y, x, x1, x2, msc, nsc, m, n, k, wnum, nperm, b, r, rp; int iC1, iS1, iC2, iS2, jC1, jS1, jC2, jS2, kC1, kS1, kC2, kS2; + int NsrcTot = B1NsrcSC*Nsrc+B2NsrcSC*NsrcHex; + int NsnkTot = B1NsnkSC*Nsnk+B2NsnkSC*NsnkHex; + // Initialization // Props double* B1_prop_re = (double *) malloc(Lt * Nc * Ns * Nc * Ns * Vsnk * Vsrc * sizeof (double)); @@ -567,10 +664,13 @@ int main(int, char **) } } for (n = 0; n < NEntangled; n++) - for (x1 = 0; x1 < Vsnk; x1++) + for (int x_in = 0; x_in < sites_per_rank; x_in++) for (x2 = 0; x2 < Vsnk; x2++) { - snk_psi_re[index_3d(x1,x2,n ,Vsnk,NEntangled)] = snk_psi_B1_re[index_2d(x1,n ,Nsnk)]*snk_psi_B2_re[index_2d(x2,n ,Nsnk)] - snk_psi_B1_im[index_2d(x1,n ,Nsnk)]*snk_psi_B2_im[index_2d(x2,n ,Nsnk)] + snk_psi_B1_re[index_2d(x2,n ,Nsnk)]*snk_psi_B2_re[index_2d(x1,n ,Nsnk)] - snk_psi_B1_im[index_2d(x2,n ,Nsnk)]*snk_psi_B2_im[index_2d(x1,n ,Nsnk)];// / Vsnk; - snk_psi_im[index_3d(x1,x2,n ,Vsnk,NEntangled)] = snk_psi_B1_re[index_2d(x1,n ,Nsnk)]*snk_psi_B2_im[index_2d(x2,n ,Nsnk)] + snk_psi_B1_im[index_2d(x1,n ,Nsnk)]*snk_psi_B2_re[index_2d(x2,n ,Nsnk)] + snk_psi_B1_re[index_2d(x2,n ,Nsnk)]*snk_psi_B2_im[index_2d(x1,n ,Nsnk)] + snk_psi_B1_im[index_2d(x2,n ,Nsnk)]*snk_psi_B2_re[index_2d(x1,n ,Nsnk)];// / Vsnk; + x1 = rank*sites_per_rank + x_in; + //snk_psi_re[index_3d(x1,x2,n ,Vsnk,NEntangled)] = snk_psi_B1_re[index_2d(x1,n ,Nsnk)]*snk_psi_B2_re[index_2d(x2,n ,Nsnk)] - snk_psi_B1_im[index_2d(x1,n ,Nsnk)]*snk_psi_B2_im[index_2d(x2,n ,Nsnk)] + snk_psi_B1_re[index_2d(x2,n ,Nsnk)]*snk_psi_B2_re[index_2d(x1,n ,Nsnk)] - snk_psi_B1_im[index_2d(x2,n ,Nsnk)]*snk_psi_B2_im[index_2d(x1,n ,Nsnk)];// / Vsnk; + //snk_psi_im[index_3d(x1,x2,n ,Vsnk,NEntangled)] = snk_psi_B1_re[index_2d(x1,n ,Nsnk)]*snk_psi_B2_im[index_2d(x2,n ,Nsnk)] + snk_psi_B1_im[index_2d(x1,n ,Nsnk)]*snk_psi_B2_re[index_2d(x2,n ,Nsnk)] + snk_psi_B1_re[index_2d(x2,n ,Nsnk)]*snk_psi_B2_im[index_2d(x1,n ,Nsnk)] + snk_psi_B1_im[index_2d(x2,n ,Nsnk)]*snk_psi_B2_re[index_2d(x1,n ,Nsnk)];// / Vsnk; + snk_psi_re[index_3d(x_in,x2,n ,Vsnk,NEntangled)] = snk_psi_B1_re[index_2d(x1,n ,Nsnk)]*snk_psi_B2_re[index_2d(x2,n ,Nsnk)] - snk_psi_B1_im[index_2d(x1,n ,Nsnk)]*snk_psi_B2_im[index_2d(x2,n ,Nsnk)] + snk_psi_B1_re[index_2d(x2,n ,Nsnk)]*snk_psi_B2_re[index_2d(x1,n ,Nsnk)] - snk_psi_B1_im[index_2d(x2,n ,Nsnk)]*snk_psi_B2_im[index_2d(x1,n ,Nsnk)];// / Vsnk; + snk_psi_im[index_3d(x_in,x2,n ,Vsnk,NEntangled)] = snk_psi_B1_re[index_2d(x1,n ,Nsnk)]*snk_psi_B2_im[index_2d(x2,n ,Nsnk)] + snk_psi_B1_im[index_2d(x1,n ,Nsnk)]*snk_psi_B2_re[index_2d(x2,n ,Nsnk)] + snk_psi_B1_re[index_2d(x2,n ,Nsnk)]*snk_psi_B2_im[index_2d(x1,n ,Nsnk)] + snk_psi_B1_im[index_2d(x2,n ,Nsnk)]*snk_psi_B2_re[index_2d(x1,n ,Nsnk)];// / Vsnk; //snk_psi_re[index_3d(x1,x2,n ,Vsnk,Nsnk)] = 1;// / Vsnk; //snk_psi_im[index_3d(x1,x2,n ,Vsnk,Nsnk)] = 0;// / Vsnk; } @@ -579,8 +679,6 @@ int main(int, char **) for (x2 = 0; x2 < Vsnk; x2++) { all_snk_psi_re[index_3d(x1,x2,n ,Vsnk,Nsnk)] = snk_psi_B1_re[index_2d(x1,n ,Nsnk)]*snk_psi_B2_re[index_2d(x2,n ,Nsnk)] - snk_psi_B1_im[index_2d(x1,n ,Nsnk)]*snk_psi_B2_im[index_2d(x2,n ,Nsnk)] + snk_psi_B1_re[index_2d(x2,n ,Nsnk)]*snk_psi_B2_re[index_2d(x1,n ,Nsnk)] - snk_psi_B1_im[index_2d(x2,n ,Nsnk)]*snk_psi_B2_im[index_2d(x1,n ,Nsnk)];// / Vsnk; all_snk_psi_im[index_3d(x1,x2,n ,Vsnk,Nsnk)] = snk_psi_B1_re[index_2d(x1,n ,Nsnk)]*snk_psi_B2_im[index_2d(x2,n ,Nsnk)] + snk_psi_B1_im[index_2d(x1,n ,Nsnk)]*snk_psi_B2_re[index_2d(x2,n ,Nsnk)] + snk_psi_B1_re[index_2d(x2,n ,Nsnk)]*snk_psi_B2_im[index_2d(x1,n ,Nsnk)] + snk_psi_B1_im[index_2d(x2,n ,Nsnk)]*snk_psi_B2_re[index_2d(x1,n ,Nsnk)];// / Vsnk; - //snk_psi_re[index_3d(x1,x2,n ,Vsnk,Nsnk)] = 1;// / Vsnk; - //snk_psi_im[index_3d(x1,x2,n ,Vsnk,Nsnk)] = 0;// / Vsnk; } for (n = 0; n < NEntangled; n++) for (int x_in = 0; x_in < sites_per_rank; x_in++) @@ -636,77 +734,126 @@ int main(int, char **) static int src_spin_weights_r2_P[Nw][Nq] = { {0,1,1}, {0,1,1}, {0,1,1}, {0,1,1}, {0,1,1}, {0,1,1}, {1,0,1}, {1,0,1}, {1,0,1}, {1,0,1}, {1,0,1}, {1,0,1} }; static double src_weights_r2_P[Nw] = {1/ sqrt(2), -1/sqrt(2), -1/sqrt(2), 1/sqrt(2), -1/sqrt(2), 1/sqrt(2), -1/ sqrt(2), 1/sqrt(2), 1/sqrt(2), -1/sqrt(2), 1/sqrt(2), -1/sqrt(2)}; - int* src_color_weights_r1 = (int *) malloc(Nw * Nq * sizeof (int)); - int* src_color_weights_r2 = (int *) malloc(Nw * Nq * sizeof (int)); - int* src_spin_weights_r1 = (int *) malloc(Nw * Nq * sizeof (int)); - int* src_spin_weights_r2 = (int *) malloc(Nw * Nq * sizeof (int)); - double src_weights_r1[Nw]; - double src_weights_r2[Nw]; + int* src_color_weights_r1 = (int *) malloc(B1NsrcSC * Nw * Nq * sizeof (int)); + int* src_color_weights_r2 = (int *) malloc(B1NsrcSC * Nw * Nq * sizeof (int)); + int* src_spin_weights_r1 = (int *) malloc(B1NsrcSC * Nw * Nq * sizeof (int)); + int* src_spin_weights_r2 = (int *) malloc(B1NsrcSC * Nw * Nq * sizeof (int)); + double* src_weights_r1 = (double *) malloc(B1NsrcSC * Nw * sizeof (double)); + double* src_weights_r2 = (double *) malloc(B1NsrcSC * Nw * sizeof (double)); + for (msc = 0; msc < B1NsrcSC; msc++) for (wnum = 0; wnum < Nw; wnum++) { for (q = 0; q < Nq; q++) { - src_color_weights_r1[index_2d(wnum,q ,Nq)] = src_color_weights_r1_P[wnum][q]; - src_color_weights_r2[index_2d(wnum,q ,Nq)] = src_color_weights_r2_P[wnum][q]; - src_spin_weights_r1[index_2d(wnum,q ,Nq)] = src_spin_weights_r1_P[wnum][q]; - src_spin_weights_r2[index_2d(wnum,q ,Nq)] = src_spin_weights_r2_P[wnum][q]; + src_color_weights_r1[index_3d(msc,wnum,q ,Nw,Nq)] = src_color_weights_r1_P[wnum][q]; + src_color_weights_r2[index_3d(msc,wnum,q ,Nw,Nq)] = src_color_weights_r2_P[wnum][q]; + src_spin_weights_r1[index_3d(msc,wnum,q ,Nw,Nq)] = src_spin_weights_r1_P[wnum][q]; + src_spin_weights_r2[index_3d(msc,wnum,q ,Nw,Nq)] = src_spin_weights_r2_P[wnum][q]; } - src_weights_r1[wnum] = src_weights_r1_P[wnum]; - src_weights_r2[wnum] = src_weights_r2_P[wnum]; + src_weights_r1[index_2d(msc,wnum ,Nw)] = src_weights_r1_P[wnum]; + src_weights_r2[index_2d(msc,wnum ,Nw)] = src_weights_r2_P[wnum]; } - int* snk_color_weights_A1 = (int *) malloc(Nw2Hex * 2*Nq * sizeof (int)); - int* snk_color_weights_T1_r1 = (int *) malloc(Nw2Hex * 2*Nq * sizeof (int)); - int* snk_color_weights_T1_r2 = (int *) malloc(Nw2Hex * 2*Nq * sizeof (int)); - int* snk_color_weights_T1_r3 = (int *) malloc(Nw2Hex * 2*Nq * sizeof (int)); - int* snk_spin_weights_A1 = (int *) malloc(Nw2Hex * 2*Nq * sizeof (int)); - int* snk_spin_weights_T1_r1 = (int *) malloc(Nw2Hex * 2*Nq * sizeof (int)); - int* snk_spin_weights_T1_r2 = (int *) malloc(Nw2Hex * 2*Nq * sizeof (int)); - int* snk_spin_weights_T1_r3 = (int *) malloc(Nw2Hex * 2*Nq * sizeof (int)); - double snk_weights_A1[Nw2Hex]; - double snk_weights_T1_r1[Nw2Hex]; - double snk_weights_T1_r2[Nw2Hex]; - double snk_weights_T1_r3[Nw2Hex]; - for (wnum = 0; wnum < Nw2Hex; wnum++) { + int* snk_color_weights_A1 = (int *) malloc(B2NsrcSC * Nw2Hex * 2*Nq * sizeof (int)); + int* snk_color_weights_T1_r1 = (int *) malloc(B2NsrcSC * Nw2Hex * 2*Nq * sizeof (int)); + int* snk_color_weights_T1_r2 = (int *) malloc(B2NsrcSC * Nw2Hex * 2*Nq * sizeof (int)); + int* snk_color_weights_T1_r3 = (int *) malloc(B2NsrcSC * Nw2Hex * 2*Nq * sizeof (int)); + int* snk_spin_weights_A1 = (int *) malloc(B2NsrcSC * Nw2Hex * 2*Nq * sizeof (int)); + int* snk_spin_weights_T1_r1 = (int *) malloc(B2NsrcSC * Nw2Hex * 2*Nq * sizeof (int)); + int* snk_spin_weights_T1_r2 = (int *) malloc(B2NsrcSC * Nw2Hex * 2*Nq * sizeof (int)); + int* snk_spin_weights_T1_r3 = (int *) malloc(B2NsrcSC * Nw2Hex * 2*Nq * sizeof (int)); + double* snk_weights_A1 = (double *) malloc(B2NsrcSC * Nw2Hex * sizeof (double)); + double* snk_weights_T1_r1 = (double *) malloc(B2NsrcSC * Nw2Hex * sizeof (double)); + double* snk_weights_T1_r2 = (double *) malloc(B2NsrcSC * Nw2Hex * sizeof (double)); + double* snk_weights_T1_r3 = (double *) malloc(B2NsrcSC * Nw2Hex * sizeof (double)); + + //for (wnum = 0; wnum < Nw2Hex; wnum++) { + int smallHex = 32; + //int smallHex = 400; + for (msc = 0; msc < B2NsrcSC; msc++) + for (wnum = 0; wnum < smallHex; wnum++) { for (q = 0; q < 2*Nq; q++) { - snk_color_weights_A1[index_2d(wnum,q ,2*Nq)] = q % Nc; - snk_color_weights_T1_r1[index_2d(wnum,q ,2*Nq)] = q % Nc; - snk_color_weights_T1_r2[index_2d(wnum,q ,2*Nq)] = q % Nc; - snk_color_weights_T1_r3[index_2d(wnum,q ,2*Nq)] = q % Nc; + snk_color_weights_A1[index_3d(msc,wnum,q ,Nw2Hex,2*Nq)] = q % Nc; + snk_color_weights_T1_r1[index_3d(msc,wnum,q ,Nw2Hex,2*Nq)] = q % Nc; + snk_color_weights_T1_r2[index_3d(msc,wnum,q ,Nw2Hex,2*Nq)] = q % Nc; + snk_color_weights_T1_r3[index_3d(msc,wnum,q ,Nw2Hex,2*Nq)] = q % Nc; } - snk_spin_weights_A1[index_2d(wnum,0 ,2*Nq)] = 0; - snk_spin_weights_T1_r1[index_2d(wnum,0 ,2*Nq)] = 0; - snk_spin_weights_T1_r2[index_2d(wnum,0 ,2*Nq)] = 0; - snk_spin_weights_T1_r3[index_2d(wnum,0 ,2*Nq)] = 1; - snk_spin_weights_A1[index_2d(wnum,1 ,2*Nq)] = 1; - snk_spin_weights_T1_r1[index_2d(wnum,1 ,2*Nq)] = 1; - snk_spin_weights_T1_r2[index_2d(wnum,1 ,2*Nq)] = 1; - snk_spin_weights_T1_r3[index_2d(wnum,1 ,2*Nq)] = 0; - snk_spin_weights_A1[index_2d(wnum,2 ,2*Nq)] = 0; - snk_spin_weights_T1_r1[index_2d(wnum,2 ,2*Nq)] = 0; - snk_spin_weights_T1_r2[index_2d(wnum,2 ,2*Nq)] = 0; - snk_spin_weights_T1_r3[index_2d(wnum,2 ,2*Nq)] = 1; - snk_spin_weights_A1[index_2d(wnum,3 ,2*Nq)] = 1; - snk_spin_weights_T1_r1[index_2d(wnum,3 ,2*Nq)] = 0; - snk_spin_weights_T1_r2[index_2d(wnum,3 ,2*Nq)] = 1; - snk_spin_weights_T1_r3[index_2d(wnum,3 ,2*Nq)] = 1; - snk_spin_weights_A1[index_2d(wnum,4 ,2*Nq)] = 0; - snk_spin_weights_T1_r1[index_2d(wnum,4 ,2*Nq)] = 1; - snk_spin_weights_T1_r2[index_2d(wnum,4 ,2*Nq)] = 0; - snk_spin_weights_T1_r3[index_2d(wnum,4 ,2*Nq)] = 0; - snk_spin_weights_A1[index_2d(wnum,5 ,2*Nq)] = 1; - snk_spin_weights_T1_r1[index_2d(wnum,5 ,2*Nq)] = 0; - snk_spin_weights_T1_r2[index_2d(wnum,5 ,2*Nq)] = 1; - snk_spin_weights_T1_r3[index_2d(wnum,5 ,2*Nq)] = 1; - snk_weights_A1[wnum] = -1.0/sqrt(2); - snk_weights_T1_r1[wnum] = 1.0; - snk_weights_T1_r2[wnum] = -1.0/sqrt(2); - snk_weights_T1_r3[wnum] = 1.0; + snk_spin_weights_A1[index_3d(msc,wnum,0 ,Nw2Hex,2*Nq)] = 0; + snk_spin_weights_T1_r1[index_3d(msc,wnum,0 ,Nw2Hex,2*Nq)] = 0; + snk_spin_weights_T1_r2[index_3d(msc,wnum,0 ,Nw2Hex,2*Nq)] = 0; + snk_spin_weights_T1_r3[index_3d(msc,wnum,0 ,Nw2Hex,2*Nq)] = 1; + snk_spin_weights_A1[index_3d(msc,wnum,1 ,Nw2Hex,2*Nq)] = 1; + snk_spin_weights_T1_r1[index_3d(msc,wnum,1 ,Nw2Hex,2*Nq)] = 1; + snk_spin_weights_T1_r2[index_3d(msc,wnum,1 ,Nw2Hex,2*Nq)] = 1; + snk_spin_weights_T1_r3[index_3d(msc,wnum,1 ,Nw2Hex,2*Nq)] = 0; + snk_spin_weights_A1[index_3d(msc,wnum,2 ,Nw2Hex,2*Nq)] = 0; + snk_spin_weights_T1_r1[index_3d(msc,wnum,2 ,Nw2Hex,2*Nq)] = 0; + snk_spin_weights_T1_r2[index_3d(msc,wnum,2 ,Nw2Hex,2*Nq)] = 0; + snk_spin_weights_T1_r3[index_3d(msc,wnum,2 ,Nw2Hex,2*Nq)] = 1; + snk_spin_weights_A1[index_3d(msc,wnum,3 ,Nw2Hex,2*Nq)] = 1; + snk_spin_weights_T1_r1[index_3d(msc,wnum,3 ,Nw2Hex,2*Nq)] = 0; + snk_spin_weights_T1_r2[index_3d(msc,wnum,3 ,Nw2Hex,2*Nq)] = 1; + snk_spin_weights_T1_r3[index_3d(msc,wnum,3 ,Nw2Hex,2*Nq)] = 1; + snk_spin_weights_A1[index_3d(msc,wnum,4 ,Nw2Hex,2*Nq)] = 0; + snk_spin_weights_T1_r1[index_3d(msc,wnum,4 ,Nw2Hex,2*Nq)] = 1; + snk_spin_weights_T1_r2[index_3d(msc,wnum,4 ,Nw2Hex,2*Nq)] = 0; + snk_spin_weights_T1_r3[index_3d(msc,wnum,4 ,Nw2Hex,2*Nq)] = 0; + snk_spin_weights_A1[index_3d(msc,wnum,5 ,Nw2Hex,2*Nq)] = 1; + snk_spin_weights_T1_r1[index_3d(msc,wnum,5 ,Nw2Hex,2*Nq)] = 0; + snk_spin_weights_T1_r2[index_3d(msc,wnum,5 ,Nw2Hex,2*Nq)] = 1; + snk_spin_weights_T1_r3[index_3d(msc,wnum,5 ,Nw2Hex,2*Nq)] = 1; + snk_weights_A1[index_2d(msc,wnum ,Nw2Hex)] = -1.0/sqrt(2); + snk_weights_T1_r1[index_2d(msc,wnum ,Nw2Hex)] = 1.0; + snk_weights_T1_r2[index_2d(msc,wnum ,Nw2Hex)] = -1.0/sqrt(2); + snk_weights_T1_r3[index_2d(msc,wnum ,Nw2Hex)] = 1.0; } + for (msc = 0; msc < B2NsrcSC; msc++) + for (wnum = smallHex; wnum < Nw2Hex; wnum++) { + for (q = 0; q < 2*Nq; q++) { + snk_color_weights_A1[index_3d(msc,wnum,q ,Nw2Hex,2*Nq)] = q % Nc; + snk_color_weights_T1_r1[index_3d(msc,wnum,q ,Nw2Hex,2*Nq)] = q % Nc; + snk_color_weights_T1_r2[index_3d(msc,wnum,q ,Nw2Hex,2*Nq)] = q % Nc; + snk_color_weights_T1_r3[index_3d(msc,wnum,q ,Nw2Hex,2*Nq)] = q % Nc; + } + snk_spin_weights_A1[index_3d(msc,wnum,0 ,Nw2Hex,2*Nq)] = 0; + snk_spin_weights_T1_r1[index_3d(msc,wnum,0 ,Nw2Hex,2*Nq)] = 0; + snk_spin_weights_T1_r2[index_3d(msc,wnum,0 ,Nw2Hex,2*Nq)] = 0; + snk_spin_weights_T1_r3[index_3d(msc,wnum,0 ,Nw2Hex,2*Nq)] = 1; + snk_spin_weights_A1[index_3d(msc,wnum,1 ,Nw2Hex,2*Nq)] = 1; + snk_spin_weights_T1_r1[index_3d(msc,wnum,1 ,Nw2Hex,2*Nq)] = 1; + snk_spin_weights_T1_r2[index_3d(msc,wnum,1 ,Nw2Hex,2*Nq)] = 1; + snk_spin_weights_T1_r3[index_3d(msc,wnum,1 ,Nw2Hex,2*Nq)] = 0; + snk_spin_weights_A1[index_3d(msc,wnum,2 ,Nw2Hex,2*Nq)] = 0; + snk_spin_weights_T1_r1[index_3d(msc,wnum,2 ,Nw2Hex,2*Nq)] = 0; + snk_spin_weights_T1_r2[index_3d(msc,wnum,2 ,Nw2Hex,2*Nq)] = 0; + snk_spin_weights_T1_r3[index_3d(msc,wnum,2 ,Nw2Hex,2*Nq)] = 1; + snk_spin_weights_A1[index_3d(msc,wnum,3 ,Nw2Hex,2*Nq)] = 1; + snk_spin_weights_T1_r1[index_3d(msc,wnum,3 ,Nw2Hex,2*Nq)] = 0; + snk_spin_weights_T1_r2[index_3d(msc,wnum,3 ,Nw2Hex,2*Nq)] = 1; + snk_spin_weights_T1_r3[index_3d(msc,wnum,3 ,Nw2Hex,2*Nq)] = 1; + snk_spin_weights_A1[index_3d(msc,wnum,4 ,Nw2Hex,2*Nq)] = 0; + snk_spin_weights_T1_r1[index_3d(msc,wnum,4 ,Nw2Hex,2*Nq)] = 1; + snk_spin_weights_T1_r2[index_3d(msc,wnum,4 ,Nw2Hex,2*Nq)] = 0; + snk_spin_weights_T1_r3[index_3d(msc,wnum,4 ,Nw2Hex,2*Nq)] = 0; + snk_spin_weights_A1[index_3d(msc,wnum,5 ,Nw2Hex,2*Nq)] = 1; + snk_spin_weights_T1_r1[index_3d(msc,wnum,5 ,Nw2Hex,2*Nq)] = 0; + snk_spin_weights_T1_r2[index_3d(msc,wnum,5 ,Nw2Hex,2*Nq)] = 1; + snk_spin_weights_T1_r3[index_3d(msc,wnum,5 ,Nw2Hex,2*Nq)] = 1; + snk_weights_A1[index_2d(msc,wnum ,Nw2Hex)] = 0.0; + snk_weights_T1_r1[index_2d(msc,wnum ,Nw2Hex)] = 0.0; + snk_weights_T1_r2[index_2d(msc,wnum ,Nw2Hex)] = 0.0; + snk_weights_T1_r3[index_2d(msc,wnum ,Nw2Hex)] = 0.0; + } // Permutations int perms_array[36][6] = { {1,2,3,4,5,6}, {1, 4, 3, 2, 5, 6}, {1, 6, 3, 2, 5, 4}, {1, 2, 3, 6, 5, 4}, {1, 4, 3, 6, 5, 2}, {1, 6, 3, 4, 5, 2}, {3, 2, 1, 4, 5, 6}, {3, 4, 1, 2, 5, 6}, {3, 6, 1, 2, 5, 4}, {3, 2, 1, 6, 5, 4}, {3, 4, 1, 6, 5, 2}, {3, 6, 1, 4, 5, 2}, {5, 2, 1, 4, 3, 6}, {5, 4, 1, 2, 3, 6}, {5, 6, 1, 2, 3, 4}, {5, 2, 1, 6, 3, 4}, {5, 4, 1, 6, 3, 2}, {5, 6, 1, 4, 3, 2}, {1, 2, 5, 4, 3, 6}, {1, 4, 5, 2, 3, 6}, {1, 6, 5, 2, 3, 4}, {1, 2, 5, 6, 3, 4}, {1, 4, 5, 6, 3, 2}, {1, 6, 5, 4, 3, 2}, {3, 2, 5, 4, 1, 6}, {3, 4, 5, 2, 1, 6}, {3, 6, 5, 2, 1, 4}, {3, 2, 5, 6, 1, 4}, {3, 4, 5, 6, 1, 2}, {3, 6, 5, 4, 1, 2}, {5, 2, 3, 4, 1, 6}, {5, 4, 3, 2, 1, 6}, {5, 6, 3, 2, 1, 4}, {5, 2, 3, 6, 1, 4}, {5, 4, 3, 6, 1, 2}, {5, 6, 3, 4, 1, 2} }; int sigs_array[36] = {1,-1,1,-1,1,-1,-1,1,-1,1,-1,1,1,-1,1,-1,1,-1,-1,1,-1,1,-1,1,1,-1,1,-1,1,-1,-1,1,-1,1,-1,1}; - int* perms = (int *) malloc(Nperms * 2*Nq * sizeof (int)); - int sigs[Nperms]; + int* perms = (int *) malloc(Nperms * B1NsrcSC * B1NsnkSC * 2*Nq * sizeof (int)); + int* hex_perms = (int *) malloc(Nperms * B1NsrcSC * 2*Nq * sizeof (int)); + int* hex_perms_snk = (int *) malloc(Nperms * B1NsnkSC * 2*Nq * sizeof (int)); + int* hex_hex_perms = (int *) malloc(Nperms * 2*Nq * sizeof (int)); + int* sigs = (int *) malloc(Nperms * B1NsrcSC * B1NsnkSC * sizeof (int)); + int* hex_sigs = (int *) malloc(Nperms * B1NsrcSC * sizeof (int)); + int* hex_sigs_snk = (int *) malloc(Nperms * B1NsnkSC * sizeof (int)); + int hex_hex_sigs[Nperms]; int permnum = 0; - for (int i = 0; i < 36; i++) { + for (int i = 0; i < Nperms; i++) { /*if (perms_array[i][0] > perms_array[i][2]) { continue; @@ -716,19 +863,56 @@ int main(int, char **) } else { */ for (int q = 0; q < 2*Nq; q++) { - perms[index_2d(permnum,q ,2*Nq)] = perms_array[i][q]; + hex_hex_perms[index_2d(permnum,q ,2*Nq)] = perms_array[i][q]; + } + hex_hex_sigs[permnum] = sigs_array[i]; + + for (int msc = 0; msc < B1NsrcSC; msc++) { + for (int q = 0; q < 2*Nq; q++) { + hex_perms[index_3d(permnum,msc,q ,B1NsrcSC,2*Nq)] = perms_array[i][q]; + } + hex_sigs[index_2d(permnum,msc ,B1NsrcSC)] = sigs_array[i]; + } + + for (int nsc = 0; nsc < B1NsnkSC; nsc++) { + for (int q = 0; q < 2*Nq; q++) { + hex_perms_snk[index_3d(permnum,nsc,q ,B1NsnkSC,2*Nq)] = perms_array[i][q]; } - sigs[permnum] = sigs_array[i]; + hex_sigs_snk[index_2d(permnum,nsc ,B1NsnkSC)] = sigs_array[i]; + } + + for (int msc = 0; msc < B1NsrcSC; msc++) { + for (int nsc = 0; nsc < B1NsnkSC; nsc++) { + for (int q = 0; q < 2*Nq; q++) { + perms[index_4d(permnum,msc,nsc,q ,B1NsrcSC,B1NsnkSC,2*Nq)] = perms_array[i][q]; + } + sigs[index_3d(permnum,msc,nsc ,B1NsrcSC,B1NsnkSC)] = sigs_array[i]; + } + } + permnum += 1; //} } + int* BB_pairs_src = (int *) malloc(B1NsrcSC * 2 * sizeof(int)); + int* BB_pairs_snk = (int *) malloc(B1NsnkSC * 2 * sizeof(int)); + for (msc=0; msc < B1NsrcSC; msc++) { + for (b = 0; b < 2; b++) { + BB_pairs_src[index_2d(msc,b ,2)] = msc+1; + } + } + for (nsc=0; nsc < B1NsnkSC; nsc++) { + for (b = 0; b < 2; b++) { + BB_pairs_snk[index_2d(nsc,b ,2)] = nsc+1; + } + } + // Correlators double* C_re = (double *) malloc(B2Nrows * (Nsrc+NsrcHex) * (Nsnk+NsnkHex) * Lt * sizeof (double)); double* C_im = (double *) malloc(B2Nrows * (Nsrc+NsrcHex) * (Nsnk+NsnkHex) * Lt * sizeof (double)); //double* C_re = (double *) malloc(B2Nrows * B2Nrows * (Nsrc+NsrcHex) * (Nsnk+NsnkHex) * Lt * sizeof (double)); //double* C_im = (double *) malloc(B2Nrows * B2Nrows * (Nsrc+NsrcHex) * (Nsnk+NsnkHex) * Lt * sizeof (double)); - double* t_C_re = (double *) malloc(B2Nrows * B2Nrows * (Nsrc+NsrcHex) * (Nsnk+NsnkHex) * Lt * sizeof (double)); - double* t_C_im = (double *) malloc(B2Nrows * B2Nrows * (Nsrc+NsrcHex) * (Nsnk+NsnkHex) * Lt * sizeof (double)); + double* t_C_re = (double *) malloc(B2Nrows * B2Nrows * NsrcTot * NsnkTot * Lt * sizeof (double)); + double* t_C_im = (double *) malloc(B2Nrows * B2Nrows * NsrcTot * NsnkTot * Lt * sizeof (double)); for (rp=0; rp= 0.01*Vsnk*Vsnk) || + (std::abs(C_im[index_4d(rp,m,n,t, Nsrc+NsrcHex,Nsnk+NsnkHex,Lt)] - t_C_im[index_5d(rp,msc*Nsrc+m,rp,nsc*Nsnk+n,t, NsrcTot,B2Nrows,NsnkTot,Lt)]) >= 0.01*Vsnk*Vsnk)) + { + printf("BB_BB rp=%d, msc=%d, m=%d, nsc=%d, n=%d, t=%d: %4.1f + I (%4.1f) vs %4.1f + I (%4.1f) \n", rp, msc, m, nsc, n, t, C_re[index_4d(rp,m,n,t, Nsrc+NsrcHex,Nsnk+NsnkHex,Lt)], C_im[index_4d(rp,m,n,t, Nsrc+NsrcHex,Nsnk+NsnkHex,Lt)], t_C_re[index_5d(rp,msc*Nsrc+m,rp,nsc*Nsnk+n,t, NsrcTot,B2Nrows,NsnkTot,Lt)], t_C_im[index_5d(rp,msc*Nsrc+m,rp,nsc*Nsnk+n,t, NsrcTot,B2Nrows,NsnkTot,Lt)]); + std::cout << "Error: different computed values for C_r or C_i!" << std::endl; + exit(1); + } + } + } + if (rank == 0) + printf("cleared BB-BB \n"); + for (rp=0; rp= 0.01*Vsnk*Vsnk) || + (std::abs(C_im[index_4d(rp,m,Nsnk+n,t, Nsrc+NsrcHex,Nsnk+NsnkHex,Lt)] - t_C_im[index_5d(rp,m,rp,Nsnk*B1NsnkSC+n,t, NsrcTot,B2Nrows,NsnkTot,Lt)]) >= 0.01*Vsnk*Vsnk)) + { + printf("BB_H rp=%d, msc=%d, m=%d, nsc=%d, n=%d, t=%d: %4.1f + I (%4.1f) vs %4.1f + I (%4.1f) \n", rp, msc, m, nsc, n, t, C_re[index_4d(rp,m,Nsnk+n,t, Nsrc+NsrcHex,Nsnk+NsnkHex,Lt)], C_im[index_4d(rp,m,Nsnk+n,t, Nsrc+NsrcHex,Nsnk+NsnkHex,Lt)], t_C_re[index_5d(rp,msc*Nsrc+m,rp,Nsnk*B1NsnkSC+nsc*NsnkHex+n,t, NsrcTot,B2Nrows,NsnkTot,Lt)], t_C_im[index_5d(rp,msc*Nsrc+m,rp,Nsnk*B1NsnkSC+nsc*NsnkHex+n,t, NsrcTot,B2Nrows,NsnkTot,Lt)]); + std::cout << "Error: different computed values for C_r or C_i!" << std::endl; + exit(1); + } + } + } + if (rank == 0) + printf("cleared BB-H \n"); + for (rp=0; rp= 0.01*Vsnk*Vsnk) || + (std::abs(C_im[index_4d(rp,Nsrc+m,n,t, Nsrc+NsrcHex,Nsnk+NsnkHex,Lt)] - t_C_im[index_5d(rp,Nsrc*B1NsrcSC+msc*NsrcHex+m,rp,nsc*Nsnk+n,t, NsrcTot,B2Nrows,NsnkTot,Lt)]) >= 0.01*Vsnk*Vsnk)) + { + printf("H_BB rp=%d, msc=%d, m=%d, nsc=%d, n=%d, t=%d: %4.1f + I (%4.1f) vs %4.1f + I (%4.1f) \n", rp, msc, m, nsc, n, t, C_re[index_4d(rp,Nsrc+m,n,t, Nsrc+NsrcHex,Nsnk+NsnkHex,Lt)], C_im[index_4d(rp,Nsrc+m,n,t, Nsrc+NsrcHex,Nsnk+NsnkHex,Lt)], t_C_re[index_5d(rp,Nsrc*B1NsrcSC+msc*NsrcHex+m,rp,nsc*Nsnk+n,t, NsrcTot,B2Nrows,NsnkTot,Lt)], t_C_im[index_5d(rp,Nsrc*B1NsrcSC+msc*NsrcHex+m,rp,nsc*Nsnk+n,t, NsrcTot,B2Nrows,NsnkTot,Lt)]); + std::cout << "Error: different computed values for C_r or C_i!" << std::endl; + exit(1); + } + } + } + if (rank == 0) + printf("cleared H-BB \n"); + for (rp=0; rp= 0.01*Vsnk*Vsnk) || - (std::abs(C_im[index_4d(rp,m,n,t, Nsrc+NsrcHex,Nsnk+NsnkHex,Lt)] - t_C_im[index_5d(rp,m,rp,n,t, Nsrc+NsrcHex,B2Nrows,Nsnk+NsnkHex,Lt)]) >= 0.01*Vsnk*Vsnk)) + if ((std::abs(C_re[index_4d(rp,Nsrc+m,Nsnk+n,t, Nsrc+NsrcHex,Nsnk+NsnkHex,Lt)] - t_C_re[index_5d(rp,Nsrc*B1NsrcSC+msc*NsrcHex+m,rp,Nsnk*B1NsnkSC+nsc*NsnkHex+n,t, NsrcTot,B2Nrows,NsnkTot,Lt)]) >= 0.01*Vsnk*Vsnk) || + (std::abs(C_im[index_4d(rp,Nsrc+m,Nsnk+n,t, Nsrc+NsrcHex,Nsnk+NsnkHex,Lt)] - t_C_im[index_5d(rp,Nsrc*B1NsrcSC+msc*NsrcHex+m,rp,Nsnk*B1NsnkSC+nsc*NsnkHex+n,t, NsrcTot,B2Nrows,NsnkTot,Lt)]) >= 0.01*Vsnk*Vsnk)) { - printf("rp=%d, m=%d, n=%d, t=%d: %4.1f + I (%4.1f) vs %4.1f + I (%4.1f) \n", rp, m, n, t, C_re[index_4d(rp,m,n,t, Nsrc+NsrcHex,Nsnk+NsnkHex,Lt)], C_im[index_4d(rp,m,n,t, Nsrc+NsrcHex,Nsnk+NsnkHex,Lt)], t_C_re[index_5d(rp,m,rp,n,t, Nsrc+NsrcHex,B2Nrows,Nsnk+NsnkHex,Lt)], t_C_im[index_5d(rp,m,rp,n,t, Nsrc+NsrcHex,B2Nrows,Nsnk+NsnkHex,Lt)]); + printf("H_H rp=%d, msc=%d, m=%d, nsc=%d, n=%d, t=%d: %4.1f + I (%4.1f) vs %4.1f + I (%4.1f) \n", rp, msc, m, nsc, n, t, C_re[index_4d(rp,Nsrc+m,Nsnk+n,t, Nsrc+NsrcHex,Nsnk+NsnkHex,Lt)], C_im[index_4d(rp,Nsrc+m,Nsnk+n,t, Nsrc+NsrcHex,Nsnk+NsnkHex,Lt)], t_C_re[index_5d(rp,Nsrc*B1NsrcSC+msc*NsrcHex+m,rp,Nsnk*B1NsnkSC+nsc*NsnkHex+n,t, NsrcTot,B2Nrows,NsnkTot,Lt)], t_C_im[index_5d(rp,Nsrc*B1NsrcSC+msc*NsrcHex+m,rp,Nsnk*B1NsnkSC+nsc*NsnkHex+n,t, NsrcTot,B2Nrows,NsnkTot,Lt)]); std::cout << "Error: different computed values for C_r or C_i!" << std::endl; exit(1); } } } + if (rank == 0) + printf("cleared H-H \n"); #endif printf("Finished\n"); diff --git a/benchmarks/tensors/dibaryon/tiramisu_make_fused_dibaryon_blocks_correlator/tiramisu_make_fused_identical_dibaryon_blocks_correlator_wrapper.h b/benchmarks/tensors/dibaryon/tiramisu_make_fused_dibaryon_blocks_correlator/tiramisu_make_fused_identical_dibaryon_blocks_correlator_wrapper.h index ac7227b25..54e3553e0 100644 --- a/benchmarks/tensors/dibaryon/tiramisu_make_fused_dibaryon_blocks_correlator/tiramisu_make_fused_identical_dibaryon_blocks_correlator_wrapper.h +++ b/benchmarks/tensors/dibaryon/tiramisu_make_fused_dibaryon_blocks_correlator/tiramisu_make_fused_identical_dibaryon_blocks_correlator_wrapper.h @@ -15,6 +15,10 @@ #define Vsnk P_Vsnk #define Nsrc P_Nsrc #define Nsnk P_Nsnk +#define B1NsrcSC P_B1NsrcSC +#define B1NsnkSC P_B1NsnkSC +#define B2NsrcSC P_B2NsrcSC +#define B2NsnkSC P_B2NsnkSC #define NsrcHex P_NsrcHex #define NsnkHex P_NsnkHex #define mq P_mq @@ -69,6 +73,13 @@ int tiramisu_make_fused_identical_dibaryon_blocks_correlator( halide_buffer_t *, halide_buffer_t *, halide_buffer_t *, + halide_buffer_t *, + halide_buffer_t *, + halide_buffer_t *, + halide_buffer_t *, + halide_buffer_t *, + halide_buffer_t *, + halide_buffer_t *, halide_buffer_t *); diff --git a/benchmarks/tensors/utils/qblocks_2pt_parameters.h b/benchmarks/tensors/utils/qblocks_2pt_parameters.h index 10aa3b9c6..ecc77e344 100644 --- a/benchmarks/tensors/utils/qblocks_2pt_parameters.h +++ b/benchmarks/tensors/utils/qblocks_2pt_parameters.h @@ -1,41 +1,23 @@ #ifndef QBLOCKS_2PT_PARAMETERS_H #define QBLOCKS_2PT_PARAMETERS_H -#define DATA_SET_1 1 -#define DATA_SET_2 0 +// 8^3 sparse lattice deuteron +#define DATA_SET_1 0 +// 2^3 sparse lattice deuteron +#define DATA_SET_2 1 +// 6^3 sparse lattice deuteron +#define DATA_SET_3 0 +// 8^3 sparse lattice H-dibaryon +#define DATA_SET_4 0 +// 2^3 sparse lattice H-dibaryon +#define DATA_SET_5 0 +// 6^3 sparse lattice H-dibaryo +#define DATA_SET_6 0 #if DATA_SET_1 -// #define P_Vsrc 512 -// #define P_Vsnk 512 -// #define P_Nsrc 44 -// #define P_Nsnk 44 -// #define P_NEntangled 3 -// #define P_NsrcHex 1 -// #define P_NsnkHex 1 -// #define P_Nperms 36 -// #define P_B1Nperms 2 -// #define P_Nw 12 -// #define P_Nw2 288 -// #define P_Nw2Hex 32 -// #define P_Nt 2/*1*/ -// #define P_Nc 3 -// #define P_Ns 2 -// #define P_Nq 3 -// #define P_B2Nrows 4 -// #define P_B1Nrows 2 -// #define P_Nb 2 -// #define P_mq 1.0 -// #define P_Mq 2 -// #define P_B0Nrows 1 -// #define P_Mw 12 -// #define P_NsFull 4 -// #define P_sites_per_rank 128 -// #define P_src_sites_per_rank 4 - -#define P_size 512 -#define P_Vsrc P_size -#define P_Vsnk P_size +#define P_Vsrc 512 +#define P_Vsnk 512 #define P_Nsrc 44 #define P_Nsnk 44 #define P_NEntangled 3 @@ -58,13 +40,13 @@ #define P_B0Nrows 1 #define P_Mw 12 #define P_NsFull 4 -#define P_sites_per_rank 256 // single baryon threads per block -#define P_src_sites_per_rank 256 -#define P_tiling_factor 32 // smaller means more dibaryon threads per block +#define P_sites_per_rank 128 +#define P_src_sites_per_rank 4 +#define P_tiling_factor 8 // smaller means more dibaryon threads per block */ #elif DATA_SET_2 -/* #define P_Vsrc 8 +#define P_Vsrc 8 #define P_Vsnk 8 #define P_Nsrc 44 #define P_Nsnk 44 @@ -73,6 +55,11 @@ #define P_NsnkHex 1 #define P_Nperms 36 #define P_B1Nperms 2 +#define P_B1Nweights 1 +#define P_B1NsrcSC 1 +#define P_B1NsnkSC 1 +#define P_B2NsrcSC 1 +#define P_B2NsnkSC 1 #define P_Nw 12 #define P_Nw2 288 #define P_Nw2Hex 32 @@ -88,22 +75,65 @@ #define P_B0Nrows 1 #define P_Mw 12 #define P_NsFull 4 -#define P_sites_per_rank 2 -#define P_src_sites_per_rank 4 */ +#define P_sites_per_rank 1 +#define P_src_sites_per_rank 1 +#define P_tiling_factor 1 // smaller means more dibaryon threads per block */ -#define P_size 64 -#define P_Vsrc P_size -#define P_Vsnk P_size -#define P_Nsrc 44 -#define P_Nsnk 44 +#elif DATA_SET_3 + +#define P_Vsrc 216 +#define P_Vsnk 216 +#define P_Nsrc 20 +#define P_Nsnk 20 #define P_NEntangled 3 #define P_NsrcHex 1 #define P_NsnkHex 1 #define P_Nperms 36 #define P_B1Nperms 2 -#define P_Nw 12 -#define P_Nw2 288 -#define P_Nw2Hex 32 +#define P_Nw 24 +#define P_Nw2 1152 +//#define P_Nw 12 +//#define P_Nw2 288 +#define P_Nw2Hex 600 +#define P_B1NsrcSC 3 +#define P_B1NsnkSC 3 +#define P_B2NsrcSC 16 +#define P_B2NsnkSC 16 +#define P_Nt 1 +#define P_Nc 3 +#define P_Ns 4 +#define P_Nq 3 +#define P_B2Nrows 4 +#define P_B1Nrows 2 +#define P_Nb 2 +#define P_mq 1.0 +#define P_Mq 2 +#define P_B0Nrows 1 +#define P_Mw 12 +#define P_NsFull 4 +#define P_sites_per_rank 1 +#define P_src_sites_per_rank 1 +#define P_tiling_factor 1 // smaller means more dibaryon threads per block */ + +#elif DATA_SET_4 + +#define P_Vsrc 216 +#define P_Vsnk 216 +#define P_Nsrc 20 +#define P_Nsnk 20 +#define P_NEntangled 3 +#define P_NsrcHex 1 +#define P_NsnkHex 1 +#define P_Nperms 8 +#define P_B1Nperms 1 +#define P_B1Nweights 3 +#define P_Nw 18 +#define P_Nw2 648 +#define P_Nw2Hex 174 +#define P_B1NsrcSC 6 +#define P_B1NsnkSC 6 +#define P_B2NsrcSC 4 +#define P_B2NsnkSC 4 #define P_Nt 1 #define P_Nc 3 #define P_Ns 2 @@ -116,10 +146,80 @@ #define P_B0Nrows 1 #define P_Mw 12 #define P_NsFull 4 -#define P_sites_per_rank 32 // single baryon threads per block -#define P_src_sites_per_rank 32 +#define P_sites_per_rank 1 +#define P_src_sites_per_rank 1 #define P_tiling_factor 4 // smaller means more dibaryon threads per block */ -#endif +#elif DATA_SET_5 +#define P_Vsrc 8 +#define P_Vsnk 8 +#define P_Nsrc 20 +#define P_Nsnk 20 +#define P_NEntangled 3 +#define P_NsrcHex 1 +#define P_NsnkHex 1 +#define P_Nperms 8 +#define P_B1Nperms 1 +#define P_B1Nweights 3 +#define P_Nw 18 +#define P_Nw2 648 +#define P_Nw2Hex 174 +#define P_B1NsrcSC 6 +#define P_B1NsnkSC 6 +#define P_B2NsrcSC 4 +#define P_B2NsnkSC 4 +#define P_Nt 1 +#define P_Nc 3 +#define P_Ns 2 +#define P_Nq 3 +#define P_B2Nrows 4 +#define P_B1Nrows 2 +#define P_Nb 2 +#define P_mq 1.0 +#define P_Mq 2 +#define P_B0Nrows 1 +#define P_Mw 12 +#define P_NsFull 4 +#define P_sites_per_rank 1 +#define P_src_sites_per_rank 1 +#define P_tiling_factor 1 // smaller means more dibaryon threads per block */ + +#elif DATA_SET_6 + +#define P_Vsrc 216 +#define P_Vsnk 216 +#define P_Nsrc 20 +#define P_Nsnk 20 +#define P_NEntangled 3 +#define P_NsrcHex 1 +#define P_NsnkHex 1 +#define P_Nperms 8 +#define P_B1Nperms 1 +#define P_B1Nweights 3 +#define P_Nw 18 +#define P_Nw2 648 +#define P_Nw2Hex 174 +#define P_B1NsrcSC 6 +#define P_B1NsnkSC 6 +#define P_B2NsrcSC 4 +#define P_B2NsnkSC 4 +#define P_Nt 1 +#define P_Nc 3 +#define P_Ns 2 +#define P_Nq 3 +#define P_B2Nrows 4 +#define P_B1Nrows 2 +#define P_Nb 2 +#define P_mq 1.0 +#define P_Mq 2 +#define P_B0Nrows 1 +#define P_Mw 12 +#define P_NsFull 4 +#define P_sites_per_rank 1 +#define P_src_sites_per_rank 1 +#define P_tiling_factor 4 // smaller means more dibaryon threads per block */ + + +#endif #endif